From 228a94b2742a63913683c05a01bfd5b8c1431761 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Fri, 2 Jan 2026 16:13:11 -0500 Subject: [PATCH 01/18] refactoring + bugfix for pfix --- .github/workflows/publish.yml | 118 + README.md | 94 +- oceanmesh/geometry/point_in_polygon_.c | 16947 ++++++++++++----------- oceanmesh/mesh_generator.py | 378 +- pyproject.toml | 14 + setup.py | 162 +- tests/test_multiscale.py | 99 +- 7 files changed, 9159 insertions(+), 8653 deletions(-) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..c5b17fd --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,118 @@ +name: publish + +on: + push: + tags: + - "v*" + +jobs: + build_wheels: + name: Build wheels (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install build tooling + run: | + python -m pip install --upgrade pip + python -m pip install cibuildwheel==2.* + + # Build dependencies (CGAL headers + GMP/MPFR libs) into a local prefix via micromamba. + # The wheel build will link against these, and repair tools will bundle the runtime libs. + - name: Install micromamba (Unix) + if: runner.os != 'Windows' + shell: bash + run: | + set -euxo pipefail + curl -Ls https://micro.mamba.pm/api/micromamba/$(uname)/$(uname -m)/latest | tar -xvj bin/micromamba + sudo mv bin/micromamba /usr/local/bin/micromamba + + - name: Install micromamba (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + Invoke-WebRequest -Uri "https://micro.mamba.pm/api/micromamba/win-64/latest" -OutFile micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 + echo "${PWD}\\Library\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Build wheels + env: + # Use a local prefix so setup.py can find include/lib without relying on system installs. + # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). + CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" + CIBW_BEFORE_ALL_LINUX: | + set -eux + micromamba create -y -p /opt/om -c conda-forge \ + cgal boost-cpp gmp mpfr eigen + CIBW_BEFORE_ALL_MACOS: | + set -eux + micromamba create -y -p /opt/om -c conda-forge \ + cgal boost-cpp gmp mpfr eigen + CIBW_BEFORE_ALL_WINDOWS: | + micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen + CIBW_ENVIRONMENT_WINDOWS: "OCEANMESH_PREFIX=C:\\om" + # Repair wheels to bundle shared libs. + CIBW_REPAIR_WHEEL_COMMAND_MACOS: "python -m pip install delocate && delocate-wheel -w {dest_dir} -v {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "python -m pip install delvewheel && delvewheel repair -w {dest_dir} {wheel}" + run: | + python -m cibuildwheel --output-dir dist + + - name: Upload wheel artifacts + uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: dist/*.whl + + build_sdist: + name: Build sdist + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Build sdist + run: | + python -m pip install --upgrade pip + python -m pip install build + python -m build --sdist + - name: Upload sdist artifact + uses: actions/upload-artifact@v4 + with: + name: sdist + path: dist/*.tar.gz + + publish_pypi: + name: Publish to PyPI + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: dist + + - name: Flatten dist directory + shell: bash + run: | + set -eux + mkdir -p upload + find dist -type f \( -name "*.whl" -o -name "*.tar.gz" \) -maxdepth 3 -print -exec cp {} upload/ \; + + - name: Publish + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: upload diff --git a/README.md b/README.md index 2f08b78..252a894 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ points, cells = om.delete_boundary_faces(points, cells, min_qual=0.15) ## 3. Installation -:warning: Active development. Installation is currently recommended for developers. A stable API will be published to PyPI later. +:warning: OceanMesh 1.0 provides a stable public API, but the project is still under active development. Check the release notes for details of any breaking changes between minor versions. The notes below refer to installation on platforms other than MS Windows. For Windows, see 3.2. @@ -115,10 +115,10 @@ CGAL can also be installed with conda: conda install -c conda-forge cgal ``` -After that, clone the repo and install/update with pip: +After that, install or update OceanMesh with pip (recommended for most users): ```bash -pip install -U -e . +pip install -U oceanmesh ``` On some clusters/HPC in order to install CGAL, you may need to load/install [gmp](https://gmplib.org/) and [mpfr](https://www.mpfr.org/). For example: @@ -407,19 +407,89 @@ Areas of finer refinement can be incorporated seamlessly by using `generate_mult ```python -import numpy as np -import matplotlib.tri as tri import matplotlib.gridspec as gridspec +import matplotlib.pyplot as plt +import matplotlib.tri as tri +import numpy as np + import oceanmesh as om fname = "gshhg-shp-2.3.7/GSHHS_shp/f/GSHHS_f_L1.shp" -extent1 = om.Region(extent=(-75.00, -70.001, 40.0001, 41.9000), crs=4326) -extent2 = om.Region(extent=np.array([[-73.95, 40.60], [-73.72, 40.65], [-73.95, 40.60]]), crs=4326) -s1 = om.Shoreline(fname, extent1.bbox, 0.01) -s2 = om.Shoreline(fname, extent2.bbox, 4.6e-4) -sdf1, sdf2 = om.signed_distance_function(s1), om.signed_distance_function(s2) -el1, el2 = om.distance_sizing_function(s1, max_edge_length=0.05), om.distance_sizing_function(s2) -points, cells = om.generate_multiscale_mesh([sdf1, sdf2], [el1, el2]) +EPSG = 4326 # EPSG:4326 or WGS84 +extent1 = om.Region(extent=(-75.00, -70.001, 40.0001, 41.9000), crs=EPSG) +min_edge_length1 = 0.01 # minimum mesh size in domain in projection +bbox2 = np.array( + [ + [-73.9481, 40.6028], + [-74.0186, 40.5688], + [-73.9366, 40.5362], + [-73.7269, 40.5626], + [-73.7231, 40.6459], + [-73.8242, 40.6758], + [-73.9481, 40.6028], + ], + dtype=float, +) +extent2 = om.Region(extent=bbox2, crs=EPSG) +min_edge_length2 = 4.6e-4 # minimum mesh size in domain in projection +s1 = om.Shoreline(fname, extent1.bbox, min_edge_length1) +sdf1 = om.signed_distance_function(s1) +el1 = om.distance_sizing_function(s1, max_edge_length=0.05) +s2 = om.Shoreline(fname, extent2.bbox, min_edge_length2) +sdf2 = om.signed_distance_function(s2) +el2 = om.distance_sizing_function(s2) +# Control the element size transition +# from coarse to fine with the kwargs prefixed with `blend` +points, cells = om.generate_multiscale_mesh( + [sdf1, sdf2], + [el1, el2], +) +# Remove degenerate mesh faces and other common problems in the mesh +points, cells = om.make_mesh_boundaries_traversable(points, cells) +# Remove singly connected elements (elements connected to only one other element) +points, cells = om.delete_faces_connected_to_one_face(points, cells) +# Remove poor boundary elements with quality < 15% +points, cells = om.delete_boundary_faces(points, cells, min_qual=0.15) +# Apply a Laplacian smoother that preservers the mesh size distribution +points, cells = om.laplacian2(points, cells) + +# Plot it showing the different levels of resolution +triang = tri.Triangulation(points[:, 0], points[:, 1], cells) +gs = gridspec.GridSpec(2, 2) +gs.update(wspace=0.5) +plt.figure() + +bbox3 = np.array( + [ + [-73.78, 40.60], + [-73.75, 40.60], + [-73.75, 40.64], + [-73.78, 40.64], + [-73.78, 40.60], + ], + dtype=float, +) + +ax = plt.subplot(gs[0, 0]) +ax.set_aspect("equal") +ax.triplot(triang, "-", lw=1) +ax.plot(bbox2[:, 0], bbox2[:, 1], "r--") +ax.plot(bbox3[:, 0], bbox3[:, 1], "m--") + +ax = plt.subplot(gs[0, 1]) +ax.set_aspect("equal") +ax.triplot(triang, "-", lw=1) +ax.plot(bbox2[:, 0], bbox2[:, 1], "r--") +ax.set_xlim(np.amin(bbox2[:, 0]), np.amax(bbox2[:, 0])) +ax.set_ylim(np.amin(bbox2[:, 1]), np.amax(bbox2[:, 1])) +ax.plot(bbox3[:, 0], bbox3[:, 1], "m--") + +ax = plt.subplot(gs[1, :]) +ax.set_aspect("equal") +ax.triplot(triang, "-", lw=1) +ax.set_xlim(-73.78, -73.75) +ax.set_ylim(40.60, 40.64) +plt.show() ``` ![Multiscale](docs/images/multiscale_trimmed.png) diff --git a/oceanmesh/geometry/point_in_polygon_.c b/oceanmesh/geometry/point_in_polygon_.c index aa767e9..74800e3 100644 --- a/oceanmesh/geometry/point_in_polygon_.c +++ b/oceanmesh/geometry/point_in_polygon_.c @@ -1,20 +1,20 @@ -/* Generated by Cython 3.2.2 */ +/* Generated by Cython 3.1.4 */ /* BEGIN: Cython Metadata { "distutils": { "depends": [ - "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", - "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", - "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", - "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", - "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" + "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", + "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", + "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", + "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", + "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" ], "extra_compile_args": [ "-O3" ], "include_dirs": [ - "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/_core/include" + "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include" ], "name": "oceanmesh.geometry.point_in_polygon_", "sources": [ @@ -29,16 +29,8 @@ END: Cython Metadata */ #define PY_SSIZE_T_CLEAN #endif /* PY_SSIZE_T_CLEAN */ /* InitLimitedAPI */ -#if defined(Py_LIMITED_API) - #if !defined(CYTHON_LIMITED_API) +#if defined(Py_LIMITED_API) && !defined(CYTHON_LIMITED_API) #define CYTHON_LIMITED_API 1 - #endif -#elif defined(CYTHON_LIMITED_API) - #ifdef _MSC_VER - #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.") - #else - #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead. - #endif #endif #include "Python.h" @@ -47,8 +39,8 @@ END: Cython Metadata */ #elif PY_VERSION_HEX < 0x03080000 #error Cython requires Python 3.8+. #else -#define __PYX_ABI_VERSION "3_2_2" -#define CYTHON_HEX_VERSION 0x030202F0 +#define __PYX_ABI_VERSION "3_1_4" +#define CYTHON_HEX_VERSION 0x030104F0 #define CYTHON_FUTURE_DIVISION 1 /* CModulePreamble */ #include @@ -73,6 +65,9 @@ END: Cython Metadata */ #define DL_EXPORT(t) t #endif #define __PYX_COMMA , +#ifndef HAVE_LONG_LONG + #define HAVE_LONG_LONG +#endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif @@ -105,7 +100,7 @@ END: Cython Metadata */ #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS - #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_ASSUME_SAFE_SIZE @@ -142,8 +137,6 @@ END: Cython Metadata */ #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 - #undef CYTHON_IMMORTAL_CONSTANTS - #define CYTHON_IMMORTAL_CONSTANTS 0 #elif defined(PYPY_VERSION) #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_CPYTHON 0 @@ -211,8 +204,6 @@ END: Cython Metadata */ #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 - #undef CYTHON_IMMORTAL_CONSTANTS - #define CYTHON_IMMORTAL_CONSTANTS 0 #elif defined(CYTHON_LIMITED_API) #ifdef Py_LIMITED_API #undef __PYX_LIMITED_VERSION_HEX @@ -223,6 +214,8 @@ END: Cython Metadata */ #define CYTHON_COMPILING_IN_LIMITED_API 1 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 + #undef CYTHON_CLINE_IN_TRACEBACK + #define CYTHON_CLINE_IN_TRACEBACK 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_TYPE_SPECS @@ -282,11 +275,8 @@ END: Cython Metadata */ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif - #ifndef CYTHON_USE_FREELISTS - #define CYTHON_USE_FREELISTS 1 - #endif - #undef CYTHON_IMMORTAL_CONSTANTS - #define CYTHON_IMMORTAL_CONSTANTS 0 + #undef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 1 @@ -393,15 +383,6 @@ END: Cython Metadata */ #ifndef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) #endif - #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000 - #undef CYTHON_IMMORTAL_CONSTANTS - #define CYTHON_IMMORTAL_CONSTANTS 0 // definitely won't work - #elif !defined(CYTHON_IMMORTAL_CONSTANTS) - #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) - #endif -#endif -#ifndef CYTHON_COMPRESS_STRINGS - #define CYTHON_COMPRESS_STRINGS 1 #endif #ifndef CYTHON_FAST_PYCCALL #define CYTHON_FAST_PYCCALL CYTHON_FAST_PYCALL @@ -410,9 +391,10 @@ END: Cython Metadata */ #if CYTHON_COMPILING_IN_LIMITED_API #define CYTHON_VECTORCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) #else -#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) #endif #endif +#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) #if CYTHON_USE_PYLONG_INTERNALS #undef SHIFT #undef BASE @@ -421,6 +403,9 @@ END: Cython Metadata */ enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif +#ifndef CYTHON_LOCK_AND_GIL_DEADLOCK_AVOIDANCE_TIME + #define CYTHON_LOCK_AND_GIL_DEADLOCK_AVOIDANCE_TIME 100 +#endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif @@ -488,8 +473,35 @@ END: Cython Metadata */ #endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#include -typedef uintptr_t __pyx_uintptr_t; +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned short uint16_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int32 uint32_t; + #endif + #endif + #if _MSC_VER < 1300 + #ifdef _WIN64 + typedef unsigned long long __pyx_uintptr_t; + #else + typedef unsigned int __pyx_uintptr_t; + #endif + #else + #ifdef _WIN64 + typedef unsigned __int64 __pyx_uintptr_t; + #else + typedef unsigned __int32 __pyx_uintptr_t; + #endif + #endif +#else + #include + typedef uintptr_t __pyx_uintptr_t; +#endif #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 @@ -532,9 +544,9 @@ typedef uintptr_t __pyx_uintptr_t; #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) #endif #if CYTHON_COMPILING_IN_PYPY == 1 - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x030A0000) + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) #else - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x03090000) + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) #endif #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) @@ -638,12 +650,6 @@ static int __Pyx_init_co_variables(void); #ifndef Py_TPFLAGS_MAPPING #define Py_TPFLAGS_MAPPING 0 #endif -#ifndef Py_TPFLAGS_IMMUTABLETYPE - #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8) -#endif -#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION - #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7) -#endif #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif @@ -676,6 +682,11 @@ static int __Pyx_init_co_variables(void); #define __pyx_vectorcallfunc vectorcallfunc #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) +#elif CYTHON_BACKPORT_VECTORCALL + typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, + size_t nargsf, PyObject *kwnames); + #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) + #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) #else #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) @@ -705,7 +716,7 @@ static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(vo #endif } #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) -#if PY_VERSION_HEX < 0x03090000 || (CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000) +#if __PYX_LIMITED_VERSION_HEX < 0x03090000 #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); #else @@ -722,9 +733,6 @@ static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(vo #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyFrame_SetLineNumber(frame, lineno) -#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 - #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) - #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno)) #elif CYTHON_COMPILING_IN_GRAAL #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno)) @@ -815,7 +823,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) #endif #define __Pyx_PyObject_GetIterNextFunc(iterator) __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc) -#if CYTHON_USE_TYPE_SPECS +#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 #define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ PyTypeObject *type = Py_TYPE((PyObject*)obj);\ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ @@ -879,10 +887,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #endif #endif #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - #define __Pyx_PySequence_ListKeepNew(obj)\ - (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj)) -#elif CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PySequence_ListKeepNew(obj)\ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) #else @@ -898,22 +903,6 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif -enum __Pyx_ReferenceSharing { - __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check - __Pyx_ReferenceSharing_OwnStrongReference, - __Pyx_ReferenceSharing_FunctionArgument, - __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar -}; -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000 -#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\ - (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\ - (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\ - (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0))) -#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1) -#else -#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0) -#endif #if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) @@ -931,12 +920,6 @@ enum __Pyx_ReferenceSharing { #else #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i)) #endif -#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !CYTHON_COMPILING_IN_LIMITED_API && CYTHON_ASSUME_SAFE_MACROS - #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) (__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\ - __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i)) -#else - #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) __Pyx_PyList_GetItemRef(o, i) -#endif #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 #define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result) #elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS @@ -996,6 +979,15 @@ static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o) #endif +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#else + static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; + } +#endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString) #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif @@ -1102,6 +1094,15 @@ static int __Pyx_init_co_variables(void) { #endif #endif #include +#ifdef NAN +#define __PYX_NAN() ((float) NAN) +#else +static CYTHON_INLINE float __PYX_NAN() { + float value; + memset(&value, 0xFF, sizeof(value)); + return value; +} +#endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else @@ -1386,11 +1387,11 @@ static const char *__pyx_filename; static const char* const __pyx_f[] = { "oceanmesh/geometry/point_in_polygon_.pyx", "", - "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", + "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", "cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ -/* Atomics.proto (used by UnpackUnboundCMethod) */ +/* Atomics.proto */ #include #ifndef CYTHON_ATOMICS #define CYTHON_ATOMICS 1 @@ -1426,7 +1427,6 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed) #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire) #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) - #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) #pragma message ("Using standard C atomics") #elif defined(__PYX_DEBUG_ATOMICS) @@ -1451,7 +1451,6 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed) #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire) #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) - #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) #pragma message ("Using standard C++ atomics") #elif defined(__PYX_DEBUG_ATOMICS) @@ -1461,7 +1460,6 @@ static const char* const __pyx_f[] = { (__GNUC_MINOR__ > 1 ||\ (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2)))) #define __pyx_atomic_ptr_type void* - #define __pyx_nonatomic_ptr_type void* #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1) #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1) #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1) @@ -1477,12 +1475,6 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0) #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0) #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value) - static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { - __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired); - int result = old == *expected; - *expected = old; - return result; - } #ifdef __PYX_DEBUG_ATOMICS #warning "Using GNU atomics" #endif @@ -1493,7 +1485,6 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_ptr_type void* #undef __pyx_nonatomic_int_type #define __pyx_nonatomic_int_type long - #define __pyx_nonatomic_ptr_type void* #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer) #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1) #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1) @@ -1510,12 +1501,6 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0) #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value) - static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { - __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected); - int result = old == *expected; - *expected = old; - return result; - } #ifdef __PYX_DEBUG_ATOMICS #pragma message ("Using MSVC atomics") #endif @@ -1526,34 +1511,16 @@ static const char* const __pyx_f[] = { #warning "Not using atomics" #endif #endif - -/* CriticalSectionsDefinition.proto (used by CriticalSections) */ -#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING -#define __Pyx_PyCriticalSection void* -#define __Pyx_PyCriticalSection2 void* -#define __Pyx_PyCriticalSection_End(cs) -#define __Pyx_PyCriticalSection2_End(cs) -#else -#define __Pyx_PyCriticalSection PyCriticalSection -#define __Pyx_PyCriticalSection2 PyCriticalSection2 -#define __Pyx_PyCriticalSection_End PyCriticalSection_End -#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End -#endif - -/* CriticalSections.proto (used by ParseKeywordsImpl) */ -#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING -#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs) -#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs) -#else -#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin -#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin -#endif -#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_BEGIN_CRITICAL_SECTION(o) { -#define __Pyx_END_CRITICAL_SECTION() } +#if CYTHON_ATOMICS + #define __pyx_add_acquisition_count(memview)\ + __pyx_atomic_incr_relaxed(__pyx_get_slice_count_pointer(memview)) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_atomic_decr_acq_rel(__pyx_get_slice_count_pointer(memview)) #else -#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION -#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION + #define __pyx_add_acquisition_count(memview)\ + __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) #endif /* ForceInitThreads.proto */ @@ -1568,7 +1535,7 @@ static const char* const __pyx_f[] = { #define __Pyx_FastGIL_Forget() #define __Pyx_FastGilFuncInit() -/* BufferFormatStructs.proto (used by BufferFormatCheck) */ +/* BufferFormatStructs.proto */ struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) typedef struct { @@ -1603,9 +1570,33 @@ typedef struct { char is_valid_array; } __Pyx_BufFmt_Context; -/* IncludeStructmemberH.proto (used by FixUpExtensionType) */ +/* IncludeStructmemberH.proto */ #include +/* CriticalSections.proto */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection void* +#define __Pyx_PyCriticalSection2 void* +#define __Pyx_PyCriticalSection_Begin1(cs, arg) (void)cs +#define __Pyx_PyCriticalSection_Begin2(cs, arg1, arg2) (void)cs +#define __Pyx_PyCriticalSection_End1(cs) +#define __Pyx_PyCriticalSection_End2(cs) +#else +#define __Pyx_PyCriticalSection PyCriticalSection +#define __Pyx_PyCriticalSection2 PyCriticalSection2 +#define __Pyx_PyCriticalSection_Begin1 PyCriticalSection_Begin +#define __Pyx_PyCriticalSection_Begin2 PyCriticalSection2_Begin +#define __Pyx_PyCriticalSection_End1 PyCriticalSection_End +#define __Pyx_PyCriticalSection_End2 PyCriticalSection2_End +#endif +#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_BEGIN_CRITICAL_SECTION(o) { +#define __Pyx_END_CRITICAL_SECTION() } +#else +#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION +#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION +#endif + /* MemviewSliceStruct.proto */ struct __pyx_memoryview_obj; typedef struct { @@ -1616,30 +1607,10 @@ typedef struct { Py_ssize_t suboffsets[8]; } __Pyx_memviewslice; #define __Pyx_MemoryView_Len(m) (m.shape[0]) -#define __Pyx_MEMVIEW_DIRECT 1 -#define __Pyx_MEMVIEW_PTR 2 -#define __Pyx_MEMVIEW_FULL 4 -#define __Pyx_MEMVIEW_CONTIG 8 -#define __Pyx_MEMVIEW_STRIDED 16 -#define __Pyx_MEMVIEW_FOLLOW 32 -#define __Pyx_IS_C_CONTIG 1 -#define __Pyx_IS_F_CONTIG 2 -#define __Pyx_MEMSLICE_INIT { 0, 0, { 0 }, { 0 }, { 0 } } -#if CYTHON_ATOMICS - #define __pyx_add_acquisition_count(memview)\ - __pyx_atomic_incr_relaxed(__pyx_get_slice_count_pointer(memview)) - #define __pyx_sub_acquisition_count(memview)\ - __pyx_atomic_decr_acq_rel(__pyx_get_slice_count_pointer(memview)) -#else - #define __pyx_add_acquisition_count(memview)\ - __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) - #define __pyx_sub_acquisition_count(memview)\ - __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) -#endif /* #### Code section: numeric_typedefs ### */ -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":743 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1648,7 +1619,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1657,26 +1628,26 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< * ctypedef npy_int64 int64_t - * + * #ctypedef npy_int96 int96_t */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":773 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< - * - * ctypedef npy_uint8 uint8_t + * #ctypedef npy_int96 int96_t + * #ctypedef npy_int128 int128_t */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":748 - * ctypedef npy_int64 int64_t +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 + * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< * ctypedef npy_uint16 uint16_t @@ -1684,7 +1655,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1693,26 +1664,26 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< * ctypedef npy_uint64 uint64_t - * + * #ctypedef npy_uint96 uint96_t */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< - * - * ctypedef npy_float32 float32_t + * #ctypedef npy_uint96 uint96_t + * #ctypedef npy_uint128 uint128_t */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":753 - * ctypedef npy_uint64 uint64_t +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 + * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< * ctypedef npy_float64 float64_t @@ -1720,7 +1691,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1729,7 +1700,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":761 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1738,7 +1709,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1747,7 +1718,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":764 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1756,7 +1727,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1765,7 +1736,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":767 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1774,7 +1745,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":799 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1783,7 +1754,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1854,6 +1825,24 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096 + * + * # Iterator API added in v1.6 + * ctypedef int (*NpyIter_IterNextFunc)(NpyIter* it) noexcept nogil # <<<<<<<<<<<<<< + * ctypedef void (*NpyIter_GetMultiIndexFunc)(NpyIter* it, npy_intp* outcoords) noexcept nogil + * +*/ +typedef int (*__pyx_t_5numpy_NpyIter_IterNextFunc)(NpyIter *); + +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1097 + * # Iterator API added in v1.6 + * ctypedef int (*NpyIter_IterNextFunc)(NpyIter* it) noexcept nogil + * ctypedef void (*NpyIter_GetMultiIndexFunc)(NpyIter* it, npy_intp* outcoords) noexcept nogil # <<<<<<<<<<<<<< + * + * cdef extern from "numpy/arrayobject.h": +*/ +typedef void (*__pyx_t_5numpy_NpyIter_GetMultiIndexFunc)(NpyIter *, npy_intp *); + /* "View.MemoryView":110 * * @@ -1904,7 +1893,7 @@ struct __pyx_memoryview_obj { struct __pyx_vtabstruct_memoryview *__pyx_vtab; PyObject *obj; PyObject *_size; - void *_unused; + PyObject *_array_interface; PyThread_type_lock lock; __pyx_atomic_int_type acquisition_count; Py_buffer view; @@ -1914,7 +1903,7 @@ struct __pyx_memoryview_obj { }; -/* "View.MemoryView":951 +/* "View.MemoryView":950 * * * @cython.collection_type("sequence") # <<<<<<<<<<<<<< @@ -1966,7 +1955,7 @@ struct __pyx_vtabstruct_memoryview { static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; -/* "View.MemoryView":951 +/* "View.MemoryView":950 * * * @cython.collection_type("sequence") # <<<<<<<<<<<<<< @@ -2054,7 +2043,71 @@ static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) -/* TupleAndListFromArray.proto (used by fastcall) */ +/* 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 + +/* PyThreadStateGet.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStr.proto */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* PyObjectGetAttrStrNoError.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* TupleAndListFromArray.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); #endif @@ -2062,13 +2115,13 @@ static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_s static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); #endif -/* IncludeStringH.proto (used by BytesEquals) */ +/* IncludeStringH.proto */ #include -/* BytesEquals.proto (used by UnicodeEquals) */ +/* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); -/* UnicodeEquals.proto (used by fastcall) */ +/* UnicodeEquals.proto */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* fastcall.proto */ @@ -2107,10 +2160,19 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) #endif -/* py_dict_items.proto (used by OwnedDictNext) */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static CYTHON_INLINE int __Pyx_ParseKeywords( + PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], + PyObject *kwds2, PyObject *values[], + Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); -/* CallCFunction.proto (used by CallUnboundCMethod0) */ +/* CallCFunction.proto */ #define __Pyx_CallCFunction(cfunc, self, args)\ ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args) #define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\ @@ -2120,33 +2182,52 @@ static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); #define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\ ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames) -/* PyObjectCall.proto (used by PyObjectFastCall) */ +/* PyFunctionFastCall.proto */ +#if CYTHON_FAST_PYCALL +#if !CYTHON_VECTORCALL +#define __Pyx_PyFunction_FastCall(func, args, nargs)\ + __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs); +#endif +#define __Pyx_BUILD_ASSERT_EXPR(cond)\ + (sizeof(char [1 - 2*!(cond)]) - 1) +#ifndef Py_MEMBER_SIZE +#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) +#endif +#if !CYTHON_VECTORCALL +#if PY_VERSION_HEX >= 0x03080000 + #include "frameobject.h" + #define __Pxy_PyFrame_Initialize_Offsets() + #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) +#else + static size_t __pyx_pyframe_localsplus_offset = 0; + #include "frameobject.h" + #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 +#endif +#endif + +/* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif -/* PyObjectCallMethO.proto (used by PyObjectFastCall) */ +/* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif -/* PyObjectFastCall.proto (used by PyObjectCallOneArg) */ +/* PyObjectFastCall.proto */ #define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs); -/* PyObjectCallOneArg.proto (used by CallUnboundCMethod0) */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); - -/* PyObjectGetAttrStr.proto (used by UnpackUnboundCMethod) */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod0) */ +/* UnpackUnboundCMethod.proto */ typedef struct { PyObject *type; PyObject **method_name; @@ -2179,200 +2260,61 @@ static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_Ca #define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc) #endif -/* CallUnboundCMethod0.proto */ +/* CallUnboundCMethod2.proto */ CYTHON_UNUSED -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); #else -#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) #endif -/* py_dict_values.proto (used by OwnedDictNext) */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d); +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); -/* OwnedDictNext.proto (used by ParseKeywordsImpl) */ -#if CYTHON_AVOID_BORROWED_REFS -static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue); +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* RaiseException.proto */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* PyObjectFastCallMethod.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) #else -CYTHON_INLINE -static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue); +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); #endif -/* RaiseDoubleKeywords.proto (used by ParseKeywordsImpl) */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); -/* ParseKeywordsImpl.export */ -static int __Pyx_ParseKeywordsTuple( - PyObject *kwds, - PyObject * const *kwvalues, - PyObject ** const argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - Py_ssize_t num_kwargs, - const char* function_name, - int ignore_unknown_kwargs -); -static int __Pyx_ParseKeywordDictToDict( - PyObject *kwds, - PyObject ** const argnames[], - PyObject *kwds2, - PyObject *values[], - Py_ssize_t num_pos_args, - const char* function_name -); -static int __Pyx_ParseKeywordDict( - PyObject *kwds, - PyObject ** const argnames[], - PyObject *values[], - Py_ssize_t num_pos_args, - Py_ssize_t num_kwargs, - const char* function_name, - int ignore_unknown_kwargs -); - -/* CallUnboundCMethod2.proto */ -CYTHON_UNUSED -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); -#else -#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) -#endif - -/* ParseKeywords.proto */ -static CYTHON_INLINE int __Pyx_ParseKeywords( - PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], - PyObject *kwds2, PyObject *values[], - Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, - const char* function_name, - int ignore_unknown_kwargs -); - -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* ArgTypeTestFunc.export */ -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) - -/* PyErrExceptionMatches.proto (used by PyObjectGetAttrStrNoError) */ -#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 - -/* PyThreadStateGet.proto (used by PyErrFetchRestore) */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#if PY_VERSION_HEX >= 0x030C00A6 -#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) -#else -#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) -#endif -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) -#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto (used by PyObjectGetAttrStrNoError) */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* PyObjectGetAttrStrNoError.proto (used by GetBuiltinName) */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* PyValueError_Check.proto */ -#define __Pyx_PyExc_ValueError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ValueError) - -/* RaiseException.export */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); - -/* PyObjectFastCallMethod.proto */ -#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 -#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) -#else -static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); -#endif - -/* RaiseUnexpectedTypeError.proto */ -static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); - -/* PyMemoryError_Check.proto */ -#define __Pyx_PyExc_MemoryError_Check(obj) __Pyx_TypeCheck(obj, PyExc_MemoryError) - -/* BuildPyUnicode.proto (used by COrdinalToPyUnicode) */ +/* BuildPyUnicode.proto */ static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, int prepend_sign, char padding_char); -/* COrdinalToPyUnicode.proto (used by CIntToPyUnicode) */ +/* COrdinalToPyUnicode.proto */ static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value); static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char); -/* GCCDiagnostics.proto (used by CIntToPyUnicode) */ +/* GCCDiagnostics.proto */ #if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) #define __Pyx_HAS_GCC_DIAGNOSTIC #endif -/* IncludeStdlibH.proto (used by CIntToPyUnicode) */ +/* IncludeStdlibH.proto */ #include /* CIntToPyUnicode.proto */ -#define __Pyx_PyUnicode_From_int(value, width, padding_char, format_char) (\ - ((format_char) == ('c')) ?\ - __Pyx_uchar___Pyx_PyUnicode_From_int(value, width, padding_char) :\ - __Pyx____Pyx_PyUnicode_From_int(value, width, padding_char, format_char)\ - ) -static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char); -static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char); /* CIntToPyUnicode.proto */ -#define __Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char) (\ - ((format_char) == ('c')) ?\ - __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char) :\ - __Pyx____Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char)\ - ) -static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char); -static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); - -/* JoinPyUnicode.export */ +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); + +/* JoinPyUnicode.proto */ static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, Py_UCS4 max_char); @@ -2399,26 +2341,29 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); /* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck, unsafe_shared) :\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck, int unsafe_shared); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ + int wraparound, int boundscheck); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck, int unsafe_shared); + int wraparound, int boundscheck); static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck, int unsafe_shared); + int is_list, int wraparound, int boundscheck); + +/* PyObjectCallOneArg.proto */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* ObjectGetItem.proto */ #if CYTHON_USE_TYPE_SLOTS @@ -2427,12 +2372,9 @@ static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *k #define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) #endif -/* RejectKeywords.export */ +/* RejectKeywords.proto */ static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds); -/* PyTypeError_Check.proto */ -#define __Pyx_PyExc_TypeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_TypeError) - /* DivInt[Py_ssize_t].proto */ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t, int b_is_constant); @@ -2443,7 +2385,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t, int /* GetAttr3.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); -/* PyDictVersioning.proto (used by GetModuleGlobalName) */ +/* PyDictVersioning.proto */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) @@ -2454,7 +2396,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject * static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __Pyx_XNewRef(__pyx_dict_cached_value);\ + (VAR) = __pyx_dict_cached_value;\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ @@ -2491,12 +2433,9 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* AssertionsEnabled.proto */ -#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000 +#if CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000) static int __pyx_assertions_enabled_flag; #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag) - #if __clang__ || __GNUC__ - __attribute__((no_sanitize("thread"))) - #endif static int __Pyx_init_assertions_enabled(void) { PyObject *builtins, *debug, *debug_str; int flag; @@ -2521,9 +2460,6 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #define __pyx_assertions_enabled() (!Py_OptimizeFlag) #endif -/* PyAssertionError_Check.proto */ -#define __Pyx_PyExc_AssertionError_Check(obj) __Pyx_TypeCheck(obj, PyExc_AssertionError) - /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -2536,7 +2472,7 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); /* ExtTypeTest.proto */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); -/* GetTopmostException.proto (used by SaveResetException) */ +/* GetTopmostException.proto */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); #endif @@ -2568,18 +2504,12 @@ static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject * static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif -/* HasAttr.proto (used by ImportImpl) */ -#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 -#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) -#else -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); -#endif - -/* ImportImpl.export */ -static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level); - /* Import.proto */ -static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level); +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); + +/* ImportDottedModule.proto */ +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON @@ -2629,11 +2559,7 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { /* PySequenceMultiply.proto */ #define __Pyx_PySequence_Multiply_Left(mul, seq) __Pyx_PySequence_Multiply(seq, mul) -#if !CYTHON_USE_TYPE_SLOTS -#define __Pyx_PySequence_Multiply PySequence_Repeat -#else static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul); -#endif /* PyObjectFormatAndDecref.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); @@ -2647,31 +2573,41 @@ static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f); #endif /* SetItemInt.proto */ -#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ +#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck, unsafe_shared) :\ + __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, - int is_list, int wraparound, int boundscheck, int unsafe_shared); + int is_list, int wraparound, int boundscheck); /* RaiseUnboundLocalError.proto */ static void __Pyx_RaiseUnboundLocalError(const char *varname); -/* PyIndexError_Check.proto */ -#define __Pyx_PyExc_IndexError_Check(obj) __Pyx_TypeCheck(obj, PyExc_IndexError) - /* DivInt[long].proto */ static CYTHON_INLINE long __Pyx_div_long(long, long, int b_is_constant); -/* PyImportError_Check.proto */ -#define __Pyx_PyExc_ImportError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ImportError) +/* PySequenceContains.proto */ +static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { + int result = PySequence_Contains(seq, item); + return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); +} + +/* ImportFrom.proto */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); + +/* HasAttr.proto */ +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) +#else +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); +#endif -/* IsLittleEndian.proto (used by BufferFormatCheck) */ +/* IsLittleEndian.proto */ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); -/* BufferFormatCheck.proto (used by BufferGetAndValidate) */ +/* BufferFormatCheck.proto */ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, @@ -2722,9 +2658,6 @@ static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, P static void __Pyx_RaiseBufferFallbackError(void); #define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0) -/* AllocateExtensionType.proto */ -static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final); - /* CallTypeTraverse.proto */ #if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) #define __Pyx_call_type_traverse(o, always_call, visit, arg) 0 @@ -2732,30 +2665,28 @@ static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final); static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg); #endif -/* LimitedApiGetTypeDict.proto (used by SetItemOnTypeDict) */ +/* LimitedApiGetTypeDict.proto */ #if CYTHON_COMPILING_IN_LIMITED_API static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp); #endif -/* SetItemOnTypeDict.proto (used by FixUpExtensionType) */ +/* SetItemOnTypeDict.proto */ static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v); #define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v) /* FixUpExtensionType.proto */ static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); -/* PyObjectCallNoArg.proto (used by PyObjectCallMethod0) */ +/* PyObjectCallNoArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -/* PyObjectGetMethod.proto (used by PyObjectCallMethod0) */ -#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) +/* PyObjectGetMethod.proto */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); -#endif -/* PyObjectCallMethod0.proto (used by PyType_Ready) */ +/* PyObjectCallMethod0.proto */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); -/* ValidateBasesTuple.proto (used by PyType_Ready) */ +/* ValidateBasesTuple.proto */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); #endif @@ -2766,13 +2697,13 @@ CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); /* SetVTable.proto */ static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); -/* GetVTable.proto (used by MergeVTables) */ +/* GetVTable.proto */ static void* __Pyx_GetVtable(PyTypeObject *type); /* MergeVTables.proto */ static int __Pyx_MergeVtables(PyTypeObject *type); -/* DelItemOnTypeDict.proto (used by SetupReduce) */ +/* DelItemOnTypeDict.proto */ static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); #define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k) @@ -2780,54 +2711,46 @@ static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); static int __Pyx_setup_reduce(PyObject* type_obj); /* TypeImport.proto */ -#ifndef __PYX_HAVE_RT_ImportType_proto_3_2_2 -#define __PYX_HAVE_RT_ImportType_proto_3_2_2 +#ifndef __PYX_HAVE_RT_ImportType_proto_3_1_4 +#define __PYX_HAVE_RT_ImportType_proto_3_1_4 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L #include #endif #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L -#define __PYX_GET_STRUCT_ALIGNMENT_3_2_2(s) alignof(s) +#define __PYX_GET_STRUCT_ALIGNMENT_3_1_4(s) alignof(s) #else -#define __PYX_GET_STRUCT_ALIGNMENT_3_2_2(s) sizeof(void*) +#define __PYX_GET_STRUCT_ALIGNMENT_3_1_4(s) sizeof(void*) #endif -enum __Pyx_ImportType_CheckSize_3_2_2 { - __Pyx_ImportType_CheckSize_Error_3_2_2 = 0, - __Pyx_ImportType_CheckSize_Warn_3_2_2 = 1, - __Pyx_ImportType_CheckSize_Ignore_3_2_2 = 2 +enum __Pyx_ImportType_CheckSize_3_1_4 { + __Pyx_ImportType_CheckSize_Error_3_1_4 = 0, + __Pyx_ImportType_CheckSize_Warn_3_1_4 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_1_4 = 2 }; -static PyTypeObject *__Pyx_ImportType_3_2_2(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_2 check_size); -#endif - -/* dict_setdefault.proto (used by FetchCommonType) */ -static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value); - -/* AddModuleRef.proto (used by FetchSharedCythonModule) */ -#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING ) ||\ - __PYX_LIMITED_VERSION_HEX < 0x030d0000) - static PyObject *__Pyx_PyImport_AddModuleRef(const char *name); -#else - #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +static PyTypeObject *__Pyx_ImportType_3_1_4(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_4 check_size); #endif -/* FetchSharedCythonModule.proto (used by FetchCommonType) */ +/* FetchSharedCythonModule.proto */ static PyObject *__Pyx_FetchSharedCythonABIModule(void); -/* FetchCommonType.proto (used by CommonTypesMetaclass) */ +/* dict_setdefault.proto */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, int is_safe_type); + +/* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases); -/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */ +/* CommonTypesMetaclass.proto */ static int __pyx_CommonTypesMetaclass_init(PyObject *module); #define __Pyx_CommonTypesMetaclass_USED -/* PyMethodNew.proto (used by CythonFunctionShared) */ +/* PyMethodNew.proto */ static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ); -/* PyVectorcallFastCallDict.proto (used by CythonFunctionShared) */ -#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL +/* PyVectorcallFastCallDict.proto */ +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); #endif -/* CythonFunctionShared.proto (used by CythonFunction) */ +/* CythonFunctionShared.proto */ #define __Pyx_CyFunction_USED #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 @@ -2857,15 +2780,14 @@ typedef struct { #else PyCMethodObject func; #endif -#if CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL ||\ + (CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL) __pyx_vectorcallfunc func_vectorcall; #endif #if CYTHON_COMPILING_IN_LIMITED_API PyObject *func_weakreflist; #endif -#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API PyObject *func_dict; -#endif PyObject *func_name; PyObject *func_qualname; PyObject *func_doc; @@ -2910,7 +2832,7 @@ static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *c static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -#if CYTHON_COMPILING_IN_LIMITED_API +#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) #else #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) @@ -2924,14 +2846,14 @@ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, PyObject *module, PyObject *globals, PyObject* code); -/* CLineInTraceback.proto (used by AddTraceback) */ +/* CLineInTraceback.proto */ #if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #else #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #endif -/* CodeObjectCache.proto (used by AddTraceback) */ +/* CodeObjectCache.proto */ #if CYTHON_COMPILING_IN_LIMITED_API typedef PyObject __Pyx_CachedCodeObjectType; #else @@ -2971,17 +2893,6 @@ typedef struct { __Pyx_Buf_DimInfo diminfo[8]; } __Pyx_LocalBuf_ND; -/* MemviewRefcount.proto */ -static CYTHON_INLINE int __pyx_add_acquisition_count_locked( - __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); -static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( - __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); -#define __pyx_get_slice_count_pointer(memview) (&memview->acquisition_count) -#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) -#define __PYX_XCLEAR_MEMVIEW(slice, have_gil) __Pyx_XCLEAR_MEMVIEW(slice, have_gil, __LINE__) -static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); -static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *, int, int); - /* MemviewSliceIsContig.proto */ static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim); @@ -2990,17 +2901,10 @@ static int __pyx_slices_overlap(__Pyx_memviewslice *slice1, __Pyx_memviewslice *slice2, int ndim, size_t itemsize); -/* MemviewSliceInit.proto */ -static int __Pyx_init_memviewslice( - struct __pyx_memoryview_obj *memview, - int ndim, - __Pyx_memviewslice *memviewslice, - int memview_is_new_reference); - -/* TypeInfoCompare.proto (used by MemviewSliceValidateAndInit) */ +/* TypeInfoCompare.proto */ static int __pyx_typeinfo_cmp(const __Pyx_TypeInfo *a, const __Pyx_TypeInfo *b); -/* MemviewSliceValidateAndInit.export */ +/* MemviewSliceValidateAndInit.proto */ static int __Pyx_ValidateAndInit_memviewslice( int *axes_specs, int c_or_f_flag, @@ -3156,24 +3060,38 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn_ #endif #endif -/* MemviewSliceCopy.proto */ +/* MemviewSliceCopyTemplate.proto */ static __Pyx_memviewslice __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, const char *mode, int ndim, size_t sizeof_dtype, int contig_flag, int dtype_is_object); -/* PyObjectCall2Args.proto (used by PyObjectCallMethod1) */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); - -/* PyObjectCallMethod1.proto (used by UpdateUnpickledDict) */ -static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); - -/* UpdateUnpickledDict.proto */ -static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index); - -/* CheckUnpickleChecksum.proto */ -static CYTHON_INLINE int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members); +/* MemviewSliceInit.proto */ +#include +#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d +#define __Pyx_MEMVIEW_DIRECT 1 +#define __Pyx_MEMVIEW_PTR 2 +#define __Pyx_MEMVIEW_FULL 4 +#define __Pyx_MEMVIEW_CONTIG 8 +#define __Pyx_MEMVIEW_STRIDED 16 +#define __Pyx_MEMVIEW_FOLLOW 32 +#define __Pyx_IS_C_CONTIG 1 +#define __Pyx_IS_F_CONTIG 2 +static int __Pyx_init_memviewslice( + struct __pyx_memoryview_obj *memview, + int ndim, + __Pyx_memviewslice *memviewslice, + int memview_is_new_reference); +static CYTHON_INLINE int __pyx_add_acquisition_count_locked( + __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); +static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( + __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); +#define __pyx_get_slice_count_pointer(memview) (&memview->acquisition_count) +#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) +#define __PYX_XCLEAR_MEMVIEW(slice, have_gil) __Pyx_XCLEAR_MEMVIEW(slice, have_gil, __LINE__) +static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); +static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *, int, int); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *); @@ -3208,20 +3126,11 @@ typedef const char *__Pyx_TypeName; #endif /* GetRuntimeVersion.proto */ -#if __PYX_LIMITED_VERSION_HEX < 0x030b0000 -static unsigned long __Pyx_cached_runtime_version = 0; -static void __Pyx_init_runtime_version(void); -#else -#define __Pyx_init_runtime_version() -#endif static unsigned long __Pyx_get_runtime_version(void); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); -/* DecompressString.proto */ -static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo); - /* MultiPhaseInitModuleState.proto */ #if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE static PyObject *__Pyx_State_FindModule(void*); @@ -3375,14 +3284,190 @@ int __pyx_module_is_main_oceanmesh__geometry__point_in_polygon_ = 0; /* Implementation of "oceanmesh.geometry.point_in_polygon_" */ /* #### Code section: global_var ### */ +static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin___import__; +static PyObject *__pyx_builtin_ValueError; +static PyObject *__pyx_builtin_MemoryError; static PyObject *__pyx_builtin_enumerate; +static PyObject *__pyx_builtin_TypeError; +static PyObject *__pyx_builtin_AssertionError; static PyObject *__pyx_builtin_Ellipsis; static PyObject *__pyx_builtin_id; +static PyObject *__pyx_builtin_IndexError; +static PyObject *__pyx_builtin_ImportError; /* #### Code section: string_decls ### */ +static const char __pyx_k_[] = ": "; +static const char __pyx_k_O[] = "O"; static const char __pyx_k_c[] = "c"; +static const char __pyx_k_e[] = "e"; +static const char __pyx_k_i[] = "i"; +static const char __pyx_k_j[] = "j"; +static const char __pyx_k_n[] = "n"; +static const char __pyx_k_t[] = "t"; +static const char __pyx_k_v[] = "v"; +static const char __pyx_k_x[] = "x"; +static const char __pyx_k__2[] = "."; +static const char __pyx_k__3[] = ">"; +static const char __pyx_k__4[] = "'"; +static const char __pyx_k__5[] = ")"; +static const char __pyx_k__6[] = "?"; +static const char __pyx_k_dx[] = "dx"; +static const char __pyx_k_dy[] = "dy"; +static const char __pyx_k_gc[] = "gc"; +static const char __pyx_k_i0[] = "i0"; +static const char __pyx_k_i1[] = "i1"; +static const char __pyx_k_id[] = "id"; +static const char __pyx_k_np[] = "np"; +static const char __pyx_k_px[] = "px"; +static const char __pyx_k_py[] = "py"; +static const char __pyx_k_x0[] = "x0"; +static const char __pyx_k_x1[] = "x1"; +static const char __pyx_k_y0[] = "y0"; +static const char __pyx_k_y1[] = "y1"; +static const char __pyx_k_abc[] = "abc"; +static const char __pyx_k_and[] = " and "; +static const char __pyx_k_got[] = " (got "; +static const char __pyx_k_new[] = "__new__"; +static const char __pyx_k_obj[] = "obj"; +static const char __pyx_k_pop[] = "pop"; +static const char __pyx_k_base[] = "base"; +static const char __pyx_k_bnds[] = "bnds"; +static const char __pyx_k_dict[] = "__dict__"; +static const char __pyx_k_dist[] = "dist"; +static const char __pyx_k_edge[] = "edge"; +static const char __pyx_k_ftol[] = "ftol"; +static const char __pyx_k_func[] = "__func__"; +static const char __pyx_k_main[] = "__main__"; +static const char __pyx_k_mode[] = "mode"; static const char __pyx_k_name[] = "name"; +static const char __pyx_k_ndim[] = "ndim"; +static const char __pyx_k_node[] = "node"; +static const char __pyx_k_pack[] = "pack"; +static const char __pyx_k_size[] = "size"; +static const char __pyx_k_spec[] = "__spec__"; +static const char __pyx_k_stat[] = "stat"; +static const char __pyx_k_step[] = "step"; +static const char __pyx_k_stop[] = "stop"; +static const char __pyx_k_test[] = "__test__"; +static const char __pyx_k_vert[] = "vert"; +static const char __pyx_k_ASCII[] = "ASCII"; +static const char __pyx_k_at_0x[] = " at 0x"; +static const char __pyx_k_class[] = "__class__"; +static const char __pyx_k_count[] = "count"; +static const char __pyx_k_dtype[] = "dtype"; +static const char __pyx_k_empty[] = "empty"; +static const char __pyx_k_error[] = "error"; +static const char __pyx_k_eymax[] = "eymax"; +static const char __pyx_k_eymin[] = "eymin"; +static const char __pyx_k_flags[] = "flags"; +static const char __pyx_k_index[] = "index"; +static const char __pyx_k_int32[] = "int32"; +static const char __pyx_k_numpy[] = "numpy"; +static const char __pyx_k_projx[] = "projx"; +static const char __pyx_k_projy[] = "projy"; +static const char __pyx_k_range[] = "range"; +static const char __pyx_k_shape[] = "shape"; +static const char __pyx_k_start[] = "start"; +static const char __pyx_k_uint8[] = "uint8"; +static const char __pyx_k_xints[] = "xints"; +static const char __pyx_k_zeros[] = "zeros"; +static const char __pyx_k_astype[] = "astype"; +static const char __pyx_k_enable[] = "enable"; +static const char __pyx_k_encode[] = "encode"; +static const char __pyx_k_format[] = "format"; +static const char __pyx_k_import[] = "__import__"; +static const char __pyx_k_inside[] = "inside"; +static const char __pyx_k_module[] = "__module__"; +static const char __pyx_k_n_edge[] = "n_edge"; +static const char __pyx_k_n_vert[] = "n_vert"; +static const char __pyx_k_name_2[] = "__name__"; +static const char __pyx_k_object[] = " object>"; +static const char __pyx_k_on_bnd[] = "on_bnd"; +static const char __pyx_k_pickle[] = "pickle"; +static const char __pyx_k_reduce[] = "__reduce__"; +static const char __pyx_k_struct[] = "struct"; +static const char __pyx_k_unpack[] = "unpack"; +static const char __pyx_k_update[] = "update"; +static const char __pyx_k_bnd_arr[] = "bnd_arr"; +static const char __pyx_k_disable[] = "disable"; +static const char __pyx_k_float64[] = "float64"; static const char __pyx_k_fortran[] = "fortran"; +static const char __pyx_k_memview[] = "memview"; +static const char __pyx_k_Ellipsis[] = "Ellipsis"; +static const char __pyx_k_Sequence[] = "Sequence"; +static const char __pyx_k_add_note[] = "add_note"; +static const char __pyx_k_getstate[] = "__getstate__"; +static const char __pyx_k_itemsize[] = "itemsize"; +static const char __pyx_k_pyx_type[] = "__pyx_type"; +static const char __pyx_k_qualname[] = "__qualname__"; +static const char __pyx_k_register[] = "register"; +static const char __pyx_k_set_name[] = "__set_name__"; +static const char __pyx_k_setstate[] = "__setstate__"; +static const char __pyx_k_stat_arr[] = "stat_arr"; +static const char __pyx_k_TypeError[] = "TypeError"; +static const char __pyx_k_enumerate[] = "enumerate"; +static const char __pyx_k_isenabled[] = "isenabled"; +static const char __pyx_k_pyx_state[] = "__pyx_state"; +static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; +static const char __pyx_k_IndexError[] = "IndexError"; +static const char __pyx_k_ValueError[] = "ValueError"; +static const char __pyx_k_eymax_view[] = "eymax_view"; +static const char __pyx_k_eymin_view[] = "eymin_view"; +static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; +static const char __pyx_k_ImportError[] = "ImportError"; +static const char __pyx_k_MemoryError[] = "MemoryError"; +static const char __pyx_k_PickleError[] = "PickleError"; +static const char __pyx_k_C_CONTIGUOUS[] = "C_CONTIGUOUS"; +static const char __pyx_k_initializing[] = "_initializing"; +static const char __pyx_k_inpoly2_fast[] = "inpoly2_fast"; +static const char __pyx_k_is_coroutine[] = "_is_coroutine"; +static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; +static const char __pyx_k_MemoryView_of[] = "__pyx_empty_tuple); Py_CLEAR(clear_module_state->__pyx_empty_bytes); Py_CLEAR(clear_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); + #endif #if CYTHON_PEP489_MULTI_PHASE_INIT __Pyx_State_RemoveModule(NULL); #endif @@ -3732,17 +3843,14 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { for (int i=0; i<1; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); } for (int i=0; i<2; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } for (int i=0; i<1; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<165; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } - for (int i=0; i<4; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); } -/* #### Code section: module_state_clear_contents ### */ -/* CommonTypesMetaclass.module_state_clear */ -Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType); - -/* CythonFunctionShared.module_state_clear */ -Py_CLEAR(clear_module_state->__pyx_CyFunctionType); - -/* #### Code section: module_state_clear_end ### */ -return 0; + for (int i=0; i<171; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + Py_CLEAR(clear_module_state->__pyx_int_0); + Py_CLEAR(clear_module_state->__pyx_int_1); + Py_CLEAR(clear_module_state->__pyx_int_112105877); + Py_CLEAR(clear_module_state->__pyx_int_136983863); + Py_CLEAR(clear_module_state->__pyx_int_184977713); + Py_CLEAR(clear_module_state->__pyx_int_neg_1); + return 0; } #endif /* #### Code section: module_state_traverse ### */ @@ -3756,6 +3864,12 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple); __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes); __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode); + #ifdef __Pyx_CyFunction_USED + Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + #endif + #ifdef __Pyx_FusedFunction_USED + Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); + #endif Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_dtype); Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flatiter); @@ -3783,17 +3897,14 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void for (int i=0; i<1; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); } for (int i=0; i<2; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } for (int i=0; i<1; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<165; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } - for (int i=0; i<4; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); } -/* #### Code section: module_state_traverse_contents ### */ -/* CommonTypesMetaclass.module_state_traverse */ -Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType); - -/* CythonFunctionShared.module_state_traverse */ -Py_VISIT(traverse_module_state->__pyx_CyFunctionType); - -/* #### Code section: module_state_traverse_end ### */ -return 0; + for (int i=0; i<171; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_112105877); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_136983863); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_184977713); + __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_neg_1); + return 0; } #endif /* #### Code section: module_code ### */ @@ -3859,7 +3970,7 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 129, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < 0) __PYX_ERR(1, 129, __pyx_L3_error) if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_c)); for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, i); __PYX_ERR(1, 129, __pyx_L3_error) } @@ -4012,7 +4123,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if itemsize <= 0: */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Empty_shape_tuple_for_cython_arr, 0, 0); + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Empty_shape_tuple_for_cython_arr, 0, 0); __PYX_ERR(1, 139, __pyx_L1_error) /* "View.MemoryView":138 @@ -4041,7 +4152,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if not isinstance(format, bytes): */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_itemsize_0_for_cython_array, 0, 0); + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_itemsize_0_for_cython_array, 0, 0); __PYX_ERR(1, 142, __pyx_L1_error) /* "View.MemoryView":141 @@ -4076,7 +4187,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ASCII}; - __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); @@ -4158,7 +4269,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_MemoryError))), __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_shape_and_str, 0, 0); + __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_shape_and_str, 0, 0); __PYX_ERR(1, 154, __pyx_L1_error) /* "View.MemoryView":153 @@ -4233,7 +4344,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_12, 0, 0); + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_12, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(1, 159, __pyx_L1_error) @@ -4362,7 +4473,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Invalid_mode_expected_c_or_fortr, __pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_12, 0, 0); + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_12, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(1, 170, __pyx_L1_error) } @@ -4586,7 +4697,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * info.buf = self.data * info.len = self.len */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Can_only_create_a_buffer_that_is, 0, 0); + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Can_only_create_a_buffer_that_is, 0, 0); __PYX_ERR(1, 189, __pyx_L1_error) /* "View.MemoryView":188 @@ -5016,7 +5127,8 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - size_t __pyx_t_5; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -5040,17 +5152,20 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 224, __pyx_L1_error) + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = 1; + __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_t_3, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_memoryview_type, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 224, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } @@ -5072,6 +5187,7 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -5394,7 +5510,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 @@ -5468,7 +5584,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } } @@ -5516,7 +5632,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 @@ -5590,7 +5706,7 @@ static int __pyx_array_allocate_buffer(struct __pyx_array_obj *__pyx_v_self) { * * if self.dtype_is_object: */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_MemoryError))), __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_array_data, 0, 0); + __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_array_data, 0, 0); __PYX_ERR(1, 255, __pyx_L1_error) /* "View.MemoryView":254 @@ -5813,7 +5929,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_allocate_buffer, Py_False) < (0)) __PYX_ERR(1, 273, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 273, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_tp_new_array(((PyTypeObject *)__pyx_mstate_global->__pyx_array_type), __pyx_t_1, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -5908,7 +6024,7 @@ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_ar default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(1, 302, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(1, 302, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(1, 302, __pyx_L3_error) } } @@ -6085,9 +6201,8 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; - int __pyx_t_3; + PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -6098,7 +6213,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * cdef bint use_setstate * state = (self.name,) # <<<<<<<<<<<<<< * _dict = getattr(self, '__dict__', None) - * if _dict is not None and _dict: + * if _dict is not None: */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -6112,7 +6227,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * cdef bint use_setstate * state = (self.name,) * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None and _dict: + * if _dict is not None: * state += (_dict,) */ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) @@ -6123,24 +6238,16 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi /* "(tree fragment)":7 * state = (self.name,) * _dict = getattr(self, '__dict__', None) - * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ - __pyx_t_3 = (__pyx_v__dict != Py_None); - if (__pyx_t_3) { - } else { - __pyx_t_2 = __pyx_t_3; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v__dict); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 7, __pyx_L1_error) - __pyx_t_2 = __pyx_t_3; - __pyx_L4_bool_binop_done:; + __pyx_t_2 = (__pyx_v__dict != Py_None); if (__pyx_t_2) { /* "(tree fragment)":8 * _dict = getattr(self, '__dict__', None) - * if _dict is not None and _dict: + * if _dict is not None: * state += (_dict,) # <<<<<<<<<<<<<< * use_setstate = True * else: @@ -6150,25 +6257,25 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(__pyx_v__dict); __Pyx_GIVEREF(__pyx_v__dict); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict) != (0)) __PYX_ERR(1, 8, __pyx_L1_error); - __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); + __pyx_t_3 = 0; /* "(tree fragment)":9 - * if _dict is not None and _dict: + * if _dict is not None: * state += (_dict,) * use_setstate = True # <<<<<<<<<<<<<< * else: - * use_setstate = ('self.name is not None',) + * use_setstate = self.name is not None */ __pyx_v_use_setstate = 1; /* "(tree fragment)":7 * state = (self.name,) * _dict = getattr(self, '__dict__', None) - * if _dict is not None and _dict: # <<<<<<<<<<<<<< + * if _dict is not None: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ @@ -6178,19 +6285,19 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi /* "(tree fragment)":11 * use_setstate = True * else: - * use_setstate = ('self.name is not None',) # <<<<<<<<<<<<<< + * use_setstate = self.name is not None # <<<<<<<<<<<<<< * if use_setstate: * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state */ /*else*/ { - __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_mstate_global->__pyx_tuple[0]); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error) + __pyx_t_2 = (__pyx_v_self->name != Py_None); __pyx_v_use_setstate = __pyx_t_2; } __pyx_L3:; /* "(tree fragment)":12 * else: - * use_setstate = ('self.name is not None',) + * use_setstate = self.name is not None * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state * else: @@ -6198,15 +6305,15 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi if (__pyx_v_use_setstate) { /* "(tree fragment)":13 - * use_setstate = ('self.name is not None',) + * use_setstate = self.name is not None * if use_setstate: * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state # <<<<<<<<<<<<<< * else: * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); @@ -6218,24 +6325,24 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_4 = 0; + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_3 = 0; __pyx_t_1 = 0; - __pyx_r = __pyx_t_5; - __pyx_t_5 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; /* "(tree fragment)":12 * else: - * use_setstate = ('self.name is not None',) + * use_setstate = self.name is not None * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state * else: @@ -6251,8 +6358,8 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); @@ -6264,16 +6371,16 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_5); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_5 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_4; + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_3; + __pyx_t_3 = 0; goto __pyx_L0; } @@ -6286,8 +6393,8 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6354,7 +6461,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 16, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 16, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 16, __pyx_L3_error) } } @@ -6393,7 +6500,6 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -6404,17 +6510,10 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_Enum__set_state(self, __pyx_state) # <<<<<<<<<<<<<< */ - __pyx_t_1 = __pyx_v___pyx_state; - __Pyx_INCREF(__pyx_t_1); - if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(1, 17, __pyx_L1_error) - if (unlikely(__pyx_t_1 == Py_None)) { - PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); - __PYX_ERR(1, 17, __pyx_L1_error) - } - __pyx_t_2 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) + __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":16 * else: @@ -6428,7 +6527,6 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6437,7 +6535,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me return __pyx_r; } -/* "View.MemoryView":348 +/* "View.MemoryView":347 * cdef const __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< @@ -6469,55 +6567,55 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_flags,&__pyx_mstate_global->__pyx_n_u_dtype_is_object,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 348, __pyx_L3_error) + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 347, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 348, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 347, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 348, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 347, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 348, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 347, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 348, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < 0) __PYX_ERR(1, 347, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, i); __PYX_ERR(1, 348, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, i); __PYX_ERR(1, 347, __pyx_L3_error) } } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 348, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 347, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 348, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 347, __pyx_L3_error) values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 348, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 347, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_obj = values[0]; - __pyx_v_flags = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 348, __pyx_L3_error) + __pyx_v_flags = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 347, __pyx_L3_error) if (values[2]) { - __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 348, __pyx_L3_error) + __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 347, __pyx_L3_error) } else { __pyx_v_dtype_is_object = ((int)0); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 348, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 347, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -6551,7 +6649,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "View.MemoryView":349 + /* "View.MemoryView":348 * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj # <<<<<<<<<<<<<< @@ -6564,7 +6662,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __Pyx_DECREF(__pyx_v_self->obj); __pyx_v_self->obj = __pyx_v_obj; - /* "View.MemoryView":350 + /* "View.MemoryView":349 * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj * self.flags = flags # <<<<<<<<<<<<<< @@ -6573,7 +6671,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->flags = __pyx_v_flags; - /* "View.MemoryView":351 + /* "View.MemoryView":350 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< @@ -6591,16 +6689,16 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "View.MemoryView":352 + /* "View.MemoryView":351 * self.flags = flags * if type(self) is memoryview or obj is not None: * PyObject_GetBuffer(obj, &self.view, flags) # <<<<<<<<<<<<<< * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None */ - __pyx_t_3 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 352, __pyx_L1_error) + __pyx_t_3 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 351, __pyx_L1_error) - /* "View.MemoryView":353 + /* "View.MemoryView":352 * if type(self) is memoryview or obj is not None: * PyObject_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< @@ -6610,7 +6708,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (((PyObject *)__pyx_v_self->view.obj) == NULL); if (__pyx_t_1) { - /* "View.MemoryView":354 + /* "View.MemoryView":353 * PyObject_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None # <<<<<<<<<<<<<< @@ -6619,7 +6717,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None; - /* "View.MemoryView":355 + /* "View.MemoryView":354 * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -6628,7 +6726,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ Py_INCREF(Py_None); - /* "View.MemoryView":353 + /* "View.MemoryView":352 * if type(self) is memoryview or obj is not None: * PyObject_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< @@ -6637,7 +6735,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":351 + /* "View.MemoryView":350 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< @@ -6646,7 +6744,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":357 + /* "View.MemoryView":356 * Py_INCREF(Py_None) * * if not __PYX_CYTHON_ATOMICS_ENABLED(): # <<<<<<<<<<<<<< @@ -6656,7 +6754,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (!__PYX_CYTHON_ATOMICS_ENABLED()); if (__pyx_t_1) { - /* "View.MemoryView":359 + /* "View.MemoryView":358 * if not __PYX_CYTHON_ATOMICS_ENABLED(): * global __pyx_memoryview_thread_locks_used * if (__pyx_memoryview_thread_locks_used < 8 and # <<<<<<<<<<<<<< @@ -6670,7 +6768,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ goto __pyx_L9_bool_binop_done; } - /* "View.MemoryView":361 + /* "View.MemoryView":360 * if (__pyx_memoryview_thread_locks_used < 8 and * * not __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING()): # <<<<<<<<<<<<<< @@ -6681,7 +6779,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - /* "View.MemoryView":359 + /* "View.MemoryView":358 * if not __PYX_CYTHON_ATOMICS_ENABLED(): * global __pyx_memoryview_thread_locks_used * if (__pyx_memoryview_thread_locks_used < 8 and # <<<<<<<<<<<<<< @@ -6690,7 +6788,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ if (__pyx_t_1) { - /* "View.MemoryView":362 + /* "View.MemoryView":361 * * not __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING()): * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] # <<<<<<<<<<<<<< @@ -6699,7 +6797,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); - /* "View.MemoryView":363 + /* "View.MemoryView":362 * not __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING()): * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 # <<<<<<<<<<<<<< @@ -6708,7 +6806,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1); - /* "View.MemoryView":359 + /* "View.MemoryView":358 * if not __PYX_CYTHON_ATOMICS_ENABLED(): * global __pyx_memoryview_thread_locks_used * if (__pyx_memoryview_thread_locks_used < 8 and # <<<<<<<<<<<<<< @@ -6717,7 +6815,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":364 + /* "View.MemoryView":363 * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6727,7 +6825,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (__pyx_v_self->lock == NULL); if (__pyx_t_1) { - /* "View.MemoryView":365 + /* "View.MemoryView":364 * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() # <<<<<<<<<<<<<< @@ -6736,7 +6834,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->lock = PyThread_allocate_lock(); - /* "View.MemoryView":366 + /* "View.MemoryView":365 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6746,16 +6844,16 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (__pyx_v_self->lock == NULL); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":367 + /* "View.MemoryView":366 * self.lock = PyThread_allocate_lock() * if self.lock is NULL: * raise MemoryError # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ - PyErr_NoMemory(); __PYX_ERR(1, 367, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 366, __pyx_L1_error) - /* "View.MemoryView":366 + /* "View.MemoryView":365 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6764,7 +6862,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":364 + /* "View.MemoryView":363 * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6773,7 +6871,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":357 + /* "View.MemoryView":356 * Py_INCREF(Py_None) * * if not __PYX_CYTHON_ATOMICS_ENABLED(): # <<<<<<<<<<<<<< @@ -6782,7 +6880,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":369 + /* "View.MemoryView":368 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -6792,7 +6890,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":370 + /* "View.MemoryView":369 * * if flags & PyBUF_FORMAT: * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') # <<<<<<<<<<<<<< @@ -6810,7 +6908,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_L14_bool_binop_done:; __pyx_v_self->dtype_is_object = __pyx_t_1; - /* "View.MemoryView":369 + /* "View.MemoryView":368 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -6820,7 +6918,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ goto __pyx_L13; } - /* "View.MemoryView":372 + /* "View.MemoryView":371 * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') * else: * self.dtype_is_object = dtype_is_object # <<<<<<<<<<<<<< @@ -6832,7 +6930,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ } __pyx_L13:; - /* "View.MemoryView":374 + /* "View.MemoryView":373 * self.dtype_is_object = dtype_is_object * * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 # <<<<<<<<<<<<<< @@ -6845,19 +6943,19 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_5 = (sizeof(__pyx_atomic_int_type)); if (unlikely(__pyx_t_5 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 374, __pyx_L1_error) + __PYX_ERR(1, 373, __pyx_L1_error) } __pyx_t_1 = ((__pyx_t_4 % __pyx_t_5) == 0); if (unlikely(!__pyx_t_1)) { - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_AssertionError))), 0, 0, 0); - __PYX_ERR(1, 374, __pyx_L1_error) + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(1, 373, __pyx_L1_error) } } #else - if ((1)); else __PYX_ERR(1, 374, __pyx_L1_error) + if ((1)); else __PYX_ERR(1, 373, __pyx_L1_error) #endif - /* "View.MemoryView":375 + /* "View.MemoryView":374 * * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 * self.typeinfo = NULL # <<<<<<<<<<<<<< @@ -6866,7 +6964,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->typeinfo = NULL; - /* "View.MemoryView":348 + /* "View.MemoryView":347 * cdef const __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< @@ -6885,7 +6983,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ return __pyx_r; } -/* "View.MemoryView":377 +/* "View.MemoryView":376 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< @@ -6915,7 +7013,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal PyThread_type_lock __pyx_t_5; PyThread_type_lock __pyx_t_6; - /* "View.MemoryView":378 + /* "View.MemoryView":377 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< @@ -6925,7 +7023,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (__pyx_v_self->obj != Py_None); if (__pyx_t_1) { - /* "View.MemoryView":379 + /* "View.MemoryView":378 * def __dealloc__(memoryview self): * if self.obj is not None: * PyBuffer_Release(&self.view) # <<<<<<<<<<<<<< @@ -6934,7 +7032,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ PyBuffer_Release((&__pyx_v_self->view)); - /* "View.MemoryView":378 + /* "View.MemoryView":377 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< @@ -6944,7 +7042,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal goto __pyx_L3; } - /* "View.MemoryView":380 + /* "View.MemoryView":379 * if self.obj is not None: * PyBuffer_Release(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< @@ -6954,7 +7052,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":382 + /* "View.MemoryView":381 * elif (<__pyx_buffer *> &self.view).obj == Py_None: * * (<__pyx_buffer *> &self.view).obj = NULL # <<<<<<<<<<<<<< @@ -6963,7 +7061,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL; - /* "View.MemoryView":383 + /* "View.MemoryView":382 * * (<__pyx_buffer *> &self.view).obj = NULL * Py_DECREF(Py_None) # <<<<<<<<<<<<<< @@ -6972,7 +7070,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ Py_DECREF(Py_None); - /* "View.MemoryView":380 + /* "View.MemoryView":379 * if self.obj is not None: * PyBuffer_Release(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< @@ -6982,7 +7080,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } __pyx_L3:; - /* "View.MemoryView":387 + /* "View.MemoryView":386 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -6992,7 +7090,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (__pyx_v_self->lock != NULL); if (__pyx_t_1) { - /* "View.MemoryView":388 + /* "View.MemoryView":387 * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): # <<<<<<<<<<<<<< @@ -7009,7 +7107,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":389 + /* "View.MemoryView":388 * if self.lock != NULL: * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< @@ -7019,7 +7117,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = ((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock); if (__pyx_t_1) { - /* "View.MemoryView":390 + /* "View.MemoryView":389 * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 # <<<<<<<<<<<<<< @@ -7028,7 +7126,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1); - /* "View.MemoryView":391 + /* "View.MemoryView":390 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< @@ -7038,7 +7136,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (__pyx_v_i != __pyx_memoryview_thread_locks_used); if (__pyx_t_1) { - /* "View.MemoryView":393 + /* "View.MemoryView":392 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) # <<<<<<<<<<<<<< @@ -7048,7 +7146,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_5 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_v_i]); - /* "View.MemoryView":392 + /* "View.MemoryView":391 * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( # <<<<<<<<<<<<<< @@ -7058,7 +7156,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_5; (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_6; - /* "View.MemoryView":391 + /* "View.MemoryView":390 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< @@ -7067,7 +7165,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ } - /* "View.MemoryView":394 + /* "View.MemoryView":393 * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) * break # <<<<<<<<<<<<<< @@ -7076,7 +7174,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ goto __pyx_L6_break; - /* "View.MemoryView":389 + /* "View.MemoryView":388 * if self.lock != NULL: * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< @@ -7087,7 +7185,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } /*else*/ { - /* "View.MemoryView":396 + /* "View.MemoryView":395 * break * else: * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< @@ -7098,7 +7196,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } __pyx_L6_break:; - /* "View.MemoryView":387 + /* "View.MemoryView":386 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -7107,7 +7205,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ } - /* "View.MemoryView":377 + /* "View.MemoryView":376 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< @@ -7118,7 +7216,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal /* function exit code */ } -/* "View.MemoryView":398 +/* "View.MemoryView":397 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -7144,7 +7242,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_item_pointer", 0); - /* "View.MemoryView":400 + /* "View.MemoryView":399 * cdef char *get_item_pointer(memoryview self, object index) except NULL: * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< @@ -7153,7 +7251,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py */ __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); - /* "View.MemoryView":402 + /* "View.MemoryView":401 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -7166,9 +7264,9 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 402, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 402, __pyx_L1_error) + __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 401, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { @@ -7176,17 +7274,17 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 402, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } - __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference); + __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_3); ++__pyx_t_3; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 402, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } @@ -7197,13 +7295,13 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py #endif ++__pyx_t_3; } - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 402, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 401, __pyx_L1_error) } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 402, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 401, __pyx_L1_error) PyErr_Clear(); } break; @@ -7215,18 +7313,18 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_v_dim = __pyx_t_1; __pyx_t_1 = (__pyx_t_1 + 1); - /* "View.MemoryView":403 + /* "View.MemoryView":402 * * for dim, idx in enumerate(index): * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< * * return itemp */ - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 403, __pyx_L1_error) - __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 403, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 402, __pyx_L1_error) + __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)0))) __PYX_ERR(1, 402, __pyx_L1_error) __pyx_v_itemp = __pyx_t_7; - /* "View.MemoryView":402 + /* "View.MemoryView":401 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -7236,7 +7334,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":405 + /* "View.MemoryView":404 * itemp = pybuffer_index(&self.view, itemp, idx, dim) * * return itemp # <<<<<<<<<<<<<< @@ -7246,7 +7344,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_r = __pyx_v_itemp; goto __pyx_L0; - /* "View.MemoryView":398 + /* "View.MemoryView":397 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -7259,14 +7357,14 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; + __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_idx); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":408 +/* "View.MemoryView":407 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -7305,7 +7403,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "View.MemoryView":409 + /* "View.MemoryView":408 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -7315,7 +7413,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis); if (__pyx_t_1) { - /* "View.MemoryView":410 + /* "View.MemoryView":409 * def __getitem__(memoryview self, object index): * if index is Ellipsis: * return self # <<<<<<<<<<<<<< @@ -7327,7 +7425,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "View.MemoryView":409 + /* "View.MemoryView":408 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -7336,14 +7434,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ */ } - /* "View.MemoryView":412 + /* "View.MemoryView":411 * return self * * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * cdef char *itemp */ - __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 412, __pyx_L1_error) + __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(__pyx_t_2 != Py_None)) { PyObject* sequence = __pyx_t_2; @@ -7351,7 +7449,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 412, __pyx_L1_error) + __PYX_ERR(1, 411, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -7359,31 +7457,31 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 412, __pyx_L1_error) + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 412, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 412, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 411, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_indices = __pyx_t_4; __pyx_t_4 = 0; - /* "View.MemoryView":415 + /* "View.MemoryView":414 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< * return memview_slice(self, indices) * else: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 415, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 414, __pyx_L1_error) if (__pyx_t_1) { - /* "View.MemoryView":416 + /* "View.MemoryView":415 * cdef char *itemp * if have_slices: * return memview_slice(self, indices) # <<<<<<<<<<<<<< @@ -7391,13 +7489,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * itemp = self.get_item_pointer(indices) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 416, __pyx_L1_error) + __pyx_t_2 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 415, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":415 + /* "View.MemoryView":414 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< @@ -7406,7 +7504,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ */ } - /* "View.MemoryView":418 + /* "View.MemoryView":417 * return memview_slice(self, indices) * else: * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< @@ -7414,10 +7512,10 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * */ /*else*/ { - __pyx_t_5 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_5 == ((void *)NULL))) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_5 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_5 == ((char *)0))) __PYX_ERR(1, 417, __pyx_L1_error) __pyx_v_itemp = __pyx_t_5; - /* "View.MemoryView":419 + /* "View.MemoryView":418 * else: * itemp = self.get_item_pointer(indices) * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< @@ -7425,14 +7523,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * def __setitem__(memoryview self, object index, object value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 419, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":408 + /* "View.MemoryView":407 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -7455,7 +7553,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ return __pyx_r; } -/* "View.MemoryView":421 +/* "View.MemoryView":420 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -7493,7 +7591,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_RefNannySetupContext("__setitem__", 0); __Pyx_INCREF(__pyx_v_index); - /* "View.MemoryView":422 + /* "View.MemoryView":421 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< @@ -7502,17 +7600,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit */ if (unlikely(__pyx_v_self->view.readonly)) { - /* "View.MemoryView":423 + /* "View.MemoryView":422 * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: * raise TypeError, "Cannot assign to read-only memoryview" # <<<<<<<<<<<<<< * * have_slices, index = _unellipsify(index, self.view.ndim) */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Cannot_assign_to_read_only_memor, 0, 0); - __PYX_ERR(1, 423, __pyx_L1_error) + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_Cannot_assign_to_read_only_memor, 0, 0); + __PYX_ERR(1, 422, __pyx_L1_error) - /* "View.MemoryView":422 + /* "View.MemoryView":421 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< @@ -7521,14 +7619,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit */ } - /* "View.MemoryView":425 + /* "View.MemoryView":424 * raise TypeError, "Cannot assign to read-only memoryview" * * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * if have_slices: */ - __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(__pyx_t_1 != Py_None)) { PyObject* sequence = __pyx_t_1; @@ -7536,7 +7634,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 425, __pyx_L1_error) + __PYX_ERR(1, 424, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); @@ -7544,43 +7642,43 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 425, __pyx_L1_error) + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 424, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 425, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 424, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":427 + /* "View.MemoryView":426 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< * obj = self.is_slice(value) * if obj is not None: */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 426, __pyx_L1_error) if (__pyx_t_4) { - /* "View.MemoryView":428 + /* "View.MemoryView":427 * * if have_slices: * obj = self.is_slice(value) # <<<<<<<<<<<<<< * if obj is not None: * self.setitem_slice_assignment(self[index], obj) */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 428, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_obj = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":429 + /* "View.MemoryView":428 * if have_slices: * obj = self.is_slice(value) * if obj is not None: # <<<<<<<<<<<<<< @@ -7590,21 +7688,21 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __pyx_t_4 = (__pyx_v_obj != Py_None); if (__pyx_t_4) { - /* "View.MemoryView":430 + /* "View.MemoryView":429 * obj = self.is_slice(value) * if obj is not None: * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< * else: * self.setitem_slice_assign_scalar(self[index], value) */ - __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 430, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 430, __pyx_L1_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 429, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":429 + /* "View.MemoryView":428 * if have_slices: * obj = self.is_slice(value) * if obj is not None: # <<<<<<<<<<<<<< @@ -7614,7 +7712,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit goto __pyx_L5; } - /* "View.MemoryView":432 + /* "View.MemoryView":431 * self.setitem_slice_assignment(self[index], obj) * else: * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< @@ -7622,17 +7720,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * self.setitem_indexed(index, value) */ /*else*/ { - __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 432, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 432, __pyx_L1_error) - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 432, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 431, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L5:; - /* "View.MemoryView":427 + /* "View.MemoryView":426 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< @@ -7642,7 +7740,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit goto __pyx_L4; } - /* "View.MemoryView":434 + /* "View.MemoryView":433 * self.setitem_slice_assign_scalar(self[index], value) * else: * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< @@ -7650,13 +7748,13 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * cdef is_slice(self, obj): */ /*else*/ { - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 434, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 433, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L4:; - /* "View.MemoryView":421 + /* "View.MemoryView":420 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -7681,7 +7779,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit return __pyx_r; } -/* "View.MemoryView":436 +/* "View.MemoryView":435 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -7701,15 +7799,16 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - size_t __pyx_t_10; - int __pyx_t_11; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; + int __pyx_t_12; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_slice", 0); __Pyx_INCREF(__pyx_v_obj); - /* "View.MemoryView":437 + /* "View.MemoryView":436 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< @@ -7720,7 +7819,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "View.MemoryView":438 + /* "View.MemoryView":437 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -7736,7 +7835,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { - /* "View.MemoryView":439 + /* "View.MemoryView":438 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< @@ -7744,32 +7843,35 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ * except TypeError: */ __pyx_t_7 = NULL; - __pyx_t_8 = __Pyx_PyLong_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 439, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_8); + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); + __pyx_t_8 = ((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); + __pyx_t_9 = __Pyx_PyLong_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 438, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); - /* "View.MemoryView":440 + /* "View.MemoryView":439 * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) # <<<<<<<<<<<<<< * except TypeError: * return None */ - __pyx_t_9 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 440, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = 1; + __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 439, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_10); + __pyx_t_11 = 1; { - PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_obj, __pyx_t_8, __pyx_t_9}; - __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_memoryview_type, __pyx_callargs+__pyx_t_10, (4-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_obj, __pyx_t_9, __pyx_t_10}; + __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_11, (4-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 439, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 438, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_6); } __Pyx_DECREF_SET(__pyx_v_obj, ((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - /* "View.MemoryView":438 + /* "View.MemoryView":437 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -7782,23 +7884,24 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; + __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "View.MemoryView":441 + /* "View.MemoryView":440 * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) * except TypeError: # <<<<<<<<<<<<<< * return None * */ - __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError)))); - if (__pyx_t_11) { + __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); + if (__pyx_t_12) { __Pyx_ErrRestore(0,0,0); - /* "View.MemoryView":442 + /* "View.MemoryView":441 * self.dtype_is_object) * except TypeError: * return None # <<<<<<<<<<<<<< @@ -7811,7 +7914,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ } goto __pyx_L6_except_error; - /* "View.MemoryView":438 + /* "View.MemoryView":437 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -7833,7 +7936,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_L9_try_end:; } - /* "View.MemoryView":437 + /* "View.MemoryView":436 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< @@ -7842,7 +7945,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ */ } - /* "View.MemoryView":444 + /* "View.MemoryView":443 * return None * * return obj # <<<<<<<<<<<<<< @@ -7854,7 +7957,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_r = __pyx_v_obj; goto __pyx_L0; - /* "View.MemoryView":436 + /* "View.MemoryView":435 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -7868,6 +7971,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -7877,7 +7981,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ return __pyx_r; } -/* "View.MemoryView":446 +/* "View.MemoryView":445 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -7902,46 +8006,46 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assignment", 0); - /* "View.MemoryView":449 + /* "View.MemoryView":448 * cdef __Pyx_memviewslice dst_slice * cdef __Pyx_memviewslice src_slice * cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0] # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] * */ - if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 449, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 449, __pyx_L1_error) + if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 448, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 448, __pyx_L1_error) __pyx_v_msrc = (__pyx_t_1[0]); - /* "View.MemoryView":450 + /* "View.MemoryView":449 * cdef __Pyx_memviewslice src_slice * cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0] * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] # <<<<<<<<<<<<<< * * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) */ - if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 450, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 450, __pyx_L1_error) + if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 449, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 449, __pyx_L1_error) __pyx_v_mdst = (__pyx_t_1[0]); - /* "View.MemoryView":452 + /* "View.MemoryView":451 * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] * * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 452, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 452, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 452, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 452, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_memoryview_copy_contents(__pyx_v_msrc, __pyx_v_mdst, __pyx_t_3, __pyx_t_4, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 452, __pyx_L1_error) + __pyx_t_5 = __pyx_memoryview_copy_contents(__pyx_v_msrc, __pyx_v_mdst, __pyx_t_3, __pyx_t_4, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 451, __pyx_L1_error) - /* "View.MemoryView":446 + /* "View.MemoryView":445 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -7962,7 +8066,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi return __pyx_r; } -/* "View.MemoryView":454 +/* "View.MemoryView":453 * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -7971,7 +8075,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi */ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) { - int __pyx_v_array[128]; + int __pyx_v_array[0x80]; void *__pyx_v_tmp; void *__pyx_v_item; __Pyx_memviewslice *__pyx_v_dst_slice; @@ -7995,7 +8099,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0); - /* "View.MemoryView":456 + /* "View.MemoryView":455 * cdef setitem_slice_assign_scalar(self, memoryview dst, value): * cdef int array[128] * cdef void *tmp = NULL # <<<<<<<<<<<<<< @@ -8004,17 +8108,17 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = NULL; - /* "View.MemoryView":461 + /* "View.MemoryView":460 * cdef __Pyx_memviewslice *dst_slice * cdef __Pyx_memviewslice tmp_slice * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< * * if self.view.itemsize > sizeof(array): */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 461, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 460, __pyx_L1_error) __pyx_v_dst_slice = __pyx_t_1; - /* "View.MemoryView":463 + /* "View.MemoryView":462 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< @@ -8024,7 +8128,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_2 = (((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))); if (__pyx_t_2) { - /* "View.MemoryView":464 + /* "View.MemoryView":463 * * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< @@ -8033,7 +8137,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); - /* "View.MemoryView":465 + /* "View.MemoryView":464 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< @@ -8043,16 +8147,16 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_2 = (__pyx_v_tmp == NULL); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":466 + /* "View.MemoryView":465 * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: * raise MemoryError # <<<<<<<<<<<<<< * item = tmp * else: */ - PyErr_NoMemory(); __PYX_ERR(1, 466, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 465, __pyx_L1_error) - /* "View.MemoryView":465 + /* "View.MemoryView":464 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< @@ -8061,7 +8165,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ } - /* "View.MemoryView":467 + /* "View.MemoryView":466 * if tmp == NULL: * raise MemoryError * item = tmp # <<<<<<<<<<<<<< @@ -8070,7 +8174,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_item = __pyx_v_tmp; - /* "View.MemoryView":463 + /* "View.MemoryView":462 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< @@ -8080,7 +8184,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor goto __pyx_L3; } - /* "View.MemoryView":469 + /* "View.MemoryView":468 * item = tmp * else: * item = array # <<<<<<<<<<<<<< @@ -8092,7 +8196,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor } __pyx_L3:; - /* "View.MemoryView":471 + /* "View.MemoryView":470 * item = array * * try: # <<<<<<<<<<<<<< @@ -8101,7 +8205,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ /*try:*/ { - /* "View.MemoryView":472 + /* "View.MemoryView":471 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -8110,7 +8214,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ if (__pyx_v_self->dtype_is_object) { - /* "View.MemoryView":473 + /* "View.MemoryView":472 * try: * if self.dtype_is_object: * ( item)[0] = value # <<<<<<<<<<<<<< @@ -8119,7 +8223,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); - /* "View.MemoryView":472 + /* "View.MemoryView":471 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -8129,7 +8233,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor goto __pyx_L8; } - /* "View.MemoryView":475 + /* "View.MemoryView":474 * ( item)[0] = value * else: * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< @@ -8137,13 +8241,13 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * */ /*else*/ { - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 475, __pyx_L6_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 474, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L8:; - /* "View.MemoryView":479 + /* "View.MemoryView":478 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -8153,16 +8257,16 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_2 = (__pyx_v_self->view.suboffsets != NULL); if (__pyx_t_2) { - /* "View.MemoryView":480 + /* "View.MemoryView":479 * * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, * item, self.dtype_is_object) */ - __pyx_t_4 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 480, __pyx_L6_error) + __pyx_t_4 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 479, __pyx_L6_error) - /* "View.MemoryView":479 + /* "View.MemoryView":478 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -8171,7 +8275,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ } - /* "View.MemoryView":481 + /* "View.MemoryView":480 * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< @@ -8181,7 +8285,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); } - /* "View.MemoryView":484 + /* "View.MemoryView":483 * item, self.dtype_is_object) * finally: * PyMem_Free(tmp) # <<<<<<<<<<<<<< @@ -8226,7 +8330,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_L7:; } - /* "View.MemoryView":454 + /* "View.MemoryView":453 * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -8247,7 +8351,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":486 +/* "View.MemoryView":485 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -8266,28 +8370,28 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_indexed", 0); - /* "View.MemoryView":487 + /* "View.MemoryView":486 * * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< * self.assign_item_from_object(itemp, value) * */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 487, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)0))) __PYX_ERR(1, 486, __pyx_L1_error) __pyx_v_itemp = __pyx_t_1; - /* "View.MemoryView":488 + /* "View.MemoryView":487 * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< * * cdef convert_item_to_object(self, char *itemp): */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 488, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":486 + /* "View.MemoryView":485 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -8308,7 +8412,7 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ return __pyx_r; } -/* "View.MemoryView":490 +/* "View.MemoryView":489 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -8338,32 +8442,31 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":493 + /* "View.MemoryView":492 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef bytes bytesitem * */ - __pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_struct, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 493, __pyx_L1_error) - __pyx_t_1 = __pyx_t_2; + __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":496 + /* "View.MemoryView":495 * cdef bytes bytesitem * * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< * try: * result = struct.unpack(self.view.format, bytesitem) */ - __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 496, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 495, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":497 + /* "View.MemoryView":496 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -8379,7 +8482,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "View.MemoryView":498 + /* "View.MemoryView":497 * bytesitem = itemp[:self.view.itemsize] * try: * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< @@ -8388,21 +8491,21 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ __pyx_t_5 = __pyx_v_struct; __Pyx_INCREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 498, __pyx_L3_error) + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 497, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_unpack, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_unpack, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 498, __pyx_L3_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 497, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_result = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":497 + /* "View.MemoryView":496 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -8411,7 +8514,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ } - /* "View.MemoryView":502 + /* "View.MemoryView":501 * raise ValueError, "Unable to convert item to object" * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< @@ -8419,11 +8522,11 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * return result */ /*else:*/ { - __pyx_t_8 = __Pyx_ssize_strlen(__pyx_v_self->view.format); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 502, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_ssize_strlen(__pyx_v_self->view.format); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 501, __pyx_L5_except_error) __pyx_t_9 = (__pyx_t_8 == 1); if (__pyx_t_9) { - /* "View.MemoryView":503 + /* "View.MemoryView":502 * else: * if len(self.view.format) == 1: * return result[0] # <<<<<<<<<<<<<< @@ -8431,13 +8534,13 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 503, __pyx_L5_except_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 502, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6_except_return; - /* "View.MemoryView":502 + /* "View.MemoryView":501 * raise ValueError, "Unable to convert item to object" * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< @@ -8446,7 +8549,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ } - /* "View.MemoryView":504 + /* "View.MemoryView":503 * if len(self.view.format) == 1: * return result[0] * return result # <<<<<<<<<<<<<< @@ -8463,7 +8566,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":499 + /* "View.MemoryView":498 * try: * result = struct.unpack(self.view.format, bytesitem) * except struct.error: # <<<<<<<<<<<<<< @@ -8471,7 +8574,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * else: */ __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_6, &__pyx_t_5); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 499, __pyx_L5_except_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 498, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -8479,24 +8582,24 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; if (__pyx_t_11) { __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(1, 499, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(1, 498, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_1); - /* "View.MemoryView":500 + /* "View.MemoryView":499 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError, "Unable to convert item to object" # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Unable_to_convert_item_to_object, 0, 0); - __PYX_ERR(1, 500, __pyx_L5_except_error) + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Unable_to_convert_item_to_object, 0, 0); + __PYX_ERR(1, 499, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "View.MemoryView":497 + /* "View.MemoryView":496 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -8517,7 +8620,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview goto __pyx_L0; } - /* "View.MemoryView":490 + /* "View.MemoryView":489 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -8542,7 +8645,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":506 +/* "View.MemoryView":505 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -8558,78 +8661,76 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - PyObject *__pyx_t_2 = NULL; - int __pyx_t_3; + int __pyx_t_2; + PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - size_t __pyx_t_7; - Py_ssize_t __pyx_t_8; - PyObject *__pyx_t_9 = NULL; + size_t __pyx_t_6; + Py_ssize_t __pyx_t_7; + PyObject *__pyx_t_8 = NULL; + char *__pyx_t_9; char *__pyx_t_10; - char *__pyx_t_11; - Py_ssize_t __pyx_t_12; + Py_ssize_t __pyx_t_11; + char *__pyx_t_12; char *__pyx_t_13; - char *__pyx_t_14; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":509 + /* "View.MemoryView":508 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef char c * cdef bytes bytesvalue */ - __pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_struct, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 509, __pyx_L1_error) - __pyx_t_1 = __pyx_t_2; + __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":514 + /* "View.MemoryView":513 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< * bytesvalue = struct.pack(self.view.format, *value) * else: */ - __pyx_t_3 = PyTuple_Check(__pyx_v_value); - if (__pyx_t_3) { + __pyx_t_2 = PyTuple_Check(__pyx_v_value); + if (__pyx_t_2) { - /* "View.MemoryView":515 + /* "View.MemoryView":514 * * if isinstance(value, tuple): * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< * else: * bytesvalue = struct.pack(self.view.format, value) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 515, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 515, __pyx_L1_error) + __Pyx_GIVEREF(__pyx_t_3); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(1, 514, __pyx_L1_error); + __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 515, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 515, __pyx_L1_error) - __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 514, __pyx_L1_error) + __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; - /* "View.MemoryView":514 + /* "View.MemoryView":513 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< @@ -8639,7 +8740,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie goto __pyx_L3; } - /* "View.MemoryView":517 + /* "View.MemoryView":516 * bytesvalue = struct.pack(self.view.format, *value) * else: * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< @@ -8647,65 +8748,65 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie * for i, c in enumerate(bytesvalue): */ /*else*/ { - __pyx_t_6 = __pyx_v_struct; - __Pyx_INCREF(__pyx_t_6); - __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 517, __pyx_L1_error) + __pyx_t_5 = __pyx_v_struct; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_7 = 0; + __pyx_t_6 = 0; { - PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_1, __pyx_v_value}; - __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pack, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; + __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_pack, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 517, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); } - if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 517, __pyx_L1_error) - __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); - __pyx_t_4 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 516, __pyx_L1_error) + __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3); + __pyx_t_3 = 0; } __pyx_L3:; - /* "View.MemoryView":519 + /* "View.MemoryView":518 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< * itemp[i] = c * */ - __pyx_t_8 = 0; + __pyx_t_7 = 0; if (unlikely(__pyx_v_bytesvalue == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); - __PYX_ERR(1, 519, __pyx_L1_error) + __PYX_ERR(1, 518, __pyx_L1_error) } __Pyx_INCREF(__pyx_v_bytesvalue); - __pyx_t_9 = __pyx_v_bytesvalue; - __pyx_t_11 = __Pyx_PyBytes_AsWritableString(__pyx_t_9); if (unlikely(__pyx_t_11 == ((char *)NULL))) __PYX_ERR(1, 519, __pyx_L1_error) - __pyx_t_12 = __Pyx_PyBytes_GET_SIZE(__pyx_t_9); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(1, 519, __pyx_L1_error) - __pyx_t_13 = (__pyx_t_11 + __pyx_t_12); - for (__pyx_t_14 = __pyx_t_11; __pyx_t_14 < __pyx_t_13; __pyx_t_14++) { - __pyx_t_10 = __pyx_t_14; - __pyx_v_c = (__pyx_t_10[0]); + __pyx_t_8 = __pyx_v_bytesvalue; + __pyx_t_10 = __Pyx_PyBytes_AsWritableString(__pyx_t_8); if (unlikely(__pyx_t_10 == ((char *)NULL))) __PYX_ERR(1, 518, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyBytes_GET_SIZE(__pyx_t_8); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(1, 518, __pyx_L1_error) + __pyx_t_12 = (__pyx_t_10 + __pyx_t_11); + for (__pyx_t_13 = __pyx_t_10; __pyx_t_13 < __pyx_t_12; __pyx_t_13++) { + __pyx_t_9 = __pyx_t_13; + __pyx_v_c = (__pyx_t_9[0]); - /* "View.MemoryView":520 + /* "View.MemoryView":519 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< * * @cname('getbuffer') */ - __pyx_v_i = __pyx_t_8; + __pyx_v_i = __pyx_t_7; - /* "View.MemoryView":519 + /* "View.MemoryView":518 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< * itemp[i] = c * */ - __pyx_t_8 = (__pyx_t_8 + 1); + __pyx_t_7 = (__pyx_t_7 + 1); - /* "View.MemoryView":520 + /* "View.MemoryView":519 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< @@ -8714,9 +8815,9 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie */ (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c; } - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - /* "View.MemoryView":506 + /* "View.MemoryView":505 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -8729,10 +8830,10 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -8743,7 +8844,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie return __pyx_r; } -/* "View.MemoryView":522 +/* "View.MemoryView":521 * itemp[i] = c * * @cname('getbuffer') # <<<<<<<<<<<<<< @@ -8787,7 +8888,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); - /* "View.MemoryView":524 + /* "View.MemoryView":523 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< @@ -8804,17 +8905,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":525 + /* "View.MemoryView":524 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError, "Cannot create writable memory view from read-only memoryview" # <<<<<<<<<<<<<< * * if flags & PyBUF_ND: */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Cannot_create_writable_memory_vi, 0, 0); - __PYX_ERR(1, 525, __pyx_L1_error) + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Cannot_create_writable_memory_vi, 0, 0); + __PYX_ERR(1, 524, __pyx_L1_error) - /* "View.MemoryView":524 + /* "View.MemoryView":523 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< @@ -8823,7 +8924,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ } - /* "View.MemoryView":527 + /* "View.MemoryView":526 * raise ValueError, "Cannot create writable memory view from read-only memoryview" * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< @@ -8833,7 +8934,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); if (__pyx_t_1) { - /* "View.MemoryView":528 + /* "View.MemoryView":527 * * if flags & PyBUF_ND: * info.shape = self.view.shape # <<<<<<<<<<<<<< @@ -8843,7 +8944,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_3 = __pyx_v_self->view.shape; __pyx_v_info->shape = __pyx_t_3; - /* "View.MemoryView":527 + /* "View.MemoryView":526 * raise ValueError, "Cannot create writable memory view from read-only memoryview" * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< @@ -8853,7 +8954,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L6; } - /* "View.MemoryView":530 + /* "View.MemoryView":529 * info.shape = self.view.shape * else: * info.shape = NULL # <<<<<<<<<<<<<< @@ -8865,7 +8966,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L6:; - /* "View.MemoryView":532 + /* "View.MemoryView":531 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -8875,7 +8976,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); if (__pyx_t_1) { - /* "View.MemoryView":533 + /* "View.MemoryView":532 * * if flags & PyBUF_STRIDES: * info.strides = self.view.strides # <<<<<<<<<<<<<< @@ -8885,7 +8986,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_3 = __pyx_v_self->view.strides; __pyx_v_info->strides = __pyx_t_3; - /* "View.MemoryView":532 + /* "View.MemoryView":531 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -8895,7 +8996,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L7; } - /* "View.MemoryView":535 + /* "View.MemoryView":534 * info.strides = self.view.strides * else: * info.strides = NULL # <<<<<<<<<<<<<< @@ -8907,7 +9008,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L7:; - /* "View.MemoryView":537 + /* "View.MemoryView":536 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -8917,7 +9018,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":538 + /* "View.MemoryView":537 * * if flags & PyBUF_INDIRECT: * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< @@ -8927,7 +9028,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_3 = __pyx_v_self->view.suboffsets; __pyx_v_info->suboffsets = __pyx_t_3; - /* "View.MemoryView":537 + /* "View.MemoryView":536 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -8937,7 +9038,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L8; } - /* "View.MemoryView":540 + /* "View.MemoryView":539 * info.suboffsets = self.view.suboffsets * else: * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -8949,7 +9050,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L8:; - /* "View.MemoryView":542 + /* "View.MemoryView":541 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -8959,7 +9060,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":543 + /* "View.MemoryView":542 * * if flags & PyBUF_FORMAT: * info.format = self.view.format # <<<<<<<<<<<<<< @@ -8969,7 +9070,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_4 = __pyx_v_self->view.format; __pyx_v_info->format = __pyx_t_4; - /* "View.MemoryView":542 + /* "View.MemoryView":541 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -8979,7 +9080,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L9; } - /* "View.MemoryView":545 + /* "View.MemoryView":544 * info.format = self.view.format * else: * info.format = NULL # <<<<<<<<<<<<<< @@ -8991,7 +9092,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L9:; - /* "View.MemoryView":547 + /* "View.MemoryView":546 * info.format = NULL * * info.buf = self.view.buf # <<<<<<<<<<<<<< @@ -9001,7 +9102,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_5 = __pyx_v_self->view.buf; __pyx_v_info->buf = __pyx_t_5; - /* "View.MemoryView":548 + /* "View.MemoryView":547 * * info.buf = self.view.buf * info.ndim = self.view.ndim # <<<<<<<<<<<<<< @@ -9011,7 +9112,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_6 = __pyx_v_self->view.ndim; __pyx_v_info->ndim = __pyx_t_6; - /* "View.MemoryView":549 + /* "View.MemoryView":548 * info.buf = self.view.buf * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< @@ -9021,7 +9122,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_7 = __pyx_v_self->view.itemsize; __pyx_v_info->itemsize = __pyx_t_7; - /* "View.MemoryView":550 + /* "View.MemoryView":549 * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize * info.len = self.view.len # <<<<<<<<<<<<<< @@ -9031,7 +9132,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_7 = __pyx_v_self->view.len; __pyx_v_info->len = __pyx_t_7; - /* "View.MemoryView":551 + /* "View.MemoryView":550 * info.itemsize = self.view.itemsize * info.len = self.view.len * info.readonly = self.view.readonly # <<<<<<<<<<<<<< @@ -9041,7 +9142,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = __pyx_v_self->view.readonly; __pyx_v_info->readonly = __pyx_t_1; - /* "View.MemoryView":552 + /* "View.MemoryView":551 * info.len = self.view.len * info.readonly = self.view.readonly * info.obj = self # <<<<<<<<<<<<<< @@ -9054,7 +9155,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "View.MemoryView":522 + /* "View.MemoryView":521 * itemp[i] = c * * @cname('getbuffer') # <<<<<<<<<<<<<< @@ -9083,7 +9184,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu return __pyx_r; } -/* "View.MemoryView":555 +/* "View.MemoryView":554 * * * @property # <<<<<<<<<<<<<< @@ -9117,29 +9218,29 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":557 + /* "View.MemoryView":556 * @property * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< * transpose_memslice(&result.from_slice) * return result */ - __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 557, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 557, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 556, __pyx_L1_error) __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":558 + /* "View.MemoryView":557 * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< * return result * */ - __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 558, __pyx_L1_error) + __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 557, __pyx_L1_error) - /* "View.MemoryView":559 + /* "View.MemoryView":558 * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) * return result # <<<<<<<<<<<<<< @@ -9151,7 +9252,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":555 + /* "View.MemoryView":554 * * * @property # <<<<<<<<<<<<<< @@ -9171,7 +9272,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ return __pyx_r; } -/* "View.MemoryView":561 +/* "View.MemoryView":560 * return result * * @property # <<<<<<<<<<<<<< @@ -9203,7 +9304,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":563 + /* "View.MemoryView":562 * @property * def base(self): * return self._get_base() # <<<<<<<<<<<<<< @@ -9211,13 +9312,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc * cdef _get_base(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->_get_base(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 563, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->_get_base(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":561 + /* "View.MemoryView":560 * return result * * @property # <<<<<<<<<<<<<< @@ -9236,7 +9337,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc return __pyx_r; } -/* "View.MemoryView":565 +/* "View.MemoryView":564 * return self._get_base() * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -9249,7 +9350,7 @@ static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_base", 0); - /* "View.MemoryView":566 + /* "View.MemoryView":565 * * cdef _get_base(self): * return self.obj # <<<<<<<<<<<<<< @@ -9261,7 +9362,7 @@ static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v __pyx_r = __pyx_v_self->obj; goto __pyx_L0; - /* "View.MemoryView":565 + /* "View.MemoryView":564 * return self._get_base() * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -9276,7 +9377,7 @@ static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v return __pyx_r; } -/* "View.MemoryView":568 +/* "View.MemoryView":567 * return self.obj * * @property # <<<<<<<<<<<<<< @@ -9313,7 +9414,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":570 + /* "View.MemoryView":569 * @property * def shape(self): * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -9322,26 +9423,26 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 570, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_7genexpr__pyx_v_length = (__pyx_t_2[0]); - __pyx_t_5 = PyLong_FromSsize_t(__pyx_7genexpr__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 570, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t(__pyx_7genexpr__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 570, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 569, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } /* exit inner scope */ - __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 570, __pyx_L1_error) + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":568 + /* "View.MemoryView":567 * return self.obj * * @property # <<<<<<<<<<<<<< @@ -9361,7 +9462,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru return __pyx_r; } -/* "View.MemoryView":572 +/* "View.MemoryView":571 * return tuple([length for length in self.view.shape[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9399,7 +9500,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":574 + /* "View.MemoryView":573 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -9409,17 +9510,17 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st __pyx_t_1 = (__pyx_v_self->view.strides == NULL); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":576 + /* "View.MemoryView":575 * if self.view.strides == NULL: * * raise ValueError, "Buffer view does not expose strides" # <<<<<<<<<<<<<< * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Buffer_view_does_not_expose_stri, 0, 0); - __PYX_ERR(1, 576, __pyx_L1_error) + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Buffer_view_does_not_expose_stri, 0, 0); + __PYX_ERR(1, 575, __pyx_L1_error) - /* "View.MemoryView":574 + /* "View.MemoryView":573 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -9428,7 +9529,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st */ } - /* "View.MemoryView":578 + /* "View.MemoryView":577 * raise ValueError, "Buffer view does not expose strides" * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -9437,26 +9538,26 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 578, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_8genexpr1__pyx_v_stride = (__pyx_t_3[0]); - __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr1__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 578, __pyx_L1_error) + __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr1__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 578, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 578, __pyx_L1_error) + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; - /* "View.MemoryView":572 + /* "View.MemoryView":571 * return tuple([length for length in self.view.shape[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9476,7 +9577,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st return __pyx_r; } -/* "View.MemoryView":580 +/* "View.MemoryView":579 * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9514,7 +9615,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":582 + /* "View.MemoryView":581 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< @@ -9524,7 +9625,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ __pyx_t_1 = (__pyx_v_self->view.suboffsets == NULL); if (__pyx_t_1) { - /* "View.MemoryView":583 + /* "View.MemoryView":582 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< @@ -9532,13 +9633,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PySequence_Multiply(__pyx_mstate_global->__pyx_tuple[1], __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 583, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_Multiply(__pyx_mstate_global->__pyx_tuple[0], __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":582 + /* "View.MemoryView":581 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< @@ -9547,7 +9648,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ */ } - /* "View.MemoryView":585 + /* "View.MemoryView":584 * return (-1,) * self.view.ndim * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -9556,26 +9657,26 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 585, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.suboffsets; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_8genexpr2__pyx_v_suboffset = (__pyx_t_3[0]); - __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr2__pyx_v_suboffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 585, __pyx_L1_error) + __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr2__pyx_v_suboffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 585, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 585, __pyx_L1_error) + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; - /* "View.MemoryView":580 + /* "View.MemoryView":579 * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9595,7 +9696,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ return __pyx_r; } -/* "View.MemoryView":587 +/* "View.MemoryView":586 * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9627,7 +9728,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":589 + /* "View.MemoryView":588 * @property * def ndim(self): * return self.view.ndim # <<<<<<<<<<<<<< @@ -9635,13 +9736,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 589, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 588, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":587 + /* "View.MemoryView":586 * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9660,7 +9761,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc return __pyx_r; } -/* "View.MemoryView":591 +/* "View.MemoryView":590 * return self.view.ndim * * @property # <<<<<<<<<<<<<< @@ -9692,7 +9793,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":593 + /* "View.MemoryView":592 * @property * def itemsize(self): * return self.view.itemsize # <<<<<<<<<<<<<< @@ -9700,13 +9801,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 593, __pyx_L1_error) + __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":591 + /* "View.MemoryView":590 * return self.view.ndim * * @property # <<<<<<<<<<<<<< @@ -9725,7 +9826,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s return __pyx_r; } -/* "View.MemoryView":595 +/* "View.MemoryView":594 * return self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9759,7 +9860,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":597 + /* "View.MemoryView":596 * @property * def nbytes(self): * return self.size * self.view.itemsize # <<<<<<<<<<<<<< @@ -9767,11 +9868,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 597, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 597, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 597, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9779,7 +9880,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":595 + /* "View.MemoryView":594 * return self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9800,7 +9901,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str return __pyx_r; } -/* "View.MemoryView":599 +/* "View.MemoryView":598 * return self.size * self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9838,7 +9939,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":601 + /* "View.MemoryView":600 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -9848,7 +9949,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_1 = (__pyx_v_self->_size == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":602 + /* "View.MemoryView":601 * def size(self): * if self._size is None: * result = 1 # <<<<<<<<<<<<<< @@ -9858,7 +9959,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_INCREF(__pyx_mstate_global->__pyx_int_1); __pyx_v_result = __pyx_mstate_global->__pyx_int_1; - /* "View.MemoryView":604 + /* "View.MemoryView":603 * result = 1 * * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< @@ -9868,25 +9969,25 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; - __pyx_t_5 = PyLong_FromSsize_t((__pyx_t_2[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 604, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t((__pyx_t_2[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":605 + /* "View.MemoryView":604 * * for length in self.view.shape[:self.view.ndim]: * result *= length # <<<<<<<<<<<<<< * * self._size = result */ - __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 605, __pyx_L1_error) + __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_5); __pyx_t_5 = 0; } - /* "View.MemoryView":607 + /* "View.MemoryView":606 * result *= length * * self._size = result # <<<<<<<<<<<<<< @@ -9899,7 +10000,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_DECREF(__pyx_v_self->_size); __pyx_v_self->_size = __pyx_v_result; - /* "View.MemoryView":601 + /* "View.MemoryView":600 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -9908,7 +10009,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc */ } - /* "View.MemoryView":609 + /* "View.MemoryView":608 * self._size = result * * return self._size # <<<<<<<<<<<<<< @@ -9920,7 +10021,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_r = __pyx_v_self->_size; goto __pyx_L0; - /* "View.MemoryView":599 + /* "View.MemoryView":598 * return self.size * self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9941,7 +10042,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc return __pyx_r; } -/* "View.MemoryView":611 +/* "View.MemoryView":610 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -9968,7 +10069,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 Py_ssize_t __pyx_r; int __pyx_t_1; - /* "View.MemoryView":612 + /* "View.MemoryView":611 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -9978,7 +10079,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_t_1 = (__pyx_v_self->view.ndim >= 1); if (__pyx_t_1) { - /* "View.MemoryView":613 + /* "View.MemoryView":612 * def __len__(self): * if self.view.ndim >= 1: * return self.view.shape[0] # <<<<<<<<<<<<<< @@ -9988,7 +10089,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = (__pyx_v_self->view.shape[0]); goto __pyx_L0; - /* "View.MemoryView":612 + /* "View.MemoryView":611 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -9997,7 +10098,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 */ } - /* "View.MemoryView":615 + /* "View.MemoryView":614 * return self.view.shape[0] * * return 0 # <<<<<<<<<<<<<< @@ -10007,7 +10108,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":611 + /* "View.MemoryView":610 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -10020,7 +10121,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 return __pyx_r; } -/* "View.MemoryView":617 +/* "View.MemoryView":616 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -10055,7 +10156,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); - /* "View.MemoryView":618 + /* "View.MemoryView":617 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< @@ -10063,28 +10164,28 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":619 + /* "View.MemoryView":618 * def __repr__(self): * return "" % (self.base.__class__.__name__, * id(self)) # <<<<<<<<<<<<<< * * def __str__(self): */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 619, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_MemoryView_of; @@ -10093,7 +10194,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 __pyx_t_4[3] = __pyx_t_3; __pyx_t_4[4] = __pyx_mstate_global->__pyx_kp_u__3; - /* "View.MemoryView":618 + /* "View.MemoryView":617 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< @@ -10101,7 +10202,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3)); - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -10109,7 +10210,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":617 + /* "View.MemoryView":616 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -10130,7 +10231,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 return __pyx_r; } -/* "View.MemoryView":621 +/* "View.MemoryView":620 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -10164,7 +10265,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); - /* "View.MemoryView":622 + /* "View.MemoryView":621 * * def __str__(self): * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< @@ -10172,29 +10273,29 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 622, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3[0] = __pyx_mstate_global->__pyx_kp_u_MemoryView_of; __pyx_t_3[1] = __pyx_t_2; __pyx_t_3[2] = __pyx_mstate_global->__pyx_kp_u_object; __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 8, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2)); - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":621 + /* "View.MemoryView":620 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -10214,7 +10315,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 return __pyx_r; } -/* "View.MemoryView":625 +/* "View.MemoryView":624 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -10275,17 +10376,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_c_contig", 0); - /* "View.MemoryView":628 + /* "View.MemoryView":627 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'C', self.view.ndim) * */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 628, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 627, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":629 + /* "View.MemoryView":628 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'C', self.view.ndim) # <<<<<<<<<<<<<< @@ -10293,13 +10394,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 * def is_f_contig(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 629, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":625 + /* "View.MemoryView":624 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -10318,7 +10419,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 return __pyx_r; } -/* "View.MemoryView":631 +/* "View.MemoryView":630 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -10379,17 +10480,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_f_contig", 0); - /* "View.MemoryView":634 + /* "View.MemoryView":633 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'F', self.view.ndim) * */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 634, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 633, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":635 + /* "View.MemoryView":634 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'F', self.view.ndim) # <<<<<<<<<<<<<< @@ -10397,13 +10498,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 * def copy(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 635, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":631 + /* "View.MemoryView":630 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -10422,7 +10523,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 return __pyx_r; } -/* "View.MemoryView":637 +/* "View.MemoryView":636 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -10483,7 +10584,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy", 0); - /* "View.MemoryView":639 + /* "View.MemoryView":638 * def copy(self): * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< @@ -10492,7 +10593,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); - /* "View.MemoryView":641 + /* "View.MemoryView":640 * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS * * slice_copy(self, &mslice) # <<<<<<<<<<<<<< @@ -10501,17 +10602,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); - /* "View.MemoryView":642 + /* "View.MemoryView":641 * * slice_copy(self, &mslice) * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_C_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), __pyx_k_c, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 642, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char const *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 641, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":647 + /* "View.MemoryView":646 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< @@ -10519,13 +10620,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 * def copy_fortran(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 647, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 646, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":637 + /* "View.MemoryView":636 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -10544,7 +10645,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 return __pyx_r; } -/* "View.MemoryView":649 +/* "View.MemoryView":648 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -10606,7 +10707,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy_fortran", 0); - /* "View.MemoryView":651 + /* "View.MemoryView":650 * def copy_fortran(self): * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< @@ -10615,7 +10716,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); - /* "View.MemoryView":653 + /* "View.MemoryView":652 * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS * * slice_copy(self, &src) # <<<<<<<<<<<<<< @@ -10624,17 +10725,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); - /* "View.MemoryView":654 + /* "View.MemoryView":653 * * slice_copy(self, &src) * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_F_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), __pyx_k_fortran, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 654, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char const *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 653, __pyx_L1_error) __pyx_v_dst = __pyx_t_1; - /* "View.MemoryView":659 + /* "View.MemoryView":658 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< @@ -10642,13 +10743,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 659, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":649 + /* "View.MemoryView":648 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -10728,7 +10829,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 @@ -10802,7 +10903,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } } @@ -10850,7 +10951,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 @@ -10869,7 +10970,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st return __pyx_r; } -/* "View.MemoryView":662 +/* "View.MemoryView":661 * * * @cname('__pyx_memoryview_new') # <<<<<<<<<<<<<< @@ -10885,13 +10986,14 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - size_t __pyx_t_5; + PyObject *__pyx_t_5 = NULL; + size_t __pyx_t_6; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_cwrapper", 0); - /* "View.MemoryView":664 + /* "View.MemoryView":663 * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, const __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< @@ -10899,24 +11001,27 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in * return result */ __pyx_t_2 = NULL; - __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 664, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 664, __pyx_L1_error) + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); + __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); + __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = 1; + __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_o, __pyx_t_3, __pyx_t_4}; - __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_memoryview_type, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_o, __pyx_t_4, __pyx_t_5}; + __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 664, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":665 + /* "View.MemoryView":664 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, const __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo # <<<<<<<<<<<<<< @@ -10925,7 +11030,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in */ __pyx_v_result->typeinfo = __pyx_v_typeinfo; - /* "View.MemoryView":666 + /* "View.MemoryView":665 * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo * return result # <<<<<<<<<<<<<< @@ -10937,7 +11042,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":662 + /* "View.MemoryView":661 * * * @cname('__pyx_memoryview_new') # <<<<<<<<<<<<<< @@ -10951,6 +11056,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -10960,7 +11066,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in return __pyx_r; } -/* "View.MemoryView":668 +/* "View.MemoryView":667 * return result * * @cname('__pyx_memoryview_check') # <<<<<<<<<<<<<< @@ -10972,7 +11078,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { int __pyx_r; int __pyx_t_1; - /* "View.MemoryView":670 + /* "View.MemoryView":669 * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o) noexcept: * return isinstance(o, memoryview) # <<<<<<<<<<<<<< @@ -10983,7 +11089,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { __pyx_r = __pyx_t_1; goto __pyx_L0; - /* "View.MemoryView":668 + /* "View.MemoryView":667 * return result * * @cname('__pyx_memoryview_check') # <<<<<<<<<<<<<< @@ -10996,7 +11102,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { return __pyx_r; } -/* "View.MemoryView":672 +/* "View.MemoryView":671 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -11026,7 +11132,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_unellipsify", 0); - /* "View.MemoryView":678 + /* "View.MemoryView":677 * """ * cdef Py_ssize_t idx * tup = index if isinstance(index, tuple) else (index,) # <<<<<<<<<<<<<< @@ -11038,37 +11144,37 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_INCREF(((PyObject*)__pyx_v_index)); __pyx_t_1 = __pyx_v_index; } else { - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 678, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index) != (0)) __PYX_ERR(1, 678, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index) != (0)) __PYX_ERR(1, 677, __pyx_L1_error); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_v_tup = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":680 + /* "View.MemoryView":679 * tup = index if isinstance(index, tuple) else (index,) * * result = [slice(None)] * ndim # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ - __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndim<0) ? 0:__pyx_v_ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 680, __pyx_L1_error) + __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndim<0) ? 0:__pyx_v_ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_v_ndim; __pyx_temp++) { __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(1, 680, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(1, 679, __pyx_L1_error); } } __pyx_v_result = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":681 + /* "View.MemoryView":680 * * result = [slice(None)] * ndim * have_slices = False # <<<<<<<<<<<<<< @@ -11077,7 +11183,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 0; - /* "View.MemoryView":682 + /* "View.MemoryView":681 * result = [slice(None)] * ndim * have_slices = False * seen_ellipsis = False # <<<<<<<<<<<<<< @@ -11086,7 +11192,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 0; - /* "View.MemoryView":683 + /* "View.MemoryView":682 * have_slices = False * seen_ellipsis = False * idx = 0 # <<<<<<<<<<<<<< @@ -11095,7 +11201,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_idx = 0; - /* "View.MemoryView":684 + /* "View.MemoryView":683 * seen_ellipsis = False * idx = 0 * for item in tup: # <<<<<<<<<<<<<< @@ -11104,7 +11210,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ if (unlikely(__pyx_v_tup == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(1, 684, __pyx_L1_error) + __PYX_ERR(1, 683, __pyx_L1_error) } __pyx_t_1 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; @@ -11112,7 +11218,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 684, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 683, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } @@ -11122,12 +11228,12 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4); #endif ++__pyx_t_4; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 684, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":685 + /* "View.MemoryView":684 * idx = 0 * for item in tup: * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -11137,7 +11243,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis); if (__pyx_t_2) { - /* "View.MemoryView":686 + /* "View.MemoryView":685 * for item in tup: * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -11147,7 +11253,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = (!__pyx_v_seen_ellipsis); if (__pyx_t_2) { - /* "View.MemoryView":687 + /* "View.MemoryView":686 * if item is Ellipsis: * if not seen_ellipsis: * idx += ndim - len(tup) # <<<<<<<<<<<<<< @@ -11156,12 +11262,12 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ if (unlikely(__pyx_v_tup == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 687, __pyx_L1_error) + __PYX_ERR(1, 686, __pyx_L1_error) } - __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(__pyx_v_tup); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 687, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(__pyx_v_tup); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 686, __pyx_L1_error) __pyx_v_idx = (__pyx_v_idx + (__pyx_v_ndim - __pyx_t_5)); - /* "View.MemoryView":688 + /* "View.MemoryView":687 * if not seen_ellipsis: * idx += ndim - len(tup) * seen_ellipsis = True # <<<<<<<<<<<<<< @@ -11170,7 +11276,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 1; - /* "View.MemoryView":686 + /* "View.MemoryView":685 * for item in tup: * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -11179,7 +11285,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ } - /* "View.MemoryView":689 + /* "View.MemoryView":688 * idx += ndim - len(tup) * seen_ellipsis = True * have_slices = True # <<<<<<<<<<<<<< @@ -11188,7 +11294,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 1; - /* "View.MemoryView":685 + /* "View.MemoryView":684 * idx = 0 * for item in tup: * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -11198,7 +11304,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L5; } - /* "View.MemoryView":691 + /* "View.MemoryView":690 * have_slices = True * else: * if isinstance(item, slice): # <<<<<<<<<<<<<< @@ -11209,7 +11315,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = PySlice_Check(__pyx_v_item); if (__pyx_t_2) { - /* "View.MemoryView":692 + /* "View.MemoryView":691 * else: * if isinstance(item, slice): * have_slices = True # <<<<<<<<<<<<<< @@ -11218,7 +11324,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 1; - /* "View.MemoryView":691 + /* "View.MemoryView":690 * have_slices = True * else: * if isinstance(item, slice): # <<<<<<<<<<<<<< @@ -11228,7 +11334,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L7; } - /* "View.MemoryView":693 + /* "View.MemoryView":692 * if isinstance(item, slice): * have_slices = True * elif not PyIndex_Check(item): # <<<<<<<<<<<<<< @@ -11238,27 +11344,27 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = (!(PyIndex_Check(__pyx_v_item) != 0)); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":694 + /* "View.MemoryView":693 * have_slices = True * elif not PyIndex_Check(item): * raise TypeError, f"Cannot index with type '{type(item)}'" # <<<<<<<<<<<<<< * result[idx] = item * idx += 1 */ - __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 694, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_Cannot_index_with_type; __pyx_t_6[1] = __pyx_t_3; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__4; __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 24 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3)); - if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 694, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_t_7, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_7, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __PYX_ERR(1, 694, __pyx_L1_error) + __PYX_ERR(1, 693, __pyx_L1_error) - /* "View.MemoryView":693 + /* "View.MemoryView":692 * if isinstance(item, slice): * have_slices = True * elif not PyIndex_Check(item): # <<<<<<<<<<<<<< @@ -11268,18 +11374,18 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { } __pyx_L7:; - /* "View.MemoryView":695 + /* "View.MemoryView":694 * elif not PyIndex_Check(item): * raise TypeError, f"Cannot index with type '{type(item)}'" * result[idx] = item # <<<<<<<<<<<<<< * idx += 1 * */ - if (unlikely((__Pyx_SetItemInt(__pyx_v_result, __pyx_v_idx, __pyx_v_item, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(1, 695, __pyx_L1_error) + if (unlikely((__Pyx_SetItemInt(__pyx_v_result, __pyx_v_idx, __pyx_v_item, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, 1) < 0))) __PYX_ERR(1, 694, __pyx_L1_error) } __pyx_L5:; - /* "View.MemoryView":696 + /* "View.MemoryView":695 * raise TypeError, f"Cannot index with type '{type(item)}'" * result[idx] = item * idx += 1 # <<<<<<<<<<<<<< @@ -11288,7 +11394,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_idx = (__pyx_v_idx + 1); - /* "View.MemoryView":684 + /* "View.MemoryView":683 * seen_ellipsis = False * idx = 0 * for item in tup: # <<<<<<<<<<<<<< @@ -11298,7 +11404,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":698 + /* "View.MemoryView":697 * idx += 1 * * nslices = ndim - idx # <<<<<<<<<<<<<< @@ -11307,7 +11413,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_nslices = (__pyx_v_ndim - __pyx_v_idx); - /* "View.MemoryView":699 + /* "View.MemoryView":698 * * nslices = ndim - idx * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< @@ -11317,32 +11423,32 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_XDECREF(__pyx_r); if (!__pyx_v_have_slices) { } else { - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 699, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L9_bool_binop_done; } - __pyx_t_7 = PyLong_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 699, __pyx_L1_error) + __pyx_t_7 = PyLong_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; __pyx_L9_bool_binop_done:; - __pyx_t_7 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 699, __pyx_L1_error) + __pyx_t_7 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 699, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 699, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 698, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7) != (0)) __PYX_ERR(1, 699, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7) != (0)) __PYX_ERR(1, 698, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_r = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":672 + /* "View.MemoryView":671 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -11366,7 +11472,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { return __pyx_r; } -/* "View.MemoryView":701 +/* "View.MemoryView":700 * return have_slices or nslices, tuple(result) * * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: # <<<<<<<<<<<<<< @@ -11385,7 +11491,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "View.MemoryView":702 + /* "View.MemoryView":701 * * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< @@ -11397,7 +11503,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ __pyx_t_1 = __pyx_t_3; __pyx_v_suboffset = (__pyx_t_1[0]); - /* "View.MemoryView":703 + /* "View.MemoryView":702 * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -11407,17 +11513,17 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ __pyx_t_4 = (__pyx_v_suboffset >= 0); if (unlikely(__pyx_t_4)) { - /* "View.MemoryView":704 + /* "View.MemoryView":703 * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: * raise ValueError, "Indirect dimensions not supported" # <<<<<<<<<<<<<< * return 0 # return type just used as an error flag * */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Indirect_dimensions_not_supporte, 0, 0); - __PYX_ERR(1, 704, __pyx_L1_error) + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Indirect_dimensions_not_supporte, 0, 0); + __PYX_ERR(1, 703, __pyx_L1_error) - /* "View.MemoryView":703 + /* "View.MemoryView":702 * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -11427,7 +11533,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ } } - /* "View.MemoryView":705 + /* "View.MemoryView":704 * if suboffset >= 0: * raise ValueError, "Indirect dimensions not supported" * return 0 # return type just used as an error flag # <<<<<<<<<<<<<< @@ -11437,7 +11543,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":701 + /* "View.MemoryView":700 * return have_slices or nslices, tuple(result) * * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: # <<<<<<<<<<<<<< @@ -11453,7 +11559,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ return __pyx_r; } -/* "View.MemoryView":711 +/* "View.MemoryView":710 * * * @cname('__pyx_memview_slice') # <<<<<<<<<<<<<< @@ -11497,7 +11603,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memview_slice", 0); - /* "View.MemoryView":713 + /* "View.MemoryView":712 * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< @@ -11507,7 +11613,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_new_ndim = 0; __pyx_v_suboffset_dim = -1; - /* "View.MemoryView":720 + /* "View.MemoryView":719 * * * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< @@ -11516,7 +11622,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)))); - /* "View.MemoryView":724 + /* "View.MemoryView":723 * cdef _memoryviewslice memviewsliceobj * * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< @@ -11527,15 +11633,15 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ if (unlikely(__pyx_assertions_enabled())) { __pyx_t_1 = (__pyx_v_memview->view.ndim > 0); if (unlikely(!__pyx_t_1)) { - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_AssertionError))), 0, 0, 0); - __PYX_ERR(1, 724, __pyx_L1_error) + __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); + __PYX_ERR(1, 723, __pyx_L1_error) } } #else - if ((1)); else __PYX_ERR(1, 724, __pyx_L1_error) + if ((1)); else __PYX_ERR(1, 723, __pyx_L1_error) #endif - /* "View.MemoryView":726 + /* "View.MemoryView":725 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -11545,7 +11651,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":727 + /* "View.MemoryView":726 * * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview # <<<<<<<<<<<<<< @@ -11554,11 +11660,11 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_t_2 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 727, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 726, __pyx_L1_error) __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":728 + /* "View.MemoryView":727 * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< @@ -11567,7 +11673,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); - /* "View.MemoryView":726 + /* "View.MemoryView":725 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -11577,7 +11683,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L3; } - /* "View.MemoryView":730 + /* "View.MemoryView":729 * p_src = &memviewsliceobj.from_slice * else: * slice_copy(memview, &src) # <<<<<<<<<<<<<< @@ -11587,7 +11693,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); - /* "View.MemoryView":731 + /* "View.MemoryView":730 * else: * slice_copy(memview, &src) * p_src = &src # <<<<<<<<<<<<<< @@ -11598,7 +11704,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L3:; - /* "View.MemoryView":737 + /* "View.MemoryView":736 * * * dst.memview = p_src.memview # <<<<<<<<<<<<<< @@ -11608,7 +11714,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_3 = __pyx_v_p_src->memview; __pyx_v_dst.memview = __pyx_t_3; - /* "View.MemoryView":738 + /* "View.MemoryView":737 * * dst.memview = p_src.memview * dst.data = p_src.data # <<<<<<<<<<<<<< @@ -11618,7 +11724,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_4 = __pyx_v_p_src->data; __pyx_v_dst.data = __pyx_t_4; - /* "View.MemoryView":743 + /* "View.MemoryView":742 * * * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< @@ -11627,7 +11733,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_dst = (&__pyx_v_dst); - /* "View.MemoryView":744 + /* "View.MemoryView":743 * * cdef __Pyx_memviewslice *p_dst = &dst * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< @@ -11636,7 +11742,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); - /* "View.MemoryView":748 + /* "View.MemoryView":747 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -11649,9 +11755,9 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 748, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 748, __pyx_L1_error) + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 747, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { @@ -11659,17 +11765,17 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 748, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } - __pyx_t_8 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); + __pyx_t_8 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_6); ++__pyx_t_6; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 748, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } @@ -11680,13 +11786,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ #endif ++__pyx_t_6; } - if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 748, __pyx_L1_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 747, __pyx_L1_error) } else { __pyx_t_8 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 748, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 747, __pyx_L1_error) PyErr_Clear(); } break; @@ -11698,7 +11804,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_dim = __pyx_t_5; __pyx_t_5 = (__pyx_t_5 + 1); - /* "View.MemoryView":749 + /* "View.MemoryView":748 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -11708,26 +11814,26 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = (PyIndex_Check(__pyx_v_index) != 0); if (__pyx_t_1) { - /* "View.MemoryView":750 + /* "View.MemoryView":749 * for dim, index in enumerate(indices): * if PyIndex_Check(index): * cindex = index # <<<<<<<<<<<<<< * slice_memviewslice( * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], */ - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 750, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 749, __pyx_L1_error) __pyx_v_cindex = __pyx_t_9; - /* "View.MemoryView":751 + /* "View.MemoryView":750 * if PyIndex_Check(index): * cindex = index * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_cindex, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 751, __pyx_L1_error) + __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_cindex, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 750, __pyx_L1_error) - /* "View.MemoryView":749 + /* "View.MemoryView":748 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -11737,7 +11843,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L6; } - /* "View.MemoryView":757 + /* "View.MemoryView":756 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -11747,7 +11853,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = (__pyx_v_index == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":758 + /* "View.MemoryView":757 * False) * elif index is None: * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< @@ -11756,7 +11862,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; - /* "View.MemoryView":759 + /* "View.MemoryView":758 * elif index is None: * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< @@ -11765,7 +11871,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; - /* "View.MemoryView":760 + /* "View.MemoryView":759 * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< @@ -11774,7 +11880,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; - /* "View.MemoryView":761 + /* "View.MemoryView":760 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 * new_ndim += 1 # <<<<<<<<<<<<<< @@ -11783,7 +11889,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); - /* "View.MemoryView":757 + /* "View.MemoryView":756 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -11793,7 +11899,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L6; } - /* "View.MemoryView":763 + /* "View.MemoryView":762 * new_ndim += 1 * else: * start = index.start or 0 # <<<<<<<<<<<<<< @@ -11801,13 +11907,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * step = index.step or 0 */ /*else*/ { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 763, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 762, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 763, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 762, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 763, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error) __pyx_t_9 = __pyx_t_11; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L7_bool_binop_done; @@ -11816,20 +11922,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L7_bool_binop_done:; __pyx_v_start = __pyx_t_9; - /* "View.MemoryView":764 + /* "View.MemoryView":763 * else: * start = index.start or 0 * stop = index.stop or 0 # <<<<<<<<<<<<<< * step = index.step or 0 * */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 763, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 763, __pyx_L1_error) __pyx_t_9 = __pyx_t_11; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L9_bool_binop_done; @@ -11838,20 +11944,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L9_bool_binop_done:; __pyx_v_stop = __pyx_t_9; - /* "View.MemoryView":765 + /* "View.MemoryView":764 * start = index.start or 0 * stop = index.stop or 0 * step = index.step or 0 # <<<<<<<<<<<<<< * * have_start = index.start is not None */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 765, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 765, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 764, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 765, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 764, __pyx_L1_error) __pyx_t_9 = __pyx_t_11; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L11_bool_binop_done; @@ -11860,55 +11966,55 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L11_bool_binop_done:; __pyx_v_step = __pyx_t_9; - /* "View.MemoryView":767 + /* "View.MemoryView":766 * step = index.step or 0 * * have_start = index.start is not None # <<<<<<<<<<<<<< * have_stop = index.stop is not None * have_step = index.step is not None */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 767, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_t_8 != Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_have_start = __pyx_t_1; - /* "View.MemoryView":768 + /* "View.MemoryView":767 * * have_start = index.start is not None * have_stop = index.stop is not None # <<<<<<<<<<<<<< * have_step = index.step is not None * */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 768, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_t_8 != Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_have_stop = __pyx_t_1; - /* "View.MemoryView":769 + /* "View.MemoryView":768 * have_start = index.start is not None * have_stop = index.stop is not None * have_step = index.step is not None # <<<<<<<<<<<<<< * * slice_memviewslice( */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 769, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_t_8 != Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_have_step = __pyx_t_1; - /* "View.MemoryView":771 + /* "View.MemoryView":770 * have_step = index.step is not None * * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 771, __pyx_L1_error) + __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 770, __pyx_L1_error) - /* "View.MemoryView":777 + /* "View.MemoryView":776 * have_start, have_stop, have_step, * True) * new_ndim += 1 # <<<<<<<<<<<<<< @@ -11919,7 +12025,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L6:; - /* "View.MemoryView":748 + /* "View.MemoryView":747 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -11929,7 +12035,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":779 + /* "View.MemoryView":778 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -11939,7 +12045,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":780 + /* "View.MemoryView":779 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< @@ -11948,39 +12054,39 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __Pyx_XDECREF((PyObject *)__pyx_r); - /* "View.MemoryView":781 + /* "View.MemoryView":780 * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< * memviewsliceobj.to_dtype_func, * memview.dtype_is_object) */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 781, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 780, __pyx_L1_error) } - /* "View.MemoryView":782 + /* "View.MemoryView":781 * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< * memview.dtype_is_object) * else: */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 782, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 781, __pyx_L1_error) } - /* "View.MemoryView":780 + /* "View.MemoryView":779 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 780, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 779, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 780, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 779, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":779 + /* "View.MemoryView":778 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -11989,7 +12095,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ } - /* "View.MemoryView":785 + /* "View.MemoryView":784 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< @@ -11999,30 +12105,30 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ /*else*/ { __Pyx_XDECREF((PyObject *)__pyx_r); - /* "View.MemoryView":786 + /* "View.MemoryView":785 * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 785, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "View.MemoryView":785 + /* "View.MemoryView":784 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 785, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 784, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":711 + /* "View.MemoryView":710 * * * @cname('__pyx_memview_slice') # <<<<<<<<<<<<<< @@ -12044,7 +12150,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ return __pyx_r; } -/* "View.MemoryView":793 +/* "View.MemoryView":792 * * * @cname('__pyx_memoryview_slice_memviewslice') # <<<<<<<<<<<<<< @@ -12064,7 +12170,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":814 + /* "View.MemoryView":813 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -12074,7 +12180,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = (!__pyx_v_is_slice); if (__pyx_t_1) { - /* "View.MemoryView":816 + /* "View.MemoryView":815 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -12084,7 +12190,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = (__pyx_v_start < 0); if (__pyx_t_1) { - /* "View.MemoryView":817 + /* "View.MemoryView":816 * * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -12093,7 +12199,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":816 + /* "View.MemoryView":815 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -12102,7 +12208,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":818 + /* "View.MemoryView":817 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -12116,16 +12222,16 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "View.MemoryView":819 + /* "View.MemoryView":818 * start += shape * if not 0 <= start < shape: * _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< * else: * */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 819, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 818, __pyx_L1_error) - /* "View.MemoryView":818 + /* "View.MemoryView":817 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -12134,7 +12240,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":814 + /* "View.MemoryView":813 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -12144,7 +12250,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L3; } - /* "View.MemoryView":822 + /* "View.MemoryView":821 * else: * * if have_step: # <<<<<<<<<<<<<< @@ -12155,7 +12261,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":823 + /* "View.MemoryView":822 * * if have_step: * negative_step = step < 0 # <<<<<<<<<<<<<< @@ -12164,7 +12270,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_negative_step = (__pyx_v_step < 0); - /* "View.MemoryView":824 + /* "View.MemoryView":823 * if have_step: * negative_step = step < 0 * if step == 0: # <<<<<<<<<<<<<< @@ -12174,16 +12280,16 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_step == 0); if (__pyx_t_2) { - /* "View.MemoryView":825 + /* "View.MemoryView":824 * negative_step = step < 0 * if step == 0: * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< * else: * negative_step = False */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 825, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 824, __pyx_L1_error) - /* "View.MemoryView":824 + /* "View.MemoryView":823 * if have_step: * negative_step = step < 0 * if step == 0: # <<<<<<<<<<<<<< @@ -12192,7 +12298,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":822 + /* "View.MemoryView":821 * else: * * if have_step: # <<<<<<<<<<<<<< @@ -12202,7 +12308,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L6; } - /* "View.MemoryView":827 + /* "View.MemoryView":826 * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) * else: * negative_step = False # <<<<<<<<<<<<<< @@ -12212,7 +12318,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, /*else*/ { __pyx_v_negative_step = 0; - /* "View.MemoryView":828 + /* "View.MemoryView":827 * else: * negative_step = False * step = 1 # <<<<<<<<<<<<<< @@ -12223,7 +12329,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L6:; - /* "View.MemoryView":831 + /* "View.MemoryView":830 * * * if have_start: # <<<<<<<<<<<<<< @@ -12233,7 +12339,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_start != 0); if (__pyx_t_2) { - /* "View.MemoryView":832 + /* "View.MemoryView":831 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -12243,7 +12349,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_start < 0); if (__pyx_t_2) { - /* "View.MemoryView":833 + /* "View.MemoryView":832 * if have_start: * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -12252,7 +12358,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":834 + /* "View.MemoryView":833 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -12262,7 +12368,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_start < 0); if (__pyx_t_2) { - /* "View.MemoryView":835 + /* "View.MemoryView":834 * start += shape * if start < 0: * start = 0 # <<<<<<<<<<<<<< @@ -12271,7 +12377,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = 0; - /* "View.MemoryView":834 + /* "View.MemoryView":833 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -12280,7 +12386,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":832 + /* "View.MemoryView":831 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -12290,7 +12396,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L9; } - /* "View.MemoryView":836 + /* "View.MemoryView":835 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -12300,7 +12406,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_start >= __pyx_v_shape); if (__pyx_t_2) { - /* "View.MemoryView":837 + /* "View.MemoryView":836 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -12309,7 +12415,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ if (__pyx_v_negative_step) { - /* "View.MemoryView":838 + /* "View.MemoryView":837 * elif start >= shape: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -12318,7 +12424,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_shape - 1); - /* "View.MemoryView":837 + /* "View.MemoryView":836 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -12328,7 +12434,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L11; } - /* "View.MemoryView":840 + /* "View.MemoryView":839 * start = shape - 1 * else: * start = shape # <<<<<<<<<<<<<< @@ -12340,7 +12446,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L11:; - /* "View.MemoryView":836 + /* "View.MemoryView":835 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -12350,7 +12456,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L9:; - /* "View.MemoryView":831 + /* "View.MemoryView":830 * * * if have_start: # <<<<<<<<<<<<<< @@ -12360,7 +12466,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L8; } - /* "View.MemoryView":842 + /* "View.MemoryView":841 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12370,7 +12476,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, /*else*/ { if (__pyx_v_negative_step) { - /* "View.MemoryView":843 + /* "View.MemoryView":842 * else: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -12379,7 +12485,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_shape - 1); - /* "View.MemoryView":842 + /* "View.MemoryView":841 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12389,7 +12495,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L12; } - /* "View.MemoryView":845 + /* "View.MemoryView":844 * start = shape - 1 * else: * start = 0 # <<<<<<<<<<<<<< @@ -12403,7 +12509,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L8:; - /* "View.MemoryView":847 + /* "View.MemoryView":846 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -12413,7 +12519,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_stop != 0); if (__pyx_t_2) { - /* "View.MemoryView":848 + /* "View.MemoryView":847 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -12423,7 +12529,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_stop < 0); if (__pyx_t_2) { - /* "View.MemoryView":849 + /* "View.MemoryView":848 * if have_stop: * if stop < 0: * stop += shape # <<<<<<<<<<<<<< @@ -12432,7 +12538,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); - /* "View.MemoryView":850 + /* "View.MemoryView":849 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -12442,7 +12548,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_stop < 0); if (__pyx_t_2) { - /* "View.MemoryView":851 + /* "View.MemoryView":850 * stop += shape * if stop < 0: * stop = 0 # <<<<<<<<<<<<<< @@ -12451,7 +12557,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = 0; - /* "View.MemoryView":850 + /* "View.MemoryView":849 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -12460,7 +12566,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":848 + /* "View.MemoryView":847 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -12470,7 +12576,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L14; } - /* "View.MemoryView":852 + /* "View.MemoryView":851 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -12480,7 +12586,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_stop > __pyx_v_shape); if (__pyx_t_2) { - /* "View.MemoryView":853 + /* "View.MemoryView":852 * stop = 0 * elif stop > shape: * stop = shape # <<<<<<<<<<<<<< @@ -12489,7 +12595,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = __pyx_v_shape; - /* "View.MemoryView":852 + /* "View.MemoryView":851 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -12499,7 +12605,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L14:; - /* "View.MemoryView":847 + /* "View.MemoryView":846 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -12509,7 +12615,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L13; } - /* "View.MemoryView":855 + /* "View.MemoryView":854 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12519,7 +12625,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, /*else*/ { if (__pyx_v_negative_step) { - /* "View.MemoryView":856 + /* "View.MemoryView":855 * else: * if negative_step: * stop = -1 # <<<<<<<<<<<<<< @@ -12528,7 +12634,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = -1L; - /* "View.MemoryView":855 + /* "View.MemoryView":854 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12538,7 +12644,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L16; } - /* "View.MemoryView":858 + /* "View.MemoryView":857 * stop = -1 * else: * stop = shape # <<<<<<<<<<<<<< @@ -12552,7 +12658,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L13:; - /* "View.MemoryView":862 + /* "View.MemoryView":861 * * with cython.cdivision(True): * new_shape = (stop - start) // step # <<<<<<<<<<<<<< @@ -12561,7 +12667,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); - /* "View.MemoryView":864 + /* "View.MemoryView":863 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -12571,7 +12677,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":865 + /* "View.MemoryView":864 * * if (stop - start) - step * new_shape: * new_shape += 1 # <<<<<<<<<<<<<< @@ -12580,7 +12686,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = (__pyx_v_new_shape + 1); - /* "View.MemoryView":864 + /* "View.MemoryView":863 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -12589,7 +12695,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":867 + /* "View.MemoryView":866 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -12599,7 +12705,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_new_shape < 0); if (__pyx_t_2) { - /* "View.MemoryView":868 + /* "View.MemoryView":867 * * if new_shape < 0: * new_shape = 0 # <<<<<<<<<<<<<< @@ -12608,7 +12714,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = 0; - /* "View.MemoryView":867 + /* "View.MemoryView":866 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -12617,7 +12723,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":871 + /* "View.MemoryView":870 * * * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< @@ -12626,7 +12732,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); - /* "View.MemoryView":872 + /* "View.MemoryView":871 * * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< @@ -12635,7 +12741,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; - /* "View.MemoryView":873 + /* "View.MemoryView":872 * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< @@ -12646,7 +12752,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L3:; - /* "View.MemoryView":876 + /* "View.MemoryView":875 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -12656,7 +12762,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_suboffset_dim[0]) < 0); if (__pyx_t_2) { - /* "View.MemoryView":877 + /* "View.MemoryView":876 * * if suboffset_dim[0] < 0: * dst.data += start * stride # <<<<<<<<<<<<<< @@ -12665,7 +12771,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); - /* "View.MemoryView":876 + /* "View.MemoryView":875 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -12675,7 +12781,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L19; } - /* "View.MemoryView":879 + /* "View.MemoryView":878 * dst.data += start * stride * else: * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< @@ -12688,7 +12794,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L19:; - /* "View.MemoryView":881 + /* "View.MemoryView":880 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -12698,7 +12804,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_suboffset >= 0); if (__pyx_t_2) { - /* "View.MemoryView":882 + /* "View.MemoryView":881 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -12708,7 +12814,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (!__pyx_v_is_slice); if (__pyx_t_2) { - /* "View.MemoryView":883 + /* "View.MemoryView":882 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -12718,7 +12824,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_new_ndim == 0); if (__pyx_t_2) { - /* "View.MemoryView":884 + /* "View.MemoryView":883 * if not is_slice: * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< @@ -12727,7 +12833,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); - /* "View.MemoryView":883 + /* "View.MemoryView":882 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -12737,7 +12843,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L22; } - /* "View.MemoryView":886 + /* "View.MemoryView":885 * dst.data = ( dst.data)[0] + suboffset * else: * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< @@ -12746,18 +12852,18 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ /*else*/ { - /* "View.MemoryView":887 + /* "View.MemoryView":886 * else: * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< * else: * suboffset_dim[0] = new_ndim */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 886, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 885, __pyx_L1_error) } __pyx_L22:; - /* "View.MemoryView":882 + /* "View.MemoryView":881 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -12767,7 +12873,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L21; } - /* "View.MemoryView":889 + /* "View.MemoryView":888 * "must be indexed and not sliced", dim) * else: * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< @@ -12779,7 +12885,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L21:; - /* "View.MemoryView":881 + /* "View.MemoryView":880 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -12788,7 +12894,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":891 + /* "View.MemoryView":890 * suboffset_dim[0] = new_ndim * * return 0 # <<<<<<<<<<<<<< @@ -12798,7 +12904,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":793 + /* "View.MemoryView":792 * * * @cname('__pyx_memoryview_slice_memviewslice') # <<<<<<<<<<<<<< @@ -12816,7 +12922,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, return __pyx_r; } -/* "View.MemoryView":896 +/* "View.MemoryView":895 * * * @cname('__pyx_pybuffer_index') # <<<<<<<<<<<<<< @@ -12842,7 +12948,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pybuffer_index", 0); - /* "View.MemoryView":899 + /* "View.MemoryView":898 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< @@ -12851,7 +12957,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_suboffset = -1L; - /* "View.MemoryView":900 + /* "View.MemoryView":899 * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< @@ -12861,7 +12967,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_1 = __pyx_v_view->itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":903 + /* "View.MemoryView":902 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -12871,7 +12977,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_view->ndim == 0); if (__pyx_t_2) { - /* "View.MemoryView":904 + /* "View.MemoryView":903 * * if view.ndim == 0: * shape = view.len // itemsize # <<<<<<<<<<<<<< @@ -12880,15 +12986,15 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 904, __pyx_L1_error) + __PYX_ERR(1, 903, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(1, 904, __pyx_L1_error) + __PYX_ERR(1, 903, __pyx_L1_error) } __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize, 0); - /* "View.MemoryView":905 + /* "View.MemoryView":904 * if view.ndim == 0: * shape = view.len // itemsize * stride = itemsize # <<<<<<<<<<<<<< @@ -12897,7 +13003,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = __pyx_v_itemsize; - /* "View.MemoryView":903 + /* "View.MemoryView":902 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -12907,7 +13013,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P goto __pyx_L3; } - /* "View.MemoryView":907 + /* "View.MemoryView":906 * stride = itemsize * else: * shape = view.shape[dim] # <<<<<<<<<<<<<< @@ -12917,7 +13023,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P /*else*/ { __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); - /* "View.MemoryView":908 + /* "View.MemoryView":907 * else: * shape = view.shape[dim] * stride = view.strides[dim] # <<<<<<<<<<<<<< @@ -12926,7 +13032,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); - /* "View.MemoryView":909 + /* "View.MemoryView":908 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -12936,7 +13042,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_view->suboffsets != NULL); if (__pyx_t_2) { - /* "View.MemoryView":910 + /* "View.MemoryView":909 * stride = view.strides[dim] * if view.suboffsets != NULL: * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< @@ -12945,7 +13051,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); - /* "View.MemoryView":909 + /* "View.MemoryView":908 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -12956,7 +13062,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P } __pyx_L3:; - /* "View.MemoryView":912 + /* "View.MemoryView":911 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -12966,7 +13072,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_index < 0); if (__pyx_t_2) { - /* "View.MemoryView":913 + /* "View.MemoryView":912 * * if index < 0: * index += view.shape[dim] # <<<<<<<<<<<<<< @@ -12975,7 +13081,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); - /* "View.MemoryView":914 + /* "View.MemoryView":913 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -12985,27 +13091,27 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_index < 0); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":915 + /* "View.MemoryView":914 * index += view.shape[dim] * if index < 0: * raise IndexError, f"Out of bounds on buffer access (axis {dim})" # <<<<<<<<<<<<<< * * if index >= shape: */ - __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 915, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a; __pyx_t_4[1] = __pyx_t_3; __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, 37 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127); - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 915, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 914, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_IndexError))), __pyx_t_5, 0, 0); + __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_5, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(1, 915, __pyx_L1_error) + __PYX_ERR(1, 914, __pyx_L1_error) - /* "View.MemoryView":914 + /* "View.MemoryView":913 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -13014,7 +13120,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":912 + /* "View.MemoryView":911 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -13023,7 +13129,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":917 + /* "View.MemoryView":916 * raise IndexError, f"Out of bounds on buffer access (axis {dim})" * * if index >= shape: # <<<<<<<<<<<<<< @@ -13033,27 +13139,27 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_index >= __pyx_v_shape); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":918 + /* "View.MemoryView":917 * * if index >= shape: * raise IndexError, f"Out of bounds on buffer access (axis {dim})" # <<<<<<<<<<<<<< * * resultp = bufp + index * stride */ - __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 918, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a; __pyx_t_4[1] = __pyx_t_5; __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, 37 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1, 127); - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 918, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_IndexError))), __pyx_t_3, 0, 0); + __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_3, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 918, __pyx_L1_error) + __PYX_ERR(1, 917, __pyx_L1_error) - /* "View.MemoryView":917 + /* "View.MemoryView":916 * raise IndexError, f"Out of bounds on buffer access (axis {dim})" * * if index >= shape: # <<<<<<<<<<<<<< @@ -13062,7 +13168,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":920 + /* "View.MemoryView":919 * raise IndexError, f"Out of bounds on buffer access (axis {dim})" * * resultp = bufp + index * stride # <<<<<<<<<<<<<< @@ -13071,7 +13177,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); - /* "View.MemoryView":921 + /* "View.MemoryView":920 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -13081,7 +13187,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_suboffset >= 0); if (__pyx_t_2) { - /* "View.MemoryView":922 + /* "View.MemoryView":921 * resultp = bufp + index * stride * if suboffset >= 0: * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< @@ -13090,7 +13196,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); - /* "View.MemoryView":921 + /* "View.MemoryView":920 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -13099,7 +13205,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":924 + /* "View.MemoryView":923 * resultp = ( resultp)[0] + suboffset * * return resultp # <<<<<<<<<<<<<< @@ -13109,7 +13215,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_r = __pyx_v_resultp; goto __pyx_L0; - /* "View.MemoryView":896 + /* "View.MemoryView":895 * * * @cname('__pyx_pybuffer_index') # <<<<<<<<<<<<<< @@ -13122,13 +13228,13 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; + __pyx_r = 0; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":929 +/* "View.MemoryView":928 * * * @cname('__pyx_memslice_transpose') # <<<<<<<<<<<<<< @@ -13157,7 +13263,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":931 + /* "View.MemoryView":930 * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil: * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< @@ -13167,7 +13273,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; __pyx_v_ndim = __pyx_t_1; - /* "View.MemoryView":933 + /* "View.MemoryView":932 * cdef int ndim = memslice.memview.view.ndim * * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< @@ -13177,7 +13283,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->shape; __pyx_v_shape = __pyx_t_2; - /* "View.MemoryView":934 + /* "View.MemoryView":933 * * cdef Py_ssize_t *shape = memslice.shape * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< @@ -13187,7 +13293,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->strides; __pyx_v_strides = __pyx_t_2; - /* "View.MemoryView":938 + /* "View.MemoryView":937 * * cdef int i, j * for i in range(ndim // 2): # <<<<<<<<<<<<<< @@ -13199,7 +13305,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":939 + /* "View.MemoryView":938 * cdef int i, j * for i in range(ndim // 2): * j = ndim - 1 - i # <<<<<<<<<<<<<< @@ -13208,7 +13314,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { */ __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); - /* "View.MemoryView":940 + /* "View.MemoryView":939 * for i in range(ndim // 2): * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< @@ -13220,7 +13326,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5; (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6; - /* "View.MemoryView":941 + /* "View.MemoryView":940 * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< @@ -13232,7 +13338,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6; (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5; - /* "View.MemoryView":943 + /* "View.MemoryView":942 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -13250,16 +13356,16 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_L6_bool_binop_done:; if (__pyx_t_7) { - /* "View.MemoryView":944 + /* "View.MemoryView":943 * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< * * return 0 */ - __pyx_t_9 = __pyx_memoryview_err(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 944, __pyx_L1_error) + __pyx_t_9 = __pyx_memoryview_err(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 943, __pyx_L1_error) - /* "View.MemoryView":943 + /* "View.MemoryView":942 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -13269,7 +13375,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { } } - /* "View.MemoryView":946 + /* "View.MemoryView":945 * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") * * return 0 # <<<<<<<<<<<<<< @@ -13279,7 +13385,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":929 + /* "View.MemoryView":928 * * * @cname('__pyx_memslice_transpose') # <<<<<<<<<<<<<< @@ -13297,7 +13403,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { return __pyx_r; } -/* "View.MemoryView":964 +/* "View.MemoryView":963 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -13320,7 +13426,7 @@ static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) { static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { - /* "View.MemoryView":965 + /* "View.MemoryView":964 * * def __dealloc__(self): * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< @@ -13329,7 +13435,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl */ __PYX_XCLEAR_MEMVIEW((&__pyx_v_self->from_slice), 1); - /* "View.MemoryView":964 + /* "View.MemoryView":963 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -13340,7 +13446,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl /* function exit code */ } -/* "View.MemoryView":967 +/* "View.MemoryView":966 * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -13358,7 +13464,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":968 + /* "View.MemoryView":967 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -13368,7 +13474,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor __pyx_t_1 = (__pyx_v_self->to_object_func != NULL); if (__pyx_t_1) { - /* "View.MemoryView":969 + /* "View.MemoryView":968 * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: * return self.to_object_func(itemp) # <<<<<<<<<<<<<< @@ -13376,13 +13482,13 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor * return memoryview.convert_item_to_object(self, itemp) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 969, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":968 + /* "View.MemoryView":967 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -13391,7 +13497,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ } - /* "View.MemoryView":971 + /* "View.MemoryView":970 * return self.to_object_func(itemp) * else: * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< @@ -13400,14 +13506,14 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 971, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 970, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":967 + /* "View.MemoryView":966 * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -13426,7 +13532,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":973 +/* "View.MemoryView":972 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -13445,7 +13551,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":974 + /* "View.MemoryView":973 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -13455,16 +13561,16 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo __pyx_t_1 = (__pyx_v_self->to_dtype_func != NULL); if (__pyx_t_1) { - /* "View.MemoryView":975 + /* "View.MemoryView":974 * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< * else: * memoryview.assign_item_from_object(self, itemp, value) */ - __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 975, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 974, __pyx_L1_error) - /* "View.MemoryView":974 + /* "View.MemoryView":973 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -13474,7 +13580,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo goto __pyx_L3; } - /* "View.MemoryView":977 + /* "View.MemoryView":976 * self.to_dtype_func(itemp, value) * else: * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< @@ -13482,13 +13588,13 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo * cdef _get_base(self): */ /*else*/ { - __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 977, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; - /* "View.MemoryView":973 + /* "View.MemoryView":972 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -13509,7 +13615,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo return __pyx_r; } -/* "View.MemoryView":979 +/* "View.MemoryView":978 * memoryview.assign_item_from_object(self, itemp, value) * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -13522,7 +13628,7 @@ static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_ob __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_base", 0); - /* "View.MemoryView":980 + /* "View.MemoryView":979 * * cdef _get_base(self): * return self.from_object # <<<<<<<<<<<<<< @@ -13534,7 +13640,7 @@ static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_ob __pyx_r = __pyx_v_self->from_object; goto __pyx_L0; - /* "View.MemoryView":979 + /* "View.MemoryView":978 * memoryview.assign_item_from_object(self, itemp, value) * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -13610,7 +13716,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 @@ -13684,7 +13790,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } } @@ -13732,7 +13838,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 @@ -13751,7 +13857,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS return __pyx_r; } -/* "View.MemoryView":999 +/* "View.MemoryView":998 * pass # ignore failure, it's a minor issue * * @cname('__pyx_memoryview_fromslice') # <<<<<<<<<<<<<< @@ -13779,7 +13885,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_fromslice", 0); - /* "View.MemoryView":1008 + /* "View.MemoryView":1007 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< @@ -13789,7 +13895,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = (((PyObject *)__pyx_v_memviewslice.memview) == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":1009 + /* "View.MemoryView":1008 * * if memviewslice.memview == Py_None: * return None # <<<<<<<<<<<<<< @@ -13800,7 +13906,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "View.MemoryView":1008 + /* "View.MemoryView":1007 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< @@ -13809,33 +13915,33 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ } - /* "View.MemoryView":1014 + /* "View.MemoryView":1013 * * * result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object) # <<<<<<<<<<<<<< * * result.from_slice = memviewslice */ - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1014, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1014, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None) != (0)) __PYX_ERR(1, 1014, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None) != (0)) __PYX_ERR(1, 1013, __pyx_L1_error); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(1, 1014, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(1, 1013, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2) != (0)) __PYX_ERR(1, 1014, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2) != (0)) __PYX_ERR(1, 1013, __pyx_L1_error); __pyx_t_2 = 0; - __pyx_t_2 = ((PyObject *)__pyx_tp_new__memoryviewslice(((PyTypeObject *)__pyx_mstate_global->__pyx_memoryviewslice_type), __pyx_t_3, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1014, __pyx_L1_error) + __pyx_t_2 = ((PyObject *)__pyx_tp_new__memoryviewslice(((PyTypeObject *)__pyx_mstate_global->__pyx_memoryviewslice_type), __pyx_t_3, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1016 + /* "View.MemoryView":1015 * result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object) * * result.from_slice = memviewslice # <<<<<<<<<<<<<< @@ -13844,7 +13950,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->from_slice = __pyx_v_memviewslice; - /* "View.MemoryView":1017 + /* "View.MemoryView":1016 * * result.from_slice = memviewslice * __PYX_INC_MEMVIEW(&memviewslice, 1) # <<<<<<<<<<<<<< @@ -13853,14 +13959,14 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1); - /* "View.MemoryView":1019 + /* "View.MemoryView":1018 * __PYX_INC_MEMVIEW(&memviewslice, 1) * * result.from_object = ( memviewslice.memview)._get_base() # <<<<<<<<<<<<<< * result.typeinfo = memviewslice.memview.typeinfo * */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->__pyx_vtab)->_get_base(((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1019, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->__pyx_vtab)->_get_base(((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_result->from_object); @@ -13868,7 +13974,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_v_result->from_object = __pyx_t_2; __pyx_t_2 = 0; - /* "View.MemoryView":1020 + /* "View.MemoryView":1019 * * result.from_object = ( memviewslice.memview)._get_base() * result.typeinfo = memviewslice.memview.typeinfo # <<<<<<<<<<<<<< @@ -13878,7 +13984,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo; __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4; - /* "View.MemoryView":1022 + /* "View.MemoryView":1021 * result.typeinfo = memviewslice.memview.typeinfo * * result.view = memviewslice.memview.view # <<<<<<<<<<<<<< @@ -13888,7 +13994,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_5 = __pyx_v_memviewslice.memview->view; __pyx_v_result->__pyx_base.view = __pyx_t_5; - /* "View.MemoryView":1023 + /* "View.MemoryView":1022 * * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data # <<<<<<<<<<<<<< @@ -13897,7 +14003,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data); - /* "View.MemoryView":1024 + /* "View.MemoryView":1023 * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data * result.view.ndim = ndim # <<<<<<<<<<<<<< @@ -13906,7 +14012,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim; - /* "View.MemoryView":1025 + /* "View.MemoryView":1024 * result.view.buf = memviewslice.data * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None # <<<<<<<<<<<<<< @@ -13915,7 +14021,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None; - /* "View.MemoryView":1026 + /* "View.MemoryView":1025 * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -13924,7 +14030,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ Py_INCREF(Py_None); - /* "View.MemoryView":1028 + /* "View.MemoryView":1027 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< @@ -13934,7 +14040,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1029 + /* "View.MemoryView":1028 * * if (memviewslice.memview).flags & PyBUF_WRITABLE: * result.flags = PyBUF_RECORDS # <<<<<<<<<<<<<< @@ -13943,7 +14049,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS; - /* "View.MemoryView":1028 + /* "View.MemoryView":1027 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< @@ -13953,7 +14059,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl goto __pyx_L4; } - /* "View.MemoryView":1031 + /* "View.MemoryView":1030 * result.flags = PyBUF_RECORDS * else: * result.flags = PyBUF_RECORDS_RO # <<<<<<<<<<<<<< @@ -13965,7 +14071,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl } __pyx_L4:; - /* "View.MemoryView":1033 + /* "View.MemoryView":1032 * result.flags = PyBUF_RECORDS_RO * * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< @@ -13974,7 +14080,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); - /* "View.MemoryView":1034 + /* "View.MemoryView":1033 * * result.view.shape = result.from_slice.shape * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< @@ -13983,7 +14089,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); - /* "View.MemoryView":1037 + /* "View.MemoryView":1036 * * * result.view.suboffsets = NULL # <<<<<<<<<<<<<< @@ -13992,7 +14098,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.suboffsets = NULL; - /* "View.MemoryView":1038 + /* "View.MemoryView":1037 * * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< @@ -14004,7 +14110,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_6 = __pyx_t_8; __pyx_v_suboffset = (__pyx_t_6[0]); - /* "View.MemoryView":1039 + /* "View.MemoryView":1038 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -14014,7 +14120,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = (__pyx_v_suboffset >= 0); if (__pyx_t_1) { - /* "View.MemoryView":1040 + /* "View.MemoryView":1039 * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< @@ -14023,7 +14129,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); - /* "View.MemoryView":1041 + /* "View.MemoryView":1040 * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets * break # <<<<<<<<<<<<<< @@ -14032,7 +14138,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ goto __pyx_L6_break; - /* "View.MemoryView":1039 + /* "View.MemoryView":1038 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -14043,7 +14149,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl } __pyx_L6_break:; - /* "View.MemoryView":1043 + /* "View.MemoryView":1042 * break * * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< @@ -14053,7 +14159,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; - /* "View.MemoryView":1044 + /* "View.MemoryView":1043 * * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< @@ -14063,29 +14169,29 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { __pyx_t_6 = __pyx_t_8; - __pyx_t_2 = PyLong_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1045 + /* "View.MemoryView":1044 * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: * result.view.len *= length # <<<<<<<<<<<<<< * * result.to_object_func = to_object_func */ - __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1045, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1045, __pyx_L1_error) + __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1045, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; } - /* "View.MemoryView":1047 + /* "View.MemoryView":1046 * result.view.len *= length * * result.to_object_func = to_object_func # <<<<<<<<<<<<<< @@ -14094,7 +14200,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_object_func = __pyx_v_to_object_func; - /* "View.MemoryView":1048 + /* "View.MemoryView":1047 * * result.to_object_func = to_object_func * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< @@ -14103,7 +14209,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; - /* "View.MemoryView":1050 + /* "View.MemoryView":1049 * result.to_dtype_func = to_dtype_func * * return result # <<<<<<<<<<<<<< @@ -14115,7 +14221,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":999 + /* "View.MemoryView":998 * pass # ignore failure, it's a minor issue * * @cname('__pyx_memoryview_fromslice') # <<<<<<<<<<<<<< @@ -14137,7 +14243,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl return __pyx_r; } -/* "View.MemoryView":1052 +/* "View.MemoryView":1051 * return result * * @cname('__pyx_memoryview_get_slice_from_memoryview') # <<<<<<<<<<<<<< @@ -14156,7 +14262,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_slice_from_memview", 0); - /* "View.MemoryView":1056 + /* "View.MemoryView":1055 * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14166,7 +14272,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":1057 + /* "View.MemoryView":1056 * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): * obj = memview # <<<<<<<<<<<<<< @@ -14175,11 +14281,11 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p */ __pyx_t_2 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 1057, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error) __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1058 + /* "View.MemoryView":1057 * if isinstance(memview, _memoryviewslice): * obj = memview * return &obj.from_slice # <<<<<<<<<<<<<< @@ -14189,7 +14295,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_r = (&__pyx_v_obj->from_slice); goto __pyx_L0; - /* "View.MemoryView":1056 + /* "View.MemoryView":1055 * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14198,7 +14304,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p */ } - /* "View.MemoryView":1060 + /* "View.MemoryView":1059 * return &obj.from_slice * else: * slice_copy(memview, mslice) # <<<<<<<<<<<<<< @@ -14208,7 +14314,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); - /* "View.MemoryView":1061 + /* "View.MemoryView":1060 * else: * slice_copy(memview, mslice) * return mslice # <<<<<<<<<<<<<< @@ -14219,7 +14325,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p goto __pyx_L0; } - /* "View.MemoryView":1052 + /* "View.MemoryView":1051 * return result * * @cname('__pyx_memoryview_get_slice_from_memoryview') # <<<<<<<<<<<<<< @@ -14231,14 +14337,14 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; + __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_obj); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":1063 +/* "View.MemoryView":1062 * return mslice * * @cname('__pyx_memoryview_slice_copy') # <<<<<<<<<<<<<< @@ -14258,7 +14364,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem Py_ssize_t __pyx_t_5; int __pyx_t_6; - /* "View.MemoryView":1068 + /* "View.MemoryView":1067 * cdef (Py_ssize_t*) shape, strides, suboffsets * * shape = memview.view.shape # <<<<<<<<<<<<<< @@ -14268,7 +14374,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.shape; __pyx_v_shape = __pyx_t_1; - /* "View.MemoryView":1069 + /* "View.MemoryView":1068 * * shape = memview.view.shape * strides = memview.view.strides # <<<<<<<<<<<<<< @@ -14278,7 +14384,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.strides; __pyx_v_strides = __pyx_t_1; - /* "View.MemoryView":1070 + /* "View.MemoryView":1069 * shape = memview.view.shape * strides = memview.view.strides * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< @@ -14288,7 +14394,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.suboffsets; __pyx_v_suboffsets = __pyx_t_1; - /* "View.MemoryView":1072 + /* "View.MemoryView":1071 * suboffsets = memview.view.suboffsets * * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< @@ -14297,7 +14403,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); - /* "View.MemoryView":1073 + /* "View.MemoryView":1072 * * dst.memview = <__pyx_memoryview *> memview * dst.data = memview.view.buf # <<<<<<<<<<<<<< @@ -14306,7 +14412,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); - /* "View.MemoryView":1075 + /* "View.MemoryView":1074 * dst.data = memview.view.buf * * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< @@ -14318,7 +14424,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_dim = __pyx_t_4; - /* "View.MemoryView":1076 + /* "View.MemoryView":1075 * * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< @@ -14327,7 +14433,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); - /* "View.MemoryView":1077 + /* "View.MemoryView":1076 * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< @@ -14336,7 +14442,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); - /* "View.MemoryView":1078 + /* "View.MemoryView":1077 * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< @@ -14352,7 +14458,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5; } - /* "View.MemoryView":1063 + /* "View.MemoryView":1062 * return mslice * * @cname('__pyx_memoryview_slice_copy') # <<<<<<<<<<<<<< @@ -14363,7 +14469,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem /* function exit code */ } -/* "View.MemoryView":1080 +/* "View.MemoryView":1079 * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 * * @cname('__pyx_memoryview_copy_object') # <<<<<<<<<<<<<< @@ -14381,7 +14487,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy", 0); - /* "View.MemoryView":1084 + /* "View.MemoryView":1083 * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -14390,7 +14496,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx */ __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); - /* "View.MemoryView":1085 + /* "View.MemoryView":1084 * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -14398,13 +14504,13 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx * @cname('__pyx_memoryview_copy_object_from_slice') */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1085, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":1080 + /* "View.MemoryView":1079 * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 * * @cname('__pyx_memoryview_copy_object') # <<<<<<<<<<<<<< @@ -14423,7 +14529,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx return __pyx_r; } -/* "View.MemoryView":1087 +/* "View.MemoryView":1086 * return memoryview_copy_from_slice(memview, &memviewslice) * * @cname('__pyx_memoryview_copy_object_from_slice') # <<<<<<<<<<<<<< @@ -14445,7 +14551,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0); - /* "View.MemoryView":1095 + /* "View.MemoryView":1094 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14455,7 +14561,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":1096 + /* "View.MemoryView":1095 * * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< @@ -14465,7 +14571,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_2 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; __pyx_v_to_object_func = __pyx_t_2; - /* "View.MemoryView":1097 + /* "View.MemoryView":1096 * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< @@ -14475,7 +14581,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; __pyx_v_to_dtype_func = __pyx_t_3; - /* "View.MemoryView":1095 + /* "View.MemoryView":1094 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14485,7 +14591,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview goto __pyx_L3; } - /* "View.MemoryView":1099 + /* "View.MemoryView":1098 * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func * else: * to_object_func = NULL # <<<<<<<<<<<<<< @@ -14495,7 +14601,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview /*else*/ { __pyx_v_to_object_func = NULL; - /* "View.MemoryView":1100 + /* "View.MemoryView":1099 * else: * to_object_func = NULL * to_dtype_func = NULL # <<<<<<<<<<<<<< @@ -14506,7 +14612,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview } __pyx_L3:; - /* "View.MemoryView":1102 + /* "View.MemoryView":1101 * to_dtype_func = NULL * * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< @@ -14515,20 +14621,20 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview */ __Pyx_XDECREF(__pyx_r); - /* "View.MemoryView":1104 + /* "View.MemoryView":1103 * return memoryview_fromslice(memviewslice[0], memview.view.ndim, * to_object_func, to_dtype_func, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_4 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1102, __pyx_L1_error) + __pyx_t_4 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "View.MemoryView":1087 + /* "View.MemoryView":1086 * return memoryview_copy_from_slice(memview, &memviewslice) * * @cname('__pyx_memoryview_copy_object_from_slice') # <<<<<<<<<<<<<< @@ -14547,7 +14653,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":1110 +/* "View.MemoryView":1109 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: # <<<<<<<<<<<<<< @@ -14560,7 +14666,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { Py_ssize_t __pyx_t_1; int __pyx_t_2; - /* "View.MemoryView":1111 + /* "View.MemoryView":1110 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: * return -arg if arg < 0 else arg # <<<<<<<<<<<<<< @@ -14576,7 +14682,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { __pyx_r = __pyx_t_1; goto __pyx_L0; - /* "View.MemoryView":1110 + /* "View.MemoryView":1109 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: # <<<<<<<<<<<<<< @@ -14589,7 +14695,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { return __pyx_r; } -/* "View.MemoryView":1113 +/* "View.MemoryView":1112 * return -arg if arg < 0 else arg * * @cname('__pyx_get_best_slice_order') # <<<<<<<<<<<<<< @@ -14607,7 +14713,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ int __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1119 + /* "View.MemoryView":1118 * """ * cdef int i * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< @@ -14616,7 +14722,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = 0; - /* "View.MemoryView":1120 + /* "View.MemoryView":1119 * cdef int i * cdef Py_ssize_t c_stride = 0 * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< @@ -14625,7 +14731,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = 0; - /* "View.MemoryView":1122 + /* "View.MemoryView":1121 * cdef Py_ssize_t f_stride = 0 * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -14635,7 +14741,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1123 + /* "View.MemoryView":1122 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14645,7 +14751,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1); if (__pyx_t_2) { - /* "View.MemoryView":1124 + /* "View.MemoryView":1123 * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -14654,7 +14760,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1125 + /* "View.MemoryView":1124 * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -14663,7 +14769,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ goto __pyx_L4_break; - /* "View.MemoryView":1123 + /* "View.MemoryView":1122 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14674,7 +14780,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ } __pyx_L4_break:; - /* "View.MemoryView":1127 + /* "View.MemoryView":1126 * break * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -14686,7 +14792,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1128 + /* "View.MemoryView":1127 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14696,7 +14802,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1); if (__pyx_t_2) { - /* "View.MemoryView":1129 + /* "View.MemoryView":1128 * for i in range(ndim): * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -14705,7 +14811,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1130 + /* "View.MemoryView":1129 * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -14714,7 +14820,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ goto __pyx_L7_break; - /* "View.MemoryView":1128 + /* "View.MemoryView":1127 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14725,7 +14831,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ } __pyx_L7_break:; - /* "View.MemoryView":1132 + /* "View.MemoryView":1131 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -14735,7 +14841,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = (abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)); if (__pyx_t_2) { - /* "View.MemoryView":1133 + /* "View.MemoryView":1132 * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): * return 'C' # <<<<<<<<<<<<<< @@ -14745,7 +14851,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_r = 'C'; goto __pyx_L0; - /* "View.MemoryView":1132 + /* "View.MemoryView":1131 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -14754,7 +14860,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ } - /* "View.MemoryView":1135 + /* "View.MemoryView":1134 * return 'C' * else: * return 'F' # <<<<<<<<<<<<<< @@ -14766,7 +14872,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ goto __pyx_L0; } - /* "View.MemoryView":1113 + /* "View.MemoryView":1112 * return -arg if arg < 0 else arg * * @cname('__pyx_get_best_slice_order') # <<<<<<<<<<<<<< @@ -14779,7 +14885,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ return __pyx_r; } -/* "View.MemoryView":1137 +/* "View.MemoryView":1136 * return 'F' * * @cython.cdivision(True) # <<<<<<<<<<<<<< @@ -14799,7 +14905,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v Py_ssize_t __pyx_t_4; Py_ssize_t __pyx_t_5; - /* "View.MemoryView":1145 + /* "View.MemoryView":1144 * * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< @@ -14808,7 +14914,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_extent = (__pyx_v_src_shape[0]); - /* "View.MemoryView":1146 + /* "View.MemoryView":1145 * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< @@ -14817,7 +14923,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); - /* "View.MemoryView":1147 + /* "View.MemoryView":1146 * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< @@ -14826,7 +14932,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_stride = (__pyx_v_src_strides[0]); - /* "View.MemoryView":1148 + /* "View.MemoryView":1147 * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< @@ -14835,21 +14941,21 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); - /* "View.MemoryView":1150 + /* "View.MemoryView":1149 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): */ __pyx_t_1 = (__pyx_v_ndim == 1); if (__pyx_t_1) { - /* "View.MemoryView":1151 + /* "View.MemoryView":1150 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ __pyx_t_2 = (__pyx_v_src_stride > 0); @@ -14865,10 +14971,10 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v goto __pyx_L5_bool_binop_done; } - /* "View.MemoryView":1152 + /* "View.MemoryView":1151 * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< + * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< * memcpy(dst_data, src_data, itemsize * dst_extent) * else: */ @@ -14879,35 +14985,35 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; - /* "View.MemoryView":1151 + /* "View.MemoryView":1150 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ if (__pyx_t_1) { - /* "View.MemoryView":1153 + /* "View.MemoryView":1152 * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< * else: * for i in range(dst_extent): */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent))); - /* "View.MemoryView":1151 + /* "View.MemoryView":1150 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ goto __pyx_L4; } - /* "View.MemoryView":1155 + /* "View.MemoryView":1154 * memcpy(dst_data, src_data, itemsize * dst_extent) * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< @@ -14920,7 +15026,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1156 + /* "View.MemoryView":1155 * else: * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< @@ -14929,7 +15035,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize)); - /* "View.MemoryView":1157 + /* "View.MemoryView":1156 * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -14938,7 +15044,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1158 + /* "View.MemoryView":1157 * memcpy(dst_data, src_data, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -14950,17 +15056,17 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L4:; - /* "View.MemoryView":1150 + /* "View.MemoryView":1149 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): */ goto __pyx_L3; } - /* "View.MemoryView":1160 + /* "View.MemoryView":1159 * dst_data += dst_stride * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< @@ -14973,7 +15079,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1161 + /* "View.MemoryView":1160 * else: * for i in range(dst_extent): * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< @@ -14982,7 +15088,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); - /* "View.MemoryView":1165 + /* "View.MemoryView":1164 * src_shape + 1, dst_shape + 1, * ndim - 1, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -14991,7 +15097,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1166 + /* "View.MemoryView":1165 * ndim - 1, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -15003,7 +15109,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L3:; - /* "View.MemoryView":1137 + /* "View.MemoryView":1136 * return 'F' * * @cython.cdivision(True) # <<<<<<<<<<<<<< @@ -15014,7 +15120,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v /* function exit code */ } -/* "View.MemoryView":1168 +/* "View.MemoryView":1167 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -15024,7 +15130,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { - /* "View.MemoryView":1171 + /* "View.MemoryView":1170 * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) noexcept nogil: * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< @@ -15033,7 +15139,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi */ _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1168 + /* "View.MemoryView":1167 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -15044,7 +15150,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi /* function exit code */ } -/* "View.MemoryView":1174 +/* "View.MemoryView":1173 * src.shape, dst.shape, ndim, itemsize) * * @cname('__pyx_memoryview_slice_get_size') # <<<<<<<<<<<<<< @@ -15061,7 +15167,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr Py_ssize_t *__pyx_t_3; Py_ssize_t *__pyx_t_4; - /* "View.MemoryView":1177 + /* "View.MemoryView":1176 * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil: * "Return the size of the memory occupied by the slice in number of bytes" * cdef Py_ssize_t shape, size = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -15071,7 +15177,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_size = __pyx_t_1; - /* "View.MemoryView":1179 + /* "View.MemoryView":1178 * cdef Py_ssize_t shape, size = src.memview.view.itemsize * * for shape in src.shape[:ndim]: # <<<<<<<<<<<<<< @@ -15083,7 +15189,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_t_2 = __pyx_t_4; __pyx_v_shape = (__pyx_t_2[0]); - /* "View.MemoryView":1180 + /* "View.MemoryView":1179 * * for shape in src.shape[:ndim]: * size *= shape # <<<<<<<<<<<<<< @@ -15093,7 +15199,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_v_size = (__pyx_v_size * __pyx_v_shape); } - /* "View.MemoryView":1182 + /* "View.MemoryView":1181 * size *= shape * * return size # <<<<<<<<<<<<<< @@ -15103,7 +15209,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_r = __pyx_v_size; goto __pyx_L0; - /* "View.MemoryView":1174 + /* "View.MemoryView":1173 * src.shape, dst.shape, ndim, itemsize) * * @cname('__pyx_memoryview_slice_get_size') # <<<<<<<<<<<<<< @@ -15116,7 +15222,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr return __pyx_r; } -/* "View.MemoryView":1184 +/* "View.MemoryView":1183 * return size * * @cname('__pyx_fill_contig_strides_array') # <<<<<<<<<<<<<< @@ -15132,7 +15238,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ int __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1194 + /* "View.MemoryView":1193 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -15142,7 +15248,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_t_1 = (__pyx_v_order == 'F'); if (__pyx_t_1) { - /* "View.MemoryView":1195 + /* "View.MemoryView":1194 * * if order == 'F': * for idx in range(ndim): # <<<<<<<<<<<<<< @@ -15154,7 +15260,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_idx = __pyx_t_4; - /* "View.MemoryView":1196 + /* "View.MemoryView":1195 * if order == 'F': * for idx in range(ndim): * strides[idx] = stride # <<<<<<<<<<<<<< @@ -15163,7 +15269,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1197 + /* "View.MemoryView":1196 * for idx in range(ndim): * strides[idx] = stride * stride *= shape[idx] # <<<<<<<<<<<<<< @@ -15173,7 +15279,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); } - /* "View.MemoryView":1194 + /* "View.MemoryView":1193 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -15183,7 +15289,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ goto __pyx_L3; } - /* "View.MemoryView":1199 + /* "View.MemoryView":1198 * stride *= shape[idx] * else: * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -15194,7 +15300,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { __pyx_v_idx = __pyx_t_2; - /* "View.MemoryView":1200 + /* "View.MemoryView":1199 * else: * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride # <<<<<<<<<<<<<< @@ -15203,7 +15309,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1201 + /* "View.MemoryView":1200 * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride * stride *= shape[idx] # <<<<<<<<<<<<<< @@ -15215,7 +15321,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ } __pyx_L3:; - /* "View.MemoryView":1203 + /* "View.MemoryView":1202 * stride *= shape[idx] * * return stride # <<<<<<<<<<<<<< @@ -15225,7 +15331,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_r = __pyx_v_stride; goto __pyx_L0; - /* "View.MemoryView":1184 + /* "View.MemoryView":1183 * return size * * @cname('__pyx_fill_contig_strides_array') # <<<<<<<<<<<<<< @@ -15238,7 +15344,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ return __pyx_r; } -/* "View.MemoryView":1205 +/* "View.MemoryView":1204 * return stride * * @cname('__pyx_memoryview_copy_data_to_temp') # <<<<<<<<<<<<<< @@ -15263,7 +15369,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":1217 + /* "View.MemoryView":1216 * cdef void *result * * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -15273,7 +15379,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1218 + /* "View.MemoryView":1217 * * cdef size_t itemsize = src.memview.view.itemsize * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< @@ -15282,7 +15388,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); - /* "View.MemoryView":1220 + /* "View.MemoryView":1219 * cdef size_t size = slice_get_size(src, ndim) * * result = malloc(size) # <<<<<<<<<<<<<< @@ -15291,7 +15397,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_result = malloc(__pyx_v_size); - /* "View.MemoryView":1221 + /* "View.MemoryView":1220 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -15301,16 +15407,16 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = (!(__pyx_v_result != 0)); if (__pyx_t_2) { - /* "View.MemoryView":1222 + /* "View.MemoryView":1221 * result = malloc(size) * if not result: * _err_no_memory() # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_err_no_memory(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1222, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_no_memory(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1221, __pyx_L1_error) - /* "View.MemoryView":1221 + /* "View.MemoryView":1220 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -15319,7 +15425,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ } - /* "View.MemoryView":1225 + /* "View.MemoryView":1224 * * * tmpslice.data = result # <<<<<<<<<<<<<< @@ -15328,7 +15434,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_tmpslice->data = ((char *)__pyx_v_result); - /* "View.MemoryView":1226 + /* "View.MemoryView":1225 * * tmpslice.data = result * tmpslice.memview = src.memview # <<<<<<<<<<<<<< @@ -15338,7 +15444,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_4 = __pyx_v_src->memview; __pyx_v_tmpslice->memview = __pyx_t_4; - /* "View.MemoryView":1227 + /* "View.MemoryView":1226 * tmpslice.data = result * tmpslice.memview = src.memview * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15350,7 +15456,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1228 + /* "View.MemoryView":1227 * tmpslice.memview = src.memview * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< @@ -15359,7 +15465,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); - /* "View.MemoryView":1229 + /* "View.MemoryView":1228 * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< @@ -15369,7 +15475,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; } - /* "View.MemoryView":1231 + /* "View.MemoryView":1230 * tmpslice.suboffsets[i] = -1 * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, ndim, order) # <<<<<<<<<<<<<< @@ -15378,7 +15484,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order)); - /* "View.MemoryView":1234 + /* "View.MemoryView":1233 * * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15390,7 +15496,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1235 + /* "View.MemoryView":1234 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15400,7 +15506,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = ((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1); if (__pyx_t_2) { - /* "View.MemoryView":1236 + /* "View.MemoryView":1235 * for i in range(ndim): * if tmpslice.shape[i] == 1: * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< @@ -15409,7 +15515,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; - /* "View.MemoryView":1235 + /* "View.MemoryView":1234 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15419,7 +15525,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, } } - /* "View.MemoryView":1238 + /* "View.MemoryView":1237 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< @@ -15429,7 +15535,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = __pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1239 + /* "View.MemoryView":1238 * * if slice_is_contig(src[0], order, ndim): * memcpy(result, src.data, size) # <<<<<<<<<<<<<< @@ -15438,7 +15544,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size)); - /* "View.MemoryView":1238 + /* "View.MemoryView":1237 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< @@ -15448,7 +15554,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, goto __pyx_L9; } - /* "View.MemoryView":1241 + /* "View.MemoryView":1240 * memcpy(result, src.data, size) * else: * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< @@ -15460,7 +15566,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, } __pyx_L9:; - /* "View.MemoryView":1243 + /* "View.MemoryView":1242 * copy_strided_to_strided(src, tmpslice, ndim, itemsize) * * return result # <<<<<<<<<<<<<< @@ -15470,7 +15576,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "View.MemoryView":1205 + /* "View.MemoryView":1204 * return stride * * @cname('__pyx_memoryview_copy_data_to_temp') # <<<<<<<<<<<<<< @@ -15482,13 +15588,13 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_L1_error:; __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = NULL; + __pyx_r = 0; __Pyx_PyGILState_Release(__pyx_gilstate_save); __pyx_L0:; return __pyx_r; } -/* "View.MemoryView":1247 +/* "View.MemoryView":1246 * * * @cname('__pyx_memoryview_err_extents') # <<<<<<<<<<<<<< @@ -15510,18 +15616,18 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); __Pyx_RefNannySetupContext("_err_extents", 0); - /* "View.MemoryView":1250 + /* "View.MemoryView":1249 * cdef int _err_extents(int i, Py_ssize_t extent1, * Py_ssize_t extent2) except -1 with gil: * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err_dim') */ - __pyx_t_1 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1250, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent1, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1250, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent1, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent2, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1250, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent2, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_got_differing_extents_in_dimensi; __pyx_t_4[1] = __pyx_t_1; @@ -15531,16 +15637,16 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent __pyx_t_4[5] = __pyx_t_3; __pyx_t_4[6] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 7, 35 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 5 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127); - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1250, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_5, 0, 0); + __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_5, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(1, 1250, __pyx_L1_error) + __PYX_ERR(1, 1249, __pyx_L1_error) - /* "View.MemoryView":1247 + /* "View.MemoryView":1246 * * * @cname('__pyx_memoryview_err_extents') # <<<<<<<<<<<<<< @@ -15561,7 +15667,7 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent return __pyx_r; } -/* "View.MemoryView":1252 +/* "View.MemoryView":1251 * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" * * @cname('__pyx_memoryview_err_dim') # <<<<<<<<<<<<<< @@ -15581,23 +15687,23 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, PyObject *__pyx_v_m __Pyx_RefNannySetupContext("_err_dim", 0); __Pyx_INCREF(__pyx_v_msg); - /* "View.MemoryView":1254 + /* "View.MemoryView":1253 * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil: * raise error, msg % dim # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err') */ - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1254, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_t_2, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(1, 1254, __pyx_L1_error) + __PYX_ERR(1, 1253, __pyx_L1_error) - /* "View.MemoryView":1252 + /* "View.MemoryView":1251 * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" * * @cname('__pyx_memoryview_err_dim') # <<<<<<<<<<<<<< @@ -15617,7 +15723,7 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, PyObject *__pyx_v_m return __pyx_r; } -/* "View.MemoryView":1256 +/* "View.MemoryView":1255 * raise error, msg % dim * * @cname('__pyx_memoryview_err') # <<<<<<<<<<<<<< @@ -15635,7 +15741,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) __Pyx_RefNannySetupContext("_err", 0); __Pyx_INCREF(__pyx_v_msg); - /* "View.MemoryView":1258 + /* "View.MemoryView":1257 * @cname('__pyx_memoryview_err') * cdef int _err(PyObject *error, str msg) except -1 with gil: * raise error, msg # <<<<<<<<<<<<<< @@ -15643,9 +15749,9 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) * @cname('__pyx_memoryview_err_no_memory') */ __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_v_msg, 0, 0); - __PYX_ERR(1, 1258, __pyx_L1_error) + __PYX_ERR(1, 1257, __pyx_L1_error) - /* "View.MemoryView":1256 + /* "View.MemoryView":1255 * raise error, msg % dim * * @cname('__pyx_memoryview_err') # <<<<<<<<<<<<<< @@ -15663,7 +15769,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) return __pyx_r; } -/* "View.MemoryView":1260 +/* "View.MemoryView":1259 * raise error, msg * * @cname('__pyx_memoryview_err_no_memory') # <<<<<<<<<<<<<< @@ -15678,16 +15784,16 @@ static int __pyx_memoryview_err_no_memory(void) { int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - /* "View.MemoryView":1262 + /* "View.MemoryView":1261 * @cname('__pyx_memoryview_err_no_memory') * cdef int _err_no_memory() except -1 with gil: * raise MemoryError # <<<<<<<<<<<<<< * * */ - PyErr_NoMemory(); __PYX_ERR(1, 1262, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 1261, __pyx_L1_error) - /* "View.MemoryView":1260 + /* "View.MemoryView":1259 * raise error, msg * * @cname('__pyx_memoryview_err_no_memory') # <<<<<<<<<<<<<< @@ -15703,7 +15809,7 @@ static int __pyx_memoryview_err_no_memory(void) { return __pyx_r; } -/* "View.MemoryView":1265 +/* "View.MemoryView":1264 * * * @cname('__pyx_memoryview_copy_contents') # <<<<<<<<<<<<<< @@ -15733,7 +15839,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":1274 + /* "View.MemoryView":1273 * Check for overlapping memory and verify the shapes. * """ * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< @@ -15742,7 +15848,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_tmpdata = NULL; - /* "View.MemoryView":1275 + /* "View.MemoryView":1274 * """ * cdef void *tmpdata = NULL * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -15752,7 +15858,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_1 = __pyx_v_src.memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1277 + /* "View.MemoryView":1276 * cdef size_t itemsize = src.memview.view.itemsize * cdef int i * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< @@ -15761,7 +15867,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); - /* "View.MemoryView":1278 + /* "View.MemoryView":1277 * cdef int i * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False # <<<<<<<<<<<<<< @@ -15770,7 +15876,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 0; - /* "View.MemoryView":1279 + /* "View.MemoryView":1278 * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False * cdef bint direct_copy = False # <<<<<<<<<<<<<< @@ -15779,7 +15885,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = 0; - /* "View.MemoryView":1282 + /* "View.MemoryView":1281 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -15789,7 +15895,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_v_src_ndim < __pyx_v_dst_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1283 + /* "View.MemoryView":1282 * * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -15798,7 +15904,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); - /* "View.MemoryView":1282 + /* "View.MemoryView":1281 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -15808,7 +15914,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L3; } - /* "View.MemoryView":1284 + /* "View.MemoryView":1283 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -15818,7 +15924,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_v_dst_ndim < __pyx_v_src_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1285 + /* "View.MemoryView":1284 * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< @@ -15827,7 +15933,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); - /* "View.MemoryView":1284 + /* "View.MemoryView":1283 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -15837,7 +15943,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_L3:; - /* "View.MemoryView":1287 + /* "View.MemoryView":1286 * broadcast_leading(&dst, dst_ndim, src_ndim) * * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -15854,7 +15960,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_v_ndim = __pyx_t_5; - /* "View.MemoryView":1289 + /* "View.MemoryView":1288 * cdef int ndim = max(src_ndim, dst_ndim) * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15866,7 +15972,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1290 + /* "View.MemoryView":1289 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -15876,7 +15982,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])); if (__pyx_t_2) { - /* "View.MemoryView":1291 + /* "View.MemoryView":1290 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15886,7 +15992,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) == 1); if (__pyx_t_2) { - /* "View.MemoryView":1292 + /* "View.MemoryView":1291 * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: * broadcasting = True # <<<<<<<<<<<<<< @@ -15895,7 +16001,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 1; - /* "View.MemoryView":1293 + /* "View.MemoryView":1292 * if src.shape[i] == 1: * broadcasting = True * src.strides[i] = 0 # <<<<<<<<<<<<<< @@ -15904,7 +16010,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ (__pyx_v_src.strides[__pyx_v_i]) = 0; - /* "View.MemoryView":1291 + /* "View.MemoryView":1290 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15914,7 +16020,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L7; } - /* "View.MemoryView":1295 + /* "View.MemoryView":1294 * src.strides[i] = 0 * else: * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< @@ -15922,11 +16028,11 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * if src.suboffsets[i] >= 0: */ /*else*/ { - __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1295, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1294, __pyx_L1_error) } __pyx_L7:; - /* "View.MemoryView":1290 + /* "View.MemoryView":1289 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -15935,7 +16041,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1297 + /* "View.MemoryView":1296 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -15945,16 +16051,16 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0); if (__pyx_t_2) { - /* "View.MemoryView":1298 + /* "View.MemoryView":1297 * * if src.suboffsets[i] >= 0: * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< * * if slices_overlap(&src, &dst, ndim, itemsize): */ - __pyx_t_6 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1298, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) - /* "View.MemoryView":1297 + /* "View.MemoryView":1296 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -15964,7 +16070,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } } - /* "View.MemoryView":1300 + /* "View.MemoryView":1299 * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -15974,7 +16080,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = __pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); if (__pyx_t_2) { - /* "View.MemoryView":1302 + /* "View.MemoryView":1301 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -15984,7 +16090,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (!__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim)); if (__pyx_t_2) { - /* "View.MemoryView":1303 + /* "View.MemoryView":1302 * * if not slice_is_contig(src, order, ndim): * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< @@ -15993,7 +16099,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); - /* "View.MemoryView":1302 + /* "View.MemoryView":1301 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -16002,17 +16108,17 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1305 + /* "View.MemoryView":1304 * order = get_best_order(&dst, ndim) * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< * src = tmp * */ - __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1305, __pyx_L1_error) + __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)0))) __PYX_ERR(1, 1304, __pyx_L1_error) __pyx_v_tmpdata = __pyx_t_7; - /* "View.MemoryView":1306 + /* "View.MemoryView":1305 * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) * src = tmp # <<<<<<<<<<<<<< @@ -16021,7 +16127,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_src = __pyx_v_tmp; - /* "View.MemoryView":1300 + /* "View.MemoryView":1299 * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -16030,7 +16136,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1308 + /* "View.MemoryView":1307 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -16040,7 +16146,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (!__pyx_v_broadcasting); if (__pyx_t_2) { - /* "View.MemoryView":1311 + /* "View.MemoryView":1310 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< @@ -16050,7 +16156,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1312 + /* "View.MemoryView":1311 * * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) # <<<<<<<<<<<<<< @@ -16059,7 +16165,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim); - /* "View.MemoryView":1311 + /* "View.MemoryView":1310 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< @@ -16069,7 +16175,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L12; } - /* "View.MemoryView":1313 + /* "View.MemoryView":1312 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< @@ -16079,7 +16185,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1314 + /* "View.MemoryView":1313 * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): * direct_copy = slice_is_contig(dst, 'F', ndim) # <<<<<<<<<<<<<< @@ -16088,7 +16194,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim); - /* "View.MemoryView":1313 + /* "View.MemoryView":1312 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< @@ -16098,7 +16204,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_L12:; - /* "View.MemoryView":1316 + /* "View.MemoryView":1315 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -16107,7 +16213,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ if (__pyx_v_direct_copy) { - /* "View.MemoryView":1318 + /* "View.MemoryView":1317 * if direct_copy: * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< @@ -16116,7 +16222,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1319 + /* "View.MemoryView":1318 * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< @@ -16125,7 +16231,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim))); - /* "View.MemoryView":1320 + /* "View.MemoryView":1319 * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< @@ -16134,7 +16240,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1321 + /* "View.MemoryView":1320 * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, inc=True) * free(tmpdata) # <<<<<<<<<<<<<< @@ -16143,7 +16249,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1322 + /* "View.MemoryView":1321 * refcount_copying(&dst, dtype_is_object, ndim, inc=True) * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -16153,7 +16259,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1316 + /* "View.MemoryView":1315 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -16162,7 +16268,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1308 + /* "View.MemoryView":1307 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -16171,7 +16277,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1324 + /* "View.MemoryView":1323 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -16184,25 +16290,25 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } if (__pyx_t_2) { - /* "View.MemoryView":1327 + /* "View.MemoryView":1326 * * * transpose_memslice(&src) # <<<<<<<<<<<<<< * transpose_memslice(&dst) * */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1327, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1326, __pyx_L1_error) - /* "View.MemoryView":1328 + /* "View.MemoryView":1327 * * transpose_memslice(&src) * transpose_memslice(&dst) # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1328, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1327, __pyx_L1_error) - /* "View.MemoryView":1324 + /* "View.MemoryView":1323 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -16211,7 +16317,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1330 + /* "View.MemoryView":1329 * transpose_memslice(&dst) * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< @@ -16220,7 +16326,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1331 + /* "View.MemoryView":1330 * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< @@ -16229,7 +16335,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1332 + /* "View.MemoryView":1331 * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) * refcount_copying(&dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< @@ -16238,7 +16344,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1334 + /* "View.MemoryView":1333 * refcount_copying(&dst, dtype_is_object, ndim, inc=True) * * free(tmpdata) # <<<<<<<<<<<<<< @@ -16247,7 +16353,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1335 + /* "View.MemoryView":1334 * * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -16257,7 +16363,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1265 + /* "View.MemoryView":1264 * * * @cname('__pyx_memoryview_copy_contents') # <<<<<<<<<<<<<< @@ -16275,7 +16381,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ return __pyx_r; } -/* "View.MemoryView":1337 +/* "View.MemoryView":1336 * return 0 * * @cname('__pyx_memoryview_broadcast_leading') # <<<<<<<<<<<<<< @@ -16290,7 +16396,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":1342 + /* "View.MemoryView":1341 * int ndim_other) noexcept nogil: * cdef int i * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< @@ -16299,7 +16405,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); - /* "View.MemoryView":1344 + /* "View.MemoryView":1343 * cdef int offset = ndim_other - ndim * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -16309,7 +16415,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1345 + /* "View.MemoryView":1344 * * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< @@ -16318,7 +16424,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); - /* "View.MemoryView":1346 + /* "View.MemoryView":1345 * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< @@ -16327,7 +16433,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1347 + /* "View.MemoryView":1346 * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< @@ -16337,7 +16443,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); } - /* "View.MemoryView":1349 + /* "View.MemoryView":1348 * mslice.suboffsets[i + offset] = mslice.suboffsets[i] * * for i in range(offset): # <<<<<<<<<<<<<< @@ -16349,7 +16455,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1350 + /* "View.MemoryView":1349 * * for i in range(offset): * mslice.shape[i] = 1 # <<<<<<<<<<<<<< @@ -16358,7 +16464,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->shape[__pyx_v_i]) = 1; - /* "View.MemoryView":1351 + /* "View.MemoryView":1350 * for i in range(offset): * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< @@ -16367,7 +16473,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); - /* "View.MemoryView":1352 + /* "View.MemoryView":1351 * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< @@ -16377,7 +16483,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; } - /* "View.MemoryView":1337 + /* "View.MemoryView":1336 * return 0 * * @cname('__pyx_memoryview_broadcast_leading') # <<<<<<<<<<<<<< @@ -16388,7 +16494,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic /* function exit code */ } -/* "View.MemoryView":1359 +/* "View.MemoryView":1358 * * * @cname('__pyx_memoryview_refcount_copying') # <<<<<<<<<<<<<< @@ -16398,7 +16504,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { - /* "View.MemoryView":1362 + /* "View.MemoryView":1361 * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -16407,7 +16513,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ if (__pyx_v_dtype_is_object) { - /* "View.MemoryView":1363 + /* "View.MemoryView":1362 * * if dtype_is_object: * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) # <<<<<<<<<<<<<< @@ -16416,7 +16522,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1362 + /* "View.MemoryView":1361 * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -16425,7 +16531,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ } - /* "View.MemoryView":1359 + /* "View.MemoryView":1358 * * * @cname('__pyx_memoryview_refcount_copying') # <<<<<<<<<<<<<< @@ -16436,7 +16542,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i /* function exit code */ } -/* "View.MemoryView":1365 +/* "View.MemoryView":1364 * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') # <<<<<<<<<<<<<< @@ -16447,7 +16553,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - /* "View.MemoryView":1369 + /* "View.MemoryView":1368 * Py_ssize_t *strides, int ndim, * bint inc) noexcept with gil: * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< @@ -16456,7 +16562,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1365 + /* "View.MemoryView":1364 * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') # <<<<<<<<<<<<<< @@ -16468,7 +16574,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da __Pyx_PyGILState_Release(__pyx_gilstate_save); } -/* "View.MemoryView":1371 +/* "View.MemoryView":1370 * refcount_objects_in_slice(data, shape, strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice') # <<<<<<<<<<<<<< @@ -16484,7 +16590,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss Py_ssize_t __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1375 + /* "View.MemoryView":1374 * Py_ssize_t *strides, int ndim, bint inc) noexcept: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< @@ -16493,7 +16599,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ __pyx_v_stride = (__pyx_v_strides[0]); - /* "View.MemoryView":1377 + /* "View.MemoryView":1376 * cdef Py_ssize_t stride = strides[0] * * for i in range(shape[0]): # <<<<<<<<<<<<<< @@ -16505,7 +16611,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1378 + /* "View.MemoryView":1377 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -16515,7 +16621,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_t_4 = (__pyx_v_ndim == 1); if (__pyx_t_4) { - /* "View.MemoryView":1379 + /* "View.MemoryView":1378 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -16524,7 +16630,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ if (__pyx_v_inc) { - /* "View.MemoryView":1380 + /* "View.MemoryView":1379 * if ndim == 1: * if inc: * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< @@ -16533,7 +16639,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ Py_INCREF((((PyObject **)__pyx_v_data)[0])); - /* "View.MemoryView":1379 + /* "View.MemoryView":1378 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -16543,7 +16649,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss goto __pyx_L6; } - /* "View.MemoryView":1382 + /* "View.MemoryView":1381 * Py_INCREF(( data)[0]) * else: * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< @@ -16555,7 +16661,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss } __pyx_L6:; - /* "View.MemoryView":1378 + /* "View.MemoryView":1377 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -16565,7 +16671,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss goto __pyx_L5; } - /* "View.MemoryView":1384 + /* "View.MemoryView":1383 * Py_DECREF(( data)[0]) * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) # <<<<<<<<<<<<<< @@ -16577,7 +16683,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss } __pyx_L5:; - /* "View.MemoryView":1386 + /* "View.MemoryView":1385 * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) * * data += stride # <<<<<<<<<<<<<< @@ -16587,7 +16693,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } - /* "View.MemoryView":1371 + /* "View.MemoryView":1370 * refcount_objects_in_slice(data, shape, strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice') # <<<<<<<<<<<<<< @@ -16598,7 +16704,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss /* function exit code */ } -/* "View.MemoryView":1391 +/* "View.MemoryView":1390 * * * @cname('__pyx_memoryview_slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16608,7 +16714,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { - /* "View.MemoryView":1395 + /* "View.MemoryView":1394 * size_t itemsize, void *item, * bint dtype_is_object) noexcept nogil: * refcount_copying(dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< @@ -16617,7 +16723,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1396 + /* "View.MemoryView":1395 * bint dtype_is_object) noexcept nogil: * refcount_copying(dst, dtype_is_object, ndim, inc=False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) # <<<<<<<<<<<<<< @@ -16626,7 +16732,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1397 + /* "View.MemoryView":1396 * refcount_copying(dst, dtype_is_object, ndim, inc=False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) * refcount_copying(dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< @@ -16635,7 +16741,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1391 + /* "View.MemoryView":1390 * * * @cname('__pyx_memoryview_slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16646,7 +16752,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst /* function exit code */ } -/* "View.MemoryView":1400 +/* "View.MemoryView":1399 * * * @cname('__pyx_memoryview__slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16663,7 +16769,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t Py_ssize_t __pyx_t_3; Py_ssize_t __pyx_t_4; - /* "View.MemoryView":1405 + /* "View.MemoryView":1404 * size_t itemsize, void *item) noexcept nogil: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< @@ -16672,7 +16778,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_stride = (__pyx_v_strides[0]); - /* "View.MemoryView":1406 + /* "View.MemoryView":1405 * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< @@ -16681,7 +16787,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_extent = (__pyx_v_shape[0]); - /* "View.MemoryView":1408 + /* "View.MemoryView":1407 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -16691,7 +16797,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_t_1 = (__pyx_v_ndim == 1); if (__pyx_t_1) { - /* "View.MemoryView":1409 + /* "View.MemoryView":1408 * * if ndim == 1: * for i in range(extent): # <<<<<<<<<<<<<< @@ -16703,7 +16809,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1410 + /* "View.MemoryView":1409 * if ndim == 1: * for i in range(extent): * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< @@ -16712,7 +16818,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize)); - /* "View.MemoryView":1411 + /* "View.MemoryView":1410 * for i in range(extent): * memcpy(data, item, itemsize) * data += stride # <<<<<<<<<<<<<< @@ -16722,7 +16828,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } - /* "View.MemoryView":1408 + /* "View.MemoryView":1407 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -16732,7 +16838,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t goto __pyx_L3; } - /* "View.MemoryView":1413 + /* "View.MemoryView":1412 * data += stride * else: * for i in range(extent): # <<<<<<<<<<<<<< @@ -16745,7 +16851,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1414 + /* "View.MemoryView":1413 * else: * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) # <<<<<<<<<<<<<< @@ -16754,18 +16860,19 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1415 + /* "View.MemoryView":1414 * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) * data += stride # <<<<<<<<<<<<<< * + * */ __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } } __pyx_L3:; - /* "View.MemoryView":1400 + /* "View.MemoryView":1399 * * * @cname('__pyx_memoryview__slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16776,12 +16883,10 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t /* function exit code */ } -/* "(tree fragment)":4 - * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 - * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< +/* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError * cdef object __pyx_result - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') */ /* Python wrapper */ @@ -16825,46 +16930,46 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 4, __pyx_L3_error) + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 1, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 1, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 1, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 1, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_Enum", 0) < (0)) __PYX_ERR(1, 4, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_Enum", 0) < 0) __PYX_ERR(1, 1, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, i); __PYX_ERR(1, 4, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, i); __PYX_ERR(1, 1, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 1, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 1, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 1, __pyx_L3_error) } __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L3_error) - __pyx_v___pyx_state = ((PyObject*)values[2]); + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) + __pyx_v___pyx_state = values[2]; } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 4, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -16875,52 +16980,93 @@ PyObject *__pyx_args, PyObject *__pyx_kwds __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ - goto __pyx_L0; - __pyx_L1_error:; - __pyx_r = NULL; - for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { - Py_XDECREF(values[__pyx_temp]); - } - goto __pyx_L7_cleaned_up; - __pyx_L0:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } - __pyx_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { + PyObject *__pyx_v___pyx_PickleError = 0; PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - int __pyx_t_1; - PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_1 = NULL; + int __pyx_t_2; PyObject *__pyx_t_3 = NULL; size_t __pyx_t_4; - int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0); - /* "(tree fragment)":6 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum +*/ + __pyx_t_1 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[1], Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (__pyx_t_2) { + + /* "(tree fragment)":5 * cdef object __pyx_result - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') # <<<<<<<<<<<<<< + * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): + * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum + * __pyx_result = Enum.__new__(__pyx_type) +*/ + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_PickleError); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_PickleError); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_n_u_PickleError) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); + __pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_INCREF(__pyx_t_1); + __pyx_v___pyx_PickleError = __pyx_t_1; + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + + /* "(tree fragment)":6 + * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum # <<<<<<<<<<<<<< * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: */ - __pyx_t_1 = __Pyx_CheckUnpickleChecksum(__pyx_v___pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, __pyx_k_name); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 6, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __PYX_ERR(1, 6, __pyx_L1_error) - /* "(tree fragment)":7 + /* "(tree fragment)":4 + * cdef object __pyx_PickleError * cdef object __pyx_result - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') + * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum +*/ + } + + /* "(tree fragment)":7 + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum * __pyx_result = Enum.__new__(__pyx_type) # <<<<<<<<<<<<<< * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) @@ -16930,41 +17076,38 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; - __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); } - __pyx_v___pyx_result = __pyx_t_2; - __pyx_t_2 = 0; + __pyx_v___pyx_result = __pyx_t_1; + __pyx_t_1 = 0; /* "(tree fragment)":8 - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result */ - __pyx_t_5 = (__pyx_v___pyx_state != ((PyObject*)Py_None)); - if (__pyx_t_5) { + __pyx_t_2 = (__pyx_v___pyx_state != Py_None); + if (__pyx_t_2) { /* "(tree fragment)":9 * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); - __PYX_ERR(1, 9, __pyx_L1_error) - } - __pyx_t_2 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) + __pyx_t_1 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "(tree fragment)":8 - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) @@ -16976,7 +17119,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] */ __Pyx_XDECREF(__pyx_r); @@ -16984,21 +17127,20 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE __pyx_r = __pyx_v___pyx_result; goto __pyx_L0; - /* "(tree fragment)":4 - * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 - * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + /* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError * cdef object __pyx_result - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') */ /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; + __Pyx_XDECREF(__pyx_v___pyx_PickleError); __Pyx_XDECREF(__pyx_v___pyx_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -17008,9 +17150,9 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] - * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): */ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { @@ -17018,6 +17160,12 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; + Py_ssize_t __pyx_t_3; + int __pyx_t_4; + PyObject *__pyx_t_5 = NULL; + PyObject *__pyx_t_6 = NULL; + PyObject *__pyx_t_7 = NULL; + size_t __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -17025,11 +17173,16 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ /* "(tree fragment)":12 * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] # <<<<<<<<<<<<<< - * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) */ - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 12, __pyx_L1_error) + } + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v___pyx_result->name); @@ -17038,18 +17191,68 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ __pyx_t_1 = 0; /* "(tree fragment)":13 - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): * __pyx_result.name = __pyx_state[0] - * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) # <<<<<<<<<<<<<< + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) */ - __pyx_t_2 = __Pyx_UpdateUnpickledDict(((PyObject *)__pyx_v___pyx_result), __pyx_v___pyx_state, 1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); + __PYX_ERR(1, 13, __pyx_L1_error) + } + __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_4 = (__pyx_t_3 > 1); + if (__pyx_t_4) { + } else { + __pyx_t_2 = __pyx_t_4; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) + __pyx_t_2 = __pyx_t_4; + __pyx_L4_bool_binop_done:; + if (__pyx_t_2) { + + /* "(tree fragment)":14 + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< +*/ + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __pyx_t_6; + __Pyx_INCREF(__pyx_t_5); + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); + __PYX_ERR(1, 14, __pyx_L1_error) + } + __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_7); + __pyx_t_8 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7}; + __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_update, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + } + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "(tree fragment)":13 + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * __pyx_result.name = __pyx_state[0] + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< + * __pyx_result.__dict__.update(__pyx_state[1]) +*/ + } /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] - * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) + * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): */ /* function exit code */ @@ -17057,6 +17260,9 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -17065,7 +17271,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":242 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17076,7 +17282,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":244 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":287 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -17086,7 +17292,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D __pyx_r = PyDataType_ELSIZE(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":242 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17099,7 +17305,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":246 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17110,7 +17316,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":248 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":291 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -17120,7 +17326,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":246 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17133,7 +17339,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":252 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17147,7 +17353,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("fields", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":254 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -17160,7 +17366,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc __pyx_r = ((PyObject *)__pyx_t_1); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":252 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17175,7 +17381,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":256 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17189,7 +17395,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("names", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":258 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":301 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -17202,7 +17408,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr __pyx_r = ((PyObject*)__pyx_t_1); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":256 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17217,7 +17423,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":263 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":306 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17228,7 +17434,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":265 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":308 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -17238,7 +17444,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra __pyx_r = PyDataType_SUBARRAY(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":263 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":306 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17251,7 +17457,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17262,7 +17468,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":270 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":313 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -17272,7 +17478,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr __pyx_r = PyDataType_FLAGS(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":267 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17285,7 +17491,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":279 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17296,7 +17502,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":282 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":325 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -17306,7 +17512,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":279 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17319,7 +17525,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":284 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17330,7 +17536,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":287 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":330 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -17340,7 +17546,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":284 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17353,7 +17559,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17364,7 +17570,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":292 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -17374,7 +17580,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17387,7 +17593,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":294 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":337 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17398,7 +17604,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -17408,7 +17614,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":294 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":337 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17421,7 +17627,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":342 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17432,7 +17638,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":302 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -17442,7 +17648,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":342 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17455,7 +17661,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":304 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17466,7 +17672,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":308 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -17476,7 +17682,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":304 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17489,7 +17695,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":365 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17500,7 +17706,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":326 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -17510,7 +17716,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject __pyx_r = PyArray_BASE(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":365 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17523,7 +17729,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":371 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17537,7 +17743,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("descr", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":375 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -17550,7 +17756,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray __pyx_r = ((PyArray_Descr *)__pyx_t_1); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":328 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":371 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17565,7 +17771,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":334 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":377 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17576,7 +17782,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":338 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -17586,7 +17792,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx __pyx_r = PyArray_NDIM(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":334 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":377 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17599,7 +17805,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":383 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17610,7 +17816,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":346 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":389 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -17620,7 +17826,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec __pyx_r = PyArray_DIMS(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":383 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17633,7 +17839,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":391 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17644,7 +17850,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":353 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":396 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -17654,7 +17860,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO __pyx_r = PyArray_STRIDES(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":348 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":391 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17667,7 +17873,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":355 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":398 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17678,7 +17884,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":359 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":402 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -17688,7 +17894,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * __pyx_r = PyArray_SIZE(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":355 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":398 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17701,7 +17907,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":404 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17712,7 +17918,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":368 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":411 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -17722,7 +17928,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p __pyx_r = PyArray_BYTES(__pyx_v_self); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":361 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":404 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17735,7 +17941,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17752,7 +17958,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":808 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17760,13 +17966,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 777, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 808, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":776 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17785,7 +17991,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17802,7 +18008,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -17810,13 +18016,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 780, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 811, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17835,7 +18041,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17852,7 +18058,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":814 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -17860,13 +18066,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 783, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":782 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17885,7 +18091,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":816 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17902,7 +18108,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":817 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -17910,13 +18116,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 786, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":816 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17935,7 +18141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":788 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":819 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17952,7 +18158,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":820 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -17960,13 +18166,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 789, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":788 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":819 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17985,7 +18191,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":822 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18000,7 +18206,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":823 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18010,7 +18216,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); if (__pyx_t_1) { - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":824 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -18023,7 +18229,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_t_2); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":823 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18032,7 +18238,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":826 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -18046,7 +18252,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":791 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":822 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18061,7 +18267,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":994 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18075,7 +18281,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -18084,16 +18290,16 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< * * cdef inline object get_array_base(ndarray arr): */ - __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 996, __pyx_L1_error) + __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1012, __pyx_L1_error) - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":994 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18108,7 +18314,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_L0:; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":998 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18123,7 +18329,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -18132,7 +18338,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18142,7 +18348,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = (__pyx_v_base == NULL); if (__pyx_t_1) { - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -18153,7 +18359,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18162,7 +18368,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -18174,7 +18380,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":998 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18189,7 +18395,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1006 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18209,13 +18415,14 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - size_t __pyx_t_10; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18231,16 +18438,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1024 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy._core.multiarray failed to import") */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1008, __pyx_L3_error) + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1024, __pyx_L3_error) - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18254,7 +18461,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -18264,12 +18471,12 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1009, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1025, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -18277,21 +18484,24 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { * cdef inline int import_umath() except -1: */ __pyx_t_9 = NULL; - __pyx_t_10 = 1; + __Pyx_INCREF(__pyx_builtin_ImportError); + __pyx_t_10 = __pyx_builtin_ImportError; + __pyx_t_11 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_multiarray_failed_to}; - __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1010, __pyx_L5_except_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1026, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); } __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1010, __pyx_L5_except_error) + __PYX_ERR(2, 1026, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18307,7 +18517,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1006 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18324,6 +18534,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -18331,7 +18542,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18351,13 +18562,14 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - size_t __pyx_t_10; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18373,16 +18585,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1030 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy._core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1014, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1030, __pyx_L3_error) - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18396,7 +18608,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1031 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18406,12 +18618,12 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1015, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1031, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1032 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18419,21 +18631,24 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { * cdef inline int import_ufunc() except -1: */ __pyx_t_9 = NULL; - __pyx_t_10 = 1; + __Pyx_INCREF(__pyx_builtin_ImportError); + __pyx_t_10 = __pyx_builtin_ImportError; + __pyx_t_11 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo}; - __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1016, __pyx_L5_except_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1032, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); } __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1016, __pyx_L5_except_error) + __PYX_ERR(2, 1032, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18449,7 +18664,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18466,6 +18681,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -18473,7 +18689,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18493,13 +18709,14 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - size_t __pyx_t_10; + PyObject *__pyx_t_10 = NULL; + size_t __pyx_t_11; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18515,16 +18732,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1036 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy._core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1020, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error) - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18538,7 +18755,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1037 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18548,12 +18765,12 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1021, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1037, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18561,21 +18778,24 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { * */ __pyx_t_9 = NULL; - __pyx_t_10 = 1; + __Pyx_INCREF(__pyx_builtin_ImportError); + __pyx_t_10 = __pyx_builtin_ImportError; + __pyx_t_11 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo}; - __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1022, __pyx_L5_except_error) + __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; + if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1038, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); } __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1022, __pyx_L5_except_error) + __PYX_ERR(2, 1038, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18591,7 +18811,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18608,6 +18828,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); + __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -18615,7 +18836,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18626,7 +18847,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1037 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -18636,7 +18857,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18649,7 +18870,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18660,7 +18881,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1052 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1068 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -18670,7 +18891,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1040 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18683,7 +18904,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18694,7 +18915,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1062 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18704,7 +18925,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1055 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18717,7 +18938,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18728,7 +18949,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1069 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18738,7 +18959,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1065 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18751,7 +18972,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 +/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1088 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18762,7 +18983,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1076 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -18772,7 +18993,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/pip-build-env-a2fe1566/overlay/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1072 + /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1088 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18859,7 +19080,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "inpoly2_fast", 0) < (0)) __PYX_ERR(0, 16, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "inpoly2_fast", 0) < 0) __PYX_ERR(0, 16, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 4; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("inpoly2_fast", 1, 4, 4, i); __PYX_ERR(0, 16, __pyx_L3_error) } } @@ -19091,8 +19312,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, ((PyObject *)__pyx_v_vert)}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_7, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 43, __pyx_L1_error) - __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_7, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 43, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19181,8 +19402,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, ((PyObject *)__pyx_v_node)}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 45, __pyx_L1_error) - __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 45, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19271,8 +19492,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, ((PyObject *)__pyx_v_edge)}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 47, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 47, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19364,8 +19585,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_5}; __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 52, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_6, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 52, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -19422,8 +19643,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_t_6}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 53, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 53, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_13, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -19516,8 +19737,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_13, __pyx_t_5}; __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 64, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_6, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 64, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -19574,8 +19795,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_6}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 65, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 65, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -20250,8 +20471,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)(&PyBool_Type))}; - __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject*)&PyBool_Type)}; + __pyx_t_7 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); @@ -20269,8 +20490,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)(&PyBool_Type))}; - __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject*)&PyBool_Type)}; + __pyx_t_7 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); @@ -20363,8 +20584,17 @@ static struct __pyx_vtabstruct_array __pyx_vtable_array; static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_array_obj *p; PyObject *o; - o = __Pyx_AllocateExtensionType(t, 0); + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } if (unlikely(!o)) return 0; + #endif p = ((struct __pyx_array_obj *)o); p->__pyx_vtab = __pyx_vtabptr_array; p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None); @@ -20379,7 +20609,7 @@ static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { static void __pyx_tp_dealloc_array(PyObject *o) { struct __pyx_array_obj *p = (struct __pyx_array_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_array) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -20395,18 +20625,14 @@ static void __pyx_tp_dealloc_array(PyObject *o) { } Py_CLEAR(p->mode); Py_CLEAR(p->_format); - PyTypeObject *tp = Py_TYPE(o); #if CYTHON_USE_TYPE_SLOTS - (*tp->tp_free)(o); + (*Py_TYPE(o)->tp_free)(o); #else { - freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif - #if CYTHON_USE_TYPE_SPECS - Py_DECREF(tp); - #endif } static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) { @@ -20522,7 +20748,12 @@ static PyTypeObject __pyx_type___pyx_array = { sizeof(struct __pyx_array_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_array, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -20571,7 +20802,7 @@ static PyTypeObject __pyx_type___pyx_array = { #else NULL, /*tp_finalize*/ #endif - #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -20592,8 +20823,17 @@ static PyTypeObject __pyx_type___pyx_array = { static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_MemviewEnum_obj *p; PyObject *o; - o = __Pyx_AllocateExtensionType(t, 0); + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } if (unlikely(!o)) return 0; + #endif p = ((struct __pyx_MemviewEnum_obj *)o); p->name = Py_None; Py_INCREF(Py_None); return o; @@ -20602,7 +20842,7 @@ static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, C static void __pyx_tp_dealloc_Enum(PyObject *o) { struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_Enum) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -20610,18 +20850,14 @@ static void __pyx_tp_dealloc_Enum(PyObject *o) { #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->name); - PyTypeObject *tp = Py_TYPE(o); #if CYTHON_USE_TYPE_SLOTS - (*tp->tp_free)(o); + (*Py_TYPE(o)->tp_free)(o); #else { - freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif - #if CYTHON_USE_TYPE_SPECS - Py_DECREF(tp); - #endif } static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) { @@ -20677,7 +20913,12 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_Enum, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -20726,7 +20967,7 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { #else NULL, /*tp_finalize*/ #endif - #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -20748,12 +20989,22 @@ static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview; static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_memoryview_obj *p; PyObject *o; - o = __Pyx_AllocateExtensionType(t, 0); + #if CYTHON_COMPILING_IN_LIMITED_API + allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); + o = alloc_func(t, 0); + #else + if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + o = (*t->tp_alloc)(t, 0); + } else { + o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } if (unlikely(!o)) return 0; + #endif p = ((struct __pyx_memoryview_obj *)o); p->__pyx_vtab = __pyx_vtabptr_memoryview; p->obj = Py_None; Py_INCREF(Py_None); p->_size = Py_None; Py_INCREF(Py_None); + p->_array_interface = Py_None; Py_INCREF(Py_None); p->view.obj = NULL; if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad; return o; @@ -20765,7 +21016,7 @@ static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject static void __pyx_tp_dealloc_memoryview(PyObject *o) { struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_memoryview) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -20782,18 +21033,15 @@ static void __pyx_tp_dealloc_memoryview(PyObject *o) { } Py_CLEAR(p->obj); Py_CLEAR(p->_size); - PyTypeObject *tp = Py_TYPE(o); + Py_CLEAR(p->_array_interface); #if CYTHON_USE_TYPE_SLOTS - (*tp->tp_free)(o); + (*Py_TYPE(o)->tp_free)(o); #else { - freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); + freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); if (tp_free) tp_free(o); } #endif - #if CYTHON_USE_TYPE_SPECS - Py_DECREF(tp); - #endif } static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { @@ -20809,6 +21057,9 @@ static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { if (p->_size) { e = (*v)(p->_size, a); if (e) return e; } + if (p->_array_interface) { + e = (*v)(p->_array_interface, a); if (e) return e; + } if (p->view.obj) { e = (*v)(p->view.obj, a); if (e) return e; } @@ -20824,6 +21075,9 @@ static int __pyx_tp_clear_memoryview(PyObject *o) { tmp = ((PyObject*)p->_size); p->_size = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); + tmp = ((PyObject*)p->_array_interface); + p->_array_interface = Py_None; Py_INCREF(Py_None); + Py_XDECREF(tmp); Py_CLEAR(p->view.obj); return 0; } @@ -20978,7 +21232,12 @@ static PyTypeObject __pyx_type___pyx_memoryview = { sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -21027,7 +21286,7 @@ static PyTypeObject __pyx_type___pyx_memoryview = { #else NULL, /*tp_finalize*/ #endif - #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -21060,7 +21319,7 @@ static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyO static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) { struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc__memoryviewslice) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -21131,7 +21390,12 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ + #if PY_VERSION_HEX < 0x030800b4 + 0, /*tp_print*/ + #endif + #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ + #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -21188,7 +21452,7 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { #else NULL, /*tp_finalize*/ #endif - #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 + #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -21282,41 +21546,35 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { #else #warning "The buffer protocol is not supported in the Limited C-API < 3.11." #endif - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_array_spec, __pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_array_spec, __pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) #else __pyx_mstate->__pyx_array_type = &__pyx_type___pyx_array; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_array_type); - #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_array_type, __pyx_vtabptr_array) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_array_type, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS __pyx_mstate->__pyx_MemviewEnum_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_MemviewEnum_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_MemviewEnum_type)) __PYX_ERR(1, 299, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_MemviewEnum_spec, __pyx_mstate->__pyx_MemviewEnum_type) < (0)) __PYX_ERR(1, 299, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_MemviewEnum_spec, __pyx_mstate->__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 299, __pyx_L1_error) #else __pyx_mstate->__pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_MemviewEnum_type) < (0)) __PYX_ERR(1, 299, __pyx_L1_error) - #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_MemviewEnum_type); + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 299, __pyx_L1_error) #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_MemviewEnum_type->tp_dictoffset && __pyx_mstate->__pyx_MemviewEnum_type->tp_getattro == PyObject_GenericGetAttr)) { __pyx_mstate->__pyx_MemviewEnum_type->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_MemviewEnum_type) < (0)) __PYX_ERR(1, 299, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 299, __pyx_L1_error) __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer; __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice; @@ -21340,38 +21598,35 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { #else #warning "The buffer protocol is not supported in the Limited C-API < 3.11." #endif - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryview_spec, __pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryview_spec, __pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) #else __pyx_mstate->__pyx_memoryview_type = &__pyx_type___pyx_memoryview; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) - #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_memoryview_type); + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_memoryview_type->tp_dictoffset && __pyx_mstate->__pyx_memoryview_type->tp_getattro == PyObject_GenericGetAttr)) { __pyx_mstate->__pyx_memoryview_type->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryview_type, __pyx_vtabptr_memoryview) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryview_type, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; __pyx_vtable__memoryviewslice.__pyx_base._get_base = (PyObject *(*)(struct __pyx_memoryview_obj *))__pyx_memoryviewslice__get_base; #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_memoryview_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 951, __pyx_L1_error) + __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_memoryview_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 950, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_mstate->__pyx_memoryviewslice_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_memoryviewslice_spec, __pyx_t_1); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_mstate->__pyx_memoryviewslice_type)) __PYX_ERR(1, 951, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryviewslice_spec, __pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) + if (unlikely(!__pyx_mstate->__pyx_memoryviewslice_type)) __PYX_ERR(1, 950, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryviewslice_spec, __pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) #else __pyx_mstate->__pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; #endif @@ -21379,19 +21634,16 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { __pyx_mstate_global->__pyx_memoryviewslice_type->tp_base = __pyx_mstate_global->__pyx_memoryview_type; #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) - #endif - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_memoryviewslice_type); + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_memoryviewslice_type->tp_dictoffset && __pyx_mstate->__pyx_memoryviewslice_type->tp_getattro == PyObject_GenericGetAttr)) { __pyx_mstate->__pyx_memoryviewslice_type->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryviewslice_type, __pyx_vtabptr__memoryviewslice) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryviewslice_type, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 950, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -21411,153 +21663,153 @@ static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) { /*--- Type import code ---*/ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_2_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_1_4(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyTypeObject), + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyTypeObject), #elif CYTHON_COMPILING_IN_LIMITED_API 0, 0, #else - sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyHeapTypeObject), + sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyHeapTypeObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 228, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 271, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_mstate->__pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "dtype", + __pyx_mstate->__pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "dtype", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArray_Descr), + sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArray_Descr), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArray_Descr), + sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArray_Descr), #else - sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArray_Descr), + sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArray_Descr), #endif - __Pyx_ImportType_CheckSize_Ignore_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 228, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "flatiter", + __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 271, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "flatiter", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayIterObject), + sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayIterObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayIterObject), + sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayIterObject), #else - sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayIterObject), + sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayIterObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 273, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "broadcast", + __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 316, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "broadcast", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayMultiIterObject), + sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayMultiIterObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayMultiIterObject), + sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayMultiIterObject), #else - sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayMultiIterObject), + sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayMultiIterObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 277, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "ndarray", + __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 320, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "ndarray", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayObject), + sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayObject), + sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayObject), #else - sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyArrayObject), + sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 316, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_generic = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "generic", + __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 359, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_generic = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "generic", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_generic) __PYX_ERR(2, 825, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_number = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "number", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_generic) __PYX_ERR(2, 848, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_number = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "number", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_number) __PYX_ERR(2, 827, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_integer = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "integer", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_number) __PYX_ERR(2, 850, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_integer = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "integer", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_integer) __PYX_ERR(2, 829, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "signedinteger", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_integer) __PYX_ERR(2, 852, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "signedinteger", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 831, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "unsignedinteger", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 854, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "unsignedinteger", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 833, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "inexact", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 856, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "inexact", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 835, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_floating = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "floating", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 858, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_floating = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "floating", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_floating) __PYX_ERR(2, 837, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "complexfloating", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_floating) __PYX_ERR(2, 860, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "complexfloating", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 839, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "flexible", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 862, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "flexible", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 841, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_character = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "character", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 864, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_character = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "character", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_character) __PYX_ERR(2, 843, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_2_2(__pyx_t_1, "numpy", "ufunc", + __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_character) __PYX_ERR(2, 866, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "ufunc", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyUFuncObject), + sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyUFuncObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyUFuncObject), + sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyUFuncObject), #else - sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_2(PyUFuncObject), + sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyUFuncObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_2_2); if (!__pyx_mstate->__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 907, __pyx_L1_error) + __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 930, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; @@ -21654,8 +21906,7 @@ __Pyx_PyMODINIT_FUNC PyInit_point_in_polygon_(void) return PyModuleDef_Init(&__pyx_moduledef); } /* ModuleCreationPEP489 */ -#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ - || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) +#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { { PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think @@ -21685,15 +21936,12 @@ static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { #if !CYTHON_USE_MODULE_STATE static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { static PY_INT64_T main_interpreter_id = -1; -#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 - PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); -#elif CYTHON_COMPILING_IN_GRAAL +#if CYTHON_COMPILING_IN_GRAAL PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); -#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ - || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) - PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId(); -#elif CYTHON_COMPILING_IN_LIMITED_API +#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x03090000 PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get()); +#elif CYTHON_COMPILING_IN_LIMITED_API + PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId(); #else PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); #endif @@ -21768,9 +22016,10 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_point_in_polygon_(PyObject *__pyx_ PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - size_t __pyx_t_6; - static PyThread_type_lock __pyx_t_7[8]; - int __pyx_t_8; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + static PyThread_type_lock __pyx_t_8[8]; + int __pyx_t_9; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -21813,28 +22062,48 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_point_in_polygon_(PyObject *__pyx_ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) /* ImportRefnannyAPI */ #if CYTHON_REFNANNY - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); - if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); - } - #endif - +__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); +if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); +} +#endif + __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); - __Pyx_init_runtime_version(); - if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #ifdef __Pxy_PyFrame_Initialize_Offsets + __Pxy_PyFrame_Initialize_Offsets(); + #endif __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) - /*--- Library function declarations ---*/ /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) stringtab_initialized = 1; - if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #if 0 || defined(__Pyx_CyFunction_USED) || defined(__Pyx_FusedFunction_USED) || defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED) || defined(__Pyx_AsyncGen_USED) + if (__pyx_CommonTypesMetaclass_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_CyFunction_USED + if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_FusedFunction_USED + if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Coroutine_USED + if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_Generator_USED + if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + #ifdef __Pyx_AsyncGen_USED + if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + #endif + /*--- Library function declarations ---*/ if (__pyx_module_is_main_oceanmesh__geometry__point_in_polygon_) { - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) @@ -21843,10 +22112,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); } } /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitCachedBuiltins(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitCachedConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_CreateCodeObjects(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(__pyx_mstate); (void)__Pyx_modinit_variable_export_code(__pyx_mstate); @@ -21881,20 +22150,23 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * */ __pyx_t_5 = NULL; - __pyx_t_6 = 1; + __Pyx_INCREF(__pyx_builtin___import__); + __pyx_t_6 = __pyx_builtin___import__; + __pyx_t_7 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_collections_abc}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin___import__, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) __Pyx_GOTREF(__pyx_t_4); } - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_abc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 101, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_5); + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_abc); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 101, __pyx_L2_error) + __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XGOTREF(__pyx_collections_abc_Sequence); __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -21915,6 +22187,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L2_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; /* "View.MemoryView":102 * try: @@ -21924,7 +22197,11 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * __pyx_collections_abc_Sequence = None */ /*except:*/ { - __Pyx_ErrRestore(0,0,0); + __Pyx_AddTraceback("View.MemoryView", __pyx_clineno, __pyx_lineno, __pyx_filename); + if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 102, __pyx_L4_except_error) + __Pyx_XGOTREF(__pyx_t_4); + __Pyx_XGOTREF(__pyx_t_6); + __Pyx_XGOTREF(__pyx_t_5); /* "View.MemoryView":104 * except: @@ -21937,8 +22214,25 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __Pyx_XGOTREF(__pyx_collections_abc_Sequence); __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, Py_None); __Pyx_GIVEREF(Py_None); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L3_exception_handled; } + + /* "View.MemoryView":100 + * + * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" + * try: # <<<<<<<<<<<<<< + * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence + * except: +*/ + __pyx_L4_except_error:; + __Pyx_XGIVEREF(__pyx_t_1); + __Pyx_XGIVEREF(__pyx_t_2); + __Pyx_XGIVEREF(__pyx_t_3); + __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); + goto __pyx_L1_error; __pyx_L3_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); @@ -21970,10 +22264,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * index = __pyx_collections_abc_Sequence.index * except: */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 240, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_4) < (0)) __PYX_ERR(1, 240, __pyx_L10_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 240, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_5) < 0) __PYX_ERR(1, 240, __pyx_L10_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "View.MemoryView":241 * try: @@ -21982,10 +22276,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * except: * pass */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 241, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_4) < (0)) __PYX_ERR(1, 241, __pyx_L10_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 241, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_5) < 0) __PYX_ERR(1, 241, __pyx_L10_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "View.MemoryView":239 * @@ -22002,6 +22296,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L10_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; /* "View.MemoryView":242 * count = __pyx_collections_abc_Sequence.count @@ -22029,19 +22324,22 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cdef strided = Enum("") # default * cdef indirect = Enum("") */ - __pyx_t_5 = NULL; - __pyx_t_6 = 1; + __pyx_t_6 = NULL; + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_7 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_strided_and_direct_or_indirect}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 307, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_strided_and_direct_or_indirect}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 307, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_5); } __Pyx_XGOTREF(generic); - __Pyx_DECREF_SET(generic, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF((PyObject *)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(generic, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF((PyObject *)__pyx_t_5); + __pyx_t_5 = 0; /* "View.MemoryView":308 * @@ -22050,19 +22348,22 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cdef indirect = Enum("") * */ - __pyx_t_5 = NULL; - __pyx_t_6 = 1; + __pyx_t_4 = NULL; + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_6 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_7 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_strided_and_direct}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 308, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_strided_and_direct}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 308, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_5); } __Pyx_XGOTREF(strided); - __Pyx_DECREF_SET(strided, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF((PyObject *)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(strided, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF((PyObject *)__pyx_t_5); + __pyx_t_5 = 0; /* "View.MemoryView":309 * cdef generic = Enum("") @@ -22071,19 +22372,22 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * * */ - __pyx_t_5 = NULL; - __pyx_t_6 = 1; + __pyx_t_6 = NULL; + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_7 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_strided_and_indirect}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 309, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_strided_and_indirect}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 309, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_5); } __Pyx_XGOTREF(indirect); - __Pyx_DECREF_SET(indirect, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF((PyObject *)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(indirect, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF((PyObject *)__pyx_t_5); + __pyx_t_5 = 0; /* "View.MemoryView":312 * @@ -22092,19 +22396,22 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cdef indirect_contiguous = Enum("") * */ - __pyx_t_5 = NULL; - __pyx_t_6 = 1; + __pyx_t_4 = NULL; + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_6 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_7 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_contiguous_and_direct}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 312, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_contiguous_and_direct}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 312, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_5); } __Pyx_XGOTREF(contiguous); - __Pyx_DECREF_SET(contiguous, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF((PyObject *)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(contiguous, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF((PyObject *)__pyx_t_5); + __pyx_t_5 = 0; /* "View.MemoryView":313 * @@ -22113,19 +22420,22 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * * */ - __pyx_t_5 = NULL; - __pyx_t_6 = 1; + __pyx_t_6 = NULL; + __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); + __pyx_t_7 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_contiguous_and_indirect}; - __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 313, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_contiguous_and_indirect}; + __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_5); } __Pyx_XGOTREF(indirect_contiguous); - __Pyx_DECREF_SET(indirect_contiguous, ((PyObject *)__pyx_t_4)); - __Pyx_GIVEREF((PyObject *)__pyx_t_4); - __pyx_t_4 = 0; + __Pyx_DECREF_SET(indirect_contiguous, ((PyObject *)__pyx_t_5)); + __Pyx_GIVEREF((PyObject *)__pyx_t_5); + __pyx_t_5 = 0; /* "View.MemoryView":321 * @@ -22143,17 +22453,17 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * PyThread_allocate_lock(), * PyThread_allocate_lock(), */ - __pyx_t_7[0] = PyThread_allocate_lock(); - __pyx_t_7[1] = PyThread_allocate_lock(); - __pyx_t_7[2] = PyThread_allocate_lock(); - __pyx_t_7[3] = PyThread_allocate_lock(); - __pyx_t_7[4] = PyThread_allocate_lock(); - __pyx_t_7[5] = PyThread_allocate_lock(); - __pyx_t_7[6] = PyThread_allocate_lock(); - __pyx_t_7[7] = PyThread_allocate_lock(); - memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_7, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); + __pyx_t_8[0] = PyThread_allocate_lock(); + __pyx_t_8[1] = PyThread_allocate_lock(); + __pyx_t_8[2] = PyThread_allocate_lock(); + __pyx_t_8[3] = PyThread_allocate_lock(); + __pyx_t_8[4] = PyThread_allocate_lock(); + __pyx_t_8[5] = PyThread_allocate_lock(); + __pyx_t_8[6] = PyThread_allocate_lock(); + __pyx_t_8[7] = PyThread_allocate_lock(); + memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_8, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); - /* "View.MemoryView":983 + /* "View.MemoryView":982 * * * try: # <<<<<<<<<<<<<< @@ -22169,31 +22479,31 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "View.MemoryView":984 + /* "View.MemoryView":983 * * try: * count = __pyx_collections_abc_Sequence.count # <<<<<<<<<<<<<< * index = __pyx_collections_abc_Sequence.index * except: */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 984, __pyx_L18_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_4) < (0)) __PYX_ERR(1, 984, __pyx_L18_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 983, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_5) < 0) __PYX_ERR(1, 983, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":985 + /* "View.MemoryView":984 * try: * count = __pyx_collections_abc_Sequence.count * index = __pyx_collections_abc_Sequence.index # <<<<<<<<<<<<<< * except: * pass */ - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 985, __pyx_L18_error) - __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_4) < (0)) __PYX_ERR(1, 985, __pyx_L18_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 984, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_5); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_5) < 0) __PYX_ERR(1, 984, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":983 + /* "View.MemoryView":982 * * * try: # <<<<<<<<<<<<<< @@ -22208,8 +22518,9 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L18_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":986 + /* "View.MemoryView":985 * count = __pyx_collections_abc_Sequence.count * index = __pyx_collections_abc_Sequence.index * except: # <<<<<<<<<<<<<< @@ -22228,7 +22539,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L23_try_end:; } - /* "View.MemoryView":989 + /* "View.MemoryView":988 * pass * * try: # <<<<<<<<<<<<<< @@ -22244,55 +22555,55 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __Pyx_XGOTREF(__pyx_t_1); /*try:*/ { - /* "View.MemoryView":990 + /* "View.MemoryView":989 * * try: * if __pyx_collections_abc_Sequence: # <<<<<<<<<<<<<< * * */ - __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_collections_abc_Sequence); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 990, __pyx_L26_error) - if (__pyx_t_8) { + __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_collections_abc_Sequence); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 989, __pyx_L26_error) + if (__pyx_t_9) { - /* "View.MemoryView":994 + /* "View.MemoryView":993 * * * __pyx_collections_abc_Sequence.register(_memoryviewslice) # <<<<<<<<<<<<<< * __pyx_collections_abc_Sequence.register(array) * except: */ - __pyx_t_5 = __pyx_collections_abc_Sequence; - __Pyx_INCREF(__pyx_t_5); - __pyx_t_6 = 0; + __pyx_t_4 = __pyx_collections_abc_Sequence; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_7 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_mstate_global->__pyx_memoryviewslice_type)}; - __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 994, __pyx_L26_error) - __Pyx_GOTREF(__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_memoryviewslice_type)}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 993, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_5); } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":995 + /* "View.MemoryView":994 * * __pyx_collections_abc_Sequence.register(_memoryviewslice) * __pyx_collections_abc_Sequence.register(array) # <<<<<<<<<<<<<< * except: * pass # ignore failure, it's a minor issue */ - __pyx_t_5 = __pyx_collections_abc_Sequence; - __Pyx_INCREF(__pyx_t_5); - __pyx_t_6 = 0; + __pyx_t_4 = __pyx_collections_abc_Sequence; + __Pyx_INCREF(__pyx_t_4); + __pyx_t_7 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_mstate_global->__pyx_array_type)}; - __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 995, __pyx_L26_error) - __Pyx_GOTREF(__pyx_t_4); + PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_array_type)}; + __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 994, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_5); } - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":990 + /* "View.MemoryView":989 * * try: * if __pyx_collections_abc_Sequence: # <<<<<<<<<<<<<< @@ -22301,7 +22612,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); */ } - /* "View.MemoryView":989 + /* "View.MemoryView":988 * pass * * try: # <<<<<<<<<<<<<< @@ -22316,8 +22627,9 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L26_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":996 + /* "View.MemoryView":995 * __pyx_collections_abc_Sequence.register(_memoryviewslice) * __pyx_collections_abc_Sequence.register(array) * except: # <<<<<<<<<<<<<< @@ -22336,17 +22648,15 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L31_try_end:; } - /* "(tree fragment)":4 - * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 - * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< + /* "(tree fragment)":1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< + * cdef object __pyx_PickleError * cdef object __pyx_result - * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') */ - __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_mstate_global->__pyx_n_u_View_MemoryView); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_mstate_global->__pyx_n_u_View_MemoryView); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum, __pyx_t_5) < 0) __PYX_ERR(1, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "oceanmesh/geometry/point_in_polygon_.pyx":7 * # cython: cdivision=True @@ -22355,11 +22665,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cimport numpy as np * */ - __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) - __pyx_t_4 = __pyx_t_1; - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_np, __pyx_t_4) < (0)) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_numpy, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_np, __pyx_t_5) < 0) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "oceanmesh/geometry/point_in_polygon_.pyx":16 * @@ -22368,23 +22677,20 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * np.ndarray[DTYPE_t, ndim=2] node, * np.ndarray[ITYPE_t, ndim=2] edge, */ - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9oceanmesh_8geometry_17point_in_polygon__1inpoly2_fast, 0, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, NULL, __pyx_mstate_global->__pyx_n_u_oceanmesh_geometry_point_in_poly, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 - PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); - #endif - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, __pyx_t_4) < (0)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_9oceanmesh_8geometry_17point_in_polygon__1inpoly2_fast, 0, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, NULL, __pyx_mstate_global->__pyx_n_u_oceanmesh_geometry_point_in_poly, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, __pyx_t_5) < 0) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "oceanmesh/geometry/point_in_polygon_.pyx":1 * # cython: language_level=3 # <<<<<<<<<<<<<< * # cython: boundscheck=False * # cython: wraparound=False */ - __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_4) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /*--- Wrapped vars code ---*/ @@ -22392,6 +22698,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); + __Pyx_XDECREF(__pyx_t_6); if (__pyx_m) { if (__pyx_mstate->__pyx_d && stringtab_initialized) { __Pyx_AddTraceback("init oceanmesh.geometry.point_in_polygon_", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -22419,22 +22726,223 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); #endif } /* #### Code section: pystring_table ### */ + +typedef struct { + const char *s; +#if 179 <= 65535 + const unsigned short n; +#elif 179 / 2 < INT_MAX + const unsigned int n; +#elif 179 / 2 < LONG_MAX + const unsigned long n; +#else + const Py_ssize_t n; +#endif +#if 1 <= 31 + const unsigned int encoding : 5; +#elif 1 <= 255 + const unsigned char encoding; +#elif 1 <= 65535 + const unsigned short encoding; +#else + const Py_ssize_t encoding; +#endif + const unsigned int is_unicode : 1; + const unsigned int intern : 1; +} __Pyx_StringTabEntry; +static const char * const __pyx_string_tab_encodings[] = { 0 }; +static const __Pyx_StringTabEntry __pyx_string_tab[] = { + {__pyx_k_, sizeof(__pyx_k_), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ */ + {__pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ASCII */ + {__pyx_k_All_dimensions_preceding_dimensi, sizeof(__pyx_k_All_dimensions_preceding_dimensi), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_All_dimensions_preceding_dimensi */ + {__pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_AssertionError */ + {__pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Buffer_view_does_not_expose_stri */ + {__pyx_k_C_CONTIGUOUS, sizeof(__pyx_k_C_CONTIGUOUS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_C_CONTIGUOUS */ + {__pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Can_only_create_a_buffer_that_is */ + {__pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_assign_to_read_only_memor */ + {__pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_create_writable_memory_vi */ + {__pyx_k_Cannot_index_with_type, sizeof(__pyx_k_Cannot_index_with_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_index_with_type */ + {__pyx_k_Cannot_transpose_memoryview_with, sizeof(__pyx_k_Cannot_transpose_memoryview_with), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_transpose_memoryview_with */ + {__pyx_k_Dimension_d_is_not_direct, sizeof(__pyx_k_Dimension_d_is_not_direct), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Dimension_d_is_not_direct */ + {__pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Ellipsis */ + {__pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Empty_shape_tuple_for_cython_arr */ + {__pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ImportError */ + {__pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Incompatible_checksums_0x_x_vs_0 */ + {__pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_IndexError */ + {__pyx_k_Index_out_of_bounds_axis_d, sizeof(__pyx_k_Index_out_of_bounds_axis_d), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Index_out_of_bounds_axis_d */ + {__pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Indirect_dimensions_not_supporte */ + {__pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Invalid_mode_expected_c_or_fortr */ + {__pyx_k_Invalid_shape_in_axis, sizeof(__pyx_k_Invalid_shape_in_axis), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Invalid_shape_in_axis */ + {__pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MemoryError */ + {__pyx_k_MemoryView_of, sizeof(__pyx_k_MemoryView_of), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_MemoryView_of */ + {__pyx_k_Note_that_Cython_is_deliberately, sizeof(__pyx_k_Note_that_Cython_is_deliberately), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Note_that_Cython_is_deliberately */ + {__pyx_k_O, sizeof(__pyx_k_O), 0, 0, 1}, /* PyObject cname: __pyx_n_b_O */ + {__pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Out_of_bounds_on_buffer_access_a */ + {__pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_PickleError */ + {__pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Sequence */ + {__pyx_k_Step_may_not_be_zero_axis_d, sizeof(__pyx_k_Step_may_not_be_zero_axis_d), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Step_may_not_be_zero_axis_d */ + {__pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TypeError */ + {__pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Unable_to_convert_item_to_object */ + {__pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ValueError */ + {__pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 1, 1}, /* PyObject cname: __pyx_n_u_View_MemoryView */ + {__pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__2 */ + {__pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__3 */ + {__pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__4 */ + {__pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__5 */ + {__pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__6 */ + {__pyx_k_abc, sizeof(__pyx_k_abc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_abc */ + {__pyx_k_add_note, sizeof(__pyx_k_add_note), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_add_note */ + {__pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 1, 1}, /* PyObject cname: __pyx_n_u_allocate_buffer */ + {__pyx_k_and, sizeof(__pyx_k_and), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_and */ + {__pyx_k_ascontiguousarray, sizeof(__pyx_k_ascontiguousarray), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ascontiguousarray */ + {__pyx_k_astype, sizeof(__pyx_k_astype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_astype */ + {__pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 1, 1}, /* PyObject cname: __pyx_n_u_asyncio_coroutines */ + {__pyx_k_at_0x, sizeof(__pyx_k_at_0x), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_at_0x */ + {__pyx_k_base, sizeof(__pyx_k_base), 0, 1, 1}, /* PyObject cname: __pyx_n_u_base */ + {__pyx_k_bnd_arr, sizeof(__pyx_k_bnd_arr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bnd_arr */ + {__pyx_k_bnds, sizeof(__pyx_k_bnds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bnds */ + {__pyx_k_c, sizeof(__pyx_k_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c */ + {__pyx_k_class, sizeof(__pyx_k_class), 0, 1, 1}, /* PyObject cname: __pyx_n_u_class */ + {__pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_class_getitem */ + {__pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cline_in_traceback */ + {__pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_collections_abc */ + {__pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_contiguous_and_direct */ + {__pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_contiguous_and_indirect */ + {__pyx_k_count, sizeof(__pyx_k_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_count */ + {__pyx_k_dict, sizeof(__pyx_k_dict), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dict */ + {__pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_disable */ + {__pyx_k_dist, sizeof(__pyx_k_dist), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dist */ + {__pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dtype */ + {__pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dtype_is_object */ + {__pyx_k_dx, sizeof(__pyx_k_dx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dx */ + {__pyx_k_dy, sizeof(__pyx_k_dy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dy */ + {__pyx_k_e, sizeof(__pyx_k_e), 0, 1, 1}, /* PyObject cname: __pyx_n_u_e */ + {__pyx_k_edge, sizeof(__pyx_k_edge), 0, 1, 1}, /* PyObject cname: __pyx_n_u_edge */ + {__pyx_k_empty, sizeof(__pyx_k_empty), 0, 1, 1}, /* PyObject cname: __pyx_n_u_empty */ + {__pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_enable */ + {__pyx_k_encode, sizeof(__pyx_k_encode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_encode */ + {__pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_enumerate */ + {__pyx_k_error, sizeof(__pyx_k_error), 0, 1, 1}, /* PyObject cname: __pyx_n_u_error */ + {__pyx_k_eymax, sizeof(__pyx_k_eymax), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymax */ + {__pyx_k_eymax_view, sizeof(__pyx_k_eymax_view), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymax_view */ + {__pyx_k_eymin, sizeof(__pyx_k_eymin), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymin */ + {__pyx_k_eymin_view, sizeof(__pyx_k_eymin_view), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymin_view */ + {__pyx_k_flags, sizeof(__pyx_k_flags), 0, 1, 1}, /* PyObject cname: __pyx_n_u_flags */ + {__pyx_k_float64, sizeof(__pyx_k_float64), 0, 1, 1}, /* PyObject cname: __pyx_n_u_float64 */ + {__pyx_k_format, sizeof(__pyx_k_format), 0, 1, 1}, /* PyObject cname: __pyx_n_u_format */ + {__pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 1}, /* PyObject cname: __pyx_n_u_fortran */ + {__pyx_k_ftol, sizeof(__pyx_k_ftol), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ftol */ + {__pyx_k_func, sizeof(__pyx_k_func), 0, 1, 1}, /* PyObject cname: __pyx_n_u_func */ + {__pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_gc */ + {__pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_getstate */ + {__pyx_k_got, sizeof(__pyx_k_got), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_got */ + {__pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_got_differing_extents_in_dimensi */ + {__pyx_k_i, sizeof(__pyx_k_i), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i */ + {__pyx_k_i0, sizeof(__pyx_k_i0), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i0 */ + {__pyx_k_i1, sizeof(__pyx_k_i1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i1 */ + {__pyx_k_id, sizeof(__pyx_k_id), 0, 1, 1}, /* PyObject cname: __pyx_n_u_id */ + {__pyx_k_import, sizeof(__pyx_k_import), 0, 1, 1}, /* PyObject cname: __pyx_n_u_import */ + {__pyx_k_index, sizeof(__pyx_k_index), 0, 1, 1}, /* PyObject cname: __pyx_n_u_index */ + {__pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 1, 1}, /* PyObject cname: __pyx_n_u_initializing */ + {__pyx_k_inpoly2_fast, sizeof(__pyx_k_inpoly2_fast), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inpoly2_fast */ + {__pyx_k_inside, sizeof(__pyx_k_inside), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inside */ + {__pyx_k_int32, sizeof(__pyx_k_int32), 0, 1, 1}, /* PyObject cname: __pyx_n_u_int32 */ + {__pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_coroutine */ + {__pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_isenabled */ + {__pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 1, 1}, /* PyObject cname: __pyx_n_u_itemsize */ + {__pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_itemsize_0_for_cython_array */ + {__pyx_k_j, sizeof(__pyx_k_j), 0, 1, 1}, /* PyObject cname: __pyx_n_u_j */ + {__pyx_k_main, sizeof(__pyx_k_main), 0, 1, 1}, /* PyObject cname: __pyx_n_u_main */ + {__pyx_k_memview, sizeof(__pyx_k_memview), 0, 1, 1}, /* PyObject cname: __pyx_n_u_memview */ + {__pyx_k_mode, sizeof(__pyx_k_mode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mode */ + {__pyx_k_module, sizeof(__pyx_k_module), 0, 1, 1}, /* PyObject cname: __pyx_n_u_module */ + {__pyx_k_n, sizeof(__pyx_k_n), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n */ + {__pyx_k_n_edge, sizeof(__pyx_k_n_edge), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n_edge */ + {__pyx_k_n_vert, sizeof(__pyx_k_n_vert), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n_vert */ + {__pyx_k_name, sizeof(__pyx_k_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name */ + {__pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name_2 */ + {__pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ndim */ + {__pyx_k_new, sizeof(__pyx_k_new), 0, 1, 1}, /* PyObject cname: __pyx_n_u_new */ + {__pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_default___reduce___due_to_non */ + {__pyx_k_node, sizeof(__pyx_k_node), 0, 1, 1}, /* PyObject cname: __pyx_n_u_node */ + {__pyx_k_np, sizeof(__pyx_k_np), 0, 1, 1}, /* PyObject cname: __pyx_n_u_np */ + {__pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_numpy */ + {__pyx_k_numpy__core_multiarray_failed_to, sizeof(__pyx_k_numpy__core_multiarray_failed_to), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_numpy__core_multiarray_failed_to */ + {__pyx_k_numpy__core_umath_failed_to_impo, sizeof(__pyx_k_numpy__core_umath_failed_to_impo), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_numpy__core_umath_failed_to_impo */ + {__pyx_k_obj, sizeof(__pyx_k_obj), 0, 1, 1}, /* PyObject cname: __pyx_n_u_obj */ + {__pyx_k_object, sizeof(__pyx_k_object), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_object */ + {__pyx_k_oceanmesh_geometry_point_in_poly, sizeof(__pyx_k_oceanmesh_geometry_point_in_poly), 0, 1, 1}, /* PyObject cname: __pyx_n_u_oceanmesh_geometry_point_in_poly */ + {__pyx_k_oceanmesh_geometry_point_in_poly_2, sizeof(__pyx_k_oceanmesh_geometry_point_in_poly_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_oceanmesh_geometry_point_in_poly_2 */ + {__pyx_k_on_bnd, sizeof(__pyx_k_on_bnd), 0, 1, 1}, /* PyObject cname: __pyx_n_u_on_bnd */ + {__pyx_k_pack, sizeof(__pyx_k_pack), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pack */ + {__pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pickle */ + {__pyx_k_pop, sizeof(__pyx_k_pop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pop */ + {__pyx_k_projx, sizeof(__pyx_k_projx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_projx */ + {__pyx_k_projy, sizeof(__pyx_k_projy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_projy */ + {__pyx_k_px, sizeof(__pyx_k_px), 0, 1, 1}, /* PyObject cname: __pyx_n_u_px */ + {__pyx_k_py, sizeof(__pyx_k_py), 0, 1, 1}, /* PyObject cname: __pyx_n_u_py */ + {__pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_checksum */ + {__pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_state */ + {__pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_type */ + {__pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_unpickle_Enum */ + {__pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_vtable */ + {__pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qualname */ + {__pyx_k_range, sizeof(__pyx_k_range), 0, 1, 1}, /* PyObject cname: __pyx_n_u_range */ + {__pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce */ + {__pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_cython */ + {__pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_ex */ + {__pyx_k_register, sizeof(__pyx_k_register), 0, 1, 1}, /* PyObject cname: __pyx_n_u_register */ + {__pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_set_name */ + {__pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate */ + {__pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate_cython */ + {__pyx_k_shape, sizeof(__pyx_k_shape), 0, 1, 1}, /* PyObject cname: __pyx_n_u_shape */ + {__pyx_k_size, sizeof(__pyx_k_size), 0, 1, 1}, /* PyObject cname: __pyx_n_u_size */ + {__pyx_k_spec, sizeof(__pyx_k_spec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_spec */ + {__pyx_k_start, sizeof(__pyx_k_start), 0, 1, 1}, /* PyObject cname: __pyx_n_u_start */ + {__pyx_k_stat, sizeof(__pyx_k_stat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stat */ + {__pyx_k_stat_arr, sizeof(__pyx_k_stat_arr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stat_arr */ + {__pyx_k_step, sizeof(__pyx_k_step), 0, 1, 1}, /* PyObject cname: __pyx_n_u_step */ + {__pyx_k_stop, sizeof(__pyx_k_stop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stop */ + {__pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_strided_and_direct */ + {__pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_strided_and_direct_or_indirect */ + {__pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_strided_and_indirect */ + {__pyx_k_struct, sizeof(__pyx_k_struct), 0, 1, 1}, /* PyObject cname: __pyx_n_u_struct */ + {__pyx_k_t, sizeof(__pyx_k_t), 0, 1, 1}, /* PyObject cname: __pyx_n_u_t */ + {__pyx_k_test, sizeof(__pyx_k_test), 0, 1, 1}, /* PyObject cname: __pyx_n_u_test */ + {__pyx_k_uint8, sizeof(__pyx_k_uint8), 0, 1, 1}, /* PyObject cname: __pyx_n_u_uint8 */ + {__pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unable_to_allocate_array_data */ + {__pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unable_to_allocate_shape_and_str */ + {__pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 1, 1}, /* PyObject cname: __pyx_n_u_unpack */ + {__pyx_k_update, sizeof(__pyx_k_update), 0, 1, 1}, /* PyObject cname: __pyx_n_u_update */ + {__pyx_k_v, sizeof(__pyx_k_v), 0, 1, 1}, /* PyObject cname: __pyx_n_u_v */ + {__pyx_k_vert, sizeof(__pyx_k_vert), 0, 1, 1}, /* PyObject cname: __pyx_n_u_vert */ + {__pyx_k_x, sizeof(__pyx_k_x), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x */ + {__pyx_k_x0, sizeof(__pyx_k_x0), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x0 */ + {__pyx_k_x1, sizeof(__pyx_k_x1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x1 */ + {__pyx_k_xints, sizeof(__pyx_k_xints), 0, 1, 1}, /* PyObject cname: __pyx_n_u_xints */ + {__pyx_k_y0, sizeof(__pyx_k_y0), 0, 1, 1}, /* PyObject cname: __pyx_n_u_y0 */ + {__pyx_k_y1, sizeof(__pyx_k_y1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_y1 */ + {__pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 1, 1}, /* PyObject cname: __pyx_n_u_zeros */ + {0, 0, 0, 0, 0} +}; +/* InitStrings.proto */ +static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names); + /* #### Code section: cached_builtins ### */ static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); + __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_range); if (!__pyx_builtin_range) __PYX_ERR(0, 69, __pyx_L1_error) __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 101, __pyx_L1_error) + __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 139, __pyx_L1_error) + __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 154, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 157, __pyx_L1_error) - __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 409, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_id); if (!__pyx_builtin_id) __PYX_ERR(1, 619, __pyx_L1_error) - - /* Cached unbound methods */ - __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; - __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items; - __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; - __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; - __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type; - __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values; + __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) + __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(1, 373, __pyx_L1_error) + __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 408, __pyx_L1_error) + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_id); if (!__pyx_builtin_id) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 914, __pyx_L1_error) + __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1026, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; @@ -22446,65 +22954,41 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "(tree fragment)":11 - * use_setstate = True - * else: - * use_setstate = ('self.name is not None',) # <<<<<<<<<<<<<< - * if use_setstate: - * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state -*/ - __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_self_name_is_not_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(1, 11, __pyx_L1_error) - __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); - __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); - - /* "View.MemoryView":583 + /* "View.MemoryView":582 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ - __pyx_mstate_global->__pyx_tuple[1] = PyTuple_New(1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(1, 583, __pyx_L1_error) - __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); + __pyx_mstate_global->__pyx_tuple[0] = PyTuple_New(1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(1, 582, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_mstate_global->__pyx_tuple[1], 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(1, 583, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); + if (__Pyx_PyTuple_SET_ITEM(__pyx_mstate_global->__pyx_tuple[0], 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(1, 582, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); - /* "View.MemoryView":680 + /* "View.MemoryView":679 * tup = index if isinstance(index, tuple) else (index,) * * result = [slice(None)] * ndim # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ - __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(1, 680, __pyx_L1_error) + __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(1, 679, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); - #if CYTHON_IMMORTAL_CONSTANTS - { - PyObject **table = __pyx_mstate->__pyx_tuple; - for (Py_ssize_t i=0; i<2; ++i) { - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); - #else - Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); - #endif - } - } - #endif - #if CYTHON_IMMORTAL_CONSTANTS - { - PyObject **table = __pyx_mstate->__pyx_slice; - for (Py_ssize_t i=0; i<1; ++i) { - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); - #else - Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); - #endif - } - } - #endif + + /* "(tree fragment)":4 + * cdef object __pyx_PickleError + * cdef object __pyx_result + * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< + * from pickle import PickleError as __pyx_PickleError + * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum +*/ + __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_136983863, __pyx_mstate_global->__pyx_int_112105877, __pyx_mstate_global->__pyx_int_184977713); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -22515,112 +22999,37 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); - { - const struct { const unsigned int length: 10; } index[] = {{2},{68},{35},{54},{37},{60},{24},{52},{26},{34},{29},{33},{45},{22},{15},{179},{37},{30},{32},{1},{1},{1},{1},{1},{8},{5},{6},{15},{23},{25},{7},{6},{2},{6},{35},{9},{30},{50},{39},{34},{8},{40},{21},{20},{32},{22},{30},{37},{5},{12},{8},{20},{8},{15},{3},{15},{17},{6},{18},{4},{7},{4},{1},{9},{17},{18},{5},{8},{4},{5},{15},{2},{2},{1},{4},{5},{6},{9},{5},{5},{10},{5},{10},{5},{7},{6},{7},{4},{8},{12},{1},{2},{2},{2},{10},{5},{12},{6},{5},{13},{5},{8},{1},{8},{7},{4},{10},{1},{6},{6},{4},{8},{4},{7},{4},{2},{5},{3},{36},{6},{4},{3},{5},{5},{2},{2},{14},{11},{10},{19},{14},{12},{10},{17},{13},{8},{12},{10},{12},{19},{5},{4},{5},{4},{8},{4},{4},{6},{1},{8},{5},{6},{6},{1},{6},{4},{1},{2},{2},{5},{2},{2},{5},{791},{1}}; - #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (1802 bytes) */ -const char* const cstring = "BZh91AY&SYAy\210\017\000\001\010\177\377\377\357\377\376\177\347\377\327\277\363\377\200\277\377\377\360@@@@@@@@@@@@@\000@\000`\006i\302\321\213\351\210\n\005)N\0142EOD\321\246\006\203S\302\233SL\24350\004\3654\321\202=F@\036\246\2322\030\233I\211\351\251\351\264S\364\202P\2014\320&\215M\251\246\223\023\024\323\3244z\207\250\006@\000\000\000\000\032\003A\246\232\034\000\006\200\000d\000\000\001\220\321\240\000\000\000\000\000\000\003L\210&\223$\032(\375(?S#OQ6\240\r\014\214\214\002\036\240\031\006 \003L\2314\315OHp\000\032\000\001\220\000\000\006CF\200\000\000\000\000\000\000\rH\246j\031\240\2152`\001\032h\3014\300\000\004a12\0314b0C\000\001\243 b\237\2017.\377\257\300\273\267\240\002*\277\342\024\010\020\"\020\213\\\203\200a1Y\021qQ\020\025ru\325;X\364\204EAU\005S7\264F\023ef\363\221\320\t?\270\224\200\221\024a/\320\315\334\320;\202p\036\220\312\250\222H\306\254\213P\221\010\260JG\034\303\276\235\2116f$~}\361\342\037\260\177\023\370O\361\277\376\3227\336}$;\267\317\303\025\276\241d\231$r\034O\233r\026\013\272\253w\014\357\t\342;\365X\034\030\364\377\355\356\274W\301\223W~\264\246\"X\207U\313\200\214\262t\3768s\220HpZ\320D\027\256B\034WQ\370g#\301Z^\255R\236\2020r\235\300\200h\251(\305\351\\\227\3171\343\0007v\366\370\344<6\225\3061\003\236\356\355\375d\345#\030\360\203\006\377/\315\252\001Z\206\366f\206\375\034F\335\355\213\236sa\321\0166\303Q\037]=h\214J\201\345-kT\326\213\241\325,\017\032\326\364N(\230\206{\324#0#0\306\226\277\317\360\374\323I\204\312:\212\371\263u^\354?]G\037\031\261~\236y\211\3624\2543\3009\034wwh?\216/\317\272\263\250s]KC2\333xk\200\376k\264\337\273JX\251\301\2167\257g\360\226\215{\216\2253\327\267\010\235Z\1771\354B&\221+LL\315:\221\262\314\374m\352\331\\?\206\250?]:\357 g\323]\030k\000=}\231\353\357H\000\374D\314w]\250u\337\227Q\315\226\207\362V\032g\217-H\200m\207\271\023\251\026)\345\213h\031`8\222\375\336\010\240\205\t\000\344\n\231M\2230\251H\244\2116\235\330)142\277\311\357\014\203\372\326\3205y|\"\303g\235\340\214Xs6\265*\300-\303\203""\235\320\010S-+\254\312Ye\250'\253e\356\264\353W\262\033\202\271\031l\037\254px\026?A\342\214\034E\021\200#\002\016\276\340Y\010jX\241`>\023\363\000p\000gI\246\000YF\362Y\345\357l\337\275\255K_x8u\367\353\274\224 \260W\3733\032<|\3466\254\023\203\266\342\210\205\202\212\251{\210\233\232\362<+\252AP\354V\2542\271\034b0\367\364\251\323\216\341\0241\241\323\241@*1\223\226\016\202b\304s\"\036\000T =\037c\326\277s\313 \347umn>\324\211\322\355\236\221L\324\342\215]\027\023z\250\243\210{\235H\231\305\003\204\202\252\300\266\361\000\220es\275l\332\222\032\366\222\314\361u\300d\323\305\225\366\340A\350\251\231\330>I\240\355\n\227\271\033\033%\rWNBU\t\014y=\343(\253\r\306\270\226\264\335\264\325a\215c\262\262\274*K\3443,6\242MB\263Z\233\307B\354\316^\006\200\362w\262\250\243\033\210b\027O\t\035~\367\027]NA\222\315'7\357\036\372\027p\025\236\007Q\341j`*\202\246\372\211\314?\325\342~g\027\367\247}\347e\222\305*;j\252*\244_0\325y\266\024T1\202\204b\344\343x\312\026\300|l\273\036(\356[\304>\027\244TU\245b\020\013\001\366\217r\361\355\271\363\2665p\217\213\222\034\250\253qr\030\336\356\233\303\030\207:\351\226\301\311YJ\023\217^\317.\001l\021\250\224m)J\201G\300\313\006\3402\232\n\204\"$&L\220\236jY\232\255\202\271\213nQ\\/\242$\024\376c\2740Dd)\214\225G=\304\357\327i\030^\264@\313\251D\2230:B\330\353\324\212\311A\350\303\225\t\264\013\225TU\024j\212\352\250\025\204\251\207\250\360{`\321\263;IixQD\235\366\223\271\311\337\363\357\233\265\266\331\205\345\245\262r;\002\342=V\255\214\324\301\237\336\307\321\034\024B\226Ch\257-s\020\006/Da\365\332\n\242\250\224\323\272O0\245F\214f\370U\272\212\234*4\031\355\315\265\2628\2611^*Om\261~\274!Qr\220Z!o4\274>\261\342#)\321H*(m\005Mb8\300\314\321\240B\353Qa\031\211>Vs\2527\357x\031\303\"\351\330\226u7\004\026\031[\037S\335l\243\317\316\206pE\311\013y\306m\010\275\034\253\007*\251\027\306\313\016F\331*\215:\223.\032\017G\333\025\023-\344\214^\324\022\3660I\251fK\032\347\343\"\214\346:K:\237\216\2415\233Q\343\314\227\025M\341B2\215Q\020/+Ze3l""\224i\255lo\255\005\224\371R\ry\221\264\340\202C*\330\222\024\350\224W(\244LP\341B\373\201p*\224\356[I\210o\306\307\217p\234\213\"\225M\311'\276N\3264\366\315\\\357\22135w$H&\256\321\312v\224\256\030\035)\341\312@\344\255\214G^\313p\r\275\026\200/=\0229\001\260\033z\025\365|\343C@\261\3646\233HH\204EU:}\0259CZ\2737\275z\030\030\357\370\244\343.\224E\025\233\204\210\2464\177\247(\021k*\2110\234#tQ,\3639\002\211d\204\310\253\006\247\307\366\013\363\375\245\311\362\261N0l\210A\372t\031\300'\"\205\203\237\177\206\310#\247{\320\026\014\340pu3\334\021J\0055y\202\213\227\264\217\024\036\321o\264\006\313ch-\243\222\210\005\312\331\237\273\034.=\241\313m\334\252A\347\356w+\330E\340\377\361p\003\231\013\255\264Q\033\343\367\244\251\333\002\202(\326\027\252\220\310\236\214\263\233\234sDT\250&MI\202\233\357J6\216\0312,\374\244\347Z\221hB]\254\345\207\r\024~\224\255@\306$7\365\007\222\240j\033Q\362i\204\243\320(\263\215Wc\3560\364\306\014\313\25725\030\346Y\226\310\257\242\264\363(\260\021\026|*C\224\306#\206\224\024\207\253\244\323\212\251\023(\035)#C+\274\261u\177\361w$S\205\t\004\027\230\200\360"; - PyObject *data = __Pyx_DecompressString(cstring, 1802, 2); - if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) - const char* const bytes = __Pyx_PyBytes_AsString(data); - #if !CYTHON_ASSUME_SAFE_MACROS - if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } - #endif - #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (1630 bytes) */ -const char* const cstring = "x\332\245UMs\333F\022\265\022:\253\224\345D\224\264^\347\253j(\307\313\244*FDI\353\270R\216S\022%'\332\252\330Vde\217SC\240I\215\r\314@\230\001M\344\224#\2178\342\210#\217<\362\310\243\2169\342\310\237\340\237\220\236\001?d+\225\034\266\212\0346\006\335\323\257_\277\036~K\366|\237x<\000\241\270\024\212\204\021\270\340q\321Yl\222\273\036\tb\245I\013\010\027\036\364\300#LxDHM\224\317\321}?n\267!\"]\016\257\210'A\331W\320\013\245\002\242t\304=PM&\210\024~B\334\010\230\006\302H\253\014\322gL\023\256\210+\205\346\235X\306\n\223\220\000\002\031%\016F\231\243\230R\274#\210\226\004\203\275{\366\234\322\303\244\234:M\017~\025q\315Z>L\035JP\355H\006\177\025k\313\"\257\270>#:\t\201\324\247\373:bB\3312\026!\245\033Fp\244J_\342\356\3402a\274$\241t:\014B\235\020u\306\360h\035\207\010\256-#\342&\372L\n\207E\021K\216,\000\031k\"\333\244%c\341)\362\005\353\341)w\275/\217\256\346*\311\217\303PF\032\274#\321e>\307.I\017\2762\304\24336\251\356\326\t\346\251c2SH\375+\322\301\250\231s\t\007\271\266i\036\376d\013\374\305\024\210\020\236H\244\322\266\246iQ\232z<\360y\013\"$\031)4m\305$\266\177\202<;|vo\367\301\256\225E\004/0\275Bt-\327\307\316\241\034LM1\3675&3\364*\207\034\265I\"c\"\000ab[C\364\273\034\240\317@\020\005\332\030\244n{\3014\326M1\034\265Y\237\362\312\273`\242\0373_\201\363\364\r\362\020\362T`\314uA\315\330<\321\020\222\200%\226?\324\363\257\020\311\005\321\247\302*\007\217D5v!Bah\010\314\263l\231\242\234G\365/\277g\236G\205\241\307\024K\220\241\255\236+}\337\300\301\3068\254\345>\274\244e\343T\202}\364\366\366LB\217<\256L^\260\331;.\371\302\264\251c\325c*0\303\010=\rB\333\321X\314%We\210gP*\376+\220\207\337\221\255+\332\022\022[\327f\261\257\t\245\021x\261\013\224\022/\266\205\n)\356a+\273\234\371\370\326\345\202kJE\034\204\211C]\031\201\023`\034\267\347\2206\343~\331/\036\030\341]v\213\003\206S\361\266\307\224\267G\322\005&\002Pg_w@\006\240\243\344\353Pr\241)\0274\224~\322\301\326:a\322S\340\267\035\301\002\230\315\317\023)\340ay\205xopyu\317H}N\351\033\357\347\273\361\274""\277\314\367\245k\357![\231\3074s\376\344m9#\346\214\3515\346\354\2354\217\216\232\264\371\364\311\363\243\037N\237\236\236\034\372>\017\025W\224>Kz\370=\300\261\240O\260_?C\373\004\316c\020.\230\251r\026\003\206\022\231e\240\245H\231Zh\303\"b\312\014\nS\211p\271t\220a\274\032\270\000\325b\nZ\302\243\350\204?\312\305\226\231\221\241tft@\0335\230G\3647\374\342\350\273\320b\356K\027'\003\233\353\031\200\270*\355\231\034v\241\210\277l\225\327\363\022\034\312\016\200\271\263\020<^)\200\215\266s\017Q\204\275N\002\326\263\0135\327!Z\230\310,\366\261\355\263\216j\373\222\351\373\273(DT\305\364\366ik\351S\332\216\205k\300\"L\245M\375\224\363-\336\340\036\032V1\370k\256B.\214,\266i\033\211\340\250v\017P-;\333\006\347\234\214R\365S\351\277\2404`\210\201\342Emp\230\253\020\037\244\027\373\370+\00455!D\034j\243/\334*W\234&\\\341\025.\030!B\253i\244b\256Xg\246X\347\212b\361\203M\010\221\332P\206a$_\364\314\222\204\2750\241\024\325L\3353p_\2528(\237\246\005\033\323rn\255X\204\334}\211\030\017\305\314\257k\377\277\014K\3471\363K\234\213\301\235[\345\210_\332\200\2361;\330X\210(\305\333sZ#Z\323\371\267\366\024\306%{v\222U\273!\023\267#\373\316|\215\326\360\310Pi\211\337(v5\236\243\321\207\322\030\ty\200\025 \003q\2103\004]\374k\211A\031\226{\275\255^\003\373\250U\262\2254\314=\253~[z\275{\355\372\362o\272\277\333\357\246\307)+\226?\354G\277W\357\344\215\374\361\340\337\303w\206\265\242\362\217\377\343\365\244\362Y\366<\277\225\237\017\226\212\2059\251\354\014\267\207\277\214\032\243\037\307\217/6/\366\212\312\366ps\370xT\033=\030\337\277X\273h\230\270\343b\276\274\376\340\332ug\360\363\240;<\036\236\215\332\343\3751+*\367\336\336\300\274v\231T\226\373\327\373\247i-m\024\3137\373\307}\326Wi\355OL\275p\260\346\215\376N\277\225.\025+\267R\226\306\331\336\334\230\\\3311\210\336\377\353,\257\337\273\366\376J\377?\351r\266\224m`\351\267\007\325A\255X\2719Y\256\246\325\302,\223\345\225\376a\372O<\361|\262\362!\306l\246\377\315X\246\362\315\374p\260>h\016\242\341\307HRs\024\215\253\305ju""\262\2021\230o\007\231\276j\356\246\347\177k\232\023\326\323\3752\310\032\010\362\346*f\276\223>\317\326\263&\346\256\025\253\267R7[\313v\263(_\317\233\271\032l\016\016\260\231\237\017\335\321\372h\177\344\216\327\306;\343\326\305R\261\272\236n\247'Y%;\310\337\311\357\344\307\305\306\247xD\224\257\345\333W\036>\301\363\316\363w\361\341\177\203\375\2017\254\rw\206\255\321R\261\361/\244\263\231\235\027\267ky\265\270\375\221\001\264\206\330\232\270}\220Wl\376\273\203\363\311\352\355\354\335l's\361\274]\334\27238\031\276g\001\035\215\217\r\220\373\210\270Ql\030\215!\2577\372\215be=m\244\207Y\265X\331H\367\322\323\254V\334\374`nO*7\372\017\322o\262\032\006\241\371MZ\317\252\350\201\346\375\264\372\364\017v-t\351"; - PyObject *data = __Pyx_DecompressString(cstring, 1630, 1); - if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) - const char* const bytes = __Pyx_PyBytes_AsString(data); - #if !CYTHON_ASSUME_SAFE_MACROS - if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } - #endif - #else /* compression: none (2949 bytes) */ -const char* const bytes = ": All dimensions preceding dimension %d must be indexed and not slicedBuffer view does not expose stridesCan only create a buffer that is contiguous in memory.Cannot assign to read-only memoryviewCannot create writable memory view from read-only memoryviewCannot index with type 'Cannot transpose memoryview with indirect dimensionsDimension %d is not directEmpty shape tuple for cython.arrayIndex out of bounds (axis %d)Indirect dimensions not supportedInvalid mode, expected 'c' or 'fortran', got Invalid shape in axis ')?add_note and at 0xcollections.abcdisableenablegc (got got differing extents in dimension isenableditemsize <= 0 for cython.arrayno default __reduce__ due to non-trivial __cinit__numpy._core.multiarray failed to importnumpy._core.umath failed to import object>oceanmesh/geometry/point_in_polygon_.pyxself.name is not Noneunable to allocate array data.unable to allocate shape and strides.ASCIIC_CONTIGUOUSEllipsis__Pyx_PyDict_NextRefSequenceView.MemoryViewabcallocate_bufferascontiguousarrayastypeasyncio.coroutinesbasebnd_arrbndsc__class____class_getitem__cline_in_tracebackcount__dict__distdtypedtype_is_objectdxdyeedgeemptyencodeenumerateerroreymaxeymax_vieweymineymin_viewflagsfloat64formatfortranftol__func____getstate__ii0i1id__import__indexinpoly2_fastinsideint32_is_coroutineitemsitemsizej__main__memviewmode__module__nn_edgen_vertname__name__ndim__new__nodenpnumpyobjoceanmesh.geometry.point_in_polygon_on_bndpackpopprojxprojypxpy__pyx_checksum__pyx_state__pyx_type__pyx_unpickle_Enum__pyx_vtable____qualname____reduce____reduce_cython____reduce_ex__""register__set_name__setdefault__setstate____setstate_cython__shapesizestartstatstat_arrstepstopstructt__test__uint8unpackupdatevvaluesvertxx0x1xintsy0y1zeros\200\001\3604\000\005\010\200t\2104\210v\220Q\220a\330\010\017\210r\320\021#\2401\240F\250&\260\002\260!\330\004\007\200t\2104\210v\220Q\220a\330\010\017\210r\320\021#\2401\240F\250&\260\002\260!\330\004\007\200t\2104\210v\220Q\220a\330\010\017\210r\320\021#\2401\240F\250&\260\002\260!\340\004\035\230T\240\026\240q\250\001\330\004\035\230T\240\026\240q\250\001\340\0043\2602\260V\2701\270H\300F\310\"\310A\330\0042\260\"\260F\270!\2708\3006\310\022\3101\340\004\035\230Q\330\004\035\230Q\330\004\035\230Q\360\016\000\005.\250R\250v\260Q\260h\270f\300B\300a\330\004-\250R\250v\260Q\260h\270f\300B\300a\330\004#\2401\330\004#\2401\340\004\010\210\005\210U\220!\2201\330\010\r\210Q\210a\210s\220!\330\010\r\210Q\210a\210s\220!\330\010\r\210Q\210a\210t\2201\330\010\r\210Q\210a\210t\2201\330\010\013\2103\210b\220\001\330\014\026\220a\220u\230A\330\014\026\220a\220u\230A\340\014\026\220a\220u\230A\330\014\026\220a\220u\230A\360\016\000\005\t\210\005\210U\220!\2201\330\010\r\210Q\210a\210s\220!\330\010\r\210Q\210a\210s\220!\360\006\000\t\014\2105\220\010\230\001\230\024\230T\240\030\250\021\250!\330\014\r\340\010\021\220\021\330\010\021\220\021\340\010\014\210E\220\025\220a\220q\340\014\017\210s\220\"\220J\230a\230s\240\"\240E\250\023\250C\250r\260\032\2701\270C\270r\300\021\330\020\021\340\014\021\220\021\220!\2203\220a\330\014\021\220\021\220!\2203\220a\330\014\021\220\021\220!\2204\220q\330\014\021\220\021\220!\2204\220q\330\014\021\220\021\220!\2204\220q\330\014\021\220\021\220!\2204\220q\340\014\021\220\023\220B\220a\330\014\021\220\023\220B\220a\360\006\000\r\020\210s\220#\220T\230\023\230C\230s\240!\330\020\026\220c\230\022\2304\230r\240\023\240C\240s\250\"\250D\260\002\260$\260c\270\023\270B\270c\300\022\3003\300b\310\001\330\020\023\2202\220S\230\004\230D\240\002\240#\240Q\330\024\034\230C\230r\240\022\2402\240Q\330""\024\034\230C\230r\240\022\2402\240Q\330\024\033\2304\230q\240\003\2402\240W\250B\250d\260!\2603\260b\270\001\330\024\027\220u\230C\230q\330\030!\240\021\330\030\031\360\006\000\r\022\220\023\220C\220u\230D\240\004\240C\240s\250%\250q\340\020\030\230\003\2303\230c\240\022\2404\240s\250#\250S\260\006\260c\270\023\270I\300Q\330\020\023\2206\230\022\2301\330\024\035\230T\240\021\340\010\013\2101\330\014\023\2201\220E\230\021\330\014\024\220A\220U\230!\330\r\016\330\014\024\220A\220U\230!\340\004\013\2108\2207\230!\2301\330\004\013\2107\220'\230\021\230!\330\004\013\2106\220\021O"; - PyObject *data = NULL; - CYTHON_UNUSED_VAR(__Pyx_DecompressString); - #endif - PyObject **stringtab = __pyx_mstate->__pyx_string_tab; - Py_ssize_t pos = 0; - for (int i = 0; i < 163; i++) { - Py_ssize_t bytes_length = index[i].length; - PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL); - if (likely(string) && i >= 48) PyUnicode_InternInPlace(&string); - if (unlikely(!string)) { - Py_XDECREF(data); - __PYX_ERR(0, 1, __pyx_L1_error) - } - stringtab[i] = string; - pos += bytes_length; - } - for (int i = 163; i < 165; i++) { - Py_ssize_t bytes_length = index[i].length; - PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length); - stringtab[i] = string; - pos += bytes_length; - if (unlikely(!string)) { - Py_XDECREF(data); - __PYX_ERR(0, 1, __pyx_L1_error) - } - } - Py_XDECREF(data); - for (Py_ssize_t i = 0; i < 165; i++) { - if (unlikely(PyObject_Hash(stringtab[i]) == -1)) { - __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #if CYTHON_IMMORTAL_CONSTANTS - { - PyObject **table = stringtab + 163; - for (Py_ssize_t i=0; i<2; ++i) { - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); - #else - Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); - #endif - } - } - #endif - } - { - PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 0; - int8_t const cint_constants_1[] = {0,-1,1}; - int32_t const cint_constants_4[] = {136983863L}; - for (int i = 0; i < 4; i++) { - numbertab[i] = PyLong_FromLong((i < 3 ? cint_constants_1[i - 0] : cint_constants_4[i - 3])); - if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error) - } - } - #if CYTHON_IMMORTAL_CONSTANTS - { - PyObject **table = __pyx_mstate->__pyx_number_tab; - for (Py_ssize_t i=0; i<4; ++i) { - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); - #else - Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); - #endif - } - } - #endif + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; + if (__Pyx_InitStrings(__pyx_string_tab, __pyx_mstate->__pyx_string_tab, __pyx_string_tab_encodings) < 0) __PYX_ERR(0, 1, __pyx_L1_error); + __pyx_mstate->__pyx_int_0 = PyLong_FromLong(0); if (unlikely(!__pyx_mstate->__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_1 = PyLong_FromLong(1); if (unlikely(!__pyx_mstate->__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_112105877 = PyLong_FromLong(112105877L); if (unlikely(!__pyx_mstate->__pyx_int_112105877)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_136983863 = PyLong_FromLong(136983863L); if (unlikely(!__pyx_mstate->__pyx_int_136983863)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_184977713 = PyLong_FromLong(184977713L); if (unlikely(!__pyx_mstate->__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_mstate->__pyx_int_neg_1 = PyLong_FromLong(-1); if (unlikely(!__pyx_mstate->__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } /* #### Code section: init_codeobjects ### */ -typedef struct { - unsigned int argcount : 3; - unsigned int num_posonly_args : 1; - unsigned int num_kwonly_args : 1; - unsigned int nlocals : 6; - unsigned int flags : 10; - unsigned int first_line : 5; -} __Pyx_PyCode_New_function_description; +\ + typedef struct { + unsigned int argcount : 3; + unsigned int num_posonly_args : 1; + unsigned int num_kwonly_args : 1; + unsigned int nlocals : 6; + unsigned int flags : 10; + unsigned int first_line : 5; + unsigned int line_table_length : 15; + } __Pyx_PyCode_New_function_description; /* NewCodeObj.proto */ static PyObject* __Pyx_PyCode_New( const __Pyx_PyCode_New_function_description descr, PyObject * const *varnames, PyObject *filename, PyObject *funcname, - PyObject *line_table, + const char *line_table, PyObject *tuple_dedup_map ); @@ -22629,9 +23038,9 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { PyObject* tuple_dedup_map = PyDict_New(); if (unlikely(!tuple_dedup_map)) return -1; { - const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 36, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 36, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16, 791}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_vert, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_edge, __pyx_mstate->__pyx_n_u_ftol, __pyx_mstate->__pyx_n_u_n_vert, __pyx_mstate->__pyx_n_u_n_edge, __pyx_mstate->__pyx_n_u_stat_arr, __pyx_mstate->__pyx_n_u_bnd_arr, __pyx_mstate->__pyx_n_u_v, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_e, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_j, __pyx_mstate->__pyx_n_u_i0, __pyx_mstate->__pyx_n_u_i1, __pyx_mstate->__pyx_n_u_x0, __pyx_mstate->__pyx_n_u_y0, __pyx_mstate->__pyx_n_u_x1, __pyx_mstate->__pyx_n_u_y1, __pyx_mstate->__pyx_n_u_eymin, __pyx_mstate->__pyx_n_u_eymax, __pyx_mstate->__pyx_n_u_eymin_view, __pyx_mstate->__pyx_n_u_eymax_view, __pyx_mstate->__pyx_n_u_px, __pyx_mstate->__pyx_n_u_py, __pyx_mstate->__pyx_n_u_dx, __pyx_mstate->__pyx_n_u_dy, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_projx, __pyx_mstate->__pyx_n_u_projy, __pyx_mstate->__pyx_n_u_dist, __pyx_mstate->__pyx_n_u_xints, __pyx_mstate->__pyx_n_u_inside, __pyx_mstate->__pyx_n_u_on_bnd, __pyx_mstate->__pyx_n_u_stat, __pyx_mstate->__pyx_n_u_bnds}; - __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_oceanmesh_geometry_point_in_poly_2, __pyx_mstate->__pyx_n_u_inpoly2_fast, __pyx_mstate->__pyx_kp_b_iso88591_4_t4vQa_r_1F_t4vQa_r_1F_t4vQa_r, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_oceanmesh_geometry_point_in_poly_2, __pyx_mstate->__pyx_n_u_inpoly2_fast, __pyx_k_4_t4vQa_r_1F_t4vQa_r_1F_t4vQa_r, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; } Py_DECREF(tuple_dedup_map); return 0; @@ -22644,56 +23053,46 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { static int __Pyx_InitGlobals(void) { /* PythonCompatibility.init */ if (likely(__Pyx_init_co_variables() == 0)); else - - if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) /* AssertionsEnabled.init */ if (likely(__Pyx_init_assertions_enabled() == 0)); else - - if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) /* NumpyImportArray.init */ /* - * Cython has automatically inserted a call to _import_array since - * you didn't include one when you cimported numpy. To disable this - * add the line - * numpy._import_array - */ - #ifdef NPY_FEATURE_VERSION - #ifndef NO_IMPORT_ARRAY - if (unlikely(_import_array() == -1)) { - PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import " - "(auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; " - "use 'numpy._import_array' to disable if you are certain you don't need it)."); - } - #endif - #endif - - if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + * Cython has automatically inserted a call to _import_array since + * you didn't include one when you cimported numpy. To disable this + * add the line + * numpy._import_array + */ +#ifdef NPY_FEATURE_VERSION +#ifndef NO_IMPORT_ARRAY +if (unlikely(_import_array() == -1)) { + PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import " + "(auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; " + "use 'numpy._import_array' to disable if you are certain you don't need it)."); +} +#endif +#endif - /* CommonTypesMetaclass.init */ - if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else - - if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) /* CachedMethodType.init */ #if CYTHON_COMPILING_IN_LIMITED_API - { - PyObject *typesModule=NULL; - typesModule = PyImport_ImportModule("types"); - if (typesModule) { - __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); - Py_DECREF(typesModule); - } - } // error handling follows - #endif - - if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) +{ + PyObject *typesModule=NULL; + typesModule = PyImport_ImportModule("types"); + if (typesModule) { + __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + } +} // error handling follows +#endif - /* CythonFunctionShared.init */ - if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else - - if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) +if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; @@ -22734,71 +23133,220 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { } #endif -/* TupleAndListFromArray (used by fastcall) */ -#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL -static CYTHON_INLINE PyObject * -__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - Py_ssize_t i; - if (n <= 0) { - return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); - } - res = PyTuple_New(n); - if (unlikely(res == NULL)) return NULL; - for (i = 0; i < n; i++) { - if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < (0))) { - Py_DECREF(res); - return NULL; - } - Py_INCREF(src[i]); - } - return res; -} -#elif CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { - PyObject *v; - Py_ssize_t i; - for (i = 0; i < length; i++) { - v = dest[i] = src[i]; - Py_INCREF(v); +/* 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); + for (i=0; i__pyx_empty_tuple); + for (i=0; iob_item, n); - return res; + return 0; } -static CYTHON_INLINE PyObject * -__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - if (n <= 0) { - return PyList_New(0); +static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { + int result; + PyObject *exc_type; +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); } - res = PyList_New(n); - if (unlikely(res == NULL)) return NULL; - __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); - return res; + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; } #endif -/* BytesEquals (used by UnicodeEquals) */ -static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { -#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\ - !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) - return PyObject_RichCompareBool(s1, s2, equals); -#else - if (s1 == s2) { - return (equals == Py_EQ); - } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { +/* PyErrFetchRestore */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStr */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* PyObjectGetAttrStrNoError */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS + 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; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, + "name '%U' is not defined", name); + } + return result; +} + +/* TupleAndListFromArray */ +#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + Py_ssize_t i; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + for (i = 0; i < n; i++) { + if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < 0)) { + Py_DECREF(res); + return NULL; + } + Py_INCREF(src[i]); + } + return res; +} +#elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); + } +} +static CYTHON_INLINE PyObject * +__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); + } + res = PyTuple_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n); + return res; +} +static CYTHON_INLINE PyObject * +__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) +{ + PyObject *res; + if (n <= 0) { + return PyList_New(0); + } + res = PyList_New(n); + if (unlikely(res == NULL)) return NULL; + __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n); + return res; +} +#endif + +/* BytesEquals */ +static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { +#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\ + !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) + return PyObject_RichCompareBool(s1, s2, equals); +#else + if (s1 == s2) { + return (equals == Py_EQ); + } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { const char *ps1, *ps2; Py_ssize_t length = PyBytes_GET_SIZE(s1); if (length != PyBytes_GET_SIZE(s2)) @@ -22838,7 +23386,7 @@ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int eq #endif } -/* UnicodeEquals (used by fastcall) */ +/* UnicodeEquals */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL return PyObject_RichCompareBool(s1, s2, equals); @@ -22973,7 +23521,120 @@ CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, Py #endif #endif -/* PyObjectCall (used by PyObjectFastCall) */ +/* RaiseDoubleKeywords */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); +} + +/* PyFunctionFastCall */ +#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject *const *args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = __Pyx_PyThreadState_Current; + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = __Pyx_PyFrame_GetLocalsplus(f); + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; + PyObject *kwdefs; + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { + return NULL; + } + if ( + co->co_kwonlyargcount == 0 && + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); + kwdefs = PyFunction_GET_KW_DEFAULTS(func); + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, (int)nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif + +/* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; @@ -22993,7 +23654,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg } #endif -/* PyObjectCallMethO (used by PyObjectFastCall) */ +/* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; @@ -23013,7 +23674,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject } #endif -/* PyObjectFastCall (used by PyObjectCallOneArg) */ +/* PyObjectFastCall */ #if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) { PyObject *argstuple; @@ -23068,16 +23729,38 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObj return __Pyx_PyObject_CallMethO(func, args[0]); } #endif + #if PY_VERSION_HEX < 0x030800B1 + #if CYTHON_FAST_PYCCALL + if (PyCFunction_Check(func)) { + if (kwargs) { + return _PyCFunction_FastCallDict(func, args, nargs, kwargs); + } else { + return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); + } + } + if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { + return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); + } + #endif + #if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); + } + #endif + #endif if (kwargs == NULL) { - #if CYTHON_VECTORCALL - #if CYTHON_COMPILING_IN_LIMITED_API - return PyObject_Vectorcall(func, args, _nargs, NULL); - #else - vectorcallfunc f = __Pyx_PyVectorcall_Function(func); - if (f) { - return f(func, args, _nargs, NULL); - } - #endif + #if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API + vectorcallfunc f = __Pyx_PyVectorcall_Function(func); + if (f) { + return f(func, args, _nargs, NULL); + } + #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL + if (__Pyx_CyFunction_CheckExact(func)) { + __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); + if (f) return f(func, args, _nargs, NULL); + } + #elif CYTHON_COMPILING_IN_LIMITED_API && CYTHON_VECTORCALL + return PyObject_Vectorcall(func, args, _nargs, NULL); #endif } if (nargs == 0) { @@ -23090,23 +23773,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObj #endif } -/* PyObjectCallOneArg (used by CallUnboundCMethod0) */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *args[2] = {NULL, arg}; - return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* PyObjectGetAttrStr (used by UnpackUnboundCMethod) */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* UnpackUnboundCMethod (used by CallUnboundCMethod0) */ +/* UnpackUnboundCMethod */ #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { PyObject *result; @@ -23191,22 +23858,17 @@ static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { return 0; } -/* CallUnboundCMethod0 */ +/* CallUnboundCMethod2 */ #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); if (likely(was_initialized == 2 && cfunc->func)) { - if (likely(cfunc->flag == METH_NOARGS)) - return __Pyx_CallCFunction(cfunc, self, NULL); - if (likely(cfunc->flag == METH_FASTCALL)) - return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0); + PyObject *args[2] = {arg1, arg2}; + if (cfunc->flag == METH_FASTCALL) { + return __Pyx_CallCFunctionFast(cfunc, self, args, 2); + } if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) - return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL); - if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS))) - return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL); - if (cfunc->flag == METH_VARARGS) - return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple); - return __Pyx__CallUnboundCMethod0(cfunc, self); + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL); } #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING else if (unlikely(was_initialized == 1)) { @@ -23217,150 +23879,40 @@ static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* }; tmp_cfunc.type = cfunc->type; tmp_cfunc.method_name = cfunc->method_name; - return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self); + return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2); } #endif - PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self); + PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); return result; } #endif -static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { - PyObject *result; - if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; - result = __Pyx_PyObject_CallOneArg(cfunc->method, self); - return result; +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ + if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; +#if CYTHON_COMPILING_IN_CPYTHON + if (cfunc->func && (cfunc->flag & METH_VARARGS)) { + PyObject *result = NULL; + PyObject *args = PyTuple_New(2); + if (unlikely(!args)) return NULL; + Py_INCREF(arg1); + PyTuple_SET_ITEM(args, 0, arg1); + Py_INCREF(arg2); + PyTuple_SET_ITEM(args, 1, arg2); + if (cfunc->flag & METH_KEYWORDS) + result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); + else + result = __Pyx_CallCFunction(cfunc, self, args); + Py_DECREF(args); + return result; + } +#endif + { + PyObject *args[4] = {NULL, self, arg1, arg2}; + return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } } -/* py_dict_items (used by OwnedDictNext) */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) { - return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d); -} - -/* py_dict_values (used by OwnedDictNext) */ -static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) { - return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d); -} - -/* OwnedDictNext (used by ParseKeywordsImpl) */ -#if CYTHON_AVOID_BORROWED_REFS -static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) { - PyObject *next = NULL; - if (!*ppos) { - if (pvalue) { - PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p); - if (unlikely(!dictview)) goto bad; - *ppos = PyObject_GetIter(dictview); - Py_DECREF(dictview); - } else { - *ppos = PyObject_GetIter(p); - } - if (unlikely(!*ppos)) goto bad; - } - next = PyIter_Next(*ppos); - if (!next) { - if (PyErr_Occurred()) goto bad; - return 0; - } - if (pkey && pvalue) { - *pkey = __Pyx_PySequence_ITEM(next, 0); - if (unlikely(*pkey)) goto bad; - *pvalue = __Pyx_PySequence_ITEM(next, 1); - if (unlikely(*pvalue)) goto bad; - Py_DECREF(next); - } else if (pkey) { - *pkey = next; - } else { - assert(pvalue); - *pvalue = next; - } - return 1; - bad: - Py_XDECREF(next); -#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 - PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef"); -#else - PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef); -#endif - if (pkey) *pkey = NULL; - if (pvalue) *pvalue = NULL; - return 0; -} -#else // !CYTHON_AVOID_BORROWED_REFS -static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) { - int result = PyDict_Next(p, ppos, pkey, pvalue); - if (likely(result == 1)) { - if (pkey) Py_INCREF(*pkey); - if (pvalue) Py_INCREF(*pvalue); - } - return result; -} -#endif - -/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); -} - -/* CallUnboundCMethod2 */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { - int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); - if (likely(was_initialized == 2 && cfunc->func)) { - PyObject *args[2] = {arg1, arg2}; - if (cfunc->flag == METH_FASTCALL) { - return __Pyx_CallCFunctionFast(cfunc, self, args, 2); - } - if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) - return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL); - } -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - else if (unlikely(was_initialized == 1)) { - __Pyx_CachedCFunction tmp_cfunc = { -#ifndef __cplusplus - 0 -#endif - }; - tmp_cfunc.type = cfunc->type; - tmp_cfunc.method_name = cfunc->method_name; - return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2); - } -#endif - PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2); - __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); - return result; -} -#endif -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){ - if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; -#if CYTHON_COMPILING_IN_CPYTHON - if (cfunc->func && (cfunc->flag & METH_VARARGS)) { - PyObject *result = NULL; - PyObject *args = PyTuple_New(2); - if (unlikely(!args)) return NULL; - Py_INCREF(arg1); - PyTuple_SET_ITEM(args, 0, arg1); - Py_INCREF(arg2); - PyTuple_SET_ITEM(args, 1, arg2); - if (cfunc->flag & METH_KEYWORDS) - result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL); - else - result = __Pyx_CallCFunction(cfunc, self, args); - Py_DECREF(args); - return result; - } -#endif - { - PyObject *args[4] = {NULL, self, arg1, arg2}; - return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); - } -} - -/* ParseKeywordsImpl (used by ParseKeywords) */ +/* ParseKeywords */ static int __Pyx_ValidateDuplicatePosArgs( PyObject *kwds, PyObject ** const argnames[], @@ -23516,23 +24068,16 @@ static void __Pyx_RejectUnknownKeyword( PyObject ** const *first_kw_arg, const char *function_name) { - #if CYTHON_AVOID_BORROWED_REFS - PyObject *pos = NULL; - #else Py_ssize_t pos = 0; - #endif PyObject *key = NULL; __Pyx_BEGIN_CRITICAL_SECTION(kwds); - while ( - #if CYTHON_AVOID_BORROWED_REFS - __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL) - #else - PyDict_Next(kwds, &pos, &key, NULL) - #endif - ) { + while (PyDict_Next(kwds, &pos, &key, NULL)) { PyObject** const *name = first_kw_arg; while (*name && (**name != key)) name++; if (!*name) { + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(key); + #endif size_t index_found = 0; int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); if (cmp != 1) { @@ -23546,15 +24091,12 @@ static void __Pyx_RejectUnknownKeyword( #endif break; } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(key); - #endif } __Pyx_END_CRITICAL_SECTION(); - #if CYTHON_AVOID_BORROWED_REFS - Py_XDECREF(pos); - #endif assert(PyErr_Occurred()); } static int __Pyx_ParseKeywordDict( @@ -23726,8 +24268,6 @@ static int __Pyx_ParseKeywordsTuple( #endif return -1; } - -/* ParseKeywords */ static int __Pyx_ParseKeywords( PyObject *kwds, PyObject * const *kwvalues, @@ -23773,7 +24313,7 @@ static void __Pyx_RaiseArgtupleInvalid( (num_expected == 1) ? "" : "s", num_found); } -/* ArgTypeTestFunc (used by ArgTypeTest) */ +/* ArgTypeTest */ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) { __Pyx_TypeName type_name; @@ -23821,145 +24361,6 @@ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *nam return 0; } -/* PyErrExceptionMatches (used by PyObjectGetAttrStrNoError) */ -#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); - for (i=0; i= 0x030C00A6 - PyObject *current_exception = tstate->current_exception; - if (unlikely(!current_exception)) return 0; - exc_type = (PyObject*) Py_TYPE(current_exception); - if (exc_type == err) return 1; -#else - exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; -#endif - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(exc_type); - #endif - if (unlikely(PyTuple_Check(err))) { - result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - } else { - result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); - } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(exc_type); - #endif - return result; -} -#endif - -/* PyErrFetchRestore (used by PyObjectGetAttrStrNoError) */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject *tmp_value; - assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); - if (value) { - #if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) - #endif - PyException_SetTraceback(value, tb); - } - tmp_value = tstate->current_exception; - tstate->current_exception = value; - Py_XDECREF(tmp_value); - Py_XDECREF(type); - Py_XDECREF(tb); -#else - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject* exc_value; - exc_value = tstate->current_exception; - tstate->current_exception = 0; - *value = exc_value; - *type = NULL; - *tb = NULL; - if (exc_value) { - *type = (PyObject*) Py_TYPE(exc_value); - Py_INCREF(*type); - #if CYTHON_COMPILING_IN_CPYTHON - *tb = ((PyBaseExceptionObject*) exc_value)->traceback; - Py_XINCREF(*tb); - #else - *tb = PyException_GetTraceback(exc_value); - #endif - } -#else - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#endif -} -#endif - -/* PyObjectGetAttrStrNoError (used by GetBuiltinName) */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 -static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - __Pyx_PyErr_Clear(); -} -#endif -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { - PyObject *result; -#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 - (void) PyObject_GetOptionalAttr(obj, attr_name, &result); - return result; -#else -#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS - 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; -#endif -} - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); - if (unlikely(!result) && !PyErr_Occurred()) { - PyErr_Format(PyExc_NameError, - "name '%U' is not defined", name); - } - return result; -} - /* RaiseException */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; @@ -24092,7 +24493,7 @@ __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) return 0; } -/* CIntToDigits (used by CIntToPyUnicode) */ +/* CIntToDigits */ static const char DIGIT_PAIRS_10[2*10*10+1] = { "00010203040506070809" "10111213141516171819" @@ -24120,7 +24521,7 @@ static const char DIGITS_HEX[2*16+1] = { "0123456789ABCDEF" }; -/* BuildPyUnicode (used by COrdinalToPyUnicode) */ +/* BuildPyUnicode */ static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, int prepend_sign, char padding_char) { PyObject *uval; @@ -24183,16 +24584,15 @@ static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* return uval; } -/* COrdinalToPyUnicode (used by CIntToPyUnicode) */ +/* COrdinalToPyUnicode */ static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) { return value <= 1114111; } static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) { - Py_ssize_t padding_length = ulength - 1; - if (likely((padding_length <= 250) && (value < 0xD800 || value > 0xDFFF))) { + if (likely(ulength <= 250)) { char chars[256]; if (value <= 255) { - memset(chars, padding_char, (size_t) padding_length); + memset(chars, padding_char, (size_t) (ulength - 1)); chars[ulength-1] = (char) value; return PyUnicode_DecodeLatin1(chars, ulength, NULL); } @@ -24216,8 +24616,8 @@ static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulengt value >>= 6; *--cpos = (char) (0xf0 | (value & 0x07)); } - cpos -= padding_length; - memset(cpos, padding_char, (size_t) padding_length); + cpos -= ulength; + memset(cpos, padding_char, (size_t) (ulength - 1)); return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL); } if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) { @@ -24228,7 +24628,7 @@ static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulengt PyObject *uchar, *padding_uchar, *padding, *result; padding_uchar = PyUnicode_FromOrdinal(padding_char); if (unlikely(!padding_uchar)) return NULL; - padding = PySequence_Repeat(padding_uchar, padding_length); + padding = PySequence_Repeat(padding_uchar, ulength - 1); Py_DECREF(padding_uchar); if (unlikely(!padding)) return NULL; uchar = PyUnicode_FromOrdinal(value); @@ -24244,27 +24644,7 @@ static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulengt } /* CIntToPyUnicode */ -static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char) { -#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(!(is_unsigned || value == 0 || value > 0) || - !(sizeof(value) <= 2 || value & ~ (int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { - PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); - return NULL; - } - if (width <= 1) { - return PyUnicode_FromOrdinal((int) value); - } - return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); -} -static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) { +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) { char digits[sizeof(int)*3+2]; char *dpos, *end = digits + sizeof(int)*3+2; const char *hex_digits = DIGITS_HEX; @@ -24280,6 +24660,17 @@ static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssi #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; + if (format_char == 'c') { + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); + } if (format_char == 'X') { hex_digits += 16; format_char = 'x'; @@ -24337,27 +24728,7 @@ static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssi } /* CIntToPyUnicode */ -static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (unlikely(!(is_unsigned || value == 0 || value > 0) || - !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { - PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); - return NULL; - } - if (width <= 1) { - return PyUnicode_FromOrdinal((int) value); - } - return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); -} -static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { char digits[sizeof(Py_ssize_t)*3+2]; char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; const char *hex_digits = DIGITS_HEX; @@ -24373,6 +24744,17 @@ static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; + if (format_char == 'c') { + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); + } if (format_char == 'X') { hex_digits += 16; format_char = 'x'; @@ -24525,77 +24907,69 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck, int unsafe_shared) { - CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); -#if CYTHON_ASSUME_SAFE_SIZE + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyList_GET_SIZE(o); } - if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS)) { - return __Pyx_PyList_GetItemRefFast(o, wrapped_i, unsafe_shared); - } else if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { - return __Pyx_NewRef(PyList_GET_ITEM(o, wrapped_i)); + PyObject *r = PyList_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; } return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); #else - (void)wraparound; - (void)boundscheck; return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck, int unsafe_shared) { - CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); -#if CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyTuple_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { - return __Pyx_NewRef(PyTuple_GET_ITEM(o, wrapped_i)); + PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); + Py_INCREF(r); + return r; } return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); #else - (void)wraparound; - (void)boundscheck; return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - int wraparound, int boundscheck, int unsafe_shared) { - CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + CYTHON_NCP_UNUSED int wraparound, + CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)) { - return __Pyx_PyList_GetItemRefFast(o, n, unsafe_shared); - } else if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - return __Pyx_NewRef(PyList_GET_ITEM(o, n)); + if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + return __Pyx_PyList_GetItemRef(o, n); } - } else - #if !CYTHON_AVOID_BORROWED_REFS - if (PyTuple_CheckExact(o)) { + } + else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - return __Pyx_NewRef(PyTuple_GET_ITEM(o, n)); + PyObject *r = PyTuple_GET_ITEM(o, n); + Py_INCREF(r); + return r; } - } else - #endif -#endif -#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY - { + } else { PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (!is_list && mm && mm->mp_subscript) { + if (mm && mm->mp_subscript) { PyObject *r, *key = PyLong_FromSsize_t(i); if (unlikely(!key)) return NULL; r = mm->mp_subscript(o, key); Py_DECREF(key); return r; } - if (is_list || likely(sm && sm->sq_item)) { + if (likely(sm && sm->sq_item)) { if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { Py_ssize_t l = sm->sq_length(o); if (likely(l >= 0)) { @@ -24614,11 +24988,15 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, return PySequence_GetItem(o, i); } #endif - (void)wraparound; - (void)boundscheck; return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); } +/* PyObjectCallOneArg */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + /* ObjectGetItem */ #if CYTHON_USE_TYPE_SLOTS static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { @@ -24626,7 +25004,7 @@ static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { Py_ssize_t key_value; key_value = __Pyx_PyIndex_AsSsize_t(index); if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1, 1); + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); } if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index)); @@ -24675,18 +25053,12 @@ static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) { if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) { key = __Pyx_PySequence_ITEM(kwds, 0); } else { -#if CYTHON_AVOID_BORROWED_REFS - PyObject *pos = NULL; -#else Py_ssize_t pos = 0; -#endif #if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return; #endif - __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL); -#if CYTHON_AVOID_BORROWED_REFS - Py_XDECREF(pos); -#endif + PyDict_Next(kwds, &pos, &key, NULL); + Py_INCREF(key); } if (likely(key)) { PyErr_Format(PyExc_TypeError, @@ -24739,7 +25111,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject #endif } -/* PyDictVersioning (used by GetModuleGlobalName) */ +/* PyDictVersioning */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; @@ -24839,7 +25211,7 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { return 0; } -/* GetTopmostException (used by SaveResetException) */ +/* GetTopmostException */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate) @@ -25078,121 +25450,19 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } #endif -/* HasAttr (used by ImportImpl) */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!PyUnicode_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_PyObject_GetAttrStrNoError(o, n); - if (!r) { - return (unlikely(PyErr_Occurred())) ? -1 : 0; - } else { - Py_DECREF(r); - return 1; - } -} -#endif - -/* ImportImpl (used by Import) */ -static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) { - PyObject *imported_module = PyImport_GetModule(qualname); - if (unlikely(!imported_module)) { - *module = NULL; - if (PyErr_Occurred()) { - return -1; - } - return 0; - } - *module = imported_module; - return 1; -} -static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) { - PyObject *imported_module; - PyObject *top_level_package_name; - Py_ssize_t i; - int status, module_found; - Py_ssize_t dot_index; - module_found = __Pyx__Import_GetModule(qualname, &imported_module); - if (unlikely(!module_found || module_found == -1)) { - *module = NULL; - return module_found; - } - if (imported_names) { - for (i = 0; i < len_imported_names; i++) { - PyObject *imported_name = imported_names[i]; -#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 - int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name); -#else - int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name); - if (unlikely(has_imported_attribute == -1)) goto error; -#endif - if (!has_imported_attribute) { - goto not_found; - } - } - *module = imported_module; - return 1; - } - dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1); - if (dot_index == -1) { - *module = imported_module; - return 1; - } - if (unlikely(dot_index == -2)) goto error; - top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index); - if (unlikely(!top_level_package_name)) goto error; - Py_DECREF(imported_module); - status = __Pyx__Import_GetModule(top_level_package_name, module); - Py_DECREF(top_level_package_name); - return status; -error: - Py_DECREF(imported_module); - *module = NULL; - return -1; -not_found: - Py_DECREF(imported_module); - *module = NULL; - return 0; -} -static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) { +/* Import */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *module = 0; PyObject *empty_dict = 0; - PyObject *from_list = 0; - int module_found; - if (!qualname) { - qualname = name; - } - module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module); - if (likely(module_found == 1)) { - return module; - } else if (unlikely(module_found == -1)) { - return NULL; - } + PyObject *empty_list = 0; empty_dict = PyDict_New(); if (unlikely(!empty_dict)) goto bad; - if (imported_names) { -#if CYTHON_COMPILING_IN_CPYTHON - from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names); - if (unlikely(!from_list)) - goto bad; -#else - from_list = PyList_New(len_imported_names); - if (unlikely(!from_list)) goto bad; - for (Py_ssize_t i=0; i__pyx_d, empty_dict, from_list, 1); if (unlikely(!module)) { if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) goto bad; @@ -25203,17 +25473,126 @@ static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, } if (!module) { module = PyImport_ImportModuleLevelObject( - name, moddict, empty_dict, from_list, level); + name, __pyx_mstate_global->__pyx_d, empty_dict, from_list, level); } bad: - Py_XDECREF(from_list); Py_XDECREF(empty_dict); + Py_XDECREF(empty_list); return module; } -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level) { - return __Pyx__Import(name, imported_names, len_imported_names, qualname, __pyx_mstate_global->__pyx_d, level); +/* ImportDottedModule */ +static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { + PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; + Py_ssize_t size; + if (unlikely(PyErr_Occurred())) { + PyErr_Clear(); + } +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(parts_tuple); +#else + size = PyTuple_Size(parts_tuple); + if (size < 0) goto bad; +#endif + if (likely(size == count)) { + partial_name = name; + } else { + slice = PySequence_GetSlice(parts_tuple, 0, count); + if (unlikely(!slice)) + goto bad; + sep = PyUnicode_FromStringAndSize(".", 1); + if (unlikely(!sep)) + goto bad; + partial_name = PyUnicode_Join(sep, slice); + } + PyErr_Format( + PyExc_ModuleNotFoundError, + "No module named '%U'", partial_name); +bad: + Py_XDECREF(sep); + Py_XDECREF(slice); + Py_XDECREF(partial_name); + return NULL; +} +static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { + PyObject *imported_module; +#if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ + CYTHON_COMPILING_IN_GRAAL + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + return NULL; + imported_module = __Pyx_PyDict_GetItemStr(modules, name); + Py_XINCREF(imported_module); +#else + imported_module = PyImport_GetModule(name); +#endif + return imported_module; +} +static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { + Py_ssize_t i, nparts; +#if CYTHON_ASSUME_SAFE_SIZE + nparts = PyTuple_GET_SIZE(parts_tuple); +#else + nparts = PyTuple_Size(parts_tuple); + if (nparts < 0) return NULL; +#endif + for (i=1; i < nparts && module; i++) { + PyObject *part, *submodule; +#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + part = PyTuple_GET_ITEM(parts_tuple, i); +#else + part = __Pyx_PySequence_ITEM(parts_tuple, i); + if (!part) return NULL; +#endif + submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); +#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(part); +#endif + Py_DECREF(module); + module = submodule; + } + if (unlikely(!module)) { + return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); + } + return module; +} +static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { + PyObject *imported_module; + PyObject *module = __Pyx_Import(name, NULL, 0); + if (!parts_tuple || unlikely(!module)) + return module; + imported_module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(imported_module)) { + Py_DECREF(module); + return imported_module; + } + PyErr_Clear(); + return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); +} +static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { +#if CYTHON_COMPILING_IN_CPYTHON + PyObject *module = __Pyx__ImportDottedModule_Lookup(name); + if (likely(module)) { + PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_mstate_global->__pyx_n_u_spec); + if (likely(spec)) { + PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_mstate_global->__pyx_n_u_initializing); + if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { + Py_DECREF(spec); + spec = NULL; + } + Py_XDECREF(unsafe); + } + if (likely(!spec)) { + PyErr_Clear(); + return module; + } + Py_DECREF(spec); + Py_DECREF(module); + } else if (PyErr_Occurred()) { + PyErr_Clear(); + } +#endif + return __Pyx__ImportDottedModule(name, parts_tuple); } /* FastTypeChecks */ @@ -25304,7 +25683,6 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj #endif /* PySequenceMultiply */ -#if CYTHON_USE_TYPE_SLOTS static PyObject* __Pyx_PySequence_Multiply_Generic(PyObject *seq, Py_ssize_t mul) { PyObject *result, *pymul = PyLong_FromSsize_t(mul); if (unlikely(!pymul)) @@ -25314,14 +25692,16 @@ static PyObject* __Pyx_PySequence_Multiply_Generic(PyObject *seq, Py_ssize_t mul return result; } static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul) { +#if CYTHON_USE_TYPE_SLOTS PyTypeObject *type = Py_TYPE(seq); if (likely(type->tp_as_sequence && type->tp_as_sequence->sq_repeat)) { return type->tp_as_sequence->sq_repeat(seq, mul); - } else { + } else +#endif + { return __Pyx_PySequence_Multiply_Generic(seq, mul); } } -#endif /* PyObjectFormatAndDecref */ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { @@ -25374,29 +25754,25 @@ static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { return r; } static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, - int wraparound, int boundscheck, int unsafe_shared) { - CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS + CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); - if ((CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared))) { - Py_INCREF(v); - return PyList_SetItem(o, n, v); - } else if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { - PyObject* old; + if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { Py_INCREF(v); - old = PyList_GET_ITEM(o, n); +#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + PyList_SetItem(o, n, v); +#else + PyObject* old = PyList_GET_ITEM(o, n); PyList_SET_ITEM(o, n, v); Py_DECREF(old); - return 0; - } - } else #endif -#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY - { + return 1; + } + } else { PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (!is_list && mm && mm->mp_ass_subscript) { + if (mm && mm->mp_ass_subscript) { int r; PyObject *key = PyLong_FromSsize_t(i); if (unlikely(!key)) return -1; @@ -25404,7 +25780,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje Py_DECREF(key); return r; } - if (is_list || likely(sm && sm->sq_ass_item)) { + if (likely(sm && sm->sq_ass_item)) { if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { Py_ssize_t l = sm->sq_length(o); if (likely(l >= 0)) { @@ -25419,12 +25795,11 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje } } #else - if (is_list || !PyMapping_Check(o)) { + if (is_list || !PyMapping_Check(o)) + { return PySequence_SetItem(o, i, v); } #endif - (void)wraparound; - (void)boundscheck; return __Pyx_SetItemInt_Generic(o, PyLong_FromSsize_t(i), v); } @@ -25444,7 +25819,65 @@ static CYTHON_INLINE long __Pyx_div_long(long a, long b, int b_is_constant) { return q - adapt_python; } -/* IsLittleEndian (used by BufferFormatCheck) */ +/* ImportFrom */ +static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { + PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); + if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { + const char* module_name_str = 0; + PyObject* module_name = 0; + PyObject* module_dot = 0; + PyObject* full_name = 0; + PyErr_Clear(); + module_name_str = PyModule_GetName(module); + if (unlikely(!module_name_str)) { goto modbad; } + module_name = PyUnicode_FromString(module_name_str); + if (unlikely(!module_name)) { goto modbad; } + module_dot = PyUnicode_Concat(module_name, __pyx_mstate_global->__pyx_kp_u__2); + if (unlikely(!module_dot)) { goto modbad; } + full_name = PyUnicode_Concat(module_dot, name); + if (unlikely(!full_name)) { goto modbad; } + #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ + CYTHON_COMPILING_IN_GRAAL + { + PyObject *modules = PyImport_GetModuleDict(); + if (unlikely(!modules)) + goto modbad; + value = PyObject_GetItem(modules, full_name); + } + #else + value = PyImport_GetModule(full_name); + #endif + modbad: + Py_XDECREF(full_name); + Py_XDECREF(module_dot); + Py_XDECREF(module_name); + } + if (unlikely(!value)) { + PyErr_Format(PyExc_ImportError, "cannot import name %S", name); + } + return value; +} + +/* HasAttr */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!PyUnicode_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (!r) { + return (unlikely(PyErr_Occurred())) ? -1 : 0; + } else { + Py_DECREF(r); + return 1; + } +} +#endif + +/* IsLittleEndian */ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) { union { @@ -25455,7 +25888,7 @@ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) return S.u8[0] == 4; } -/* BufferFormatCheck (used by BufferGetAndValidate) */ +/* BufferFormatCheck */ static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, const __Pyx_TypeInfo* type) { @@ -25558,7 +25991,9 @@ static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { case 'h': case 'H': return sizeof(short); case 'i': case 'I': return sizeof(int); case 'l': case 'L': return sizeof(long); + #ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(PY_LONG_LONG); + #endif case 'f': return sizeof(float) * (is_complex ? 2 : 1); case 'd': return sizeof(double) * (is_complex ? 2 : 1); case 'g': return sizeof(long double) * (is_complex ? 2 : 1); @@ -25576,7 +26011,9 @@ typedef struct { char c; float x; } __Pyx_st_float; typedef struct { char c; double x; } __Pyx_st_double; typedef struct { char c; long double x; } __Pyx_st_longdouble; typedef struct { char c; void *x; } __Pyx_st_void_p; +#ifdef HAVE_LONG_LONG typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; +#endif static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) { CYTHON_UNUSED_VAR(is_complex); switch (ch) { @@ -25584,7 +26021,9 @@ static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) { case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); +#ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); +#endif case 'f': return sizeof(__Pyx_st_float) - sizeof(float); case 'd': return sizeof(__Pyx_st_double) - sizeof(double); case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); @@ -25605,7 +26044,9 @@ typedef struct { float x; char c; } __Pyx_pad_float; typedef struct { double x; char c; } __Pyx_pad_double; typedef struct { long double x; char c; } __Pyx_pad_longdouble; typedef struct { void *x; char c; } __Pyx_pad_void_p; +#ifdef HAVE_LONG_LONG typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; +#endif static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, int is_complex) { CYTHON_UNUSED_VAR(is_complex); switch (ch) { @@ -25613,7 +26054,9 @@ static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, int is_complex) { case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); +#ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); +#endif case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); @@ -25957,4940 +26400,4726 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha /* BufferGetAndValidate */ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (unlikely(info->buf == NULL)) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - PyBuffer_Release(info); - } - static void __Pyx_ZeroBuffer(Py_buffer* buf) { - buf->buf = NULL; - buf->obj = NULL; - buf->strides = __Pyx_zeros; - buf->shape = __Pyx_zeros; - buf->suboffsets = __Pyx_minusones; - } - static int __Pyx__GetBufferAndValidate( - Py_buffer* buf, PyObject* obj, const __Pyx_TypeInfo* dtype, int flags, - int nd, int cast, __Pyx_BufFmt_StackElem* stack) - { - buf->buf = NULL; - if (unlikely(PyObject_GetBuffer(obj, buf, flags) == -1)) { - __Pyx_ZeroBuffer(buf); - return -1; - } - if (unlikely(buf->ndim != nd)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - nd, buf->ndim); - goto fail; - } - if (!cast) { - __Pyx_BufFmt_Context ctx; - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; - } - if (unlikely((size_t)buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", - buf->itemsize, (buf->itemsize > 1) ? "s" : "", - dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; - return 0; - fail:; - __Pyx_SafeReleaseBuffer(buf); + if (unlikely(info->buf == NULL)) return; + if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; + PyBuffer_Release(info); +} +static void __Pyx_ZeroBuffer(Py_buffer* buf) { + buf->buf = NULL; + buf->obj = NULL; + buf->strides = __Pyx_zeros; + buf->shape = __Pyx_zeros; + buf->suboffsets = __Pyx_minusones; +} +static int __Pyx__GetBufferAndValidate( + Py_buffer* buf, PyObject* obj, const __Pyx_TypeInfo* dtype, int flags, + int nd, int cast, __Pyx_BufFmt_StackElem* stack) +{ + buf->buf = NULL; + if (unlikely(PyObject_GetBuffer(obj, buf, flags) == -1)) { + __Pyx_ZeroBuffer(buf); return -1; } - + if (unlikely(buf->ndim != nd)) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + nd, buf->ndim); + goto fail; + } + if (!cast) { + __Pyx_BufFmt_Context ctx; + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; + } + if (unlikely((size_t)buf->itemsize != dtype->size)) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", + buf->itemsize, (buf->itemsize > 1) ? "s" : "", + dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; + return 0; +fail:; + __Pyx_SafeReleaseBuffer(buf); + return -1; +} + /* DictGetItem */ #if !CYTHON_COMPILING_IN_PYPY - static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error - if (unlikely(PyTuple_Check(key))) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) { - PyErr_SetObject(PyExc_KeyError, args); - Py_DECREF(args); - } - } else { - PyErr_SetObject(PyExc_KeyError, key); - } - } - return value; - } - #endif - +static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return value; +} +#endif + /* PyObjectVectorCallKwBuilder */ #if CYTHON_VECTORCALL - static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { - (void)__Pyx_PyObject_FastCallDict; - if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; - Py_INCREF(key); - args[n] = value; - return 0; - } - CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { - (void)__Pyx_VectorcallBuilder_AddArgStr; - if (unlikely(!PyUnicode_Check(key))) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - return -1; - } - return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); - } - static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { - PyObject *pyKey = PyUnicode_FromString(key); - if (!pyKey) return -1; - return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); - } - #else // CYTHON_VECTORCALL - CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { - if (unlikely(!PyUnicode_Check(key))) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - return -1; - } - return PyDict_SetItem(builder, key, value); - } - #endif - +static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_PyObject_FastCallDict; + if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; + Py_INCREF(key); + args[n] = value; + return 0; +} +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_VectorcallBuilder_AddArgStr; + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); +} +static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + PyObject *pyKey = PyUnicode_FromString(key); + if (!pyKey) return -1; + return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); +} +#else // CYTHON_VECTORCALL +CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return PyDict_SetItem(builder, key, value); +} +#endif + /* BufferFallbackError */ static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, - "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); - } - -/* AllocateExtensionType */ - static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final) { - if (is_final || likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - allocfunc alloc_func = __Pyx_PyType_GetSlot(t, tp_alloc, allocfunc); - return alloc_func(t, 0); - } else { - newfunc tp_new = __Pyx_PyType_TryGetSlot(&PyBaseObject_Type, tp_new, newfunc); - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 - if (!tp_new) { - PyObject *new_str = PyUnicode_FromString("__new__"); - if (likely(new_str)) { - PyObject *o = PyObject_CallMethodObjArgs((PyObject *)&PyBaseObject_Type, new_str, t, NULL); - Py_DECREF(new_str); - return o; - } else - return NULL; - } else - #endif - return tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); - } - } - + PyErr_SetString(PyExc_ValueError, + "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); +} + /* CallTypeTraverse */ #if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) - #else - static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 - if (__Pyx_get_runtime_version() < 0x03090000) return 0; - #endif - if (!always_call) { - PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); - unsigned long flags = PyType_GetFlags(base); - if (flags & Py_TPFLAGS_HEAPTYPE) { - return 0; - } - } - Py_VISIT((PyObject*)Py_TYPE(o)); - return 0; - } - #endif - -/* LimitedApiGetTypeDict (used by SetItemOnTypeDict) */ - #if CYTHON_COMPILING_IN_LIMITED_API - static Py_ssize_t __Pyx_GetTypeDictOffset(void) { - PyObject *tp_dictoffset_o; - Py_ssize_t tp_dictoffset; - tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); - if (unlikely(!tp_dictoffset_o)) return -1; - tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); - Py_DECREF(tp_dictoffset_o); - if (unlikely(tp_dictoffset == 0)) { - PyErr_SetString( - PyExc_TypeError, - "'type' doesn't have a dictoffset"); - return -1; - } else if (unlikely(tp_dictoffset < 0)) { - PyErr_SetString( - PyExc_TypeError, - "'type' has an unexpected negative dictoffset. " - "Please report this as Cython bug"); - return -1; - } - return tp_dictoffset; - } - static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { - static Py_ssize_t tp_dictoffset = 0; - if (unlikely(tp_dictoffset == 0)) { - tp_dictoffset = __Pyx_GetTypeDictOffset(); - if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { - tp_dictoffset = 0; // try again next time? - return NULL; - } - } - return *(PyObject**)((char*)tp + tp_dictoffset); - } - #endif - -/* SetItemOnTypeDict (used by FixUpExtensionType) */ - static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) { - int result; - PyObject *tp_dict; +#else +static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 + if (__Pyx_get_runtime_version() < 0x03090000) return 0; + #endif + if (!always_call) { + PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); + unsigned long flags = PyType_GetFlags(base); + if (flags & Py_TPFLAGS_HEAPTYPE) { + return 0; + } + } + Py_VISIT((PyObject*)Py_TYPE(o)); + return 0; +} +#endif + +/* LimitedApiGetTypeDict */ #if CYTHON_COMPILING_IN_LIMITED_API - tp_dict = __Pyx_GetTypeDict(tp); - if (unlikely(!tp_dict)) return -1; - #else - tp_dict = tp->tp_dict; - #endif - result = PyDict_SetItem(tp_dict, k, v); - if (likely(!result)) { - PyType_Modified(tp); - if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { - PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); - if (!setNameResult) return -1; - Py_DECREF(setNameResult); - } - } - return result; - } - +static Py_ssize_t __Pyx_GetTypeDictOffset(void) { + PyObject *tp_dictoffset_o; + Py_ssize_t tp_dictoffset; + tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); + if (unlikely(!tp_dictoffset_o)) return -1; + tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); + Py_DECREF(tp_dictoffset_o); + if (unlikely(tp_dictoffset == 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' doesn't have a dictoffset"); + return -1; + } else if (unlikely(tp_dictoffset < 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' has an unexpected negative dictoffset. " + "Please report this as Cython bug"); + return -1; + } + return tp_dictoffset; +} +static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { + static Py_ssize_t tp_dictoffset = 0; + if (unlikely(tp_dictoffset == 0)) { + tp_dictoffset = __Pyx_GetTypeDictOffset(); + if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { + tp_dictoffset = 0; // try again next time? + return NULL; + } + } + return *(PyObject**)((char*)tp + tp_dictoffset); +} +#endif + +/* SetItemOnTypeDict */ + static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) { + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_SetItem(tp_dict, k, v); + if (likely(!result)) { + PyType_Modified(tp); + if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { + PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); + if (!setNameResult) return -1; + Py_DECREF(setNameResult); + } + } + return result; +} + /* FixUpExtensionType */ static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { - #if __PYX_LIMITED_VERSION_HEX > 0x030900B1 - CYTHON_UNUSED_VAR(spec); - CYTHON_UNUSED_VAR(type); - CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); - #else - const PyType_Slot *slot = spec->slots; - int changed = 0; - #if !CYTHON_COMPILING_IN_LIMITED_API - while (slot && slot->slot && slot->slot != Py_tp_members) - slot++; - if (slot && slot->slot == Py_tp_members) { - #if !CYTHON_COMPILING_IN_CPYTHON - const - #endif // !CYTHON_COMPILING_IN_CPYTHON) - PyMemberDef *memb = (PyMemberDef*) slot->pfunc; - while (memb && memb->name) { - if (memb->name[0] == '_' && memb->name[1] == '_') { - if (strcmp(memb->name, "__weaklistoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_weaklistoffset = memb->offset; - changed = 1; - } - else if (strcmp(memb->name, "__dictoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_dictoffset = memb->offset; - changed = 1; - } - #if CYTHON_METH_FASTCALL - else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_vectorcall_offset = memb->offset; - changed = 1; - } - #endif // CYTHON_METH_FASTCALL - #if !CYTHON_COMPILING_IN_PYPY - else if (strcmp(memb->name, "__module__") == 0) { - PyObject *descr; - assert(memb->type == T_OBJECT); - assert(memb->flags == 0 || memb->flags == READONLY); - descr = PyDescr_NewMember(type, memb); - if (unlikely(!descr)) - return -1; - int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); - Py_DECREF(descr); - if (unlikely(set_item_result < 0)) { - return -1; - } - changed = 1; - } - #endif // !CYTHON_COMPILING_IN_PYPY - } - memb++; - } - } - #endif // !CYTHON_COMPILING_IN_LIMITED_API - #if !CYTHON_COMPILING_IN_PYPY - slot = spec->slots; - while (slot && slot->slot && slot->slot != Py_tp_getset) - slot++; - if (slot && slot->slot == Py_tp_getset) { - PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; - while (getset && getset->name) { - if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { - PyObject *descr = PyDescr_NewGetSet(type, getset); - if (unlikely(!descr)) - return -1; - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *pyname = PyUnicode_FromString(getset->name); - if (unlikely(!pyname)) { - Py_DECREF(descr); - return -1; - } - int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); - Py_DECREF(pyname); - #else - CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); - int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); - #endif - Py_DECREF(descr); - if (unlikely(set_item_result < 0)) { - return -1; - } - changed = 1; - } - ++getset; - } - } - #else - CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); - #endif // !CYTHON_COMPILING_IN_PYPY - if (changed) - PyType_Modified(type); - #endif // PY_VERSION_HEX > 0x030900B1 - return 0; - } - -/* PyObjectCallNoArg (used by PyObjectCallMethod0) */ +#if __PYX_LIMITED_VERSION_HEX > 0x030900B1 + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); +#else + const PyType_Slot *slot = spec->slots; + int changed = 0; +#if !CYTHON_COMPILING_IN_LIMITED_API + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { +#if !CYTHON_COMPILING_IN_CPYTHON + const +#endif // !CYTHON_COMPILING_IN_CPYTHON) + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } +#if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); +#if PY_VERSION_HEX >= 0x030800b4 + type->tp_vectorcall_offset = memb->offset; +#else + type->tp_print = (printfunc) memb->offset; +#endif + changed = 1; + } +#endif // CYTHON_METH_FASTCALL +#if !CYTHON_COMPILING_IN_PYPY + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } +#endif // !CYTHON_COMPILING_IN_PYPY + } + memb++; + } + } +#endif // !CYTHON_COMPILING_IN_LIMITED_API +#if !CYTHON_COMPILING_IN_PYPY + slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_getset) + slot++; + if (slot && slot->slot == Py_tp_getset) { + PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; + while (getset && getset->name) { + if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { + PyObject *descr = PyDescr_NewGetSet(type, getset); + if (unlikely(!descr)) + return -1; + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *pyname = PyUnicode_FromString(getset->name); + if (unlikely(!pyname)) { + Py_DECREF(descr); + return -1; + } + int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); + Py_DECREF(pyname); + #else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + #endif + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + ++getset; + } + } +#endif // !CYTHON_COMPILING_IN_PYPY + if (changed) + PyType_Modified(type); +#endif // PY_VERSION_HEX > 0x030900B1 + return 0; +} + +/* PyObjectCallNoArg */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { - PyObject *arg[2] = {NULL, NULL}; - return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); - } - -/* PyObjectGetMethod (used by PyObjectCallMethod0) */ - #if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetMethod */ static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { - PyObject *attr; - #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP - __Pyx_TypeName type_name; - PyTypeObject *tp = Py_TYPE(obj); - PyObject *descr; - descrgetfunc f = NULL; - PyObject **dictptr, *dict; - int meth_found = 0; - assert (*method == NULL); - if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; - } - if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { - return 0; - } - descr = _PyType_Lookup(tp, name); - if (likely(descr != NULL)) { - Py_INCREF(descr); - #if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR - if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) - #else - #ifdef __Pyx_CyFunction_USED - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) - #else - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) - #endif - #endif - { - meth_found = 1; - } else { - f = Py_TYPE(descr)->tp_descr_get; - if (f != NULL && PyDescr_IsData(descr)) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - } - } - dictptr = _PyObject_GetDictPtr(obj); - if (dictptr != NULL && (dict = *dictptr) != NULL) { - Py_INCREF(dict); - attr = __Pyx_PyDict_GetItemStr(dict, name); - if (attr != NULL) { - Py_INCREF(attr); - Py_DECREF(dict); - Py_XDECREF(descr); - goto try_unpack; - } - Py_DECREF(dict); - } - if (meth_found) { - *method = descr; - return 1; - } - if (f != NULL) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - if (likely(descr != NULL)) { - *method = descr; - return 0; - } - type_name = __Pyx_PyType_GetFullyQualifiedName(tp); - PyErr_Format(PyExc_AttributeError, - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", - type_name, name); - __Pyx_DECREF_TypeName(type_name); - return 0; - #else - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; - #endif - try_unpack: - #if CYTHON_UNPACK_METHODS - if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { - PyObject *function = PyMethod_GET_FUNCTION(attr); - Py_INCREF(function); - Py_DECREF(attr); - *method = function; - return 1; - } - #endif - *method = attr; - return 0; - } - #endif - -/* PyObjectCallMethod0 (used by PyType_Ready) */ + PyObject *attr; +#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); +#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) +#else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif +#endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetFullyQualifiedName(tp); + PyErr_Format(PyExc_AttributeError, + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); + __Pyx_DECREF_TypeName(type_name); + return 0; +#else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; +#endif +try_unpack: +#if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } +#endif + *method = attr; + return 0; +} + +/* PyObjectCallMethod0 */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { - #if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) - PyObject *args[1] = {obj}; - (void) __Pyx_PyObject_CallOneArg; - (void) __Pyx_PyObject_CallNoArg; - return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); - #else - PyObject *method = NULL, *result = NULL; - int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); - if (likely(is_method)) { - result = __Pyx_PyObject_CallOneArg(method, obj); - Py_DECREF(method); - return result; - } - if (unlikely(!method)) goto bad; - result = __Pyx_PyObject_CallNoArg(method); - Py_DECREF(method); - bad: - return result; - #endif - } - -/* ValidateBasesTuple (used by PyType_Ready) */ +#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[1] = {obj}; + (void) __Pyx_PyObject_GetMethod; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_CallNoArg; + return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); +#else + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); +bad: + return result; +#endif +} + +/* ValidateBasesTuple */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS - static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { - Py_ssize_t i, n; - #if CYTHON_ASSUME_SAFE_SIZE - n = PyTuple_GET_SIZE(bases); - #else - n = PyTuple_Size(bases); - if (unlikely(n < 0)) return -1; - #endif - for (i = 1; i < n; i++) - { - PyTypeObject *b; - #if CYTHON_AVOID_BORROWED_REFS - PyObject *b0 = PySequence_GetItem(bases, i); - if (!b0) return -1; - #elif CYTHON_ASSUME_SAFE_MACROS - PyObject *b0 = PyTuple_GET_ITEM(bases, i); - #else - PyObject *b0 = PyTuple_GetItem(bases, i); - if (!b0) return -1; - #endif - b = (PyTypeObject*) b0; - if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) - { - __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); - PyErr_Format(PyExc_TypeError, - "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); - __Pyx_DECREF_TypeName(b_name); - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); - #endif - return -1; - } - if (dictoffset == 0) - { - Py_ssize_t b_dictoffset = 0; - #if CYTHON_USE_TYPE_SLOTS - b_dictoffset = b->tp_dictoffset; - #else - PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); - if (!py_b_dictoffset) goto dictoffset_return; - b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); - Py_DECREF(py_b_dictoffset); - if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; - #endif - if (b_dictoffset) { - { - __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); - PyErr_Format(PyExc_TypeError, - "extension type '%.200s' has no __dict__ slot, " - "but base type '" __Pyx_FMT_TYPENAME "' has: " - "either add 'cdef dict __dict__' to the extension type " - "or add '__slots__ = [...]' to the base type", - type_name, b_name); - __Pyx_DECREF_TypeName(b_name); - } - #if !CYTHON_USE_TYPE_SLOTS - dictoffset_return: - #endif - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); - #endif - return -1; - } - } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); - #endif - } - return 0; - } - #endif - +static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; +#if CYTHON_ASSUME_SAFE_SIZE + n = PyTuple_GET_SIZE(bases); +#else + n = PyTuple_Size(bases); + if (unlikely(n < 0)) return -1; +#endif + for (i = 1; i < n; i++) + { + PyTypeObject *b; +#if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; +#elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); +#else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; +#endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; +#if CYTHON_USE_TYPE_SLOTS + b_dictoffset = b->tp_dictoffset; +#else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; +#endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } +#if !CYTHON_USE_TYPE_SLOTS + dictoffset_return: +#endif +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + return -1; + } + } +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); +#endif + } + return 0; +} +#endif + /* PyType_Ready */ CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) { - while (t) { - PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); - if (bases) { - return 1; - } - t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); - } - return 0; - } - static int __Pyx_PyType_Ready(PyTypeObject *t) { - #if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) - (void)__Pyx_PyObject_CallMethod0; - #if CYTHON_USE_TYPE_SPECS - (void)__Pyx_validate_bases_tuple; - #endif - return PyType_Ready(t); - #else - int r; - if (!__Pyx_PyType_HasMultipleInheritance(t)) { - return PyType_Ready(t); - } - PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); - if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) - return -1; - #if !defined(PYSTON_MAJOR_VERSION) - { - int gc_was_enabled; - #if PY_VERSION_HEX >= 0x030A00b1 - gc_was_enabled = PyGC_Disable(); - (void)__Pyx_PyObject_CallMethod0; - #else - PyObject *ret, *py_status; - PyObject *gc = NULL; - #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ - !CYTHON_COMPILING_IN_GRAAL - gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); - #endif - if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); - if (unlikely(!gc)) return -1; - py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); - if (unlikely(!py_status)) { - Py_DECREF(gc); - return -1; - } - gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); - Py_DECREF(py_status); - if (gc_was_enabled > 0) { - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); - if (unlikely(!ret)) { - Py_DECREF(gc); - return -1; - } - Py_DECREF(ret); - } else if (unlikely(gc_was_enabled == -1)) { - Py_DECREF(gc); - return -1; - } - #endif - t->tp_flags |= Py_TPFLAGS_HEAPTYPE; - #if PY_VERSION_HEX >= 0x030A0000 - t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; - #endif - #else - (void)__Pyx_PyObject_CallMethod0; - #endif - r = PyType_Ready(t); - #if !defined(PYSTON_MAJOR_VERSION) - t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; - #if PY_VERSION_HEX >= 0x030A00b1 - if (gc_was_enabled) - PyGC_Enable(); - #else - if (gc_was_enabled) { - PyObject *tp, *v, *tb; - PyErr_Fetch(&tp, &v, &tb); - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); - if (likely(ret || r == -1)) { - Py_XDECREF(ret); - PyErr_Restore(tp, v, tb); - } else { - Py_XDECREF(tp); - Py_XDECREF(v); - Py_XDECREF(tb); - r = -1; - } - } - Py_DECREF(gc); - #endif - } - #endif - return r; - #endif - } - + while (t) { + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases) { + return 1; + } + t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); + } + return 0; +} +static int __Pyx_PyType_Ready(PyTypeObject *t) { +#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; +#if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; +#endif + return PyType_Ready(t); +#else + int r; + if (!__Pyx_PyType_HasMultipleInheritance(t)) { + return PyType_Ready(t); + } + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; +#if !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ + !CYTHON_COMPILING_IN_GRAAL + gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; +#if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; +#endif +#else + (void)__Pyx_PyObject_CallMethod0; +#endif + r = PyType_Ready(t); +#if !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } +#endif + return r; +#endif +} + /* SetVTable */ static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { - PyObject *ob = PyCapsule_New(vtable, 0, 0); - if (unlikely(!ob)) - goto bad; - #if CYTHON_COMPILING_IN_LIMITED_API - if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) - #else - if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) - #endif - goto bad; - Py_DECREF(ob); - return 0; - bad: - Py_XDECREF(ob); - return -1; - } - -/* GetVTable (used by MergeVTables) */ - static void* __Pyx_GetVtable(PyTypeObject *type) { - void* ptr; - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); - #else - PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); - #endif - if (!ob) - goto bad; - ptr = PyCapsule_GetPointer(ob, 0); - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; - bad: - Py_XDECREF(ob); - return NULL; - } - + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; +#if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) +#endif + goto bad; + Py_DECREF(ob); + return 0; +bad: + Py_XDECREF(ob); + return -1; +} + +/* GetVTable */ + static void* __Pyx_GetVtable(PyTypeObject *type) { + void* ptr; +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); +#endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; +bad: + Py_XDECREF(ob); + return NULL; +} + /* MergeVTables */ static int __Pyx_MergeVtables(PyTypeObject *type) { - int i=0; - Py_ssize_t size; - void** base_vtables; - __Pyx_TypeName tp_base_name = NULL; - __Pyx_TypeName base_name = NULL; - void* unknown = (void*)-1; - PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); - int base_depth = 0; - { - PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - while (base) { - base_depth += 1; - base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); - } - } - base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); - base_vtables[0] = unknown; - #if CYTHON_COMPILING_IN_LIMITED_API - size = PyTuple_Size(bases); - if (size < 0) goto other_failure; - #else - size = PyTuple_GET_SIZE(bases); - #endif - for (i = 1; i < size; i++) { - PyObject *basei; - void* base_vtable; - #if CYTHON_AVOID_BORROWED_REFS - basei = PySequence_GetItem(bases, i); - if (unlikely(!basei)) goto other_failure; - #elif !CYTHON_ASSUME_SAFE_MACROS - basei = PyTuple_GetItem(bases, i); - if (unlikely(!basei)) goto other_failure; - #else - basei = PyTuple_GET_ITEM(bases, i); - #endif - base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(basei); - #endif - if (base_vtable != NULL) { - int j; - PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - for (j = 0; j < base_depth; j++) { - if (base_vtables[j] == unknown) { - base_vtables[j] = __Pyx_GetVtable(base); - base_vtables[j + 1] = unknown; - } - if (base_vtables[j] == base_vtable) { - break; - } else if (base_vtables[j] == NULL) { - goto bad; - } - base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); - } - } - } - PyErr_Clear(); - PyMem_Free(base_vtables); - return 0; - bad: - { - PyTypeObject* basei = NULL; - PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); - #if CYTHON_AVOID_BORROWED_REFS - basei = (PyTypeObject*)PySequence_GetItem(bases, i); - if (unlikely(!basei)) goto really_bad; - #elif !CYTHON_ASSUME_SAFE_MACROS - basei = (PyTypeObject*)PyTuple_GetItem(bases, i); - if (unlikely(!basei)) goto really_bad; - #else - basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); - #endif - base_name = __Pyx_PyType_GetFullyQualifiedName(basei); - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(basei); - #endif - } - PyErr_Format(PyExc_TypeError, - "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); - #if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS - really_bad: // bad has failed! - #endif - __Pyx_DECREF_TypeName(tp_base_name); - __Pyx_DECREF_TypeName(base_name); - #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS - other_failure: - #endif - PyMem_Free(base_vtables); - return -1; - } - -/* DelItemOnTypeDict (used by SetupReduce) */ + int i=0; + Py_ssize_t size; + void** base_vtables; + __Pyx_TypeName tp_base_name = NULL; + __Pyx_TypeName base_name = NULL; + void* unknown = (void*)-1; + PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); + int base_depth = 0; + { + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + while (base) { + base_depth += 1; + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; +#if CYTHON_COMPILING_IN_LIMITED_API + size = PyTuple_Size(bases); + if (size < 0) goto other_failure; +#else + size = PyTuple_GET_SIZE(bases); +#endif + for (i = 1; i < size; i++) { + PyObject *basei; + void* base_vtable; +#if CYTHON_AVOID_BORROWED_REFS + basei = PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; +#else + basei = PyTuple_GET_ITEM(bases, i); +#endif + base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + if (base_vtable != NULL) { + int j; + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + } + PyErr_Clear(); + PyMem_Free(base_vtables); + return 0; +bad: + { + PyTypeObject* basei = NULL; + PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); +#if CYTHON_AVOID_BORROWED_REFS + basei = (PyTypeObject*)PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#elif !CYTHON_ASSUME_SAFE_MACROS + basei = (PyTypeObject*)PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; +#else + basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); +#endif + base_name = __Pyx_PyType_GetFullyQualifiedName(basei); +#if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); +#endif + } + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); +#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +really_bad: // bad has failed! +#endif + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); +#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS +other_failure: +#endif + PyMem_Free(base_vtables); + return -1; +} + +/* DelItemOnTypeDict */ static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) { - int result; - PyObject *tp_dict; - #if CYTHON_COMPILING_IN_LIMITED_API - tp_dict = __Pyx_GetTypeDict(tp); - if (unlikely(!tp_dict)) return -1; - #else - tp_dict = tp->tp_dict; - #endif - result = PyDict_DelItem(tp_dict, k); - if (likely(!result)) PyType_Modified(tp); - return result; - } - + int result; + PyObject *tp_dict; +#if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; +#else + tp_dict = tp->tp_dict; +#endif + result = PyDict_DelItem(tp_dict, k); + if (likely(!result)) PyType_Modified(tp); + return result; +} + /* SetupReduce */ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { - int ret; - PyObject *name_attr; - name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_2); - if (likely(name_attr)) { - ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); - } else { - ret = -1; - } - if (unlikely(ret < 0)) { - PyErr_Clear(); - ret = 0; - } - Py_XDECREF(name_attr); - return ret; - } - 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_mstate_global->__pyx_n_u_getstate); - #else - getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); - if (!getstate && PyErr_Occurred()) { - goto __PYX_BAD; - } - #endif - if (getstate) { - #if CYTHON_USE_PYTYPE_LOOKUP - object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); - #else - object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; - #else - object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; - #endif - reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; - if (reduce_ex == object_reduce_ex) { - #if CYTHON_USE_PYTYPE_LOOKUP - object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; - #else - object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; - #endif - reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; - if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { - reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); - if (likely(reduce_cython)) { - ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (reduce == object_reduce || PyErr_Occurred()) { - goto __PYX_BAD; - } - setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); - if (!setstate) PyErr_Clear(); - if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { - setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); - if (likely(setstate_cython)) { - ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (!setstate || PyErr_Occurred()) { - goto __PYX_BAD; - } - } - PyType_Modified((PyTypeObject*)type_obj); - } - } - goto __PYX_GOOD; - __PYX_BAD: - if (!PyErr_Occurred()) { - __Pyx_TypeName type_obj_name = - __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); - PyErr_Format(PyExc_RuntimeError, - "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); - __Pyx_DECREF_TypeName(type_obj_name); - } + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_2); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { ret = -1; - __PYX_GOOD: - #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); - Py_XDECREF(reduce_cython); - Py_XDECREF(setstate); - Py_XDECREF(setstate_cython); - return ret; - } - -/* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType_3_2_2 - #define __PYX_HAVE_RT_ImportType_3_2_2 - static PyTypeObject *__Pyx_ImportType_3_2_2(PyObject *module, const char *module_name, const char *class_name, - size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_2 check_size) - { - PyObject *result = 0; - Py_ssize_t basicsize; - Py_ssize_t itemsize; - #if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) - PyObject *py_basicsize; - PyObject *py_itemsize; - #endif - result = PyObject_GetAttrString(module, class_name); - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } - #if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) ) - basicsize = ((PyTypeObject *)result)->tp_basicsize; - itemsize = ((PyTypeObject *)result)->tp_itemsize; - #else - if (size == 0) { - return (PyTypeObject *)result; - } - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; - py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); - if (!py_itemsize) - goto bad; - itemsize = PyLong_AsSsize_t(py_itemsize); - Py_DECREF(py_itemsize); - py_itemsize = 0; - if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; - #endif - if (itemsize) { - if (size % alignment) { - alignment = size % alignment; - } - if (itemsize < (Py_ssize_t)alignment) - itemsize = (Py_ssize_t)alignment; - } - if ((size_t)(basicsize + itemsize) < size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize+itemsize); - goto bad; - } - if (check_size == __Pyx_ImportType_CheckSize_Error_3_2_2 && - ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd-%zd from PyObject", - module_name, class_name, size, basicsize, basicsize+itemsize); - goto bad; - } - else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_2_2 && (size_t)basicsize > size) { - if (PyErr_WarnFormat(NULL, 0, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize) < 0) { - goto bad; - } - } - return (PyTypeObject *)result; - bad: - Py_XDECREF(result); - return NULL; - } - #endif - -/* dict_setdefault (used by FetchCommonType) */ - static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) { - PyObject* value; - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000 - PyObject *args[] = {d, key, default_value}; - value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); - #elif CYTHON_COMPILING_IN_LIMITED_API - value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL); - #elif PY_VERSION_HEX >= 0x030d0000 - PyDict_SetDefaultRef(d, key, default_value, &value); - #else - value = PyDict_SetDefault(d, key, default_value); - if (unlikely(!value)) return NULL; - Py_INCREF(value); - #endif - return value; } - -/* AddModuleRef (used by FetchSharedCythonModule) */ - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) { - PyObject *module_dict = PyImport_GetModuleDict(); - PyObject *m; - if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) { - return NULL; + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; + } + Py_XDECREF(name_attr); + return ret; +} +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_mstate_global->__pyx_n_u_getstate); +#else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } +#endif + if (getstate) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); +#else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); + if (!object_getstate && PyErr_Occurred()) { + goto __PYX_BAD; } - if (m != NULL && PyModule_Check(m)) { - return m; +#endif + if (object_getstate != getstate) { + goto __PYX_GOOD; } - Py_XDECREF(m); - m = PyModule_NewObject(name); - if (m == NULL) - return NULL; - if (PyDict_CheckExact(module_dict)) { - PyObject *new_m; - (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m); - Py_DECREF(m); - return new_m; - } else { - if (PyObject_SetItem(module_dict, name, m) != 0) { - Py_DECREF(m); - return NULL; - } - return m; + } +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; +#endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { +#if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; +#endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); + if (likely(reduce_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); + if (likely(setstate_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); } } - static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { - PyObject *py_name = PyUnicode_FromString(name); - if (!py_name) return NULL; - PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name); - Py_DECREF(py_name); - return module; + goto __PYX_GOOD; +__PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; +__PYX_GOOD: +#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); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; +} + +/* TypeImport */ + #ifndef __PYX_HAVE_RT_ImportType_3_1_4 +#define __PYX_HAVE_RT_ImportType_3_1_4 +static PyTypeObject *__Pyx_ImportType_3_1_4(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_4 check_size) +{ + PyObject *result = 0; + Py_ssize_t basicsize; + Py_ssize_t itemsize; +#ifdef Py_LIMITED_API + PyObject *py_basicsize; + PyObject *py_itemsize; +#endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; } - #elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 - #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) - #else - static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { - PyObject *module = PyImport_AddModule(name); - Py_XINCREF(module); - return module; +#ifndef Py_LIMITED_API + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; +#else + if (size == 0) { + return (PyTypeObject *)result; } - #endif - -/* FetchSharedCythonModule (used by FetchCommonType) */ + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; +#endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_1_4 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_1_4 && (size_t)basicsize > size) { + if (PyErr_WarnFormat(NULL, 0, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize) < 0) { + goto bad; + } + } + return (PyTypeObject *)result; +bad: + Py_XDECREF(result); + return NULL; +} +#endif + +/* FetchSharedCythonModule */ static PyObject *__Pyx_FetchSharedCythonABIModule(void) { - return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); - } - -/* FetchCommonType (used by CommonTypesMetaclass) */ + return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); +} + +/* dict_setdefault */ + static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, + int is_safe_type) { + PyObject* value; + CYTHON_MAYBE_UNUSED_VAR(is_safe_type); +#if CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_CallMethod(d, "setdefault", "OO", key, default_value); +#elif PY_VERSION_HEX >= 0x030d0000 + PyDict_SetDefaultRef(d, key, default_value, &value); +#else + value = PyDict_SetDefault(d, key, default_value); + if (unlikely(!value)) return NULL; + Py_INCREF(value); +#endif + return value; +} + +/* FetchCommonType */ #if __PYX_LIMITED_VERSION_HEX < 0x030C0000 - static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { - PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); - if (result && metaclass) { - PyObject *old_tp = (PyObject*)Py_TYPE(result); - Py_INCREF((PyObject*)metaclass); - #if __PYX_LIMITED_VERSION_HEX >= 0x03090000 - Py_SET_TYPE(result, metaclass); - #else - result->ob_type = metaclass; - #endif - Py_DECREF(old_tp); - } - return result; - } - #else - #define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) - #endif - static int __Pyx_VerifyCachedType(PyObject *cached_type, - const char *name, - Py_ssize_t expected_basicsize) { - Py_ssize_t basicsize; - if (!PyType_Check(cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", name); - return -1; - } - if (expected_basicsize == 0) { - return 0; // size is inherited, nothing useful to check - } - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_basicsize; - py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); - if (unlikely(!py_basicsize)) return -1; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = NULL; - if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; - #else - basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; - #endif - if (basicsize != expected_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - name); - return -1; - } - return 0; - } - static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { - PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; - int get_item_ref_result; - const char* object_name = strrchr(spec->name, '.'); - object_name = object_name ? object_name+1 : spec->name; - py_object_name = PyUnicode_FromString(object_name); - if (!py_object_name) return NULL; - abi_module = __Pyx_FetchSharedCythonABIModule(); - if (!abi_module) goto done; - abi_module_dict = PyModule_GetDict(abi_module); - if (!abi_module_dict) goto done; - get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); - if (get_item_ref_result == 1) { - if (__Pyx_VerifyCachedType( +static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); + if (result && metaclass) { + PyObject *old_tp = (PyObject*)Py_TYPE(result); + Py_INCREF((PyObject*)metaclass); +#if __PYX_LIMITED_VERSION_HEX >= 0x03090000 + Py_SET_TYPE(result, metaclass); +#else + result->ob_type = metaclass; +#endif + Py_DECREF(old_tp); + } + return result; +} +#else +#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) +#endif +static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t expected_basicsize) { + Py_ssize_t basicsize; + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (expected_basicsize == 0) { + return 0; // size is inherited, nothing useful to check + } +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) return -1; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = NULL; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; +#else + basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; +#endif + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; +} +static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; + int get_item_ref_result; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + py_object_name = PyUnicode_FromString(object_name); + if (!py_object_name) return NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) goto done; + abi_module_dict = PyModule_GetDict(abi_module); + if (!abi_module_dict) goto done; + get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); + if (get_item_ref_result == 1) { + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else if (unlikely(get_item_ref_result == -1)) { + goto bad; + } + CYTHON_UNUSED_VAR(module); + cached_type = __Pyx_PyType_FromMetaclass(metaclass, abi_module, spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type, 1); + if (unlikely(new_cached_type != cached_type)) { + if (unlikely(!new_cached_type)) goto bad; + Py_DECREF(cached_type); + cached_type = new_cached_type; + if (__Pyx_VerifyCachedType( cached_type, object_name, spec->basicsize) < 0) { - goto bad; - } - goto done; - } else if (unlikely(get_item_ref_result == -1)) { - goto bad; - } - cached_type = __Pyx_PyType_FromMetaclass( - metaclass, - CYTHON_USE_MODULE_STATE ? module : abi_module, - spec, bases); - if (unlikely(!cached_type)) goto bad; - if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; - new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type); - if (unlikely(new_cached_type != cached_type)) { - if (unlikely(!new_cached_type)) goto bad; - Py_DECREF(cached_type); - cached_type = new_cached_type; - if (__Pyx_VerifyCachedType( - cached_type, - object_name, - spec->basicsize) < 0) { - goto bad; - } - goto done; - } else { - Py_DECREF(new_cached_type); - } - done: - Py_XDECREF(abi_module); - Py_DECREF(py_object_name); - assert(cached_type == NULL || PyType_Check(cached_type)); - return (PyTypeObject *) cached_type; - bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; - } - -/* CommonTypesMetaclass (used by CythonFunctionShared) */ + goto bad; + } + goto done; + } else { + Py_DECREF(new_cached_type); + } +done: + Py_XDECREF(abi_module); + Py_DECREF(py_object_name); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; +bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; +} + +/* CommonTypesMetaclass */ static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) { - return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); - } - #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 - static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) { - PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types"); - return NULL; - } - static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) { - PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable"); - return -1; - } - #endif - static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { - {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, - {0, 0, 0, 0, 0} - }; - static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { - {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, - #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 - {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call}, - {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call}, - {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr}, - #endif - {0, 0} - }; - static PyType_Spec __pyx_CommonTypesMetaclass_spec = { - __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", - 0, - 0, - Py_TPFLAGS_IMMUTABLETYPE | - Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_DEFAULT, - __pyx_CommonTypesMetaclass_slots - }; - static int __pyx_CommonTypesMetaclass_init(PyObject *module) { - __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); - PyObject *bases = PyTuple_Pack(1, &PyType_Type); - if (unlikely(!bases)) { - return -1; - } - mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); - Py_DECREF(bases); - if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { - return -1; - } - return 0; - } - -/* PyMethodNew (used by CythonFunctionShared) */ - #if CYTHON_COMPILING_IN_LIMITED_API - static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - PyObject *result; - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 - { - PyObject *args[] = {func, self}; - result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); - } - #else - result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); - #endif - return result; - } - #else - static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - return PyMethod_New(func, self); - } - #endif - -/* PyVectorcallFastCallDict (used by CythonFunctionShared) */ - #if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL - static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) - { - PyObject *res = NULL; - PyObject *kwnames; - PyObject **newargs; - PyObject **kwvalues; - Py_ssize_t i; - #if CYTHON_AVOID_BORROWED_REFS - PyObject *pos; - #else - Py_ssize_t pos; - #endif - size_t j; - PyObject *key, *value; - unsigned long keys_are_strings; - #if !CYTHON_ASSUME_SAFE_SIZE - Py_ssize_t nkw = PyDict_Size(kw); - if (unlikely(nkw == -1)) return NULL; - #else - Py_ssize_t nkw = PyDict_GET_SIZE(kw); - #endif - newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); - if (unlikely(newargs == NULL)) { - PyErr_NoMemory(); - return NULL; - } - for (j = 0; j < nargs; j++) newargs[j] = args[j]; - kwnames = PyTuple_New(nkw); - if (unlikely(kwnames == NULL)) { - PyMem_Free(newargs); - return NULL; - } - kwvalues = newargs + nargs; - pos = 0; - i = 0; - keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; - while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) { - keys_are_strings &= - #if CYTHON_COMPILING_IN_LIMITED_API - PyType_GetFlags(Py_TYPE(key)); - #else - Py_TYPE(key)->tp_flags; - #endif - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; - #else - PyTuple_SET_ITEM(kwnames, i, key); - #endif - kwvalues[i] = value; - i++; - } - if (unlikely(!keys_are_strings)) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - goto cleanup; - } - res = vc(func, newargs, nargs, kwnames); - cleanup: - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(pos); - #endif - Py_DECREF(kwnames); - for (i = 0; i < nkw; i++) - Py_DECREF(kwvalues[i]); - PyMem_Free(newargs); - return res; - } - static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) - { - Py_ssize_t kw_size = - likely(kw == NULL) ? - 0 : - #if !CYTHON_ASSUME_SAFE_SIZE - PyDict_Size(kw); - #else - PyDict_GET_SIZE(kw); - #endif - if (kw_size == 0) { - return vc(func, args, nargs, NULL); - } - #if !CYTHON_ASSUME_SAFE_SIZE - else if (unlikely(kw_size == -1)) { - return NULL; - } - #endif - return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); - } - #endif - -/* CythonFunctionShared (used by CythonFunction) */ - #if CYTHON_COMPILING_IN_LIMITED_API - static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { - if (__Pyx_CyFunction_Check(func)) { - return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; - } else if (PyCFunction_Check(func)) { - return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; - } - return 0; - } - static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { - if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { - int result; - PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); - if (unlikely(!newFunc)) { - PyErr_Clear(); // It's only an optimization, so don't throw an error - return 0; - } - result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); - Py_DECREF(newFunc); - return result; - } - return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); - } - #else - static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { - if (PyMethod_Check(func)) { - func = PyMethod_GET_FUNCTION(func); - } - return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; - } - #endif - static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { - #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - __Pyx_Py_XDECREF_SET( - __Pyx_CyFunction_GetClassObj(f), - ((classobj) ? __Pyx_NewRef(classobj) : NULL)); - #else - __Pyx_Py_XDECREF_SET( - ((PyCMethodObject *) (f))->mm_class, - (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); - #endif - } - static PyObject * - __Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) - { - if (unlikely(op->func_doc == NULL)) { - #if CYTHON_COMPILING_IN_LIMITED_API - op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); - if (unlikely(!op->func_doc)) return NULL; - #else - if (((PyCFunctionObject*)op)->m_ml->ml_doc) { - op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } - #endif - } - Py_INCREF(op->func_doc); - return op->func_doc; - } - static PyObject * - __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { - PyObject *result; - CYTHON_UNUSED_VAR(closure); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_doc_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static int - __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) - { - CYTHON_UNUSED_VAR(context); - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_doc, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; - } - static PyObject * - __Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) - { - if (unlikely(op->func_name == NULL)) { - #if CYTHON_COMPILING_IN_LIMITED_API - op->func_name = PyObject_GetAttrString(op->func, "__name__"); - #else - op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); - #endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; - } - static PyObject * - __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) - { - PyObject *result = NULL; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_name_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static int - __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) - { - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL || !PyUnicode_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_name, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; - } - static PyObject * - __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) - { - CYTHON_UNUSED_VAR(context); - PyObject *result; - __Pyx_BEGIN_CRITICAL_SECTION(op); - Py_INCREF(op->func_qualname); - result = op->func_qualname; - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static int - __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) - { - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL || !PyUnicode_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_qualname, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; - } - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 - static PyObject * - __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) - { - CYTHON_UNUSED_VAR(context); - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; - } - #endif - static PyObject * - __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) - { - CYTHON_UNUSED_VAR(context); - Py_INCREF(op->func_globals); - return op->func_globals; - } - static PyObject * - __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) - { - CYTHON_UNUSED_VAR(op); - CYTHON_UNUSED_VAR(context); - Py_INCREF(Py_None); - return Py_None; - } - static PyObject * - __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) - { - PyObject* result = (op->func_code) ? op->func_code : Py_None; - CYTHON_UNUSED_VAR(context); - Py_INCREF(result); - return result; - } - static int - __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; - } - static int - __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; - } - static PyObject * - __Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; - } - static PyObject * - __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = NULL; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_defaults_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static int - __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; - } - static PyObject * - __Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; - } - static PyObject * - __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_kwdefaults_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static int - __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value || value == Py_None) { - value = NULL; - } else if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_annotations, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; - } - static PyObject * - __Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; - } - static PyObject * - __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { - PyObject *result; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_annotations_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static PyObject * - __Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { - int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; - if (is_coroutine) { - PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; - fromlist = PyList_New(1); - if (unlikely(!fromlist)) return NULL; - Py_INCREF(marker); - #if CYTHON_ASSUME_SAFE_MACROS - PyList_SET_ITEM(fromlist, 0, marker); - #else - if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { - Py_DECREF(marker); - Py_DECREF(fromlist); - return NULL; - } - #endif - module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); - Py_DECREF(fromlist); - if (unlikely(!module)) goto ignore; - is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); - Py_DECREF(module); - if (likely(is_coroutine_value)) { - return is_coroutine_value; - } - ignore: - PyErr_Clear(); - } - return __Pyx_PyBool_FromLong(is_coroutine); - } - static PyObject * - __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { - PyObject *result; - CYTHON_UNUSED_VAR(context); - if (op->func_is_coroutine) { - return __Pyx_NewRef(op->func_is_coroutine); - } - result = __Pyx_CyFunction_get_is_coroutine_value(op); - if (unlikely(!result)) - return NULL; - __Pyx_BEGIN_CRITICAL_SECTION(op); - if (op->func_is_coroutine) { - Py_DECREF(result); - result = __Pyx_NewRef(op->func_is_coroutine); - } else { - op->func_is_coroutine = __Pyx_NewRef(result); - } - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); - if (!py_name) return; - PyErr_Format(PyExc_TypeError, - "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", - py_name, message, size); - Py_DECREF(py_name); - #else - const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; - PyErr_Format(PyExc_TypeError, - "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", - name, message, size); - #endif - } - static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); - if (!py_name) return; - PyErr_Format(PyExc_TypeError, - "%.200S() %s", - py_name, message); - Py_DECREF(py_name); - #else - const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; - PyErr_Format(PyExc_TypeError, - "%.200s() %s", - name, message); - #endif - } - #if CYTHON_COMPILING_IN_LIMITED_API - static PyObject * - __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_GetAttrString(op->func, "__module__"); - } - static int - __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_SetAttrString(op->func, "__module__", value); - } - #endif - static PyGetSetDef __pyx_CyFunction_getsets[] = { - {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 - {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, - {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, - #else - {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, - {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, - #endif - {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, - #if CYTHON_COMPILING_IN_LIMITED_API - {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, - #endif - {0, 0, 0, 0, 0} - }; - static PyMemberDef __pyx_CyFunction_members[] = { - #if !CYTHON_COMPILING_IN_LIMITED_API - {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, - #endif - #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API - {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, - #endif - #if CYTHON_METH_FASTCALL - #if CYTHON_COMPILING_IN_LIMITED_API - {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, - #else - {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, - #endif - #if CYTHON_COMPILING_IN_LIMITED_API - {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, - #else - {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, - #endif - #endif - {0, 0, 0, 0, 0} - }; - static PyObject * - __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) - { - PyObject *result = NULL; - CYTHON_UNUSED_VAR(args); - __Pyx_BEGIN_CRITICAL_SECTION(m); - Py_INCREF(m->func_qualname); - result = m->func_qualname; - __Pyx_END_CRITICAL_SECTION(); - return result; - } - static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} - }; - #if CYTHON_COMPILING_IN_LIMITED_API - #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) - #else - #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) - #endif - static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { - #if !CYTHON_COMPILING_IN_LIMITED_API - PyCFunctionObject *cf = (PyCFunctionObject*) op; - #endif - if (unlikely(op == NULL)) - return NULL; + return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); +} +static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { + {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} +}; +static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { + {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, + {0, 0} +}; +static PyType_Spec __pyx_CommonTypesMetaclass_spec = { + __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", + 0, + 0, +#if PY_VERSION_HEX >= 0x030A0000 + Py_TPFLAGS_IMMUTABLETYPE | + Py_TPFLAGS_DISALLOW_INSTANTIATION | +#endif + Py_TPFLAGS_DEFAULT, + __pyx_CommonTypesMetaclass_slots +}; +static int __pyx_CommonTypesMetaclass_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, &PyType_Type); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); + Py_DECREF(bases); + if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { + return -1; + } + return 0; +} + +/* PyMethodNew */ #if CYTHON_COMPILING_IN_LIMITED_API - op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); - if (unlikely(!op->func)) return NULL; - #endif - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; - #if !CYTHON_COMPILING_IN_LIMITED_API - cf->m_ml = ml; - cf->m_self = (PyObject *) op; - #endif - Py_XINCREF(closure); - op->func_closure = closure; - #if !CYTHON_COMPILING_IN_LIMITED_API - Py_XINCREF(module); - cf->m_module = module; - #endif - #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API - op->func_dict = NULL; - #endif - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; - #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - op->func_classobj = NULL; - #else - ((PyCMethodObject*)op)->mm_class = NULL; - #endif - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - op->func_is_coroutine = NULL; - #if CYTHON_METH_FASTCALL - switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { - case METH_NOARGS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; - break; - case METH_O: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; - break; - case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; - break; - case METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; - break; - case METH_VARARGS | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = NULL; - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - Py_DECREF(op); - return NULL; - } - #endif - return (PyObject *) op; - } - static int - __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) - { - Py_CLEAR(m->func_closure); +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *result; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + { + PyObject *args[] = {func, self}; + result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); + } + #else + result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); + #endif + return result; +} +#else +static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); +} +#endif + +/* PyVectorcallFastCallDict */ + #if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) +static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i, pos; + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + #if !CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t nkw = PyDict_Size(kw); + if (unlikely(nkw == -1)) return NULL; + #else + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + #endif + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (PyDict_Next(kw, &pos, &key, &value)) { + keys_are_strings &= + #if CYTHON_COMPILING_IN_LIMITED_API + PyType_GetFlags(Py_TYPE(key)); + #else + Py_TYPE(key)->tp_flags; + #endif + Py_INCREF(key); + Py_INCREF(value); + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; + #else + PyTuple_SET_ITEM(kwnames, i, key); + #endif + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); +cleanup: + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; +} +static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) +{ + Py_ssize_t kw_size = + likely(kw == NULL) ? + 0 : +#if !CYTHON_ASSUME_SAFE_SIZE + PyDict_Size(kw); +#else + PyDict_GET_SIZE(kw); +#endif + if (kw_size == 0) { + return vc(func, args, nargs, NULL); + } +#if !CYTHON_ASSUME_SAFE_SIZE + else if (unlikely(kw_size == -1)) { + return NULL; + } +#endif + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); +} +#endif + +/* CythonFunctionShared */ #if CYTHON_COMPILING_IN_LIMITED_API - Py_CLEAR(m->func); - #else - Py_CLEAR(((PyCFunctionObject*)m)->m_module); - #endif - #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API - Py_CLEAR(m->func_dict); - #elif PY_VERSION_HEX < 0x030d0000 - _PyObject_ClearManagedDict((PyObject*)m); - #else - PyObject_ClearManagedDict((PyObject*)m); - #endif - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); - #if !CYTHON_COMPILING_IN_LIMITED_API - #if PY_VERSION_HEX < 0x030900B1 - Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); - #else - { - PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; - ((PyCMethodObject *) (m))->mm_class = NULL; - Py_XDECREF(cls); - } - #endif - #endif - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - Py_CLEAR(m->func_is_coroutine); - Py_CLEAR(m->defaults); - return 0; - } - static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) - { - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - __Pyx_PyHeapTypeObject_GC_Del(m); - } - static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) - { - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); - } - static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) - { - { - int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); - if (e) return e; - } - Py_VISIT(m->func_closure); - #if CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(m->func); - #else - Py_VISIT(((PyCFunctionObject*)m)->m_module); - #endif - #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(m->func_dict); - #else - { - int e = - #if PY_VERSION_HEX < 0x030d0000 - _PyObject_VisitManagedDict - #else - PyObject_VisitManagedDict - #endif - ((PyObject*)m, visit, arg); - if (e != 0) return e; - } - #endif - __Pyx_VISIT_CONST(m->func_name); - __Pyx_VISIT_CONST(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - __Pyx_VISIT_CONST(m->func_code); - #if !CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); - #endif - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - Py_VISIT(m->func_is_coroutine); - Py_VISIT(m->defaults); - return 0; - } - static PyObject* - __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) - { - PyObject *repr; - __Pyx_BEGIN_CRITICAL_SECTION(op); - repr = PyUnicode_FromFormat("", - op->func_qualname, (void *)op); - __Pyx_END_CRITICAL_SECTION(); - return repr; - } - static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *f = ((__pyx_CyFunctionObject*)func)->func; - PyCFunction meth; - int flags; - meth = PyCFunction_GetFunction(f); - if (unlikely(!meth)) return NULL; - flags = PyCFunction_GetFlags(f); - if (unlikely(flags < 0)) return NULL; - #else - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - int flags = f->m_ml->ml_flags; - #endif - Py_ssize_t size; - switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - #if CYTHON_ASSUME_SAFE_SIZE - size = PyTuple_GET_SIZE(arg); - #else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; - #endif - if (likely(size == 0)) - return (*meth)(self, NULL); - __Pyx_CyFunction_raise_argument_count_error( - (__pyx_CyFunctionObject*)func, - "takes no arguments", size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { - #if CYTHON_ASSUME_SAFE_SIZE - size = PyTuple_GET_SIZE(arg); - #else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; - #endif - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - __Pyx_CyFunction_raise_argument_count_error( - (__pyx_CyFunctionObject*)func, - "takes exactly one argument", size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - return NULL; - } - __Pyx_CyFunction_raise_type_error( - (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); - return NULL; - } - static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *self, *result; - #if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; - #else - self = ((PyCFunctionObject*)func)->m_self; - #endif - result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); - return result; - } - static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; - #if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL - __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); - if (vc) { - #if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE - return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); - #else - (void) &__Pyx_PyVectorcall_FastCallDict; - return PyVectorcall_Call(func, args, kw); - #endif - } - #endif - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; - #if CYTHON_ASSUME_SAFE_SIZE - argc = PyTuple_GET_SIZE(args); - #else - argc = PyTuple_Size(args); - if (unlikely(argc < 0)) return NULL; - #endif - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - PyErr_Format(PyExc_TypeError, - "unbound method %.200S() needs an argument", - cyfunc->func_qualname); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; - } - #if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL - static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) - { - int ret = 0; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - if (unlikely(nargs < 1)) { - __Pyx_CyFunction_raise_type_error( - cyfunc, "needs an argument"); - return -1; - } - ret = 1; - } - if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { - __Pyx_CyFunction_raise_type_error( - cyfunc, "takes no keyword arguments"); - return -1; - } - return ret; - } - static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) - { - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); - PyObject *self; - #if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; - #else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; - #endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - #if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; - #else - self = ((PyCFunctionObject*)cyfunc)->m_self; - #endif - break; - default: - return NULL; - } - if (unlikely(nargs != 0)) { - __Pyx_CyFunction_raise_argument_count_error( - cyfunc, "takes no arguments", nargs); - return NULL; - } - return meth(self, NULL); - } - static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) - { - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); - PyObject *self; - #if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; - #else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; - #endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - #if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; - #else - self = ((PyCFunctionObject*)cyfunc)->m_self; - #endif - break; - default: - return NULL; - } - if (unlikely(nargs != 1)) { - __Pyx_CyFunction_raise_argument_count_error( - cyfunc, "takes exactly one argument", nargs); - return NULL; - } - return meth(self, args[0]); - } - static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) - { - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); - PyObject *self; - #if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; - #else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; - #endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - #if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; - #else - self = ((PyCFunctionObject*)cyfunc)->m_self; - #endif - break; - default: - return NULL; - } - return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); - } - static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) - { - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); - PyObject *self; - #if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; - #else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; - #endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: - #if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; - #else - self = ((PyCFunctionObject*)cyfunc)->m_self; - #endif - break; - default: - return NULL; - } - #if PY_VERSION_HEX < 0x030e00A6 - size_t nargs_value = (size_t) nargs; - #else - Py_ssize_t nargs_value = nargs; - #endif - return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames); - } - #endif - static PyType_Slot __pyx_CyFunctionType_slots[] = { - {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, - {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, - {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, - {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, - {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, - {Py_tp_methods, (void *)__pyx_CyFunction_methods}, - {Py_tp_members, (void *)__pyx_CyFunction_members}, - {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, - {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, - {0, 0}, - }; - static PyType_Spec __pyx_CyFunctionType_spec = { - __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, - #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR - Py_TPFLAGS_METHOD_DESCRIPTOR | - #endif - #if CYTHON_METH_FASTCALL - #if defined(Py_TPFLAGS_HAVE_VECTORCALL) - Py_TPFLAGS_HAVE_VECTORCALL | - #elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) - _Py_TPFLAGS_HAVE_VECTORCALL | - #endif - #endif // CYTHON_METH_FASTCALL - #if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API - Py_TPFLAGS_MANAGED_DICT | - #endif - Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, - __pyx_CyFunctionType_slots - }; - static int __pyx_CyFunction_init(PyObject *module) { - __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); - mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( - mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); - if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; - } - static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); - if (unlikely(!m->defaults)) - return NULL; - return m->defaults; - } - static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); - } - static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); - } - static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); - } - +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; +} +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { + int result; + PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); + if (unlikely(!newFunc)) { + PyErr_Clear(); // It's only an optimization, so don't throw an error + return 0; + } + result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); + Py_DECREF(newFunc); + return result; + } + return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); +} +#else +static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if (PyMethod_Check(func)) { + func = PyMethod_GET_FUNCTION(func); + } + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; +} +#endif +static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); +#endif +} +static PyObject * +__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_doc == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; +#else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } +#endif + } + Py_INCREF(op->func_doc); + return op->func_doc; +} +static PyObject * +__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { + PyObject *result; + CYTHON_UNUSED_VAR(closure); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_doc_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_name == NULL)) { +#if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); +#else + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); +#endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; +} +static PyObject * +__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_name_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_name, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + Py_INCREF(op->func_qualname); + result = op->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_dict_locked(__pyx_CyFunctionObject *op) +{ + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; +} +static PyObject * +__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_dict_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) +{ + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL)) { + PyErr_SetString(PyExc_TypeError, + "function's dictionary may not be deleted"); + return -1; + } + if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "setting function's dictionary to a non-dict"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_dict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; +} +static PyObject * +__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) +{ + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; +} +static PyObject * +__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) +{ + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; +} +static int +__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; +} +static int +__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_defaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_kwdefaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static int +__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; +} +static PyObject * +__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; +} +static PyObject * +__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_annotations_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { + int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; + if (is_coroutine) { + PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); +#if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); +#else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } +#endif + module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(is_coroutine_value)) { + return is_coroutine_value; + } +ignore: + PyErr_Clear(); + } + return __Pyx_PyBool_FromLong(is_coroutine); +} +static PyObject * +__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + result = __Pyx_CyFunction_get_is_coroutine_value(op); + if (unlikely(!result)) + return NULL; + __Pyx_BEGIN_CRITICAL_SECTION(op); + if (op->func_is_coroutine) { + Py_DECREF(result); + result = __Pyx_NewRef(op->func_is_coroutine); + } else { + op->func_is_coroutine = __Pyx_NewRef(result); + } + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, message, size); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + name, message, size); +#endif +} +static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s", + py_name, message); + Py_DECREF(py_name); +#else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s", + name, message); +#endif +} +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject * +__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); +} +static int +__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); +} +#endif +static PyGetSetDef __pyx_CyFunction_getsets[] = { + {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, + {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, +#if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, +#endif + {0, 0, 0, 0, 0} +}; +static PyMemberDef __pyx_CyFunction_members[] = { +#if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, +#endif + {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, +#if CYTHON_METH_FASTCALL +#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API + {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, +#else + {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, +#endif +#if CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, +#else + {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, +#endif +#endif + {0, 0, 0, 0, 0} +}; +static PyObject * +__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) +{ + PyObject *result = NULL; + CYTHON_UNUSED_VAR(args); + __Pyx_BEGIN_CRITICAL_SECTION(m); + Py_INCREF(m->func_qualname); + result = m->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; +} +static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} +}; +#if CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) +#else +#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) +#endif +static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { +#if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; +#endif + if (unlikely(op == NULL)) + return NULL; +#if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; +#endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; +#if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; +#endif + Py_XINCREF(closure); + op->func_closure = closure; +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; +#endif + op->func_dict = NULL; + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; +#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; +#else + ((PyCMethodObject*)op)->mm_class = NULL; +#endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; +#if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } +#endif + return (PyObject *) op; +} +static int +__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) +{ + Py_CLEAR(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); +#else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); +#endif + Py_CLEAR(m->func_dict); + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API +#if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); +#else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } +#endif +#endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + Py_CLEAR(m->defaults); + return 0; +} +static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); +} +static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) +{ + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); +} +static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) +{ + { + int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); + if (e) return e; + } + Py_VISIT(m->func_closure); +#if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); +#else + Py_VISIT(((PyCFunctionObject*)m)->m_module); +#endif + Py_VISIT(m->func_dict); + __Pyx_VISIT_CONST(m->func_name); + __Pyx_VISIT_CONST(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + __Pyx_VISIT_CONST(m->func_code); +#if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); +#endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + Py_VISIT(m->defaults); + return 0; +} +static PyObject* +__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) +{ + PyObject *repr; + __Pyx_BEGIN_CRITICAL_SECTION(op); + repr = PyUnicode_FromFormat("", + op->func_qualname, (void *)op); + __Pyx_END_CRITICAL_SECTION(); + return repr; +} +static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { +#if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; +#else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; +#endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 0)) + return (*meth)(self, NULL); + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes no arguments", size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { +#if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); +#else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; +#endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes exactly one argument", size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } + __Pyx_CyFunction_raise_type_error( + (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); + return NULL; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)func)->m_self; +#endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; +} +static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); +#else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); +#endif + } +#endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; +#if CYTHON_ASSUME_SAFE_SIZE + argc = PyTuple_GET_SIZE(args); +#else + argc = PyTuple_Size(args); + if (unlikely(argc < 0)) return NULL; +#endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; +} +#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) +static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) +{ + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "needs an argument"); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "takes no keyword arguments"); + return -1; + } + return ret; +} +static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes no arguments", nargs); + return NULL; + } + return meth(self, NULL); +} +static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes exactly one argument", nargs); + return NULL; + } + return meth(self, args[0]); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); +} +static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) +{ + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); +#if CYTHON_BACKPORT_VECTORCALL + Py_ssize_t nargs = (Py_ssize_t)nargsf; +#else + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); +#endif + PyObject *self; +#if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; +#else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; +#endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: +#if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; +#else + self = ((PyCFunctionObject*)cyfunc)->m_self; +#endif + break; + default: + return NULL; + } + return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, (size_t)nargs, kwnames); +} +#endif +static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, +}; +static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, +#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | +#endif +#if CYTHON_METH_FASTCALL +#if defined(Py_TPFLAGS_HAVE_VECTORCALL) + Py_TPFLAGS_HAVE_VECTORCALL | +#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | +#endif +#endif // CYTHON_METH_FASTCALL +#if PY_VERSION_HEX >= 0x030A0000 + Py_TPFLAGS_IMMUTABLETYPE | +#endif + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots +}; +static int __pyx_CyFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); + if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; +} +static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); + if (unlikely(!m->defaults)) + return NULL; + return m->defaults; +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); +} +static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + 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_mstate_global->__pyx_CyFunctionType), - ml, flags, qualname, closure, module, globals, code - ); - if (likely(op)) { - PyObject_GC_Track(op); - } - return op; - } - -/* CLineInTraceback (used by AddTraceback) */ + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; +} + +/* CLineInTraceback */ #if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 - #define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o)) - #elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - #define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL); - #else - PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) { - PyObject **dict_ptr = _PyObject_GetDictPtr(o); - return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL; - } - #endif - static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { - PyObject *use_cline = NULL; - PyObject *ptype, *pvalue, *ptraceback; - PyObject *cython_runtime_dict; - CYTHON_MAYBE_UNUSED_VAR(tstate); - if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); - cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, cython_runtime_dict, - __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False)) - } - if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - Py_XDECREF(use_cline); - Py_XDECREF(cython_runtime_dict); - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; - } - #endif - -/* CodeObjectCache (used by AddTraceback) */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; +static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline; + PyObject *ptype, *pvalue, *ptraceback; +#if CYTHON_COMPILING_IN_CPYTHON + PyObject **cython_runtime_dict; +#endif + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { + return c_line; + } + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); +#if CYTHON_COMPILING_IN_CPYTHON + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_mstate_global->__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __Pyx_BEGIN_CRITICAL_SECTION(*cython_runtime_dict); + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, *cython_runtime_dict, + __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback)) + Py_XINCREF(use_cline); + __Pyx_END_CRITICAL_SECTION(); + } else +#endif + { + PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_INCREF(use_cline); + Py_DECREF(use_cline_obj); } else { - return mid + 1; - } - } - static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { - __Pyx_CachedCodeObjectType* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!code_cache->entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); - if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { - return NULL; - } - code_object = code_cache->entries[pos].code_object; - Py_INCREF(code_object); - return code_object; - } - static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS - (void)__pyx__find_code_object; - return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. - #else - struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); - if (old_count < 0) { - __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); - return NULL; - } - #endif - __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); - #endif - return result; - #endif - } - static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) - { - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - code_cache->entries = entries; - code_cache->max_count = 64; - code_cache->count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); - if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { - __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_INCREF(code_object); - Py_DECREF(tmp); - return; - } - if (code_cache->count == code_cache->max_count) { - int new_max = code_cache->max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - code_cache->entries = entries; - code_cache->max_count = new_max; - } - for (i=code_cache->count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - code_cache->count++; - Py_INCREF(code_object); - } - static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS - (void)__pyx__insert_code_object; - return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. - #else - struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_nonatomic_int_type expected = 0; - if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { - return; + PyErr_Clear(); + use_cline = NULL; } - #endif - __pyx__insert_code_object(code_cache, code_line, code_object); - #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); - #endif - #endif - } - + } + if (!use_cline) { + c_line = 0; + (void) PyObject_SetAttr(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False); + } + else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + Py_XDECREF(use_cline); + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; +} +#endif + +/* CodeObjectCache */ + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } +} +static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { + __Pyx_CachedCodeObjectType* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!code_cache->entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { + return NULL; + } + code_object = code_cache->entries[pos].code_object; + Py_INCREF(code_object); + return code_object; +} +static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__find_code_object; + return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); + if (old_count < 0) { + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); + return NULL; + } +#endif + __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); +#endif + return result; +#endif +} +static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) +{ + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + code_cache->entries = entries; + code_cache->max_count = 64; + code_cache->count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { + __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_INCREF(code_object); + Py_DECREF(tmp); + return; + } + if (code_cache->count == code_cache->max_count) { + int new_max = code_cache->max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + code_cache->entries = entries; + code_cache->max_count = new_max; + } + for (i=code_cache->count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + code_cache->count++; + Py_INCREF(code_object); +} +static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__insert_code_object; + return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. +#else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type expected = 0; + if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { + return; + } +#endif + __pyx__insert_code_object(code_cache, code_line, code_object); +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); +#endif +#endif +} + /* AddTraceback */ #include "compile.h" - #include "frameobject.h" - #include "traceback.h" - #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) - #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE 1 - #endif - #include "internal/pycore_frame.h" +#include "frameobject.h" +#include "traceback.h" +#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 #endif - #if CYTHON_COMPILING_IN_LIMITED_API - static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, - PyObject *firstlineno, PyObject *name) { - PyObject *replace = NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; - replace = PyObject_GetAttrString(code, "replace"); - if (likely(replace)) { - PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); - Py_DECREF(replace); - return result; - } - PyErr_Clear(); - return NULL; - } - static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; - PyObject *replace = NULL, *getframe = NULL, *frame = NULL; - PyObject *exc_type, *exc_value, *exc_traceback; - int success = 0; - if (c_line) { - c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); - } - PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); - code_object = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!code_object) { - code_object = Py_CompileString("_getframe()", filename, Py_eval_input); - if (unlikely(!code_object)) goto bad; - py_py_line = PyLong_FromLong(py_line); - if (unlikely(!py_py_line)) goto bad; - if (c_line) { - py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); - } else { - py_funcname = PyUnicode_FromString(funcname); - } - if (unlikely(!py_funcname)) goto bad; - dict = PyDict_New(); - if (unlikely(!dict)) goto bad; - { - PyObject *old_code_object = code_object; - code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); - Py_DECREF(old_code_object); - } - if (unlikely(!code_object)) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); - } else { - dict = PyDict_New(); - } - getframe = PySys_GetObject("_getframe"); - if (unlikely(!getframe)) goto bad; - if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; - frame = PyEval_EvalCode(code_object, dict, dict); - if (unlikely(!frame) || frame == Py_None) goto bad; - success = 1; - bad: - PyErr_Restore(exc_type, exc_value, exc_traceback); - Py_XDECREF(code_object); - Py_XDECREF(py_py_line); - Py_XDECREF(py_funcname); - Py_XDECREF(dict); - Py_XDECREF(replace); - if (success) { - PyTraceBack_Here( - (struct _frame*)frame); - } - Py_XDECREF(frame); - } - #else - static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = NULL; - PyObject *py_funcname = NULL; - if (c_line) { - 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; - } - py_code = PyCode_NewEmpty(filename, funcname, py_line); - Py_XDECREF(py_funcname); - return py_code; - bad: - Py_XDECREF(py_funcname); - return NULL; - } - static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - 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) { - /* 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( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); + #include "internal/pycore_frame.h" +#endif +#if CYTHON_COMPILING_IN_LIMITED_API +static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + (void) __pyx_cfilenm; + (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!code_object) { + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + py_funcname = PyUnicode_FromString(funcname); + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); + } else { + dict = PyDict_New(); + } + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); - } - #endif - -/* MemviewRefcount */ - #include - #ifndef _Py_NO_RETURN - #define _Py_NO_RETURN - #endif - _Py_NO_RETURN - static void __pyx_fatalerror(const char *fmt, ...) { - va_list vargs; - char msg[200]; - #if PY_VERSION_HEX >= 0x030A0000 || defined(HAVE_STDARG_PROTOTYPES) - va_start(vargs, fmt); - #else - va_start(vargs); - #endif - vsnprintf(msg, 200, fmt, vargs); - va_end(vargs); - Py_FatalError(msg); - } - static CYTHON_INLINE int - __pyx_add_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, - PyThread_type_lock lock) - { - int result; - PyThread_acquire_lock(lock, 1); - result = (*acquisition_count)++; - PyThread_release_lock(lock); - return result; - } - static CYTHON_INLINE int - __pyx_sub_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, - PyThread_type_lock lock) - { - int result; - PyThread_acquire_lock(lock, 1); - result = (*acquisition_count)--; - PyThread_release_lock(lock); - return result; - } - static CYTHON_INLINE void - __Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) - { - __pyx_nonatomic_int_type old_acquisition_count; - struct __pyx_memoryview_obj *memview = memslice->memview; - if (unlikely(!memview || (PyObject *) memview == Py_None)) { - return; - } - old_acquisition_count = __pyx_add_acquisition_count(memview); - if (unlikely(old_acquisition_count <= 0)) { - if (likely(old_acquisition_count == 0)) { - if (have_gil) { - Py_INCREF((PyObject *) memview); - } else { - PyGILState_STATE _gilstate = PyGILState_Ensure(); - Py_INCREF((PyObject *) memview); - PyGILState_Release(_gilstate); - } - } else { - __pyx_fatalerror("Acquisition count is %d (line %d)", - old_acquisition_count+1, lineno); - } - } - } - static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *memslice, - int have_gil, int lineno) { - __pyx_nonatomic_int_type old_acquisition_count; - struct __pyx_memoryview_obj *memview = memslice->memview; - if (unlikely(!memview || (PyObject *) memview == Py_None)) { - memslice->memview = NULL; - return; - } - old_acquisition_count = __pyx_sub_acquisition_count(memview); - memslice->data = NULL; - if (likely(old_acquisition_count > 1)) { - memslice->memview = NULL; - } else if (likely(old_acquisition_count == 1)) { - if (have_gil) { - Py_CLEAR(memslice->memview); - } else { - PyGILState_STATE _gilstate = PyGILState_Ensure(); - Py_CLEAR(memslice->memview); - PyGILState_Release(_gilstate); - } - } else { - __pyx_fatalerror("Acquisition count is %d (line %d)", - old_acquisition_count-1, lineno); - } - } - -/* MemviewSliceIsContig */ - static int - __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) - { - int i, index, step, start; - Py_ssize_t itemsize = mvs.memview->view.itemsize; - if (order == 'F') { - step = 1; - start = 0; - } else { - step = -1; - start = ndim - 1; - } - for (i = 0; i < ndim; i++) { - index = start + step * i; - if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) - return 0; - itemsize *= mvs.shape[index]; - } - return 1; - } - -/* OverlappingSlices */ - static void - __pyx_get_array_memory_extents(__Pyx_memviewslice *slice, - void **out_start, void **out_end, - int ndim, size_t itemsize) - { - char *start, *end; - int i; - start = end = slice->data; - for (i = 0; i < ndim; i++) { - Py_ssize_t stride = slice->strides[i]; - Py_ssize_t extent = slice->shape[i]; - if (extent == 0) { - *out_start = *out_end = start; - return; - } else { - if (stride > 0) - end += stride * (extent - 1); - else - start += stride * (extent - 1); - } - } - *out_start = start; - *out_end = end + itemsize; - } - static int - __pyx_slices_overlap(__Pyx_memviewslice *slice1, - __Pyx_memviewslice *slice2, - int ndim, size_t itemsize) - { - void *start1, *end1, *start2, *end2; - __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); - __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); - return (start1 < end2) && (start2 < end1); - } - -/* MemviewSliceInit */ - static int - __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, - int ndim, - __Pyx_memviewslice *memviewslice, - int memview_is_new_reference) - { - __Pyx_RefNannyDeclarations - int i, retval=-1; - Py_buffer *buf = &memview->view; - __Pyx_RefNannySetupContext("init_memviewslice", 0); - if (unlikely(memviewslice->memview || memviewslice->data)) { - PyErr_SetString(PyExc_ValueError, - "memviewslice is already initialized!"); - goto fail; - } - if (buf->strides) { - for (i = 0; i < ndim; i++) { - memviewslice->strides[i] = buf->strides[i]; - } - } else { - Py_ssize_t stride = buf->itemsize; - for (i = ndim - 1; i >= 0; i--) { - memviewslice->strides[i] = stride; - stride *= buf->shape[i]; - } - } - for (i = 0; i < ndim; i++) { - memviewslice->shape[i] = buf->shape[i]; - if (buf->suboffsets) { - memviewslice->suboffsets[i] = buf->suboffsets[i]; - } else { - memviewslice->suboffsets[i] = -1; - } - } - memviewslice->memview = memview; - memviewslice->data = (char *)buf->buf; - if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { - Py_INCREF((PyObject*)memview); - } - retval = 0; - goto no_fail; - fail: - memviewslice->memview = 0; - memviewslice->data = 0; - retval = -1; - no_fail: - __Pyx_RefNannyFinishContext(); - return retval; - } - -/* TypeInfoCompare (used by MemviewSliceValidateAndInit) */ - static int - __pyx_typeinfo_cmp(const __Pyx_TypeInfo *a, const __Pyx_TypeInfo *b) - { - int i; - if (!a || !b) - return 0; - if (a == b) - return 1; - if (a->size != b->size || a->typegroup != b->typegroup || - a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { - if (a->typegroup == 'H' || b->typegroup == 'H') { - return a->size == b->size; - } else { - return 0; - } - } - if (a->ndim) { - for (i = 0; i < a->ndim; i++) - if (a->arraysize[i] != b->arraysize[i]) - return 0; - } - if (a->typegroup == 'S') { - if (a->flags != b->flags) - return 0; - if (a->fields || b->fields) { - if (!(a->fields && b->fields)) - return 0; - for (i = 0; a->fields[i].type && b->fields[i].type; i++) { - const __Pyx_StructField *field_a = a->fields + i; - const __Pyx_StructField *field_b = b->fields + i; - if (field_a->offset != field_b->offset || - !__pyx_typeinfo_cmp(field_a->type, field_b->type)) - return 0; - } - return !a->fields[i].type && !b->fields[i].type; - } - } - return 1; - } - -/* MemviewSliceValidateAndInit (used by ObjectToMemviewSlice) */ - static int - __pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) - { - if (buf->shape[dim] <= 1) - return 1; - if (buf->strides) { - if (spec & __Pyx_MEMVIEW_CONTIG) { - if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { - if (unlikely(buf->strides[dim] != sizeof(void *))) { - PyErr_Format(PyExc_ValueError, - "Buffer is not indirectly contiguous " - "in dimension %d.", dim); - goto fail; - } - } else if (unlikely(buf->strides[dim] != buf->itemsize)) { - PyErr_SetString(PyExc_ValueError, - "Buffer and memoryview are not contiguous " - "in the same dimension."); - goto fail; - } - } - if (spec & __Pyx_MEMVIEW_FOLLOW) { - Py_ssize_t stride = buf->strides[dim]; - if (stride < 0) - stride = -stride; - if (unlikely(stride < buf->itemsize)) { - PyErr_SetString(PyExc_ValueError, - "Buffer and memoryview are not contiguous " - "in the same dimension."); - goto fail; - } - } - } else { - if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { - PyErr_Format(PyExc_ValueError, - "C-contiguous buffer is not contiguous in " - "dimension %d", dim); - goto fail; - } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { - PyErr_Format(PyExc_ValueError, - "C-contiguous buffer is not indirect in " - "dimension %d", dim); - goto fail; - } else if (unlikely(buf->suboffsets)) { - PyErr_SetString(PyExc_ValueError, - "Buffer exposes suboffsets but no strides"); - goto fail; - } - } - return 1; - fail: - return 0; - } + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); +} +#else +static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + if (c_line) { + 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; + } + py_code = PyCode_NewEmpty(filename, funcname, py_line); + Py_XDECREF(py_funcname); + return py_code; +bad: + Py_XDECREF(py_funcname); + return NULL; +} +static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + 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) { + /* 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( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); +bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); +} +#endif + +/* MemviewSliceIsContig */ static int - __pyx_check_suboffsets(Py_buffer *buf, int dim, int ndim, int spec) - { - CYTHON_UNUSED_VAR(ndim); - if (spec & __Pyx_MEMVIEW_DIRECT) { - if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { - PyErr_Format(PyExc_ValueError, - "Buffer not compatible with direct access " - "in dimension %d.", dim); - goto fail; - } - } - if (spec & __Pyx_MEMVIEW_PTR) { - if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { - PyErr_Format(PyExc_ValueError, - "Buffer is not indirectly accessible " - "in dimension %d.", dim); - goto fail; - } - } - return 1; - fail: - return 0; - } +__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) +{ + int i, index, step, start; + Py_ssize_t itemsize = mvs.memview->view.itemsize; + if (order == 'F') { + step = 1; + start = 0; + } else { + step = -1; + start = ndim - 1; + } + for (i = 0; i < ndim; i++) { + index = start + step * i; + if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) + return 0; + itemsize *= mvs.shape[index]; + } + return 1; +} + +/* OverlappingSlices */ + static void +__pyx_get_array_memory_extents(__Pyx_memviewslice *slice, + void **out_start, void **out_end, + int ndim, size_t itemsize) +{ + char *start, *end; + int i; + start = end = slice->data; + for (i = 0; i < ndim; i++) { + Py_ssize_t stride = slice->strides[i]; + Py_ssize_t extent = slice->shape[i]; + if (extent == 0) { + *out_start = *out_end = start; + return; + } else { + if (stride > 0) + end += stride * (extent - 1); + else + start += stride * (extent - 1); + } + } + *out_start = start; + *out_end = end + itemsize; +} +static int +__pyx_slices_overlap(__Pyx_memviewslice *slice1, + __Pyx_memviewslice *slice2, + int ndim, size_t itemsize) +{ + void *start1, *end1, *start2, *end2; + __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); + __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); + return (start1 < end2) && (start2 < end1); +} + +/* TypeInfoCompare */ static int - __pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) - { - int i; - if (c_or_f_flag & __Pyx_IS_F_CONTIG) { - Py_ssize_t stride = 1; - for (i = 0; i < ndim; i++) { - if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { - PyErr_SetString(PyExc_ValueError, - "Buffer not fortran contiguous."); - goto fail; - } - stride = stride * buf->shape[i]; - } - } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { - Py_ssize_t stride = 1; - for (i = ndim - 1; i >- 1; i--) { - if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { - PyErr_SetString(PyExc_ValueError, - "Buffer not C contiguous."); - goto fail; - } - stride = stride * buf->shape[i]; - } - } - return 1; - fail: - return 0; - } - static int __Pyx_ValidateAndInit_memviewslice( - int *axes_specs, - int c_or_f_flag, - int buf_flags, - int ndim, - const __Pyx_TypeInfo *dtype, - __Pyx_BufFmt_StackElem stack[], - __Pyx_memviewslice *memviewslice, - PyObject *original_obj) - { - struct __pyx_memoryview_obj *memview, *new_memview; - __Pyx_RefNannyDeclarations - Py_buffer *buf; - int i, spec = 0, retval = -1; - __Pyx_BufFmt_Context ctx; - int from_memoryview = __pyx_memoryview_check(original_obj); - __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); - if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) - original_obj)->typeinfo)) { - memview = (struct __pyx_memoryview_obj *) original_obj; - new_memview = NULL; - } else { - memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( - original_obj, buf_flags, 0, dtype); - new_memview = memview; - if (unlikely(!memview)) - goto fail; - } - buf = &memview->view; - if (unlikely(buf->ndim != ndim)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - ndim, buf->ndim); - goto fail; - } - if (new_memview) { - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; - } - if (unlikely((unsigned) buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " - "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", - buf->itemsize, - (buf->itemsize > 1) ? "s" : "", - dtype->name, - dtype->size, - (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->len > 0) { - for (i = 0; i < ndim; i++) { - spec = axes_specs[i]; - if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) - goto fail; - if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) - goto fail; - } - if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) - goto fail; - } - if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, - new_memview != NULL) == -1)) { - goto fail; - } - retval = 0; - goto no_fail; - fail: - Py_XDECREF((PyObject*)new_memview); - retval = -1; - no_fail: - __Pyx_RefNannyFinishContext(); - return retval; - } - +__pyx_typeinfo_cmp(const __Pyx_TypeInfo *a, const __Pyx_TypeInfo *b) +{ + int i; + if (!a || !b) + return 0; + if (a == b) + return 1; + if (a->size != b->size || a->typegroup != b->typegroup || + a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { + if (a->typegroup == 'H' || b->typegroup == 'H') { + return a->size == b->size; + } else { + return 0; + } + } + if (a->ndim) { + for (i = 0; i < a->ndim; i++) + if (a->arraysize[i] != b->arraysize[i]) + return 0; + } + if (a->typegroup == 'S') { + if (a->flags != b->flags) + return 0; + if (a->fields || b->fields) { + if (!(a->fields && b->fields)) + return 0; + for (i = 0; a->fields[i].type && b->fields[i].type; i++) { + const __Pyx_StructField *field_a = a->fields + i; + const __Pyx_StructField *field_b = b->fields + i; + if (field_a->offset != field_b->offset || + !__pyx_typeinfo_cmp(field_a->type, field_b->type)) + return 0; + } + return !a->fields[i].type && !b->fields[i].type; + } + } + return 1; +} + +/* MemviewSliceValidateAndInit */ + static int +__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) +{ + if (buf->shape[dim] <= 1) + return 1; + if (buf->strides) { + if (spec & __Pyx_MEMVIEW_CONTIG) { + if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { + if (unlikely(buf->strides[dim] != sizeof(void *))) { + PyErr_Format(PyExc_ValueError, + "Buffer is not indirectly contiguous " + "in dimension %d.", dim); + goto fail; + } + } else if (unlikely(buf->strides[dim] != buf->itemsize)) { + PyErr_SetString(PyExc_ValueError, + "Buffer and memoryview are not contiguous " + "in the same dimension."); + goto fail; + } + } + if (spec & __Pyx_MEMVIEW_FOLLOW) { + Py_ssize_t stride = buf->strides[dim]; + if (stride < 0) + stride = -stride; + if (unlikely(stride < buf->itemsize)) { + PyErr_SetString(PyExc_ValueError, + "Buffer and memoryview are not contiguous " + "in the same dimension."); + goto fail; + } + } + } else { + if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { + PyErr_Format(PyExc_ValueError, + "C-contiguous buffer is not contiguous in " + "dimension %d", dim); + goto fail; + } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { + PyErr_Format(PyExc_ValueError, + "C-contiguous buffer is not indirect in " + "dimension %d", dim); + goto fail; + } else if (unlikely(buf->suboffsets)) { + PyErr_SetString(PyExc_ValueError, + "Buffer exposes suboffsets but no strides"); + goto fail; + } + } + return 1; +fail: + return 0; +} +static int +__pyx_check_suboffsets(Py_buffer *buf, int dim, int ndim, int spec) +{ + CYTHON_UNUSED_VAR(ndim); + if (spec & __Pyx_MEMVIEW_DIRECT) { + if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { + PyErr_Format(PyExc_ValueError, + "Buffer not compatible with direct access " + "in dimension %d.", dim); + goto fail; + } + } + if (spec & __Pyx_MEMVIEW_PTR) { + if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { + PyErr_Format(PyExc_ValueError, + "Buffer is not indirectly accessible " + "in dimension %d.", dim); + goto fail; + } + } + return 1; +fail: + return 0; +} +static int +__pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) +{ + int i; + if (c_or_f_flag & __Pyx_IS_F_CONTIG) { + Py_ssize_t stride = 1; + for (i = 0; i < ndim; i++) { + if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { + PyErr_SetString(PyExc_ValueError, + "Buffer not fortran contiguous."); + goto fail; + } + stride = stride * buf->shape[i]; + } + } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { + Py_ssize_t stride = 1; + for (i = ndim - 1; i >- 1; i--) { + if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { + PyErr_SetString(PyExc_ValueError, + "Buffer not C contiguous."); + goto fail; + } + stride = stride * buf->shape[i]; + } + } + return 1; +fail: + return 0; +} +static int __Pyx_ValidateAndInit_memviewslice( + int *axes_specs, + int c_or_f_flag, + int buf_flags, + int ndim, + const __Pyx_TypeInfo *dtype, + __Pyx_BufFmt_StackElem stack[], + __Pyx_memviewslice *memviewslice, + PyObject *original_obj) +{ + struct __pyx_memoryview_obj *memview, *new_memview; + __Pyx_RefNannyDeclarations + Py_buffer *buf; + int i, spec = 0, retval = -1; + __Pyx_BufFmt_Context ctx; + int from_memoryview = __pyx_memoryview_check(original_obj); + __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); + if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) + original_obj)->typeinfo)) { + memview = (struct __pyx_memoryview_obj *) original_obj; + new_memview = NULL; + } else { + memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( + original_obj, buf_flags, 0, dtype); + new_memview = memview; + if (unlikely(!memview)) + goto fail; + } + buf = &memview->view; + if (unlikely(buf->ndim != ndim)) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + ndim, buf->ndim); + goto fail; + } + if (new_memview) { + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; + } + if (unlikely((unsigned) buf->itemsize != dtype->size)) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " + "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", + buf->itemsize, + (buf->itemsize > 1) ? "s" : "", + dtype->name, + dtype->size, + (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->len > 0) { + for (i = 0; i < ndim; i++) { + spec = axes_specs[i]; + if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) + goto fail; + if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) + goto fail; + } + if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) + goto fail; + } + if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, + new_memview != NULL) == -1)) { + goto fail; + } + retval = 0; + goto no_fail; +fail: + Py_XDECREF((PyObject*)new_memview); + retval = -1; +no_fail: + __Pyx_RefNannyFinishContext(); + return retval; +} + /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = __Pyx_MEMSLICE_INIT; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; - __pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; - } - + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, + &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__ITYPE_t(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = __Pyx_MEMSLICE_INIT; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__ITYPE_t, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; - __pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; - } - + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, + &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__ITYPE_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = __Pyx_MEMSLICE_INIT; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 1, - &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; - __pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; - } - + __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 1, + &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; +__pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; +} + /* Declarations */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return ::std::complex< float >(x, y); - } + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return ::std::complex< float >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return x + y*(__pyx_t_float_complex)_Complex_I; + } + #endif +#else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + __pyx_t_float_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ + #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) +#else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = (float)(1.0) / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = (float)(1.0) / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return x + y*(__pyx_t_float_complex)_Complex_I; - } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } #endif - #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { __pyx_t_float_complex z; - z.real = x; - z.imag = y; + z.real = -a.real; + z.imag = -a.imag; return z; - } - #endif - -/* Arithmetic */ + } + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtf(z.real*z.real + z.imag*z.imag); + #else + return hypotf(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + float r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + float denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_float(a, a); + case 3: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); + case 4: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if ((b.imag == 0) && (a.real >= 0)) { + z.real = powf(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2f(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_float(a); + theta = atan2f(a.imag, a.real); + } + lnr = logf(r); + z_r = expf(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosf(z_theta); + z.imag = z_r * sinf(z_theta); + return z; + } + #endif +#endif + +/* Declarations */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return ::std::complex< double >(x, y); + } #else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsf(b.real) >= fabsf(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - float r = b.imag / b.real; - float s = (float)(1.0) / (b.real + b.imag * r); - return __pyx_t_float_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - float r = b.real / b.imag; - float s = (float)(1.0) / (b.imag + b.real * r); - return __pyx_t_float_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - float denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_float_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtf(z.real*z.real + z.imag*z.imag); - #else - return hypotf(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - float denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_float(a, a); - case 3: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, a); - case 4: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = powf(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2f(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_float(a); - theta = atan2f(a.imag, a.real); - } - lnr = logf(r); - z_r = expf(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosf(z_theta); - z.imag = z_r * sinf(z_theta); - return z; - } - #endif + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return x + y*(__pyx_t_double_complex)_Complex_I; + } #endif - -/* Declarations */ +#else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + __pyx_t_double_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return ::std::complex< double >(x, y); - } +#else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = (double)(1.0) / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = (double)(1.0) / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return x + y*(__pyx_t_double_complex)_Complex_I; - } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } #endif - #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { __pyx_t_double_complex z; - z.real = x; - z.imag = y; + z.real = -a.real; + z.imag = -a.imag; return z; - } - #endif - -/* Arithmetic */ + } + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrt(z.real*z.real + z.imag*z.imag); + #else + return hypot(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_double(a, a); + case 3: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); + case 4: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if ((b.imag == 0) && (a.real >= 0)) { + z.real = pow(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_double(a); + theta = atan2(a.imag, a.real); + } + lnr = log(r); + z_r = exp(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cos(z_theta); + z.imag = z_r * sin(z_theta); + return z; + } + #endif +#endif + +/* Declarations */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { + return ::std::complex< long double >(x, y); + } #else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabs(b.real) >= fabs(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - double r = b.imag / b.real; - double s = (double)(1.0) / (b.real + b.imag * r); - return __pyx_t_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - double r = b.real / b.imag; - double s = (double)(1.0) / (b.imag + b.real * r); - return __pyx_t_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrt(z.real*z.real + z.imag*z.imag); - #else - return hypot(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_double(a, a); - case 3: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, a); - case 4: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = pow(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_double(a); - theta = atan2(a.imag, a.real); - } - lnr = log(r); - z_r = exp(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cos(z_theta); - z.imag = z_r * sin(z_theta); - return z; - } - #endif + static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { + return x + y*(__pyx_t_long_double_complex)_Complex_I; + } #endif - -/* Declarations */ +#else + static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { + __pyx_t_long_double_complex z; + z.real = x; + z.imag = y; + return z; + } +#endif + +/* Arithmetic */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { - return ::std::complex< long double >(x, y); - } +#else + static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + if (b.imag == 0) { + return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsl(b.real) >= fabsl(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + long double r = b.imag / b.real; + long double s = (long double)(1.0) / (b.real + b.imag * r); + return __pyx_t_long_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + long double r = b.real / b.imag; + long double s = (long double)(1.0) / (b.imag + b.real * r); + return __pyx_t_long_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } #else - static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { - return x + y*(__pyx_t_long_double_complex)_Complex_I; - } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + if (b.imag == 0) { + return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + long double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_long_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } #endif - #else - static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) { __pyx_t_long_double_complex z; - z.real = x; - z.imag = y; + z.real = -a.real; + z.imag = -a.imag; return z; - } - #endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #else - static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - if (b.imag == 0) { - return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsl(b.real) >= fabsl(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - long double r = b.imag / b.real; - long double s = (long double)(1.0) / (b.real + b.imag * r); - return __pyx_t_long_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - long double r = b.real / b.imag; - long double s = (long double)(1.0) / (b.imag + b.real * r); - return __pyx_t_long_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - if (b.imag == 0) { - return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - long double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_long_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) { - __pyx_t_long_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) { - __pyx_t_long_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtl(z.real*z.real + z.imag*z.imag); - #else - return hypotl(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - long double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - long double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_long__double(a, a); - case 3: - z = __Pyx_c_prod_long__double(a, a); - return __Pyx_c_prod_long__double(z, a); - case 4: - z = __Pyx_c_prod_long__double(a, a); - return __Pyx_c_prod_long__double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = powl(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2l(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_long__double(a); - theta = atan2l(a.imag, a.real); - } - lnr = logl(r); - z_r = expl(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosl(z_theta); - z.imag = z_r * sinl(z_theta); - return z; - } - #endif - #endif - -/* MemviewSliceCopy */ + } + static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) { + __pyx_t_long_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtl(z.real*z.real + z.imag*z.imag); + #else + return hypotl(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + long double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + long double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_long__double(a, a); + case 3: + z = __Pyx_c_prod_long__double(a, a); + return __Pyx_c_prod_long__double(z, a); + case 4: + z = __Pyx_c_prod_long__double(a, a); + return __Pyx_c_prod_long__double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if ((b.imag == 0) && (a.real >= 0)) { + z.real = powl(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2l(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_long__double(a); + theta = atan2l(a.imag, a.real); + } + lnr = logl(r); + z_r = expl(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosl(z_theta); + z.imag = z_r * sinl(z_theta); + return z; + } + #endif +#endif + +/* MemviewSliceCopyTemplate */ static __Pyx_memviewslice - __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, - const char *mode, int ndim, - size_t sizeof_dtype, int contig_flag, - int dtype_is_object) - { - __Pyx_RefNannyDeclarations - int i; - __Pyx_memviewslice new_mvs = __Pyx_MEMSLICE_INIT; - struct __pyx_memoryview_obj *from_memview = from_mvs->memview; - Py_buffer *buf = &from_memview->view; - PyObject *shape_tuple = NULL; - PyObject *temp_int = NULL; - struct __pyx_array_obj *array_obj = NULL; - struct __pyx_memoryview_obj *memview_obj = NULL; - __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); - for (i = 0; i < ndim; i++) { - if (unlikely(from_mvs->suboffsets[i] >= 0)) { - PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " - "indirect dimensions (axis %d)", i); - goto fail; - } - } - shape_tuple = PyTuple_New(ndim); - if (unlikely(!shape_tuple)) { - goto fail; - } - __Pyx_GOTREF(shape_tuple); - for(i = 0; i < ndim; i++) { - temp_int = PyLong_FromSsize_t(from_mvs->shape[i]); - if(unlikely(!temp_int)) { - goto fail; - } else { - #if CYTHON_ASSUME_SAFE_MACROS - PyTuple_SET_ITEM(shape_tuple, i, temp_int); - #else - if (PyTuple_SetItem(shape_tuple, i, temp_int) < 0) { - goto fail; - } - #endif - temp_int = NULL; - } - } - array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, mode, NULL); - if (unlikely(!array_obj)) { - goto fail; - } - __Pyx_GOTREF(array_obj); - memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( - (PyObject *) array_obj, contig_flag, - dtype_is_object, - from_mvs->memview->typeinfo); - if (unlikely(!memview_obj)) - goto fail; - if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) - goto fail; - if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, - dtype_is_object) < 0)) - goto fail; - goto no_fail; - fail: - __Pyx_XDECREF((PyObject *) new_mvs.memview); - new_mvs.memview = NULL; - new_mvs.data = NULL; - no_fail: - __Pyx_XDECREF(shape_tuple); - __Pyx_XDECREF(temp_int); - __Pyx_XDECREF((PyObject *) array_obj); - __Pyx_RefNannyFinishContext(); - return new_mvs; - } - -/* PyObjectCall2Args (used by PyObjectCallMethod1) */ - static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { - PyObject *args[3] = {NULL, arg1, arg2}; - return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); - } - -/* PyObjectCallMethod1 (used by UpdateUnpickledDict) */ - #if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) - static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { - PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); - Py_DECREF(method); - return result; - } - #endif - static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { - #if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) - PyObject *args[2] = {obj, arg}; - (void) __Pyx_PyObject_CallOneArg; - (void) __Pyx_PyObject_Call2Args; - return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); - #else - PyObject *method = NULL, *result; - int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); - if (likely(is_method)) { - result = __Pyx_PyObject_Call2Args(method, obj, arg); - Py_DECREF(method); - return result; - } - if (unlikely(!method)) return NULL; - return __Pyx__PyObject_CallMethod1(method, arg); - #endif - } - -/* UpdateUnpickledDict */ - static int __Pyx__UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { - PyObject *state_dict = __Pyx_PySequence_ITEM(state, index); - if (unlikely(!state_dict)) { - return -1; - } - int non_empty = PyObject_IsTrue(state_dict); - if (non_empty == 0) { - Py_DECREF(state_dict); - return 0; - } else if (unlikely(non_empty == -1)) { - return -1; - } - PyObject *dict; - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 - dict = PyObject_GetAttrString(obj, "__dict__"); - #else - dict = PyObject_GenericGetDict(obj, NULL); - #endif - if (unlikely(!dict)) { - Py_DECREF(state_dict); - return -1; - } - int result; - if (likely(PyDict_CheckExact(dict))) { - result = PyDict_Update(dict, state_dict); - } else { - PyObject *obj_result = __Pyx_PyObject_CallMethod1(dict, __pyx_mstate_global->__pyx_n_u_update, state_dict); - if (likely(obj_result)) { - Py_DECREF(obj_result); - result = 0; - } else { - result = -1; - } - } - Py_DECREF(state_dict); - Py_DECREF(dict); - return result; - } - static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { - Py_ssize_t state_size = __Pyx_PyTuple_GET_SIZE(state); - #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely(state_size == -1)) return -1; - #endif - if (state_size <= index) { - return 0; - } - return __Pyx__UpdateUnpickledDict(obj, state, index); - } - -/* CheckUnpickleChecksum */ - static void __Pyx_RaiseUnpickleChecksumError(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { - PyObject *pickle_module = PyImport_ImportModule("pickle"); - if (unlikely(!pickle_module)) return; - PyObject *pickle_error = PyObject_GetAttrString(pickle_module, "PickleError"); - Py_DECREF(pickle_module); - if (unlikely(!pickle_error)) return; - if (checksum2 == checksum1) { - PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x) = (%s))", - checksum, checksum1, members); - } else if (checksum3 == checksum2) { - PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x) = (%s))", - checksum, checksum1, checksum2, members); - } else { - PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x, 0x%x) = (%s))", - checksum, checksum1, checksum2, checksum3, members); - } - Py_DECREF(pickle_error); - } - static int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { - int found = 0; - found |= checksum1 == checksum; - found |= checksum2 == checksum; - found |= checksum3 == checksum; - if (likely(found)) - return 0; - __Pyx_RaiseUnpickleChecksumError(checksum, checksum1, checksum2, checksum3, members); - return -1; - } - -/* CIntFromPyVerify (used by CIntFromPy) */ +__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, + const char *mode, int ndim, + size_t sizeof_dtype, int contig_flag, + int dtype_is_object) +{ + __Pyx_RefNannyDeclarations + int i; + __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } }; + struct __pyx_memoryview_obj *from_memview = from_mvs->memview; + Py_buffer *buf = &from_memview->view; + PyObject *shape_tuple = NULL; + PyObject *temp_int = NULL; + struct __pyx_array_obj *array_obj = NULL; + struct __pyx_memoryview_obj *memview_obj = NULL; + __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); + for (i = 0; i < ndim; i++) { + if (unlikely(from_mvs->suboffsets[i] >= 0)) { + PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " + "indirect dimensions (axis %d)", i); + goto fail; + } + } + shape_tuple = PyTuple_New(ndim); + if (unlikely(!shape_tuple)) { + goto fail; + } + __Pyx_GOTREF(shape_tuple); + for(i = 0; i < ndim; i++) { + temp_int = PyLong_FromSsize_t(from_mvs->shape[i]); + if(unlikely(!temp_int)) { + goto fail; + } else { +#if CYTHON_ASSUME_SAFE_MACROS + PyTuple_SET_ITEM(shape_tuple, i, temp_int); +#else + if (PyTuple_SetItem(shape_tuple, i, temp_int) < 0) { + goto fail; + } +#endif + temp_int = NULL; + } + } + array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, mode, NULL); + if (unlikely(!array_obj)) { + goto fail; + } + __Pyx_GOTREF(array_obj); + memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( + (PyObject *) array_obj, contig_flag, + dtype_is_object, + from_mvs->memview->typeinfo); + if (unlikely(!memview_obj)) + goto fail; + if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) + goto fail; + if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, + dtype_is_object) < 0)) + goto fail; + goto no_fail; +fail: + __Pyx_XDECREF((PyObject *) new_mvs.memview); + new_mvs.memview = NULL; + new_mvs.data = NULL; +no_fail: + __Pyx_XDECREF(shape_tuple); + __Pyx_XDECREF(temp_int); + __Pyx_XDECREF((PyObject *) array_obj); + __Pyx_RefNannyFinishContext(); + return new_mvs; +} + +/* MemviewSliceInit */ + static int +__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, + int ndim, + __Pyx_memviewslice *memviewslice, + int memview_is_new_reference) +{ + __Pyx_RefNannyDeclarations + int i, retval=-1; + Py_buffer *buf = &memview->view; + __Pyx_RefNannySetupContext("init_memviewslice", 0); + if (unlikely(memviewslice->memview || memviewslice->data)) { + PyErr_SetString(PyExc_ValueError, + "memviewslice is already initialized!"); + goto fail; + } + if (buf->strides) { + for (i = 0; i < ndim; i++) { + memviewslice->strides[i] = buf->strides[i]; + } + } else { + Py_ssize_t stride = buf->itemsize; + for (i = ndim - 1; i >= 0; i--) { + memviewslice->strides[i] = stride; + stride *= buf->shape[i]; + } + } + for (i = 0; i < ndim; i++) { + memviewslice->shape[i] = buf->shape[i]; + if (buf->suboffsets) { + memviewslice->suboffsets[i] = buf->suboffsets[i]; + } else { + memviewslice->suboffsets[i] = -1; + } + } + memviewslice->memview = memview; + memviewslice->data = (char *)buf->buf; + if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { + Py_INCREF((PyObject*)memview); + } + retval = 0; + goto no_fail; +fail: + memviewslice->memview = 0; + memviewslice->data = 0; + retval = -1; +no_fail: + __Pyx_RefNannyFinishContext(); + return retval; +} +#ifndef Py_NO_RETURN +#define Py_NO_RETURN +#endif +static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN { + va_list vargs; + char msg[200]; +#if PY_VERSION_HEX >= 0x030A0000 || defined(HAVE_STDARG_PROTOTYPES) + va_start(vargs, fmt); +#else + va_start(vargs); +#endif + vsnprintf(msg, 200, fmt, vargs); + va_end(vargs); + Py_FatalError(msg); +} +static CYTHON_INLINE int +__pyx_add_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, + PyThread_type_lock lock) +{ + int result; + PyThread_acquire_lock(lock, 1); + result = (*acquisition_count)++; + PyThread_release_lock(lock); + return result; +} +static CYTHON_INLINE int +__pyx_sub_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, + PyThread_type_lock lock) +{ + int result; + PyThread_acquire_lock(lock, 1); + result = (*acquisition_count)--; + PyThread_release_lock(lock); + return result; +} +static CYTHON_INLINE void +__Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) +{ + __pyx_nonatomic_int_type old_acquisition_count; + struct __pyx_memoryview_obj *memview = memslice->memview; + if (unlikely(!memview || (PyObject *) memview == Py_None)) { + return; + } + old_acquisition_count = __pyx_add_acquisition_count(memview); + if (unlikely(old_acquisition_count <= 0)) { + if (likely(old_acquisition_count == 0)) { + if (have_gil) { + Py_INCREF((PyObject *) memview); + } else { + PyGILState_STATE _gilstate = PyGILState_Ensure(); + Py_INCREF((PyObject *) memview); + PyGILState_Release(_gilstate); + } + } else { + __pyx_fatalerror("Acquisition count is %d (line %d)", + old_acquisition_count+1, lineno); + } + } +} +static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *memslice, + int have_gil, int lineno) { + __pyx_nonatomic_int_type old_acquisition_count; + struct __pyx_memoryview_obj *memview = memslice->memview; + if (unlikely(!memview || (PyObject *) memview == Py_None)) { + memslice->memview = NULL; + return; + } + old_acquisition_count = __pyx_sub_acquisition_count(memview); + memslice->data = NULL; + if (likely(old_acquisition_count > 1)) { + memslice->memview = NULL; + } else if (likely(old_acquisition_count == 1)) { + if (have_gil) { + Py_CLEAR(memslice->memview); + } else { + PyGILState_STATE _gilstate = PyGILState_Ensure(); + Py_CLEAR(memslice->memview); + PyGILState_Release(_gilstate); + } + } else { + __pyx_fatalerror("Acquisition count is %d (line %d)", + old_acquisition_count-1, lineno); + } +} + +/* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) - #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) - #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) +#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) +#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + /* 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)) - } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) - } - } 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)) - } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) - } - } - { - 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; - } - +#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; +} + /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) { - #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 (unlikely(!PyLong_Check(x))) { - long val; - PyObject *tmp = __Pyx_PyNumber_Long(x); - if (!tmp) return (long) -1; - val = __Pyx_PyLong_As_long(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(long, __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(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, 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(long) >= 4 * PyLong_SHIFT)) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)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 (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } - #endif - if ((sizeof(long) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) - } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) - } - } else { - #if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(long, __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(long) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } - } - #endif - if ((sizeof(long) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) - } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) - } - } - { - long 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 (long) -1; - assert(PyLong_CheckExact(v)); - } - { - int result = PyObject_RichCompareBool(v, Py_False, Py_LT); - if (unlikely(result < 0)) { - Py_DECREF(v); - return (long) -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 (long) -1; - } else { - stepval = v; - } - v = NULL; - val = (long) 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(long) * 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 |= ((long) 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(long) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((long) idigit) << bits; - } - if (!is_unsigned) { - if (unlikely(val & (((long) 1) << (sizeof(long) * 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 (long) -1; - return val; - } - raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; - raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; - } - +#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 (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (long) -1; + val = __Pyx_PyLong_As_long(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(long, __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(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, 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(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)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 (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __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(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + long 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 (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -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 (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 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(long) * 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 |= ((long) 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(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 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 (long) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; +} + /* 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 !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); - } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); - } - } - { - 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 - } - } - +#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 + } +} + /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) { - #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)) { - return PyLong_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); - #if !CYTHON_COMPILING_IN_PYPY - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); - #endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyLong_FromLong((long) value); - } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { - return PyLong_FromLongLong((PY_LONG_LONG) value); - } - } - { - 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(long), - 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(long)); - 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 - } - } - +#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)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); +#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); +#endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyLong_FromLong((long) value); +#ifdef HAVE_LONG_LONG + } else if (sizeof(long) <= 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(long), + 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(long)); + 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 char __Pyx_PyLong_As_char(PyObject *x) { - #ifdef __Pyx_HAS_GCC_DIAGNOSTIC - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wconversion" - #endif - const char neg_one = (char) -1, const_zero = (char) 0; - #ifdef __Pyx_HAS_GCC_DIAGNOSTIC - #pragma GCC diagnostic pop - #endif - const int is_unsigned = neg_one > const_zero; - if (unlikely(!PyLong_Check(x))) { - char val; - PyObject *tmp = __Pyx_PyNumber_Long(x); - if (!tmp) return (char) -1; - val = __Pyx_PyLong_As_char(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(char, __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(char) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) { - return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) { - return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, 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(char) >= 4 * PyLong_SHIFT)) { - return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)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 (char) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } - #endif - if ((sizeof(char) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) - } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) - } - } else { - #if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(char, __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(char) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { - return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - } - } - #endif - if ((sizeof(char) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) - } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) - } - } - { - char 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 (char) -1; - assert(PyLong_CheckExact(v)); - } - { - int result = PyObject_RichCompareBool(v, Py_False, Py_LT); - if (unlikely(result < 0)) { - Py_DECREF(v); - return (char) -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 (char) -1; - } else { - stepval = v; - } - v = NULL; - val = (char) 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(char) * 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 |= ((char) 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(char) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((char) idigit) << bits; - } - if (!is_unsigned) { - if (unlikely(val & (((char) 1) << (sizeof(char) * 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 (char) -1; - return val; - } - raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to char"); - return (char) -1; - raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to char"); - return (char) -1; - } - -/* FormatTypeName */ - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 - static __Pyx_TypeName - __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) - { - PyObject *module = NULL, *name = NULL, *result = NULL; - #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 - name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, - __pyx_mstate_global->__pyx_n_u_qualname); - #else - name = PyType_GetQualName(tp); - #endif - if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; - module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, - __pyx_mstate_global->__pyx_n_u_module); - if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; - if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { - result = name; - name = NULL; - goto done; - } - result = PyUnicode_FromFormat("%U.%U", module, name); - if (unlikely(result == NULL)) goto bad; - done: - Py_XDECREF(name); - Py_XDECREF(module); - return result; - bad: - PyErr_Clear(); - if (name) { - result = name; - name = NULL; - } else { - result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__6); - } - goto done; - } - #endif - +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const char neg_one = (char) -1, const_zero = (char) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + char val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (char) -1; + val = __Pyx_PyLong_As_char(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(char, __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(char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) { + return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) { + return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, 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(char) >= 4 * PyLong_SHIFT)) { + return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)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 (char) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } +#endif + if ((sizeof(char) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) +#endif + } + } else { +#if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(char, __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(char) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { + return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + } + } +#endif + if ((sizeof(char) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) +#ifdef HAVE_LONG_LONG + } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) +#endif + } + } + { + char 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 (char) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (char) -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 (char) -1; + } else { + stepval = v; + } + v = NULL; + val = (char) 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(char) * 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 |= ((char) 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(char) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((char) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((char) 1) << (sizeof(char) * 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 (char) -1; + return val; + } +raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to char"); + return (char) -1; +raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to char"); + return (char) -1; +} + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static __Pyx_TypeName +__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) +{ + PyObject *module = NULL, *name = NULL, *result = NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_qualname); + #else + name = PyType_GetQualName(tp); + #endif + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; + module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_module); + if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; + if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { + result = name; + name = NULL; + goto done; + } + result = PyUnicode_FromFormat("%U.%U", module, name); + if (unlikely(result == NULL)) goto bad; + done: + Py_XDECREF(name); + Py_XDECREF(module); + return result; + bad: + PyErr_Clear(); + if (name) { + result = name; + name = NULL; + } else { + result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__6); + } + goto done; +} +#endif + /* GetRuntimeVersion */ - #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 - void __Pyx_init_runtime_version(void) { - if (__Pyx_cached_runtime_version == 0) { - const char* rt_version = Py_GetVersion(); - unsigned long version = 0; - unsigned long factor = 0x01000000UL; - unsigned int digit = 0; - int i = 0; - while (factor) { - while ('0' <= rt_version[i] && rt_version[i] <= '9') { - digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); - ++i; - } - version += factor * digit; - if (rt_version[i] != '.') - break; - digit = 0; - factor >>= 8; - ++i; - } - __Pyx_cached_runtime_version = version; - } - } - #endif static unsigned long __Pyx_get_runtime_version(void) { - #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 - return Py_Version & ~0xFFUL; - #else - return __Pyx_cached_runtime_version; - #endif - } - +#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + return Py_Version & ~0xFFUL; +#else + static unsigned long __Pyx_cached_runtime_version = 0; + if (__Pyx_cached_runtime_version == 0) { + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + __Pyx_cached_runtime_version = version; + } + return __Pyx_cached_runtime_version; +#endif +} + /* CheckBinaryVersion */ static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { - const unsigned long MAJOR_MINOR = 0xFFFF0000UL; - if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) - return 0; - if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) - return 1; - { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compile time Python version %d.%d " - "of module '%.100s' " - "%s " - "runtime version %d.%d", - (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), - __Pyx_MODULE_NAME, - (allow_newer) ? "was newer than" : "does not match", - (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) - ); - return PyErr_WarnEx(NULL, message, 1); - } - } - + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } +} + /* NewCodeObj */ #if CYTHON_COMPILING_IN_LIMITED_API - static PyObject* __Pyx__PyCode_New(int a, int p, 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 *exception_table = NULL; - PyObject *types_module=NULL, *code_type=NULL, *result=NULL; - #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 - PyObject *version_info; - PyObject *py_minor_version = NULL; - #endif - long minor_version = 0; - PyObject *type, *value, *traceback; - PyErr_Fetch(&type, &value, &traceback); - #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 - minor_version = 11; - #else - if (!(version_info = PySys_GetObject("version_info"))) goto end; - if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; - minor_version = PyLong_AsLong(py_minor_version); - Py_DECREF(py_minor_version); - if (minor_version == -1 && PyErr_Occurred()) goto end; - #endif - if (!(types_module = PyImport_ImportModule("types"))) goto end; - if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; - if (minor_version <= 7) { - (void)p; - result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else if (minor_version <= 10) { - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else { - if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, - c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); - } - end: - Py_XDECREF(code_type); - Py_XDECREF(exception_table); - Py_XDECREF(types_module); - if (type) { - PyErr_Restore(type, value, traceback); - } - return result; - } - #elif PY_VERSION_HEX >= 0x030B0000 - static PyCodeObject* __Pyx__PyCode_New(int a, int p, 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) { - PyCodeObject *result; - result = - #if PY_VERSION_HEX >= 0x030C0000 - PyUnstable_Code_NewWithPosOnlyArgs + static PyObject* __Pyx__PyCode_New(int a, int p, 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 *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + minor_version = 11; #else - PyCode_NewWithPosOnlyArgs + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; #endif - (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1 - if (likely(result)) - result->_co_firsttraceable = 0; - #endif - return result; + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; } - #elif !CYTHON_COMPILING_IN_PYPY - #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) - #else - #define __Pyx__PyCode_New(a, p, 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) - #endif - static PyObject* __Pyx_PyCode_New( - const __Pyx_PyCode_New_function_description descr, - PyObject * const *varnames, - PyObject *filename, - PyObject *funcname, - PyObject *line_table, - PyObject *tuple_dedup_map - ) { - PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL; - Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; - PyObject *varnames_tuple = PyTuple_New(var_count); - if (unlikely(!varnames_tuple)) return NULL; - for (Py_ssize_t i=0; i < var_count; i++) { - Py_INCREF(varnames[i]); - if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; - } - #if CYTHON_COMPILING_IN_LIMITED_API - varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); - if (!varnames_tuple_dedup) { - if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; - varnames_tuple_dedup = varnames_tuple; - } +#elif PY_VERSION_HEX >= 0x030B0000 + static PyCodeObject* __Pyx__PyCode_New(int a, int p, 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) { + PyCodeObject *result; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs #else - varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); - if (unlikely(!varnames_tuple_dedup)) goto done; - #endif - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(varnames_tuple_dedup); - #endif - if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) { - Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table); - #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely(line_table_length == -1)) goto done; - #endif - Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL; - code_bytes = PyBytes_FromStringAndSize(NULL, code_len); - if (unlikely(!code_bytes)) goto done; - char* c_code_bytes = PyBytes_AsString(code_bytes); - if (unlikely(!c_code_bytes)) goto done; - memset(c_code_bytes, 0, (size_t) code_len); - } - code_obj = (PyObject*) __Pyx__PyCode_New( - (int) descr.argcount, - (int) descr.num_posonly_args, - (int) descr.num_kwonly_args, - (int) descr.nlocals, - 0, - (int) descr.flags, - code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, - __pyx_mstate_global->__pyx_empty_tuple, - __pyx_mstate_global->__pyx_empty_tuple, - varnames_tuple_dedup, - __pyx_mstate_global->__pyx_empty_tuple, - __pyx_mstate_global->__pyx_empty_tuple, - filename, - funcname, - (int) descr.first_line, - (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes - ); - done: - Py_XDECREF(code_bytes); - #if CYTHON_AVOID_BORROWED_REFS - Py_XDECREF(varnames_tuple_dedup); + PyCode_NewWithPosOnlyArgs #endif - Py_DECREF(varnames_tuple); - return code_obj; - } - -/* DecompressString */ - static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) { - PyObject *module, *decompress, *compressed_bytes, *decompressed; - const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib"; - PyObject *methodname = PyUnicode_FromString("decompress"); - if (unlikely(!methodname)) return NULL; - #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000 - if (algo == 3) { - PyObject *fromlist = Py_BuildValue("[O]", methodname); - if (unlikely(!fromlist)) return NULL; - module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0); - Py_DECREF(fromlist); - } else - #endif - module = PyImport_ImportModule(module_name); - if (unlikely(!module)) goto import_failed; - decompress = PyObject_GetAttr(module, methodname); - if (unlikely(!decompress)) goto import_failed; - { - #ifdef __cplusplus - char *memview_bytes = const_cast(s); - #else - #if defined(__clang__) - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wcast-qual" - #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wcast-qual" - #endif - char *memview_bytes = (char*) s; - #if defined(__clang__) - #pragma clang diagnostic pop - #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) - #pragma GCC diagnostic pop - #endif - #endif - #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ) - int memview_flags = 0x100; - #else - int memview_flags = PyBUF_READ; - #endif - compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags); - } - if (unlikely(!compressed_bytes)) { - Py_DECREF(decompress); - goto bad; - } - decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL); - Py_DECREF(compressed_bytes); - Py_DECREF(decompress); - Py_DECREF(module); - Py_DECREF(methodname); - return decompressed; - import_failed: - PyErr_Format(PyExc_ImportError, - "Failed to import '%.20s.decompress' - cannot initialise module strings. " - "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.", - module_name, algo); - bad: - Py_XDECREF(module); - Py_DECREF(methodname); - return NULL; + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1 + if (likely(result)) + result->_co_firsttraceable = 0; + #endif + return result; } - +#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) +#else + #define __Pyx__PyCode_New(a, p, 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) +#endif +static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + const char *line_table, + PyObject *tuple_dedup_map +) { + PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL, *line_table_bytes = NULL; + Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; + PyObject *varnames_tuple = PyTuple_New(var_count); + if (unlikely(!varnames_tuple)) return NULL; + for (Py_ssize_t i=0; i < var_count; i++) { + Py_INCREF(varnames[i]); + if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; + } + #if CYTHON_COMPILING_IN_LIMITED_API + varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); + if (!varnames_tuple_dedup) { + if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; + varnames_tuple_dedup = varnames_tuple; + } + #else + varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); + if (unlikely(!varnames_tuple_dedup)) goto done; + #endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(varnames_tuple_dedup); + #endif + if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL + && !CYTHON_COMPILING_IN_GRAAL) { + line_table_bytes = PyBytes_FromStringAndSize(line_table, descr.line_table_length); + if (unlikely(!line_table_bytes)) goto done; + Py_ssize_t code_len = (descr.line_table_length * 2 + 4) & ~3; + code_bytes = PyBytes_FromStringAndSize(NULL, code_len); + if (unlikely(!code_bytes)) goto done; + char* c_code_bytes = PyBytes_AsString(code_bytes); + if (unlikely(!c_code_bytes)) goto done; + memset(c_code_bytes, 0, (size_t) code_len); + } + code_obj = (PyObject*) __Pyx__PyCode_New( + (int) descr.argcount, + (int) descr.num_posonly_args, + (int) descr.num_kwonly_args, + (int) descr.nlocals, + 0, + (int) descr.flags, + code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + varnames_tuple_dedup, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + filename, + funcname, + (int) descr.first_line, + (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table_bytes) ? line_table_bytes : __pyx_mstate_global->__pyx_empty_bytes + ); +done: + Py_XDECREF(code_bytes); + Py_XDECREF(line_table_bytes); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(varnames_tuple_dedup); + #endif + Py_DECREF(varnames_tuple); + return code_obj; +} + +/* InitStrings */ + static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names) { + while (t->s) { + PyObject *str; + if (t->is_unicode) { + if (t->intern) { + str = PyUnicode_InternFromString(t->s); + } else if (t->encoding) { + str = PyUnicode_Decode(t->s, t->n - 1, encoding_names[t->encoding], NULL); + } else { + str = PyUnicode_FromStringAndSize(t->s, t->n - 1); + } + } else { + str = PyBytes_FromStringAndSize(t->s, t->n - 1); + } + if (!str) + return -1; + *target = str; + if (PyObject_Hash(str) == -1) + return -1; + ++t; + ++target; + } + return 0; +} + #include static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { size_t len = strlen(s); @@ -31110,7 +31339,7 @@ static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) { return __Pyx_NewRef(Py_None); } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return __Pyx_NewRef(b ? Py_True: Py_False); + return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { return PyLong_FromSize_t(ival); @@ -31119,319 +31348,319 @@ static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { /* MultiPhaseInitModuleState */ #if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE - #ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - #if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) - #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 - #else - #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 - #endif - #endif - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS - #error "Module state with PEP489 requires atomics. Currently that's one of\ - C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" - #endif - #if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - #define __Pyx_ModuleStateLookup_Lock() - #define __Pyx_ModuleStateLookup_Unlock() - #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 - static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; - #define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) - #define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) - #elif defined(__cplusplus) && __cplusplus >= 201103L - #include - static std::mutex __Pyx_ModuleStateLookup_mutex; - #define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() - #define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() - #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) - #include - static mtx_t __Pyx_ModuleStateLookup_mutex; - static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; - static void __Pyx_ModuleStateLookup_initialize_mutex(void) { - mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); - } - #define __Pyx_ModuleStateLookup_Lock()\ - call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ - mtx_lock(&__Pyx_ModuleStateLookup_mutex) - #define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) - #elif defined(HAVE_PTHREAD_H) - #include - static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; - #define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) - #define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) - #elif defined(_WIN32) - #include // synchapi.h on its own doesn't work - static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; - #define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) - #define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) - #else - #error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ - Requires C standard >= C11, or C++ standard >= C++11,\ - or pthreads, or the Windows 32 API, or Python >= 3.13." - #endif - typedef struct { - int64_t id; - PyObject *module; - } __Pyx_InterpreterIdAndModule; - typedef struct { - char interpreter_id_as_index; - Py_ssize_t count; - Py_ssize_t allocated; - __Pyx_InterpreterIdAndModule table[1]; - } __Pyx_ModuleStateLookupData; - #define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; - #endif - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; - #else - static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; - #endif - static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( - __Pyx_InterpreterIdAndModule* table, - Py_ssize_t count, - int64_t interpreterId) { - __Pyx_InterpreterIdAndModule* begin = table; - __Pyx_InterpreterIdAndModule* end = begin + count; - if (begin->id == interpreterId) { - return begin; - } - while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { - __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; - if (halfway->id == interpreterId) { - return halfway; - } - if (halfway->id < interpreterId) { - begin = halfway; - } else { - end = halfway; - } - } - for (; begin < end; ++begin) { - if (begin->id >= interpreterId) return begin; - } - return begin; - } - static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { - int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); - if (interpreter_id == -1) return NULL; - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); - { - __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); - if (likely(data)) { - __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); - if (likely(data == new_data)) { - goto read_finished; - } - } - __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); - __Pyx_ModuleStateLookup_Lock(); - __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); - data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); - __Pyx_ModuleStateLookup_Unlock(); - } - read_finished:; - #else - __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; - #endif - __Pyx_InterpreterIdAndModule* found = NULL; - if (unlikely(!data)) goto end; - if (data->interpreter_id_as_index) { - if (interpreter_id < data->count) { - found = data->table+interpreter_id; - } - } else { - found = __Pyx_State_FindModuleStateLookupTableLowerBound( - data->table, data->count, interpreter_id); - } - end: - { - PyObject *result=NULL; - if (found && found->id == interpreter_id) { - result = found->module; - } - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); - #endif - return result; - } - } - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { - while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); - } - #else - #define __Pyx_ModuleStateLookup_wait_until_no_readers() - #endif - static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { - Py_ssize_t to_allocate = (*old_data)->allocated; - while (to_allocate <= interpreter_id) { - if (to_allocate == 0) to_allocate = 1; - else to_allocate *= 2; - } - __Pyx_ModuleStateLookupData *new_data = *old_data; - if (to_allocate != (*old_data)->allocated) { - new_data = (__Pyx_ModuleStateLookupData *)realloc( - *old_data, - sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); - if (!new_data) { - PyErr_NoMemory(); - return -1; - } - for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { - new_data->table[i].id = i; - new_data->table[i].module = NULL; - } - new_data->allocated = to_allocate; - } - new_data->table[interpreter_id].module = module; - if (new_data->count < interpreter_id+1) { - new_data->count = interpreter_id+1; - } - *old_data = new_data; - return 0; - } - static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { - __Pyx_InterpreterIdAndModule *read = data->table; - __Pyx_InterpreterIdAndModule *write = data->table; - __Pyx_InterpreterIdAndModule *end = read + data->count; - for (; readmodule) { - write->id = read->id; - write->module = read->module; - ++write; - } - } - data->count = write - data->table; - for (; writeid = 0; - write->module = NULL; - } - data->interpreter_id_as_index = 0; - } - static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { - int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); - if (interpreter_id == -1) return -1; - int result = 0; - __Pyx_ModuleStateLookup_Lock(); - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); - #else - __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; - #endif - __Pyx_ModuleStateLookupData *new_data = old_data; - if (!new_data) { - new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); - if (!new_data) { - result = -1; - PyErr_NoMemory(); - goto end; - } - new_data->allocated = 1; - new_data->interpreter_id_as_index = 1; - } - __Pyx_ModuleStateLookup_wait_until_no_readers(); - if (new_data->interpreter_id_as_index) { - if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { - result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); - goto end; - } - __Pyx_State_ConvertFromInterpIdAsIndex(new_data); - } - { - Py_ssize_t insert_at = 0; - { - __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( - new_data->table, new_data->count, interpreter_id); - assert(lower_bound); - insert_at = lower_bound - new_data->table; - if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { - lower_bound->module = module; - goto end; // already in table, nothing more to do - } - } - if (new_data->count+1 >= new_data->allocated) { - Py_ssize_t to_allocate = (new_data->count+1)*2; - new_data = - (__Pyx_ModuleStateLookupData*)realloc( - new_data, - sizeof(__Pyx_ModuleStateLookupData) + - (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); - if (!new_data) { - result = -1; - new_data = old_data; - PyErr_NoMemory(); - goto end; - } - new_data->allocated = to_allocate; - } - ++new_data->count; - int64_t last_id = interpreter_id; - PyObject *last_module = module; - for (Py_ssize_t i=insert_at; icount; ++i) { - int64_t current_id = new_data->table[i].id; - new_data->table[i].id = last_id; - last_id = current_id; - PyObject *current_module = new_data->table[i].module; - new_data->table[i].module = last_module; - last_module = current_module; - } - } - end: - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); - #else - __Pyx_ModuleStateLookup_data = new_data; - #endif - __Pyx_ModuleStateLookup_Unlock(); - return result; - } - static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { - int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); - if (interpreter_id == -1) return -1; - __Pyx_ModuleStateLookup_Lock(); - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); - #else - __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; - #endif - if (data->interpreter_id_as_index) { - if (interpreter_id < data->count) { - data->table[interpreter_id].module = NULL; - } - goto done; - } - { - __Pyx_ModuleStateLookup_wait_until_no_readers(); - __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( - data->table, data->count, interpreter_id); - if (!lower_bound) goto done; - if (lower_bound->id != interpreter_id) goto done; - __Pyx_InterpreterIdAndModule *end = data->table+data->count; - for (;lower_boundid = (lower_bound+1)->id; - lower_bound->module = (lower_bound+1)->module; - } - } - --data->count; - if (data->count == 0) { - free(data); - data = NULL; - } - done: - #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); - #else - __Pyx_ModuleStateLookup_data = data; - #endif - __Pyx_ModuleStateLookup_Unlock(); - return 0; - } - #endif - +#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 +#else + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 +#endif +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS +#error "Module state with PEP489 requires atomics. Currently that's one of\ + C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" +#endif +#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +#define __Pyx_ModuleStateLookup_Lock() +#define __Pyx_ModuleStateLookup_Unlock() +#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 +static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; +#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(__cplusplus) && __cplusplus >= 201103L +#include +static std::mutex __Pyx_ModuleStateLookup_mutex; +#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() +#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) +#include +static mtx_t __Pyx_ModuleStateLookup_mutex; +static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; +static void __Pyx_ModuleStateLookup_initialize_mutex(void) { + mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); +} +#define __Pyx_ModuleStateLookup_Lock()\ + call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ + mtx_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(HAVE_PTHREAD_H) +#include +static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; +#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) +#elif defined(_WIN32) +#include // synchapi.h on its own doesn't work +static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; +#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) +#else +#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ + Requires C standard >= C11, or C++ standard >= C++11,\ + or pthreads, or the Windows 32 API, or Python >= 3.13." +#endif +typedef struct { + int64_t id; + PyObject *module; +} __Pyx_InterpreterIdAndModule; +typedef struct { + char interpreter_id_as_index; + Py_ssize_t count; + Py_ssize_t allocated; + __Pyx_InterpreterIdAndModule table[1]; +} __Pyx_ModuleStateLookupData; +#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; +#endif +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; +#else +static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; +#endif +static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( + __Pyx_InterpreterIdAndModule* table, + Py_ssize_t count, + int64_t interpreterId) { + __Pyx_InterpreterIdAndModule* begin = table; + __Pyx_InterpreterIdAndModule* end = begin + count; + if (begin->id == interpreterId) { + return begin; + } + while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; + if (halfway->id == interpreterId) { + return halfway; + } + if (halfway->id < interpreterId) { + begin = halfway; + } else { + end = halfway; + } + } + for (; begin < end; ++begin) { + if (begin->id >= interpreterId) return begin; + } + return begin; +} +static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return NULL; +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + { + __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + if (likely(data)) { + __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); + if (likely(data == new_data)) { + goto read_finished; + } + } + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + __Pyx_ModuleStateLookup_Lock(); + __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); + data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + __Pyx_ModuleStateLookup_Unlock(); + } + read_finished:; +#else + __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_InterpreterIdAndModule* found = NULL; + if (unlikely(!data)) goto end; + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + found = data->table+interpreter_id; + } + } else { + found = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + } + end: + { + PyObject *result=NULL; + if (found && found->id == interpreter_id) { + result = found->module; + } +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); +#endif + return result; + } +} +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE +static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { + while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); +} +#else +#define __Pyx_ModuleStateLookup_wait_until_no_readers() +#endif +static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { + Py_ssize_t to_allocate = (*old_data)->allocated; + while (to_allocate <= interpreter_id) { + if (to_allocate == 0) to_allocate = 1; + else to_allocate *= 2; + } + __Pyx_ModuleStateLookupData *new_data = *old_data; + if (to_allocate != (*old_data)->allocated) { + new_data = (__Pyx_ModuleStateLookupData *)realloc( + *old_data, + sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + PyErr_NoMemory(); + return -1; + } + for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { + new_data->table[i].id = i; + new_data->table[i].module = NULL; + } + new_data->allocated = to_allocate; + } + new_data->table[interpreter_id].module = module; + if (new_data->count < interpreter_id+1) { + new_data->count = interpreter_id+1; + } + *old_data = new_data; + return 0; +} +static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { + __Pyx_InterpreterIdAndModule *read = data->table; + __Pyx_InterpreterIdAndModule *write = data->table; + __Pyx_InterpreterIdAndModule *end = read + data->count; + for (; readmodule) { + write->id = read->id; + write->module = read->module; + ++write; + } + } + data->count = write - data->table; + for (; writeid = 0; + write->module = NULL; + } + data->interpreter_id_as_index = 0; +} +static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + int result = 0; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; +#endif + __Pyx_ModuleStateLookupData *new_data = old_data; + if (!new_data) { + new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); + if (!new_data) { + result = -1; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = 1; + new_data->interpreter_id_as_index = 1; + } + __Pyx_ModuleStateLookup_wait_until_no_readers(); + if (new_data->interpreter_id_as_index) { + if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); + goto end; + } + __Pyx_State_ConvertFromInterpIdAsIndex(new_data); + } + { + Py_ssize_t insert_at = 0; + { + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + new_data->table, new_data->count, interpreter_id); + assert(lower_bound); + insert_at = lower_bound - new_data->table; + if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { + lower_bound->module = module; + goto end; // already in table, nothing more to do + } + } + if (new_data->count+1 >= new_data->allocated) { + Py_ssize_t to_allocate = (new_data->count+1)*2; + new_data = + (__Pyx_ModuleStateLookupData*)realloc( + new_data, + sizeof(__Pyx_ModuleStateLookupData) + + (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + result = -1; + new_data = old_data; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = to_allocate; + } + ++new_data->count; + int64_t last_id = interpreter_id; + PyObject *last_module = module; + for (Py_ssize_t i=insert_at; icount; ++i) { + int64_t current_id = new_data->table[i].id; + new_data->table[i].id = last_id; + last_id = current_id; + PyObject *current_module = new_data->table[i].module; + new_data->table[i].module = last_module; + last_module = current_module; + } + } + end: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); +#else + __Pyx_ModuleStateLookup_data = new_data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return result; +} +static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + __Pyx_ModuleStateLookup_Lock(); +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); +#else + __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; +#endif + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + data->table[interpreter_id].module = NULL; + } + goto done; + } + { + __Pyx_ModuleStateLookup_wait_until_no_readers(); + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + if (!lower_bound) goto done; + if (lower_bound->id != interpreter_id) goto done; + __Pyx_InterpreterIdAndModule *end = data->table+data->count; + for (;lower_boundid = (lower_bound+1)->id; + lower_bound->module = (lower_bound+1)->module; + } + } + --data->count; + if (data->count == 0) { + free(data); + data = NULL; + } + done: +#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); +#else + __Pyx_ModuleStateLookup_data = data; +#endif + __Pyx_ModuleStateLookup_Unlock(); + return 0; +} +#endif + /* #### Code section: utility_code_pragmas_end ### */ #ifdef _MSC_VER #pragma warning( pop ) diff --git a/oceanmesh/mesh_generator.py b/oceanmesh/mesh_generator.py index d866b2f..deafa73 100644 --- a/oceanmesh/mesh_generator.py +++ b/oceanmesh/mesh_generator.py @@ -310,30 +310,17 @@ def _check_bbox(bbox): assert int(len(bbox) / 2), "`dim` must be 2" -def _validate_multiscale_domains(domains, edge_lengths): # noqa: C901 - """Validate domain & sizing function compatibility for multiscale meshing. - - Checks performed: - 1. Presence of CRS on all domains. - 2. Global domain (stereo=True) ordering: must be first if present. - 3. Bbox containment for regional domains within global domain when mixing. - 4. CRS compatibility (global EPSG:4326, regional geographic or projected). - 5. Edge length Grid CRS matches corresponding domain CRS. - 6. Stereo flag usage: only global domain should have stereo=True. +def _find_global_domain(domains, errors): + """Identify the global (stereo=True) domain if present. Returns ------- - (ok: bool, errors: list[str]) + global_domain: Domain | None """ - errors = [] - - if len(domains) != len(edge_lengths): - errors.append("Number of domains and edge_lengths differ.") - return False, errors - # Determine global domain (stereo=True) stereo_flags = [getattr(d, "stereo", False) for d in domains] global_indices = [i for i, s in enumerate(stereo_flags) if s] + global_domain = None if len(global_indices) > 1: errors.append("Only one global (stereo=True) domain permitted.") @@ -342,17 +329,12 @@ def _validate_multiscale_domains(domains, edge_lengths): # noqa: C901 errors.append("Global domain must be the first (coarsest) domain in list.") global_domain = domains[global_indices[0]] - # Helper flags for conditional CRS requirements - domain_crs_list = [getattr(d, "crs", None) for d in domains] - edge_crs_list = [ - getattr(el, "crs", None) if hasattr(el, "crs") else None for el in edge_lengths - ] - has_any_crs = any(c is not None for c in domain_crs_list) or any( - c is not None for c in edge_crs_list - ) + return global_domain + + +def _detect_implicit_global_domain(domains): + """Detect implicit global-like domain: EPSG:4326 + global bbox but stereo=False.""" - # Detect implicit global domain: EPSG:4326 + global-like bbox but stereo=False - implicit_global_idx = None for i, d in enumerate(domains): dcrs = getattr(d, "crs", None) try: @@ -361,135 +343,225 @@ def _validate_multiscale_domains(domains, edge_lengths): # noqa: C901 and CRS.from_user_input(dcrs).to_epsg() == 4326 and is_global_bbox(d.bbox) ): - implicit_global_idx = i - break + return i except Exception: # If CRS can't be parsed, skip implicit detection for this domain - pass + continue + return None - # If no CRS anywhere and no implicit global detected, allow bbox-only flows without error - if has_any_crs or implicit_global_idx is not None: - # Now missing CRS becomes an error because compatibility checks are required - for i, d in enumerate(domains): - if getattr(d, "crs", None) is None: + +def _has_any_crs_metadata(domains, edge_lengths): + domain_crs_list = [getattr(d, "crs", None) for d in domains] + edge_crs_list = [ + getattr(el, "crs", None) if hasattr(el, "crs") else None for el in edge_lengths + ] + return any(c is not None for c in domain_crs_list) or any( + c is not None for c in edge_crs_list + ) + + +def _validate_crs_presence(domains, errors): + for i, d in enumerate(domains): + if getattr(d, "crs", None) is None: + errors.append( + f"Domain #{i} missing CRS metadata. Provide CRS via Shoreline(crs=...) to enable compatibility checks." + ) + + +def _validate_global_domain_and_regions(global_domain, domains, errors): + """Validate CRS requirements, containment, and CRS mixing rules when a global domain is present.""" + + gcrs = getattr(global_domain, "crs", None) + if gcrs is not None: + try: + gcrs_str = get_crs_string(gcrs) + except Exception: + gcrs_str = str(gcrs) + + # Explicitly require global CRS be EPSG:4326 + try: + parsed = CRS.from_user_input(gcrs) + if parsed.to_epsg() != 4326: errors.append( - f"Domain #{i} missing CRS metadata. Provide CRS via Shoreline(crs=...) to enable compatibility checks." + f"Global domain CRS {gcrs_str} must be EPSG:4326 for global+regional multiscale meshing." ) + except Exception: + errors.append( + f"Global domain CRS '{gcrs_str}' could not be parsed; expected EPSG:4326." + ) - # If we have a global domain, validate CRS and containment - if global_domain is not None: - gcrs = getattr(global_domain, "crs", None) - if gcrs is not None: - try: - gcrs_str = get_crs_string(gcrs) - except Exception: - gcrs_str = str(gcrs) - # Explicitly require global CRS be EPSG:4326 - try: - parsed = CRS.from_user_input(gcrs) - if parsed.to_epsg() != 4326: - errors.append( - f"Global domain CRS {gcrs_str} must be EPSG:4326 for global+regional multiscale meshing." - ) - except Exception: - errors.append( - f"Global domain CRS '{gcrs_str}' could not be parsed; expected EPSG:4326." + # Containment checks + regional stereo checks + CRS compatibility + for i, d in enumerate(domains[1:], start=1): + g_bbox = global_domain.bbox + d_bbox = d.bbox + try: + if getattr(global_domain, "stereo", False): + lon_min, lon_max, lat_min, lat_max = d_bbox + reg_corners_lon = [lon_min, lon_max, lon_max, lon_min] + reg_corners_lat = [lat_min, lat_min, lat_max, lat_max] + sx, sy = to_stereo(np.array(reg_corners_lon), np.array(reg_corners_lat)) + stereo_reg_bbox = ( + float(np.min(sx)), + float(np.max(sx)), + float(np.min(sy)), + float(np.max(sy)), ) - # Containment checks for regional domains - for i, d in enumerate(domains[1:], start=1): - # Perform containment in lat/lon if global stereographic domain provided its bbox in stereo space - g_bbox = global_domain.bbox - d_bbox = d.bbox - try: - if getattr(global_domain, "stereo", False): - # Convert regional bbox corners to stereo then compare - lon_min, lon_max, lat_min, lat_max = d_bbox - reg_corners_lon = [lon_min, lon_max, lon_max, lon_min] - reg_corners_lat = [lat_min, lat_min, lat_max, lat_max] - sx, sy = to_stereo( - np.array(reg_corners_lon), np.array(reg_corners_lat) + if not bbox_contains(g_bbox, stereo_reg_bbox): + errors.append( + f"Regional domain #{i} bbox {d_bbox} (lat/lon) not contained within global stereo bbox {g_bbox}." ) - stereo_reg_bbox = ( - float(np.min(sx)), - float(np.max(sx)), - float(np.min(sy)), - float(np.max(sy)), + else: + if not bbox_contains(g_bbox, d_bbox): + errors.append( + f"Regional domain #{i} bbox {d_bbox} not contained within global bbox {g_bbox}." ) - if not bbox_contains(g_bbox, stereo_reg_bbox): - errors.append( - f"Regional domain #{i} bbox {d_bbox} (lat/lon) not contained within global stereo bbox {g_bbox}." - ) - else: - if not bbox_contains(g_bbox, d_bbox): - errors.append( - f"Regional domain #{i} bbox {d_bbox} not contained within global bbox {g_bbox}." - ) - except Exception: + except Exception: + errors.append( + f"Regional domain #{i} containment check failed due to transformation error; verify CRS and stereo settings." + ) + + if getattr(d, "stereo", False): + errors.append( + f"Regional domain #{i} has stereo=True; only the global domain may set stereo=True." + ) + + ok_crs, msg_crs = validate_crs_compatible( + getattr(global_domain, "crs", None), getattr(d, "crs", None) + ) + if not ok_crs: + errors.append(msg_crs) + + +def _validate_implicit_global_mixing(domains, implicit_global_idx, errors): + """Warn/error when a global-like EPSG:4326 domain is mixed with other CRSs without stereo=True.""" + + ig = domains[implicit_global_idx] + if getattr(ig, "stereo", False): + return + + try: + ig_crs = ( + CRS.from_user_input(ig.crs) + if getattr(ig, "crs", None) is not None + else None + ) + for j, d in enumerate(domains): + if j == implicit_global_idx: + continue + dcrs = getattr(d, "crs", None) + if dcrs is None or ig_crs is None: + continue + if not ig_crs.equals(CRS.from_user_input(dcrs)): errors.append( - f"Regional domain #{i} containment check failed due to transformation error; verify CRS and stereo settings." + "Detected global-like EPSG:4326 domain without stereo=True mixed with other CRS. " + "Set stereo=True on the global domain and place it first in the list." ) - # Stereo flag must be False for regional domains - if getattr(d, "stereo", False): + break + except Exception: + # If CRS parsing fails, skip this implicit enforcement + return + + +def _validate_edge_length_crs(domains, edge_lengths, errors): + for i, (d, el) in enumerate(zip(domains, edge_lengths)): + if not hasattr(el, "crs"): + continue + + el_crs = getattr(el, "crs", None) + d_crs = getattr(d, "crs", None) + if el_crs is None or d_crs is None: + continue + + try: + if not CRS.from_user_input(el_crs).equals(CRS.from_user_input(d_crs)): errors.append( - f"Regional domain #{i} has stereo=True; only the global domain may set stereo=True." + f"Edge length #{i} CRS {get_crs_string(el_crs)} does not match domain CRS {get_crs_string(d_crs)}." ) - # CRS compatibility between global and regional - ok_crs, msg_crs = validate_crs_compatible( - getattr(global_domain, "crs", None), getattr(d, "crs", None) + except Exception: + errors.append( + f"Edge length #{i} CRS could not be compared to domain CRS (el={get_crs_string(el_crs)}, domain={get_crs_string(d_crs)})." ) - if not ok_crs: - errors.append(msg_crs) + + +def _validate_multiscale_domains(domains, edge_lengths): # noqa: C901 + """Validate domain & sizing function compatibility for multiscale meshing. + + Checks performed: + 1. Presence of CRS on all domains. + 2. Global domain (stereo=True) ordering: must be first if present. + 3. Bbox containment for regional domains within global domain when mixing. + 4. CRS compatibility (global EPSG:4326, regional geographic or projected). + 5. Edge length Grid CRS matches corresponding domain CRS. + 6. Stereo flag usage: only global domain should have stereo=True. + + Returns + ------- + (ok: bool, errors: list[str]) + """ + errors = [] + + if len(domains) != len(edge_lengths): + errors.append("Number of domains and edge_lengths differ.") + return False, errors + + global_domain = _find_global_domain(domains, errors) + implicit_global_idx = _detect_implicit_global_domain(domains) + has_any_crs = _has_any_crs_metadata(domains, edge_lengths) + + # If no CRS anywhere and no implicit global detected, allow bbox-only flows without error + if has_any_crs or implicit_global_idx is not None: + _validate_crs_presence(domains, errors) + + # If we have a global domain, validate CRS and containment + if global_domain is not None: + _validate_global_domain_and_regions(global_domain, domains, errors) # Implicit global-like domain with EPSG:4326 but stereo=False mixing with different CRS if implicit_global_idx is not None: - ig = domains[implicit_global_idx] - if not getattr(ig, "stereo", False): - # If any other domain has a CRS that is not equal to EPSG:4326, require stereo=True and ordering - try: - ig_crs = ( - CRS.from_user_input(ig.crs) - if getattr(ig, "crs", None) is not None - else None - ) - for j, d in enumerate(domains): - if j == implicit_global_idx: - continue - dcrs = getattr(d, "crs", None) - if dcrs is None: - continue - if ig_crs is None: - continue - if not ig_crs.equals(CRS.from_user_input(dcrs)): - errors.append( - "Detected global-like EPSG:4326 domain without stereo=True mixed with other CRS. " - "Set stereo=True on the global domain and place it first in the list." - ) - break - except Exception: - # If CRS parsing fails, skip this implicit enforcement - pass + _validate_implicit_global_mixing(domains, implicit_global_idx, errors) # Edge length CRS matching - for i, (d, el) in enumerate(zip(domains, edge_lengths)): - if hasattr(el, "crs"): - el_crs = getattr(el, "crs", None) - d_crs = getattr(d, "crs", None) - if el_crs is not None and d_crs is not None: - try: - if not CRS.from_user_input(el_crs).equals( - CRS.from_user_input(d_crs) - ): - errors.append( - f"Edge length #{i} CRS {get_crs_string(el_crs)} does not match domain CRS {get_crs_string(d_crs)}." - ) - except Exception: - errors.append( - f"Edge length #{i} CRS could not be compared to domain CRS (el={get_crs_string(el_crs)}, domain={get_crs_string(d_crs)})." - ) + _validate_edge_length_crs(domains, edge_lengths, errors) return len(errors) == 0, errors +def _sanitize_smoothed_sizing_grids(edge_lengths_smoothed): + """Ensure each smoothed sizing Grid has a positive finite hmin. + + The multiscale sizing blender can produce Grid objects with missing/invalid + `hmin`. This helper recomputes `hmin` from the underlying grid values. + """ + + for i, el in enumerate(edge_lengths_smoothed): + _sanitize_smoothed_sizing_grid(i, el) + + +def _sanitize_smoothed_sizing_grid(i, el): + if not isinstance(el, Grid): + return + + hmin = getattr(el, "hmin", None) + if hmin is not None and np.isfinite(hmin) and hmin > 0: + return + + vals = el.values + if np.ma.isMaskedArray(vals): + vals = np.ma.filled(vals, np.nan) + vals = np.asarray(vals) + pos = vals[np.isfinite(vals) & (vals > 0)] + if pos.size > 0: + el.hmin = float(np.nanmin(pos)) + logger.warning( + f"Sizing grid #{i} had invalid hmin; recomputed fallback hmin={el.hmin:.3f}" + ) + return + + raise ValueError( + f"Sizing grid #{i} contains no positive values to determine a minimum edge length." + ) + + # NOTE: stereo-aware sizing wrapper removed per verification comment; sizing # functions are always evaluated on lat/lon points supplied by generate_mesh. @@ -561,7 +633,7 @@ def generate_multiscale_mesh(domains, edge_lengths, **kwargs): Notes ----- * Regional-only multiscale meshing (no global domain) requires all domains share a compatible CRS. - * Global+regional meshing follows a two-step workflow: sizing in WGS84, global meshing in stereographic space. + * Global+regional meshing follows a two-step workflow: sizing in EPSG:4326, global meshing in stereographic space. * Validation errors provide detailed guidance (CRS mismatches, bbox containment, stereo flag misuse). * Domain metadata (CRS, stereo flags) is collected internally to manage automatic coordinate transformations. @@ -593,7 +665,7 @@ def generate_multiscale_mesh(domains, edge_lengths, **kwargs): "blend_polynomial": 2, "blend_max_iter": 20, "blend_nnear": 256, - "lock_boundary": False, + "lock_boundary": True, } opts.update(kwargs) _parse_kwargs(kwargs) @@ -613,25 +685,8 @@ def generate_multiscale_mesh(domains, edge_lengths, **kwargs): p=opts["blend_polynomial"], domain_metadata=domain_metadata, ) - # Sanitize hmin on each smoothed sizing grid to ensure positivity - for i, el in enumerate(edge_lengths_smoothed): - if isinstance(el, Grid): - hmin = getattr(el, "hmin", None) - if hmin is None or not np.isfinite(hmin) or hmin <= 0: - vals = el.values - if np.ma.isMaskedArray(vals): - vals = np.ma.filled(vals, np.nan) - vals = np.asarray(vals) - pos = vals[np.isfinite(vals) & (vals > 0)] - if pos.size > 0: - el.hmin = float(np.nanmin(pos)) - logger.warning( - f"Sizing grid #{i} had invalid hmin; recomputed fallback hmin={el.hmin:.3f}" - ) - else: - raise ValueError( - f"Sizing grid #{i} contains no positive values to determine a minimum edge length." - ) + + _sanitize_smoothed_sizing_grids(edge_lengths_smoothed) union, nests = multiscale_signed_distance_function(domains) _p = [] global_minimum = 9999 @@ -744,7 +799,7 @@ def generate_mesh(domain, edge_length, **kwargs): geps = 1e-3 * np.amin(min_edge_length) deps = np.sqrt(np.finfo(np.double).eps) # * np.amin(min_edge_length) - pfix, nfix = _unpack_pfix(_DIM, opts) + pfix, _nfix = _unpack_pfix(_DIM, opts) lock_boundary = opts["lock_boundary"] if opts["points"] is None: @@ -777,18 +832,17 @@ def generate_mesh(domain, edge_length, **kwargs): # Get the current topology of the triangulation p, t = _get_topology(dt) - ifix = [] + fixed_indices = [] if lock_boundary: _, bpts = _external_topology(p, t) for fix in bpts: - ifix.append(_closest_node(fix, p)) - nfix = len(ifix) + fixed_indices.append(_closest_node(fix, p)) # Find where pfix went - if nfix > 0: + if len(pfix) > 0: for fix in pfix: ind = _closest_node(fix, p) - ifix.append(ind) + fixed_indices.append(ind) p[ind] = fix # Remove points outside the domain @@ -804,7 +858,9 @@ def generate_mesh(domain, edge_length, **kwargs): Ftot = _compute_forces(p, t, fh, min_edge_length, L0mult, opts) # Force = 0 at fixed points - Ftot[:nfix] = 0 + if fixed_indices: + fixed_indices = np.unique(np.asarray(fixed_indices, dtype=int)) + Ftot[fixed_indices] = 0 # Update positions p += delta_t * Ftot diff --git a/pyproject.toml b/pyproject.toml index e9a0876..e5cba9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,3 +11,17 @@ build-backend = "setuptools.build_meta" [tool.black] target-version = ['py310'] + +[tool.cibuildwheel] +# Build wheels for CPython 3.10–3.12 (can expand once deps support newer Pythons) +build = "cp310-* cp311-* cp312-*" +skip = "pp* *-musllinux_*" + +[tool.cibuildwheel.linux] +archs = ["x86_64"] + +[tool.cibuildwheel.macos] +archs = ["arm64", "x86_64"] + +[tool.cibuildwheel.windows] +archs = ["AMD64"] diff --git a/setup.py b/setup.py index 4b1bfed..bc43b0c 100644 --- a/setup.py +++ b/setup.py @@ -2,12 +2,29 @@ import sys import configparser -import numpy as np -from pybind11.setup_helpers import Pybind11Extension, build_ext as pybind_build_ext +try: + import numpy as np + + _HAVE_NUMPY = True +except ModuleNotFoundError: # pragma: no cover + np = None + _HAVE_NUMPY = False from setuptools import Extension, setup # , find_packages import versioneer +try: + from pybind11.setup_helpers import ( # pyright: ignore[reportMissingImports] + Pybind11Extension, + build_ext as pybind_build_ext, + ) + + _HAVE_PYBIND11 = True +except ModuleNotFoundError: # pragma: no cover + Pybind11Extension = None + pybind_build_ext = None + _HAVE_PYBIND11 = False + sys.path.append(os.path.dirname(__file__)) # Build system: This package uses pybind11's setuptools integration to compile @@ -28,43 +45,91 @@ "oceanmesh/cpp/fast_geometry.cpp", ] -if os.name == "nt": - home = os.environ["USERPROFILE"].replace("\\", "/") - vcpkg = f"{home}/OceanMesh/vcpkg/installed/x64-windows" - ext_modules = [ - Pybind11Extension( - loc, - [fi], - include_dirs=[f"{vcpkg}/include"], - extra_link_args=[f"/LIBPATH:{vcpkg}/lib"], - libraries=["gmp", "mpfr"], - ) - for fi, loc in zip(files, is_called) - ] -else: - # no CGAL libraries necessary from CGAL 5.0 onwards - # Ensure linker can find conda-provided lib paths on macOS/Linux - conda_prefix = os.environ.get("CONDA_PREFIX", sys.prefix) - conda_lib = os.path.join(conda_prefix, "lib") - have_libdir = os.path.isdir(conda_lib) - - extra_link_args = [] - library_dirs = [] - if have_libdir: - library_dirs = [conda_lib] - # Help the linker locate shared libs at build and at runtime - extra_link_args = [f"-L{conda_lib}", f"-Wl,-rpath,{conda_lib}"] - - ext_modules = [ - Pybind11Extension( - loc, - [fi], - libraries=["gmp", "mpfr"], - library_dirs=library_dirs, - extra_link_args=extra_link_args, - ) - for fi, loc in zip(files, is_called) - ] + +ext_modules = [] + + +def _get_prefix_paths(prefix: str): + if not prefix: + return None, None + + include_dir = os.path.join(prefix, "include") + lib_dir = os.path.join(prefix, "lib") + + have_include = os.path.isdir(include_dir) + have_lib = os.path.isdir(lib_dir) + + return (include_dir if have_include else None), (lib_dir if have_lib else None) + +if _HAVE_PYBIND11: + if os.name == "nt": + # Prefer an explicit prefix when building wheels (e.g., via micromamba/conda). + # This avoids hard-coding a developer-specific vcpkg location. + prefix = os.environ.get("OCEANMESH_PREFIX") or os.environ.get("CONDA_PREFIX") + include_dir, lib_dir = _get_prefix_paths(prefix) + + if include_dir and lib_dir: + ext_modules = [ + Pybind11Extension( + loc, + [fi], + include_dirs=[include_dir], + library_dirs=[lib_dir], + extra_link_args=[f"/LIBPATH:{lib_dir}"], + libraries=["gmp", "mpfr"], + ) + for fi, loc in zip(files, is_called) + ] + else: + home = os.environ.get("USERPROFILE", "").replace("\\", "/") + vcpkg_root = os.environ.get("VCPKG_ROOT") or os.environ.get( + "VCPKG_INSTALLATION_ROOT" + ) + if vcpkg_root: + vcpkg_root = vcpkg_root.replace("\\", "/") + vcpkg = f"{vcpkg_root}/installed/x64-windows" + else: + vcpkg = f"{home}/OceanMesh/vcpkg/installed/x64-windows" + + ext_modules = [ + Pybind11Extension( + loc, + [fi], + include_dirs=[f"{vcpkg}/include"], + extra_link_args=[f"/LIBPATH:{vcpkg}/lib"], + libraries=["gmp", "mpfr"], + ) + for fi, loc in zip(files, is_called) + ] + else: + # no CGAL libraries necessary from CGAL 5.0 onwards + # Ensure compiler/linker can find dependency headers and libs when building + # wheels (CI) without requiring system-wide installs. + prefix = os.environ.get("OCEANMESH_PREFIX") or os.environ.get("CONDA_PREFIX") + include_dir, lib_dir = _get_prefix_paths(prefix) + + include_dirs = [] + library_dirs = [] + extra_link_args = [] + + if include_dir: + include_dirs.append(include_dir) + + if lib_dir: + library_dirs.append(lib_dir) + extra_link_args.extend([f"-L{lib_dir}", f"-Wl,-rpath,{lib_dir}"]) + + ext_modules = [ + Pybind11Extension( + loc, + [fi], + include_dirs=include_dirs, + libraries=["gmp", "mpfr"], + library_dirs=library_dirs, + extra_link_args=extra_link_args, + ) + for fi, loc in zip(files, is_called) + ] def maybe_add_cython_extensions(): @@ -76,6 +141,9 @@ def maybe_add_cython_extensions(): the build proceeds without the accelerated kernel. """ + if not _HAVE_NUMPY: + return [] + from pathlib import Path src_dir = Path(__file__).parent / "oceanmesh" / "geometry" @@ -107,7 +175,21 @@ def maybe_add_cython_extensions(): cmdclass = versioneer.get_cmdclass() -cmdclass.update({"build_ext": pybind_build_ext}) + +if _HAVE_PYBIND11: + cmdclass.update({"build_ext": pybind_build_ext}) +else: + from setuptools.command.build_ext import build_ext as _setuptools_build_ext + + class build_ext(_setuptools_build_ext): + def run(self): + raise ModuleNotFoundError( + "pybind11 is required to build oceanmesh C++ extensions. " + "Install it (e.g. `python -m pip install pybind11`) or build via PEP 517 " + "so build dependencies are installed automatically." + ) + + cmdclass.update({"build_ext": build_ext}) def get_requirements(): diff --git a/tests/test_multiscale.py b/tests/test_multiscale.py index b3ff24f..f1363ff 100644 --- a/tests/test_multiscale.py +++ b/tests/test_multiscale.py @@ -1,8 +1,5 @@ import os -import matplotlib.gridspec as gridspec -import matplotlib.pyplot as plt -import matplotlib.tri as tri import numpy as np import oceanmesh as om @@ -59,46 +56,16 @@ def test_multiscale_overlap(): # Control the element size transition # from coarse to fine with the kwargs prefixed with `blend` points, cells = om.generate_multiscale_mesh( - [sdf1, sdf2, sdf3], [el1, el2, el3], blend_width=1000, blend_max_iter=100 + [sdf1, sdf2, sdf3], + [el1, el2, el3], + blend_width=1000, + max_iter=5, + blend_max_iter=5, ) - # remove degenerate mesh faces and other common problems in the mesh - points, cells = om.make_mesh_boundaries_traversable(points, cells) - # remove singly connected elements (elements - # connected to only one other element) - points, cells = om.delete_faces_connected_to_one_face(points, cells) - # remove poor boundary elements with quality < 15% - points, cells = om.delete_boundary_faces(points, cells, min_qual=0.15) - # apply a Laplacian smoother that preservers the mesh size distribution - points, cells = om.laplacian2(points, cells) - - triang = tri.Triangulation(points[:, 0], points[:, 1], cells) - gs = gridspec.GridSpec(3, 1) - gs.update(wspace=0.1) - plt.figure(figsize=[4.8, 6.4]) - - ax = plt.subplot(gs[0, 0]) - ax.set_aspect("equal") - ax.triplot(triang, "-", lw=0.5) - ax.plot(bbox2[:, 0], bbox2[:, 1], "r--") - ax.plot(bbox3[:, 0], bbox3[:, 1], "r--") - - ax = plt.subplot(gs[1, 0]) - buf = 0.07 - ax.set_xlim([min(bbox2[:, 0]) - buf, max(bbox2[:, 0]) + buf]) - ax.set_ylim([min(bbox2[:, 1]) - buf, max(bbox2[:, 1]) + buf]) - ax.set_aspect("equal") - ax.triplot(triang, "-", lw=0.5) - ax.plot(bbox2[:, 0], bbox2[:, 1], "r--") - - ax = plt.subplot(gs[2, 0]) - buf = 0.07 - ax.set_xlim([min(bbox3[:, 0]) - buf, max(bbox3[:, 0]) + buf]) - ax.set_ylim([min(bbox3[:, 1]) - buf, max(bbox3[:, 1]) + buf]) - ax.set_aspect("equal") - ax.triplot(triang, "-", lw=0.5) - ax.plot(bbox3[:, 0], bbox3[:, 1], "r--") - - plt.show() + assert points.ndim == 2 and points.shape[1] == 2 + assert cells.ndim == 2 and cells.shape[1] == 3 + assert len(points) > 0 + assert len(cells) > 0 def test_multiscale_non_overlap(): @@ -150,43 +117,13 @@ def test_multiscale_non_overlap(): # coarse to fine with the kwargs prefixed with `blend`. # Function objects must appear in order of descending `min_edge_length`. points, cells = om.generate_multiscale_mesh( - [sdf1, sdf2, sdf3], [el1, el2, el3], blend_width=1000, blend_max_iter=100 + [sdf1, sdf2, sdf3], + [el1, el2, el3], + blend_width=1000, + max_iter=5, + blend_max_iter=5, ) - # remove degenerate mesh faces and other common problems in the mesh - points, cells = om.make_mesh_boundaries_traversable(points, cells) - # remove singly connected elements (elements - # connected to only one other element) - points, cells = om.delete_faces_connected_to_one_face(points, cells) - # remove poor boundary elements with quality < 15% - points, cells = om.delete_boundary_faces(points, cells, min_qual=0.15) - # apply a Laplacian smoother that preservers the mesh size distribution - points, cells = om.laplacian2(points, cells) - - triang = tri.Triangulation(points[:, 0], points[:, 1], cells) - gs = gridspec.GridSpec(3, 1) - gs.update(wspace=0.1) - plt.figure(figsize=[4.8, 6.4]) - - ax = plt.subplot(gs[0, 0]) - ax.set_aspect("equal") - ax.triplot(triang, "-", lw=0.5) - ax.plot(bbox2[:, 0], bbox2[:, 1], "r--") - ax.plot(bbox3[:, 0], bbox3[:, 1], "r--") - - ax = plt.subplot(gs[1, 0]) - buf = 0.07 - ax.set_xlim([min(bbox2[:, 0]) - buf, max(bbox2[:, 0]) + buf]) - ax.set_ylim([min(bbox2[:, 1]) - buf, max(bbox2[:, 1]) + buf]) - ax.set_aspect("equal") - ax.triplot(triang, "-", lw=0.5) - ax.plot(bbox2[:, 0], bbox2[:, 1], "r--") - - ax = plt.subplot(gs[2, 0]) - buf = 0.07 - ax.set_xlim([min(bbox3[:, 0]) - buf, max(bbox3[:, 0]) + buf]) - ax.set_ylim([min(bbox3[:, 1]) - buf, max(bbox3[:, 1]) + buf]) - ax.set_aspect("equal") - ax.triplot(triang, "-", lw=0.5) - ax.plot(bbox3[:, 0], bbox3[:, 1], "r--") - - plt.show() + assert points.ndim == 2 and points.shape[1] == 2 + assert cells.ndim == 2 and cells.shape[1] == 3 + assert len(points) > 0 + assert len(cells) > 0 From 7aa897292857ddfa6cbb4046ecacdbb702814593 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Fri, 2 Jan 2026 18:52:26 -0500 Subject: [PATCH 02/18] reduce complex in geodata, fix for py3.12+, flake8 fixes --- .gitignore | 2 +- oceanmesh/geodata.py | 497 +++++++++++++++++++++++++++++++------------ setup.py | 1 + tox.ini | 19 +- 4 files changed, 377 insertions(+), 142 deletions(-) diff --git a/.gitignore b/.gitignore index 084a398..4dda6ad 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,4 @@ build/ tests/*.txt *.zip tests/gshhg-shp-2.3.7/ - +.gitignore diff --git a/oceanmesh/geodata.py b/oceanmesh/geodata.py index c98cfc3..b48838b 100644 --- a/oceanmesh/geodata.py +++ b/oceanmesh/geodata.py @@ -29,6 +29,350 @@ __all__ = ["Shoreline", "DEM", "get_polygon_coordinates", "create_circle_coords"] +def _bbox_overlaps_bounds(bbox_vals, bounds): + xmin, xmax, ymin, ymax = bbox_vals + ixmin = max(xmin, bounds.left) + ixmax = min(xmax, bounds.right) + iymin = max(ymin, bounds.bottom) + iymax = min(ymax, bounds.top) + return (ixmin < ixmax) and (iymin < iymax) + + +def _transform_bbox_to_src(bbox_vals, src_crs, dst_crs): + if src_crs is None or dst_crs is None or src_crs == dst_crs: + return bbox_vals + + from pyproj import Transformer + + xmin, xmax, ymin, ymax = bbox_vals + transformer = Transformer.from_crs(dst_crs, src_crs, always_xy=True) + xs, ys = transformer.transform([xmin, xmax], [ymin, ymax]) + return (min(xs), max(xs), min(ys), max(ys)) + + +def _prepare_region_bbox_and_crs(bbox, crs): + region = None + region_crs = None + region_bbox = None + + if bbox is not None: + assert isinstance(bbox, Region), "bbox must be a Region class object" + region = bbox + region_crs = region.crs + region_bbox = region.total_bounds + if crs != "EPSG:4326": + logger.warning( + "DEM: Both a Region object and an explicit 'crs' were provided; the Region's CRS will take precedence (crs=%s).", + region_crs, + ) + crs = CRS.from_user_input(region_crs).to_string() + bbox = region_bbox + + return bbox, crs, region, region_crs, region_bbox + + +def _pick_netcdf_open_target(dem_path, bbox_vals, crs_str): + """Choose a stable rasterio open target for NetCDF inputs. + + GDAL NetCDF subdataset ordering differs across builds/wheels. Prefer a + subdataset whose bounds overlap the requested bbox, otherwise choose the + largest-area subdataset. + """ + + if dem_path.suffix.lower() not in {".nc", ".nc4"}: + return dem_path + + try: + with rasterio.open(dem_path) as container: + subdatasets = list(getattr(container, "subdatasets", []) or []) + except Exception: + return dem_path + + if not subdatasets: + return dem_path + + desired_bbox = None + desired_crs = None + if bbox_vals is not None: + desired_bbox = tuple(map(float, bbox_vals)) + desired_crs = CRS.from_user_input(crs_str) + + best = None + best_area = -1.0 + + for sd in subdatasets: + try: + with rasterio.open(sd) as src: + if src.width <= 1 or src.height <= 1: + continue + b = src.bounds + if not np.isfinite([b.left, b.right, b.bottom, b.top]).all(): + continue + + area = float((b.right - b.left) * (b.top - b.bottom)) + + if desired_bbox is not None and desired_crs is not None: + bbox_in_sd = desired_bbox + if src.crs is not None and src.crs != desired_crs: + try: + bbox_in_sd = _transform_bbox_to_src( + desired_bbox, src.crs, desired_crs + ) + except Exception: + bbox_in_sd = None + + if bbox_in_sd is not None and _bbox_overlaps_bounds( + bbox_in_sd, b + ): + if area > best_area: + best = sd + best_area = area + continue + + if area > best_area: + best = sd + best_area = area + except Exception: + continue + + return best or dem_path + + +def _xr_open_dataset(path): + try: + import xarray as xr + except Exception: + return None + + try: + return xr.open_dataset(path) + except Exception: + return None + + +def _xr_pick_first_raster_data_array(ds): + for name, var in ds.data_vars.items(): + if getattr(var, "ndim", 0) >= 2: + return ds[name] + return None + + +def _xr_reduce_to_2d(da): + while getattr(da, "ndim", 0) > 2: + da = da.isel({da.dims[0]: 0}) + return da + + +def _xr_pick_coord_name(ds, da, candidates): + for candidate in candidates: + if candidate in da.coords: + return candidate + if candidate in ds.coords: + return candidate + return None + + +def _xr_find_overlap_index_range(axis, lo, hi): + axis = np.asarray(axis) + if axis.size == 0: + return None + + if axis[0] <= axis[-1]: + idx = np.where((axis >= lo) & (axis <= hi))[0] + else: + idx = np.where((axis <= hi) & (axis >= lo))[0] + + if idx.size == 0: + return None + return int(idx.min()), int(idx.max()) + + +def _xr_median_spacing(axis): + axis = np.asarray(axis, dtype=float) + if axis.size <= 1: + return np.nan + return float(np.nanmedian(np.abs(np.diff(axis)))) + + +def _xr_subset_to_outputs(sub, xname, yname): + arr = np.asarray(sub.values, dtype=np.float64) + if tuple(sub.dims) == (xname, yname): + arr = np.transpose(arr, (1, 0)) + + topobathy_xy = np.transpose(arr, (1, 0)) + + x_sub = np.asarray(sub.coords[xname].values, dtype=float) + y_sub = np.asarray(sub.coords[yname].values, dtype=float) + dx = _xr_median_spacing(x_sub) + dy = _xr_median_spacing(y_sub) + if not (np.isfinite(dx) and np.isfinite(dy) and dx > 0 and dy > 0): + return None + + bbox_out = ( + float(np.nanmin(x_sub)), + float(np.nanmax(x_sub)), + float(np.nanmin(y_sub)), + float(np.nanmax(y_sub)), + ) + return bbox_out, dx, dy, topobathy_xy + + +def _try_subset_netcdf_with_xarray(dem_path, bbox_vals, crs_str): + """Fallback subsetting for NetCDF when rasterio bounds are unreliable. + + Returns (bbox, dx, dy, topobathy_xy) where topobathy_xy is shaped (nx, ny) + like the rasterio code path before the final np.fliplr() in DEM. + """ + + if dem_path.suffix.lower() not in {".nc", ".nc4"}: + return None + + ds = _xr_open_dataset(dem_path) + if ds is None: + return None + + da = _xr_pick_first_raster_data_array(ds) + if da is None: + return None + da = _xr_reduce_to_2d(da) + + coord_candidates_x = ["x", "lon", "longitude", "Long", "LONGITUDE"] + coord_candidates_y = ["y", "lat", "latitude", "Lat", "LATITUDE"] + + xname = _xr_pick_coord_name(ds, da, coord_candidates_x) + yname = _xr_pick_coord_name(ds, da, coord_candidates_y) + if xname is None or yname is None: + return None + + x = np.asarray(da.coords[xname].values) + y = np.asarray(da.coords[yname].values) + if x.ndim != 1 or y.ndim != 1: + return None + + xmin, xmax, ymin, ymax = map(float, bbox_vals) + + x_min, x_max = float(np.nanmin(x)), float(np.nanmax(x)) + y_min, y_max = float(np.nanmin(y)), float(np.nanmax(y)) + if not (max(xmin, x_min) < min(xmax, x_max) and max(ymin, y_min) < min(ymax, y_max)): + return None + + xrng = _xr_find_overlap_index_range(x, xmin, xmax) + yrng = _xr_find_overlap_index_range(y, ymin, ymax) + if xrng is None or yrng is None: + return None + + x0, x1 = xrng + y0, y1 = yrng + sub = da.isel({xname: slice(x0, x1 + 1), yname: slice(y0, y1 + 1)}) + return _xr_subset_to_outputs(sub, xname, yname) + + +def _read_dem_array_and_meta(dem_path, bbox, crs, region_bbox, region_crs): + open_target = _pick_netcdf_open_target(dem_path, bbox, crs) + + with rasterio.open(open_target) as src: + nodata_value = src.nodata + meta = src.meta + + src_crs = src.crs + desired_crs = CRS.from_user_input(crs) + + # Entire DEM is read in + if bbox is None: + bbox_ds = src.bounds # left, bottom, right, top + bbox_out = (bbox_ds.left, bbox_ds.right, bbox_ds.bottom, bbox_ds.top) + topobathy = src.read(1) + topobathy_xy = np.transpose(topobathy, (1, 0)) + else: + if region_bbox is None: + region_bbox = (bbox[0], bbox[1], bbox[2], bbox[3]) + + region_crs_for_transform = ( + region_crs if region_crs is not None else desired_crs + ) + region_bbox_src = _transform_bbox_to_src( + region_bbox, src_crs, region_crs_for_transform + ) + + ds_bounds = src.bounds # (left, bottom, right, top) + ds_bbox_conv = ( + ds_bounds.left, + ds_bounds.right, + ds_bounds.bottom, + ds_bounds.top, + ) + + xmin = max(region_bbox_src[0], ds_bbox_conv[0]) + xmax = min(region_bbox_src[1], ds_bbox_conv[1]) + ymin = max(region_bbox_src[2], ds_bbox_conv[2]) + ymax = min(region_bbox_src[3], ds_bbox_conv[3]) + + if not (xmin < xmax and ymin < ymax): + if (src_crs is None) or src.transform == Affine.identity: + logger.warning( + "DEM appears un-georeferenced; applying synthetic georeference using provided bbox extents %s.", + region_bbox, + ) + topobathy = src.read(1) + ny, nx = topobathy.shape # rasterio returns (rows, cols) + dx_syn = (region_bbox[1] - region_bbox[0]) / (nx - 1) + dy_syn = (region_bbox[3] - region_bbox[2]) / (ny - 1) + meta["transform"] = Affine( + dx_syn, 0, region_bbox[0], 0, -dy_syn, region_bbox[3] + ) + bbox_out = region_bbox + topobathy_xy = np.transpose(topobathy, (1, 0)) + else: + if dem_path.suffix.lower() in {".nc", ".nc4"}: + fb = _try_subset_netcdf_with_xarray( + dem_path, region_bbox_src, crs + ) + if fb is not None: + bbox_out, dx_fb, dy_fb, topobathy_xy = fb + meta["transform"] = Affine( + dx_fb, 0, bbox_out[0], 0, -dy_fb, bbox_out[3] + ) + else: + raise ValueError( + "Transformed DEM clipping bbox does not overlap raster bounds. " + f"Region bbox (in raster CRS)={region_bbox_src}, raster bounds={ds_bbox_conv}." + ) + else: + raise ValueError( + "Transformed DEM clipping bbox does not overlap raster bounds. " + f"Region bbox (in raster CRS)={region_bbox_src}, raster bounds={ds_bbox_conv}." + ) + else: + bounds_for_window = (xmin, ymin, xmax, ymax) + try: + window = from_bounds(*bounds_for_window, transform=src.transform) + except Exception as e: + raise RuntimeError( + "Failed to create window for DEM subset. " + f"Bounds={bounds_for_window}, transform={src.transform}." + ) from e + topobathy = src.read(1, window=window, masked=True) + topobathy_xy = np.transpose(topobathy, (1, 0)) + bbox_out = (xmin, xmax, ymin, ymax) + + # Warn if user requested output CRS different from raster CRS (no reprojection performed here) + if ( + (src_crs is not None) + and (desired_crs is not None) + and (src_crs != desired_crs) + and not ((src_crs is None) or src.transform == Affine.identity) + ): + logger.warning( + "DEM opened in its native CRS %s but requested CRS %s differs. " + "Values are NOT reprojected; proceeding in native CRS.", + src_crs, + desired_crs, + ) + crs = src_crs.to_string() + + return bbox_out, crs, meta, nodata_value, topobathy_xy + + def _infer_crs_from_coordinates(bbox): """ Heuristically infer whether a bbox looks like geographic (WGS84) or projected. @@ -733,7 +1077,7 @@ def _read(self): logger.debug("Entering: _read") - msg = f"Reading in ESRI Shapefile {self.shp}" + msg = f"Reading in vector file: {self.shp}" logger.info(msg) # Load once to get native CRS, then transform if necessary @@ -878,145 +1222,24 @@ def __init__(self, dem, crs="EPSG:4326", bbox=None, extrapolate=False): if isinstance(dem, str): dem = Path(dem) - region = None - region_crs = None - _region_bbox = None - if bbox is not None: - assert isinstance(bbox, Region), "bbox must be a Region class object" - region = bbox # Preserve original Region object - region_crs = region.crs - _region_bbox = region.total_bounds - if crs != "EPSG:4326": - logger.warning( - "DEM: Both a Region object and an explicit 'crs' were provided; the Region's CRS will take precedence (crs=%s).", - region_crs, - ) - crs = CRS.from_user_input(region_crs).to_string() - bbox = _region_bbox # Replace bbox with plain tuple bounds + bbox, crs, _region, region_crs, region_bbox = _prepare_region_bbox_and_crs( + bbox, crs + ) if dem.exists(): - msg = f"Reading in {dem}" - logger.info(msg) - # Open the raster file using rasterio - with rasterio.open(dem) as src: - nodata_value = src.nodata - self.meta = src.meta - - src_crs = src.crs - desired_crs = CRS.from_user_input(crs) - - # Helper: transform (xmin,xmax,ymin,ymax) bbox to src_crs if needed - def _transform_bbox_to_src(_bbox_vals, _src_crs, _dst_crs): - if _src_crs is None or _dst_crs is None or _src_crs == _dst_crs: - return _bbox_vals - from pyproj import Transformer - - xmin, xmax, ymin, ymax = _bbox_vals - transformer = Transformer.from_crs( - _dst_crs, _src_crs, always_xy=True - ) - # transform the two diagonal corners then rebuild axis-aligned bbox - xs, ys = transformer.transform([xmin, xmax], [ymin, ymax]) - xmin_t, xmax_t = min(xs), max(xs) - ymin_t, ymax_t = min(ys), max(ys) - return (xmin_t, xmax_t, ymin_t, ymax_t) - - # Entire DEM is read in - if bbox is None: - bbox_ds = src.bounds # left, bottom, right, top - bbox = (bbox_ds.left, bbox_ds.right, bbox_ds.bottom, bbox_ds.top) - topobathy = src.read(1) - # Align orientation with windowed-read branch: make array index order (x, y) - # Rasterio returns (rows, cols) = (ny, nx). Transpose to (nx, ny) then flip - # along y-axis later for bottom-left origin grids. - topobathy = np.transpose(topobathy, (1, 0)) - else: - # Region bbox currently (xmin,xmax,ymin,ymax) already in tuple form - if _region_bbox is None: - _region_bbox = (bbox[0], bbox[1], bbox[2], bbox[3]) - # Use previously captured region_crs if available, else fall back to desired_crs - _region_crs_for_transform = ( - region_crs if region_crs is not None else desired_crs - ) - # Transform to raster CRS if needed - _region_bbox_src = _transform_bbox_to_src( - _region_bbox, src_crs, _region_crs_for_transform - ) - # Intersect with raster bounds to avoid WindowError - ds_bounds = src.bounds # (left, bottom, right, top) - # Convert ds_bounds to (xmin,xmax,ymin,ymax) - ds_bbox_conv = ( - ds_bounds.left, - ds_bounds.right, - ds_bounds.bottom, - ds_bounds.top, - ) - xmin = max(_region_bbox_src[0], ds_bbox_conv[0]) - xmax = min(_region_bbox_src[1], ds_bbox_conv[1]) - ymin = max(_region_bbox_src[2], ds_bbox_conv[2]) - ymax = min(_region_bbox_src[3], ds_bbox_conv[3]) - if not (xmin < xmax and ymin < ymax): - # If raster is NOT georeferenced (identity transform / missing CRS), fallback: read full raster & stretch to requested bbox - if (src_crs is None) or src.transform == Affine.identity: - logger.warning( - "DEM appears un-georeferenced; applying synthetic georeference using provided bbox extents %s.", - _region_bbox, - ) - topobathy = src.read(1) - # derive dx, dy from desired bbox & raster shape - _ny, _nx = topobathy.shape # rasterio returns (rows, cols) - dx_syn = (_region_bbox[1] - _region_bbox[0]) / (_nx - 1) - dy_syn = (_region_bbox[3] - _region_bbox[2]) / (_ny - 1) - # build synthetic affine (note y origin is top in raster, so use ymax and negative dy) - self.meta["transform"] = Affine( - dx_syn, 0, _region_bbox[0], 0, -dy_syn, _region_bbox[3] - ) - bbox = _region_bbox # adopt requested bbox - # skip window clipping logic - # transpose to match later expectations - topobathy = np.transpose(topobathy, (1, 0)) - else: - raise ValueError( - "Transformed DEM clipping bbox does not overlap raster bounds. " - f"Region bbox (in raster CRS)={_region_bbox_src}, raster bounds={ds_bbox_conv}." - ) - else: - # Prepare bounds in rasterio (left,bottom,right,top) - _bounds_for_window = (xmin, ymin, xmax, ymax) - try: - window = from_bounds( - *_bounds_for_window, transform=src.transform - ) - except Exception as e: - raise RuntimeError( - "Failed to create window for DEM subset. " - f"Bounds={_bounds_for_window}, transform={src.transform}." - ) from e - topobathy = src.read(1, window=window, masked=True) - topobathy = np.transpose(topobathy, (1, 0)) - # Update bbox to (xmin,xmax,ymin,ymax) in raster CRS for Grid - bbox = (xmin, xmax, ymin, ymax) - - # Warn if user requested output CRS different from raster CRS (no reprojection performed here) - if ( - (src_crs is not None) - and (desired_crs is not None) - and (src_crs != desired_crs) - and not ((src_crs is None) or src.transform == Affine.identity) - ): - logger.warning( - "DEM opened in its native CRS %s but requested CRS %s differs. " - "Values are NOT reprojected; proceeding in native CRS.", - src_crs, - desired_crs, - ) - # overwrite desired_crs to keep internal consistency - crs = src_crs.to_string() - # Ensure its a floating point array + logger.info(f"Reading in {dem}") + + bbox, crs, meta, nodata_value, topobathy = _read_dem_array_and_meta( + dem, + bbox=bbox, + crs=crs, + region_bbox=region_bbox, + region_crs=region_crs, + ) + self.meta = meta + topobathy = topobathy.astype(np.float64) - topobathy[topobathy == nodata_value] = ( - np.nan - ) # set the no-data value to nan + topobathy[topobathy == nodata_value] = np.nan elif not dem.exists(): raise FileNotFoundError(f"File {dem} could not be located.") diff --git a/setup.py b/setup.py index bc43b0c..fde2489 100644 --- a/setup.py +++ b/setup.py @@ -61,6 +61,7 @@ def _get_prefix_paths(prefix: str): return (include_dir if have_include else None), (lib_dir if have_lib else None) + if _HAVE_PYBIND11: if os.name == "nt": # Prefer an explicit prefix when building wheels (e.g., via micromamba/conda). diff --git a/tox.ini b/tox.ini index 6397912..39cf7df 100644 --- a/tox.ini +++ b/tox.ini @@ -2,16 +2,27 @@ # tox --> default, runs pytest [tox] -envlist = py3 +envlist = py312 isolated_build = True [testenv] +basepython = python3.12 deps = pytest - pytest-codeblocks - requests extras = all +passenv = + CONDA_PREFIX + OCEANMESH_PREFIX setenv = MPLBACKEND = agg + OCEANMESH_PREFIX = {env:CONDA_PREFIX} commands = - pytest {posargs} -v --codeblocks + pytest {posargs} -v + +[testenv:.pkg] +basepython = python3.12 +passenv = + CONDA_PREFIX + OCEANMESH_PREFIX +setenv = + OCEANMESH_PREFIX = {env:CONDA_PREFIX} From 134dada31e3257ec56c938bc2fd838a575f68648 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Fri, 2 Jan 2026 19:48:28 -0500 Subject: [PATCH 03/18] ci: add build+smoke workflows and gate PyPI publish on main --- .github/workflows/ci.yml | 163 +++++++++++++++++++++ .github/workflows/publish-testpypi.yml | 187 +++++++++++++++++++++++++ .github/workflows/publish.yml | 27 +++- oceanmesh/geodata.py | 8 +- 4 files changed, 380 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/publish-testpypi.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..7cf05ce --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,163 @@ +name: ci + +on: + pull_request: + push: + branches: + - "**" + tags-ignore: + - "v*" + - "test-v*" + +jobs: + build_wheels: + name: Build wheels (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install build tooling + run: | + python -m pip install --upgrade pip + python -m pip install cibuildwheel==2.* + + # Build dependencies (CGAL headers + GMP/MPFR libs) into a local prefix via micromamba. + # The wheel build will link against these, and repair tools will bundle the runtime libs. + - name: Install micromamba (Unix) + if: runner.os != 'Windows' + shell: bash + run: | + set -euxo pipefail + curl -Ls https://micro.mamba.pm/api/micromamba/$(uname)/$(uname -m)/latest | tar -xvj bin/micromamba + sudo mv bin/micromamba /usr/local/bin/micromamba + + - name: Install micromamba (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + Invoke-WebRequest -Uri "https://micro.mamba.pm/api/micromamba/win-64/latest" -OutFile micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 + echo "${PWD}\\Library\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Build wheels + env: + # Use a local prefix so setup.py can find include/lib without relying on system installs. + # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). + CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" + CIBW_BEFORE_ALL_LINUX: | + set -eux + curl -Ls https://micro.mamba.pm/api/micromamba/Linux/x86_64/latest | tar -xvj bin/micromamba + mv bin/micromamba /usr/local/bin/micromamba + micromamba create -y -p /opt/om -c conda-forge \ + cgal boost-cpp gmp mpfr eigen + CIBW_BEFORE_ALL_MACOS: | + set -eux + micromamba create -y -p /opt/om -c conda-forge \ + cgal boost-cpp gmp mpfr eigen + CIBW_BEFORE_ALL_WINDOWS: | + micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen + CIBW_ENVIRONMENT_WINDOWS: "OCEANMESH_PREFIX=C:\\om" + # Repair wheels to bundle shared libs. + CIBW_REPAIR_WHEEL_COMMAND_MACOS: "python -m pip install delocate && delocate-wheel -w {dest_dir} -v {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "python -m pip install delvewheel && delvewheel repair -w {dest_dir} {wheel}" + run: | + python -m cibuildwheel --output-dir dist + + - name: Upload wheel artifacts + uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: dist/*.whl + + build_sdist: + name: Build sdist + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Build sdist + run: | + python -m pip install --upgrade pip + python -m pip install build + python -m build --sdist + - name: Upload sdist artifact + uses: actions/upload-artifact@v4 + with: + name: sdist + path: dist/*.tar.gz + + smoke_test: + name: Smoke test install (${{ matrix.os }}) + needs: [build_wheels] + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Download wheel artifacts + uses: actions/download-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: dist + + - name: Install wheel into fresh venv and import + shell: bash + run: | + set -euxo pipefail + python -m venv .venv + if [ -f .venv/bin/activate ]; then + source .venv/bin/activate + else + source .venv/Scripts/activate + fi + + python -m pip install --upgrade pip packaging + + python - <<'PY' + import glob + import os + import sys + import subprocess + + from packaging import tags + from packaging.utils import parse_wheel_filename + + wheels = sorted(glob.glob(os.path.join("dist", "*.whl"))) + if not wheels: + raise SystemExit("No wheels found in dist/") + + supported = set(tags.sys_tags()) + + def is_compatible(wheel_path: str) -> bool: + _, _, _, wheel_tags = parse_wheel_filename(os.path.basename(wheel_path)) + return any(t in supported for t in wheel_tags) + + selected = next((w for w in wheels if is_compatible(w)), None) + if not selected: + raise SystemExit(f"No compatible wheel found. Found wheels: {wheels}") + + print(f"Selected wheel: {selected}") + subprocess.check_call([sys.executable, "-m", "pip", "install", selected]) + PY + + python -c "import oceanmesh; print(oceanmesh.__version__)" + python -c "import oceanmesh; oceanmesh.Region((0, 1, 0, 1), 'EPSG:4326'); print('ok')" diff --git a/.github/workflows/publish-testpypi.yml b/.github/workflows/publish-testpypi.yml new file mode 100644 index 0000000..85262f0 --- /dev/null +++ b/.github/workflows/publish-testpypi.yml @@ -0,0 +1,187 @@ +name: publish-testpypi + +on: + workflow_dispatch: + push: + tags: + - "test-v*" + +jobs: + build_wheels: + name: Build wheels (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install build tooling + run: | + python -m pip install --upgrade pip + python -m pip install cibuildwheel==2.* + + # Build dependencies (CGAL headers + GMP/MPFR libs) into a local prefix via micromamba. + # The wheel build will link against these, and repair tools will bundle the runtime libs. + - name: Install micromamba (Unix) + if: runner.os != 'Windows' + shell: bash + run: | + set -euxo pipefail + curl -Ls https://micro.mamba.pm/api/micromamba/$(uname)/$(uname -m)/latest | tar -xvj bin/micromamba + sudo mv bin/micromamba /usr/local/bin/micromamba + + - name: Install micromamba (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + Invoke-WebRequest -Uri "https://micro.mamba.pm/api/micromamba/win-64/latest" -OutFile micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 + echo "${PWD}\\Library\\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append + + - name: Build wheels + env: + # Use a local prefix so setup.py can find include/lib without relying on system installs. + # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). + CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" + CIBW_BEFORE_ALL_LINUX: | + set -eux + curl -Ls https://micro.mamba.pm/api/micromamba/Linux/x86_64/latest | tar -xvj bin/micromamba + mv bin/micromamba /usr/local/bin/micromamba + micromamba create -y -p /opt/om -c conda-forge \ + cgal boost-cpp gmp mpfr eigen + CIBW_BEFORE_ALL_MACOS: | + set -eux + micromamba create -y -p /opt/om -c conda-forge \ + cgal boost-cpp gmp mpfr eigen + CIBW_BEFORE_ALL_WINDOWS: | + micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen + CIBW_ENVIRONMENT_WINDOWS: "OCEANMESH_PREFIX=C:\\om" + # Repair wheels to bundle shared libs. + CIBW_REPAIR_WHEEL_COMMAND_MACOS: "python -m pip install delocate && delocate-wheel -w {dest_dir} -v {wheel}" + CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "python -m pip install delvewheel && delvewheel repair -w {dest_dir} {wheel}" + run: | + python -m cibuildwheel --output-dir dist + + - name: Upload wheel artifacts + uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: dist/*.whl + + smoke_test: + name: Smoke test install (${{ matrix.os }}) + needs: [build_wheels] + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Download wheel artifacts + uses: actions/download-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: dist + + - name: Install wheel into fresh venv and import + shell: bash + run: | + set -euxo pipefail + python -m venv .venv + if [ -f .venv/bin/activate ]; then + source .venv/bin/activate + else + source .venv/Scripts/activate + fi + + python -m pip install --upgrade pip packaging + + python - <<'PY' + import glob + import os + import sys + import subprocess + + from packaging import tags + from packaging.utils import parse_wheel_filename + + wheels = sorted(glob.glob(os.path.join("dist", "*.whl"))) + if not wheels: + raise SystemExit("No wheels found in dist/") + + supported = set(tags.sys_tags()) + + def is_compatible(wheel_path: str) -> bool: + _, _, _, wheel_tags = parse_wheel_filename(os.path.basename(wheel_path)) + return any(t in supported for t in wheel_tags) + + selected = next((w for w in wheels if is_compatible(w)), None) + if not selected: + raise SystemExit(f"No compatible wheel found. Found wheels: {wheels}") + + print(f"Selected wheel: {selected}") + subprocess.check_call([sys.executable, "-m", "pip", "install", selected]) + PY + + python -c "import oceanmesh; print(oceanmesh.__version__)" + python -c "import oceanmesh; oceanmesh.Region((0, 1, 0, 1), 'EPSG:4326'); print('ok')" + + build_sdist: + name: Build sdist + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Build sdist + run: | + python -m pip install --upgrade pip + python -m pip install build + python -m build --sdist + - name: Upload sdist artifact + uses: actions/upload-artifact@v4 + with: + name: sdist + path: dist/*.tar.gz + + publish_testpypi: + name: Publish to TestPyPI + needs: [build_wheels, build_sdist, smoke_test] + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: dist + + - name: Flatten dist directory + shell: bash + run: | + set -eux + mkdir -p upload + find dist -type f \( -name "*.whl" -o -name "*.tar.gz" \) -maxdepth 3 -print -exec cp {} upload/ \; + + - name: Publish + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ + packages-dir: upload + skip-existing: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index c5b17fd..567acff 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,8 +6,29 @@ on: - "v*" jobs: + guard_tag_on_default_branch: + name: "Guard: tag commit on default branch" + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Verify tag commit is reachable from default branch + shell: bash + env: + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + run: | + set -euxo pipefail + echo "Default branch: ${DEFAULT_BRANCH}" + git fetch origin "${DEFAULT_BRANCH}" --tags + git merge-base --is-ancestor "${GITHUB_SHA}" "origin/${DEFAULT_BRANCH}" + build_wheels: name: Build wheels (${{ matrix.os }}) + needs: [guard_tag_on_default_branch] runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -52,6 +73,8 @@ jobs: CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_BEFORE_ALL_LINUX: | set -eux + curl -Ls https://micro.mamba.pm/api/micromamba/Linux/x86_64/latest | tar -xvj bin/micromamba + mv bin/micromamba /usr/local/bin/micromamba micromamba create -y -p /opt/om -c conda-forge \ cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_MACOS: | @@ -75,6 +98,7 @@ jobs: build_sdist: name: Build sdist + needs: [guard_tag_on_default_branch] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -94,7 +118,7 @@ jobs: publish_pypi: name: Publish to PyPI - needs: [build_wheels, build_sdist] + needs: [guard_tag_on_default_branch, build_wheels, build_sdist] runs-on: ubuntu-latest permissions: id-token: write @@ -116,3 +140,4 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: upload + skip-existing: true diff --git a/oceanmesh/geodata.py b/oceanmesh/geodata.py index b48838b..67b3da1 100644 --- a/oceanmesh/geodata.py +++ b/oceanmesh/geodata.py @@ -121,9 +121,7 @@ def _pick_netcdf_open_target(dem_path, bbox_vals, crs_str): except Exception: bbox_in_sd = None - if bbox_in_sd is not None and _bbox_overlaps_bounds( - bbox_in_sd, b - ): + if bbox_in_sd is not None and _bbox_overlaps_bounds(bbox_in_sd, b): if area > best_area: best = sd best_area = area @@ -253,7 +251,9 @@ def _try_subset_netcdf_with_xarray(dem_path, bbox_vals, crs_str): x_min, x_max = float(np.nanmin(x)), float(np.nanmax(x)) y_min, y_max = float(np.nanmin(y)), float(np.nanmax(y)) - if not (max(xmin, x_min) < min(xmax, x_max) and max(ymin, y_min) < min(ymax, y_max)): + if not ( + max(xmin, x_min) < min(xmax, x_max) and max(ymin, y_min) < min(ymax, y_max) + ): return None xrng = _xr_find_overlap_index_range(x, xmin, xmax) From 182a5b72490e8949b5a061a0574814abfe78c671 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 09:33:25 -0500 Subject: [PATCH 04/18] updating/fixing build workflows --- .github/workflows/ci.yml | 16 +- .github/workflows/publish-testpypi.yml | 16 +- .github/workflows/publish.yml | 16 +- oceanmesh/geometry/point_in_polygon_.c | 16852 +++++++++++------------ tox.ini | 20 +- 5 files changed, 8372 insertions(+), 8548 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7cf05ce..0a15ed3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,18 @@ jobs: shell: bash run: | set -euxo pipefail - curl -Ls https://micro.mamba.pm/api/micromamba/$(uname)/$(uname -m)/latest | tar -xvj bin/micromamba + if [ "${RUNNER_OS}" = "macOS" ]; then + if [ "$(uname -m)" = "arm64" ]; then + MAMBA_PLATFORM="osx-arm64" + else + MAMBA_PLATFORM="osx-64" + fi + else + MAMBA_PLATFORM="linux-64" + fi + + curl -Ls "https://micro.mamba.pm/api/micromamba/${MAMBA_PLATFORM}/latest" -o micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 bin/micromamba sudo mv bin/micromamba /usr/local/bin/micromamba - name: Install micromamba (Windows) @@ -56,7 +67,8 @@ jobs: CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_BEFORE_ALL_LINUX: | set -eux - curl -Ls https://micro.mamba.pm/api/micromamba/Linux/x86_64/latest | tar -xvj bin/micromamba + curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 bin/micromamba mv bin/micromamba /usr/local/bin/micromamba micromamba create -y -p /opt/om -c conda-forge \ cgal boost-cpp gmp mpfr eigen diff --git a/.github/workflows/publish-testpypi.yml b/.github/workflows/publish-testpypi.yml index 85262f0..726884e 100644 --- a/.github/workflows/publish-testpypi.yml +++ b/.github/workflows/publish-testpypi.yml @@ -35,7 +35,18 @@ jobs: shell: bash run: | set -euxo pipefail - curl -Ls https://micro.mamba.pm/api/micromamba/$(uname)/$(uname -m)/latest | tar -xvj bin/micromamba + if [ "${RUNNER_OS}" = "macOS" ]; then + if [ "$(uname -m)" = "arm64" ]; then + MAMBA_PLATFORM="osx-arm64" + else + MAMBA_PLATFORM="osx-64" + fi + else + MAMBA_PLATFORM="linux-64" + fi + + curl -Ls "https://micro.mamba.pm/api/micromamba/${MAMBA_PLATFORM}/latest" -o micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 bin/micromamba sudo mv bin/micromamba /usr/local/bin/micromamba - name: Install micromamba (Windows) @@ -53,7 +64,8 @@ jobs: CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_BEFORE_ALL_LINUX: | set -eux - curl -Ls https://micro.mamba.pm/api/micromamba/Linux/x86_64/latest | tar -xvj bin/micromamba + curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 bin/micromamba mv bin/micromamba /usr/local/bin/micromamba micromamba create -y -p /opt/om -c conda-forge \ cgal boost-cpp gmp mpfr eigen diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 567acff..f9158de 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -55,7 +55,18 @@ jobs: shell: bash run: | set -euxo pipefail - curl -Ls https://micro.mamba.pm/api/micromamba/$(uname)/$(uname -m)/latest | tar -xvj bin/micromamba + if [ "${RUNNER_OS}" = "macOS" ]; then + if [ "$(uname -m)" = "arm64" ]; then + MAMBA_PLATFORM="osx-arm64" + else + MAMBA_PLATFORM="osx-64" + fi + else + MAMBA_PLATFORM="linux-64" + fi + + curl -Ls "https://micro.mamba.pm/api/micromamba/${MAMBA_PLATFORM}/latest" -o micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 bin/micromamba sudo mv bin/micromamba /usr/local/bin/micromamba - name: Install micromamba (Windows) @@ -73,7 +84,8 @@ jobs: CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_BEFORE_ALL_LINUX: | set -eux - curl -Ls https://micro.mamba.pm/api/micromamba/Linux/x86_64/latest | tar -xvj bin/micromamba + curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 + tar -xjf micromamba.tar.bz2 bin/micromamba mv bin/micromamba /usr/local/bin/micromamba micromamba create -y -p /opt/om -c conda-forge \ cgal boost-cpp gmp mpfr eigen diff --git a/oceanmesh/geometry/point_in_polygon_.c b/oceanmesh/geometry/point_in_polygon_.c index 74800e3..d0933f0 100644 --- a/oceanmesh/geometry/point_in_polygon_.c +++ b/oceanmesh/geometry/point_in_polygon_.c @@ -1,20 +1,20 @@ -/* Generated by Cython 3.1.4 */ +/* Generated by Cython 3.2.3 */ /* BEGIN: Cython Metadata { "distutils": { "depends": [ - "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", - "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", - "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", - "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", - "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" ], "extra_compile_args": [ "-O3" ], "include_dirs": [ - "/Users/keithroberts/miniconda3/lib/python3.12/site-packages/numpy/_core/include" + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include" ], "name": "oceanmesh.geometry.point_in_polygon_", "sources": [ @@ -29,8 +29,16 @@ END: Cython Metadata */ #define PY_SSIZE_T_CLEAN #endif /* PY_SSIZE_T_CLEAN */ /* InitLimitedAPI */ -#if defined(Py_LIMITED_API) && !defined(CYTHON_LIMITED_API) +#if defined(Py_LIMITED_API) + #if !defined(CYTHON_LIMITED_API) #define CYTHON_LIMITED_API 1 + #endif +#elif defined(CYTHON_LIMITED_API) + #ifdef _MSC_VER + #pragma message ("Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead.") + #else + #warning Limited API usage is enabled with 'CYTHON_LIMITED_API' but 'Py_LIMITED_API' does not define a Python target version. Consider setting 'Py_LIMITED_API' instead. + #endif #endif #include "Python.h" @@ -39,8 +47,8 @@ END: Cython Metadata */ #elif PY_VERSION_HEX < 0x03080000 #error Cython requires Python 3.8+. #else -#define __PYX_ABI_VERSION "3_1_4" -#define CYTHON_HEX_VERSION 0x030104F0 +#define __PYX_ABI_VERSION "3_2_3" +#define CYTHON_HEX_VERSION 0x030203F0 #define CYTHON_FUTURE_DIVISION 1 /* CModulePreamble */ #include @@ -65,9 +73,6 @@ END: Cython Metadata */ #define DL_EXPORT(t) t #endif #define __PYX_COMMA , -#ifndef HAVE_LONG_LONG - #define HAVE_LONG_LONG -#endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif @@ -100,7 +105,7 @@ END: Cython Metadata */ #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS - #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1 + #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_ASSUME_SAFE_SIZE @@ -137,6 +142,8 @@ END: Cython Metadata */ #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 #elif defined(PYPY_VERSION) #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_CPYTHON 0 @@ -204,6 +211,8 @@ END: Cython Metadata */ #endif #undef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS 0 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 #elif defined(CYTHON_LIMITED_API) #ifdef Py_LIMITED_API #undef __PYX_LIMITED_VERSION_HEX @@ -214,8 +223,6 @@ END: Cython Metadata */ #define CYTHON_COMPILING_IN_LIMITED_API 1 #define CYTHON_COMPILING_IN_GRAAL 0 #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0 - #undef CYTHON_CLINE_IN_TRACEBACK - #define CYTHON_CLINE_IN_TRACEBACK 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_TYPE_SPECS @@ -275,8 +282,11 @@ END: Cython Metadata */ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC #define CYTHON_UPDATE_DESCRIPTOR_DOC 0 #endif - #undef CYTHON_USE_FREELISTS - #define CYTHON_USE_FREELISTS 0 + #ifndef CYTHON_USE_FREELISTS + #define CYTHON_USE_FREELISTS 1 + #endif + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_CPYTHON 1 @@ -383,6 +393,15 @@ END: Cython Metadata */ #ifndef CYTHON_USE_FREELISTS #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) #endif + #if defined(CYTHON_IMMORTAL_CONSTANTS) && PY_VERSION_HEX < 0x030C0000 + #undef CYTHON_IMMORTAL_CONSTANTS + #define CYTHON_IMMORTAL_CONSTANTS 0 // definitely won't work + #elif !defined(CYTHON_IMMORTAL_CONSTANTS) + #define CYTHON_IMMORTAL_CONSTANTS (PY_VERSION_HEX >= 0x030C0000 && !CYTHON_USE_MODULE_STATE && CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) + #endif +#endif +#ifndef CYTHON_COMPRESS_STRINGS + #define CYTHON_COMPRESS_STRINGS 1 #endif #ifndef CYTHON_FAST_PYCCALL #define CYTHON_FAST_PYCCALL CYTHON_FAST_PYCALL @@ -391,10 +410,9 @@ END: Cython Metadata */ #if CYTHON_COMPILING_IN_LIMITED_API #define CYTHON_VECTORCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000) #else -#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1) +#define CYTHON_VECTORCALL (CYTHON_FAST_PYCCALL) #endif #endif -#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1) #if CYTHON_USE_PYLONG_INTERNALS #undef SHIFT #undef BASE @@ -403,9 +421,6 @@ END: Cython Metadata */ enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) }; #endif #endif -#ifndef CYTHON_LOCK_AND_GIL_DEADLOCK_AVOIDANCE_TIME - #define CYTHON_LOCK_AND_GIL_DEADLOCK_AVOIDANCE_TIME 100 -#endif #ifndef __has_attribute #define __has_attribute(x) 0 #endif @@ -473,35 +488,8 @@ END: Cython Metadata */ #endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) -#ifdef _MSC_VER - #ifndef _MSC_STDINT_H_ - #if _MSC_VER < 1300 - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; - #else - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; - #endif - #endif - #if _MSC_VER < 1300 - #ifdef _WIN64 - typedef unsigned long long __pyx_uintptr_t; - #else - typedef unsigned int __pyx_uintptr_t; - #endif - #else - #ifdef _WIN64 - typedef unsigned __int64 __pyx_uintptr_t; - #else - typedef unsigned __int32 __pyx_uintptr_t; - #endif - #endif -#else - #include - typedef uintptr_t __pyx_uintptr_t; -#endif +#include +typedef uintptr_t __pyx_uintptr_t; #ifndef CYTHON_FALLTHROUGH #if defined(__cplusplus) /* for clang __has_cpp_attribute(fallthrough) is true even before C++17 @@ -544,9 +532,9 @@ END: Cython Metadata */ #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0) #endif #if CYTHON_COMPILING_IN_PYPY == 1 - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000) + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x030A0000) #else - #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000) + #define __PYX_NEED_TP_PRINT_SLOT (PY_VERSION_HEX < 0x03090000) #endif #define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer)) @@ -650,6 +638,12 @@ static int __Pyx_init_co_variables(void); #ifndef Py_TPFLAGS_MAPPING #define Py_TPFLAGS_MAPPING 0 #endif +#ifndef Py_TPFLAGS_IMMUTABLETYPE + #define Py_TPFLAGS_IMMUTABLETYPE (1UL << 8) +#endif +#ifndef Py_TPFLAGS_DISALLOW_INSTANTIATION + #define Py_TPFLAGS_DISALLOW_INSTANTIATION (1UL << 7) +#endif #ifndef METH_STACKLESS #define METH_STACKLESS 0 #endif @@ -682,11 +676,6 @@ static int __Pyx_init_co_variables(void); #define __pyx_vectorcallfunc vectorcallfunc #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET PY_VECTORCALL_ARGUMENTS_OFFSET #define __Pyx_PyVectorcall_NARGS(n) PyVectorcall_NARGS((size_t)(n)) -#elif CYTHON_BACKPORT_VECTORCALL - typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args, - size_t nargsf, PyObject *kwnames); - #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1)) - #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)) #else #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET 0 #define __Pyx_PyVectorcall_NARGS(n) ((Py_ssize_t)(n)) @@ -716,7 +705,7 @@ static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(vo #endif } #define __Pyx_IsSameCFunction(func, cfunc) __Pyx__IsSameCFunction(func, cfunc) -#if __PYX_LIMITED_VERSION_HEX < 0x03090000 +#if PY_VERSION_HEX < 0x03090000 || (CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000) #define __Pyx_PyType_FromModuleAndSpec(m, s, b) ((void)m, PyType_FromSpecWithBases(s, b)) typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *); #else @@ -733,6 +722,9 @@ static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(vo #endif #if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_PyFrame_SetLineNumber(frame, lineno) +#elif CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 + #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) + #define __Pyx_PyFrame_SetLineNumber(frame, lineno) GraalPyFrame_SetLineNumber((frame), (lineno)) #elif CYTHON_COMPILING_IN_GRAAL #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno)) @@ -823,7 +815,7 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #define __Pyx_PyType_HasFeature(type, feature) PyType_HasFeature(type, feature) #endif #define __Pyx_PyObject_GetIterNextFunc(iterator) __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc) -#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000 +#if CYTHON_USE_TYPE_SPECS #define __Pyx_PyHeapTypeObject_GC_Del(obj) {\ PyTypeObject *type = Py_TYPE((PyObject*)obj);\ assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\ @@ -887,7 +879,10 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #endif #endif #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) -#if CYTHON_COMPILING_IN_CPYTHON +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + #define __Pyx_PySequence_ListKeepNew(obj)\ + (likely(PyList_CheckExact(obj) && PyUnstable_Object_IsUniquelyReferenced(obj)) ? __Pyx_NewRef(obj) : PySequence_List(obj)) +#elif CYTHON_COMPILING_IN_CPYTHON #define __Pyx_PySequence_ListKeepNew(obj)\ (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj)) #else @@ -903,6 +898,22 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt) #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size) #endif +enum __Pyx_ReferenceSharing { + __Pyx_ReferenceSharing_DefinitelyUnique, // We created it so we know it's unshared - no need to check + __Pyx_ReferenceSharing_OwnStrongReference, + __Pyx_ReferenceSharing_FunctionArgument, + __Pyx_ReferenceSharing_SharedReference, // Never trust it to be unshared because it's a global or similar +}; +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && PY_VERSION_HEX >= 0x030E0000 +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing)\ + (sharing == __Pyx_ReferenceSharing_DefinitelyUnique ? 1 :\ + (sharing == __Pyx_ReferenceSharing_FunctionArgument ? PyUnstable_Object_IsUniqueReferencedTemporary(o) :\ + (sharing == __Pyx_ReferenceSharing_OwnStrongReference ? PyUnstable_Object_IsUniquelyReferenced(o) : 0))) +#elif (CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING) || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)sharing), Py_REFCNT(o) == 1) +#else +#define __Pyx_IS_UNIQUELY_REFERENCED(o, sharing) (((void)o), ((void)sharing), 0) +#endif #if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i) @@ -920,6 +931,12 @@ static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, #else #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i)) #endif +#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !CYTHON_COMPILING_IN_LIMITED_API && CYTHON_ASSUME_SAFE_MACROS + #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) (__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared) ?\ + __Pyx_NewRef(PyList_GET_ITEM(o, i)) : __Pyx_PyList_GetItemRef(o, i)) +#else + #define __Pyx_PyList_GetItemRefFast(o, i, unsafe_shared) __Pyx_PyList_GetItemRef(o, i) +#endif #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 #define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result) #elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS @@ -979,15 +996,6 @@ static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o) #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o) #endif -#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 - #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) -#else - static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { - PyObject *module = PyImport_AddModule(name); - Py_XINCREF(module); - return module; - } -#endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString) #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif @@ -1094,15 +1102,6 @@ static int __Pyx_init_co_variables(void) { #endif #endif #include -#ifdef NAN -#define __PYX_NAN() ((float) NAN) -#else -static CYTHON_INLINE float __PYX_NAN() { - float value; - memset(&value, 0xFF, sizeof(value)); - return value; -} -#endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else @@ -1164,6 +1163,15 @@ static CYTHON_INLINE float __PYX_NAN() { #define CYTHON_WITHOUT_ASSERTIONS #endif +#ifdef CYTHON_FREETHREADING_COMPATIBLE +#if CYTHON_FREETHREADING_COMPATIBLE +#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_NOT_USED +#else +#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED +#endif +#else +#define __Pyx_FREETHREADING_COMPATIBLE Py_MOD_GIL_USED +#endif #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0 #define __PYX_DEFAULT_STRING_ENCODING "" @@ -1387,11 +1395,11 @@ static const char *__pyx_filename; static const char* const __pyx_f[] = { "oceanmesh/geometry/point_in_polygon_.pyx", "", - "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", - "cpython/type.pxd", + ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", + ".tox/.pkg/lib/python3.12/site-packages/Cython/Includes/cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ -/* Atomics.proto */ +/* Atomics.proto (used by UnpackUnboundCMethod) */ #include #ifndef CYTHON_ATOMICS #define CYTHON_ATOMICS 1 @@ -1427,6 +1435,7 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed) #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire) #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired) #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) #pragma message ("Using standard C atomics") #elif defined(__PYX_DEBUG_ATOMICS) @@ -1451,6 +1460,7 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed) #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire) #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value) + #define __pyx_atomic_pointer_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired) #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER) #pragma message ("Using standard C++ atomics") #elif defined(__PYX_DEBUG_ATOMICS) @@ -1460,6 +1470,7 @@ static const char* const __pyx_f[] = { (__GNUC_MINOR__ > 1 ||\ (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2)))) #define __pyx_atomic_ptr_type void* + #define __pyx_nonatomic_ptr_type void* #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1) #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1) #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1) @@ -1475,6 +1486,12 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0) #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0) #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value) + static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { + __pyx_nonatomic_ptr_type old = __sync_val_compare_and_swap(value, *expected, desired); + int result = old == *expected; + *expected = old; + return result; + } #ifdef __PYX_DEBUG_ATOMICS #warning "Using GNU atomics" #endif @@ -1485,6 +1502,7 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_ptr_type void* #undef __pyx_nonatomic_int_type #define __pyx_nonatomic_int_type long + #define __pyx_nonatomic_ptr_type void* #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer) #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1) #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1) @@ -1501,6 +1519,12 @@ static const char* const __pyx_f[] = { #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0) #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value) + static CYTHON_INLINE int __pyx_atomic_pointer_cmp_exchange(__pyx_atomic_ptr_type* value, __pyx_nonatomic_ptr_type* expected, __pyx_nonatomic_ptr_type desired) { + __pyx_atomic_ptr_type old = _InterlockedCompareExchangePointer(value, desired, *expected); + int result = old == *expected; + *expected = old; + return result; + } #ifdef __PYX_DEBUG_ATOMICS #pragma message ("Using MSVC atomics") #endif @@ -1511,16 +1535,34 @@ static const char* const __pyx_f[] = { #warning "Not using atomics" #endif #endif -#if CYTHON_ATOMICS - #define __pyx_add_acquisition_count(memview)\ - __pyx_atomic_incr_relaxed(__pyx_get_slice_count_pointer(memview)) - #define __pyx_sub_acquisition_count(memview)\ - __pyx_atomic_decr_acq_rel(__pyx_get_slice_count_pointer(memview)) + +/* CriticalSectionsDefinition.proto (used by CriticalSections) */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection void* +#define __Pyx_PyCriticalSection2 void* +#define __Pyx_PyCriticalSection_End(cs) +#define __Pyx_PyCriticalSection2_End(cs) #else - #define __pyx_add_acquisition_count(memview)\ - __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) - #define __pyx_sub_acquisition_count(memview)\ - __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) +#define __Pyx_PyCriticalSection PyCriticalSection +#define __Pyx_PyCriticalSection2 PyCriticalSection2 +#define __Pyx_PyCriticalSection_End PyCriticalSection_End +#define __Pyx_PyCriticalSection2_End PyCriticalSection2_End +#endif + +/* CriticalSections.proto (used by ParseKeywordsImpl) */ +#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING +#define __Pyx_PyCriticalSection_Begin(cs, arg) (void)(cs) +#define __Pyx_PyCriticalSection2_Begin(cs, arg1, arg2) (void)(cs) +#else +#define __Pyx_PyCriticalSection_Begin PyCriticalSection_Begin +#define __Pyx_PyCriticalSection2_Begin PyCriticalSection2_Begin +#endif +#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API +#define __Pyx_BEGIN_CRITICAL_SECTION(o) { +#define __Pyx_END_CRITICAL_SECTION() } +#else +#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION +#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION #endif /* ForceInitThreads.proto */ @@ -1535,7 +1577,7 @@ static const char* const __pyx_f[] = { #define __Pyx_FastGIL_Forget() #define __Pyx_FastGilFuncInit() -/* BufferFormatStructs.proto */ +/* BufferFormatStructs.proto (used by BufferFormatCheck) */ struct __Pyx_StructField_; #define __PYX_BUF_FLAGS_PACKED_STRUCT (1 << 0) typedef struct { @@ -1570,33 +1612,9 @@ typedef struct { char is_valid_array; } __Pyx_BufFmt_Context; -/* IncludeStructmemberH.proto */ +/* IncludeStructmemberH.proto (used by FixUpExtensionType) */ #include -/* CriticalSections.proto */ -#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING -#define __Pyx_PyCriticalSection void* -#define __Pyx_PyCriticalSection2 void* -#define __Pyx_PyCriticalSection_Begin1(cs, arg) (void)cs -#define __Pyx_PyCriticalSection_Begin2(cs, arg1, arg2) (void)cs -#define __Pyx_PyCriticalSection_End1(cs) -#define __Pyx_PyCriticalSection_End2(cs) -#else -#define __Pyx_PyCriticalSection PyCriticalSection -#define __Pyx_PyCriticalSection2 PyCriticalSection2 -#define __Pyx_PyCriticalSection_Begin1 PyCriticalSection_Begin -#define __Pyx_PyCriticalSection_Begin2 PyCriticalSection2_Begin -#define __Pyx_PyCriticalSection_End1 PyCriticalSection_End -#define __Pyx_PyCriticalSection_End2 PyCriticalSection2_End -#endif -#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_BEGIN_CRITICAL_SECTION(o) { -#define __Pyx_END_CRITICAL_SECTION() } -#else -#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION -#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION -#endif - /* MemviewSliceStruct.proto */ struct __pyx_memoryview_obj; typedef struct { @@ -1607,10 +1625,30 @@ typedef struct { Py_ssize_t suboffsets[8]; } __Pyx_memviewslice; #define __Pyx_MemoryView_Len(m) (m.shape[0]) +#define __Pyx_MEMVIEW_DIRECT 1 +#define __Pyx_MEMVIEW_PTR 2 +#define __Pyx_MEMVIEW_FULL 4 +#define __Pyx_MEMVIEW_CONTIG 8 +#define __Pyx_MEMVIEW_STRIDED 16 +#define __Pyx_MEMVIEW_FOLLOW 32 +#define __Pyx_IS_C_CONTIG 1 +#define __Pyx_IS_F_CONTIG 2 +#define __Pyx_MEMSLICE_INIT { 0, 0, { 0 }, { 0 }, { 0 } } +#if CYTHON_ATOMICS + #define __pyx_add_acquisition_count(memview)\ + __pyx_atomic_incr_relaxed(__pyx_get_slice_count_pointer(memview)) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_atomic_decr_acq_rel(__pyx_get_slice_count_pointer(memview)) +#else + #define __pyx_add_acquisition_count(memview)\ + __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) + #define __pyx_sub_acquisition_count(memview)\ + __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock) +#endif /* #### Code section: numeric_typedefs ### */ -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1619,7 +1657,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":771 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1628,26 +1666,26 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":772 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< * ctypedef npy_int64 int64_t - * #ctypedef npy_int96 int96_t + * */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":773 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":747 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< - * #ctypedef npy_int96 int96_t - * #ctypedef npy_int128 int128_t + * + * ctypedef npy_uint8 uint8_t */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 - * #ctypedef npy_int128 int128_t +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 + * ctypedef npy_int64 int64_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< * ctypedef npy_uint16 uint16_t @@ -1655,7 +1693,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1664,26 +1702,26 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":779 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< * ctypedef npy_uint64 uint64_t - * #ctypedef npy_uint96 uint96_t + * */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":752 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< - * #ctypedef npy_uint96 uint96_t - * #ctypedef npy_uint128 uint128_t + * + * ctypedef npy_float32 float32_t */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 - * #ctypedef npy_uint128 uint128_t +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 + * ctypedef npy_uint64 uint64_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< * ctypedef npy_float64 float64_t @@ -1691,7 +1729,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":785 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":755 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1700,7 +1738,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1709,7 +1747,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1718,7 +1756,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":795 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1727,7 +1765,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1736,7 +1774,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":798 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1745,7 +1783,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":799 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1754,7 +1792,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":800 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -1825,24 +1863,6 @@ struct __pyx_MemviewEnum_obj; struct __pyx_memoryview_obj; struct __pyx_memoryviewslice_obj; -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1096 - * - * # Iterator API added in v1.6 - * ctypedef int (*NpyIter_IterNextFunc)(NpyIter* it) noexcept nogil # <<<<<<<<<<<<<< - * ctypedef void (*NpyIter_GetMultiIndexFunc)(NpyIter* it, npy_intp* outcoords) noexcept nogil - * -*/ -typedef int (*__pyx_t_5numpy_NpyIter_IterNextFunc)(NpyIter *); - -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1097 - * # Iterator API added in v1.6 - * ctypedef int (*NpyIter_IterNextFunc)(NpyIter* it) noexcept nogil - * ctypedef void (*NpyIter_GetMultiIndexFunc)(NpyIter* it, npy_intp* outcoords) noexcept nogil # <<<<<<<<<<<<<< - * - * cdef extern from "numpy/arrayobject.h": -*/ -typedef void (*__pyx_t_5numpy_NpyIter_GetMultiIndexFunc)(NpyIter *, npy_intp *); - /* "View.MemoryView":110 * * @@ -1893,7 +1913,7 @@ struct __pyx_memoryview_obj { struct __pyx_vtabstruct_memoryview *__pyx_vtab; PyObject *obj; PyObject *_size; - PyObject *_array_interface; + void *_unused; PyThread_type_lock lock; __pyx_atomic_int_type acquisition_count; Py_buffer view; @@ -1903,7 +1923,7 @@ struct __pyx_memoryview_obj { }; -/* "View.MemoryView":950 +/* "View.MemoryView":951 * * * @cython.collection_type("sequence") # <<<<<<<<<<<<<< @@ -1955,7 +1975,7 @@ struct __pyx_vtabstruct_memoryview { static struct __pyx_vtabstruct_memoryview *__pyx_vtabptr_memoryview; -/* "View.MemoryView":950 +/* "View.MemoryView":951 * * * @cython.collection_type("sequence") # <<<<<<<<<<<<<< @@ -2043,71 +2063,7 @@ static struct __pyx_vtabstruct__memoryviewslice *__pyx_vtabptr__memoryviewslice; #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) -/* 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 - -/* PyThreadStateGet.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; -#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; -#if PY_VERSION_HEX >= 0x030C00A6 -#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) -#else -#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) -#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) -#endif -#else -#define __Pyx_PyThreadState_declare -#define __Pyx_PyThreadState_assign -#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) -#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() -#endif - -/* PyErrFetchRestore.proto */ -#if CYTHON_FAST_THREAD_STATE -#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) -#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); -#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 -#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) -#else -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#endif -#else -#define __Pyx_PyErr_Clear() PyErr_Clear() -#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) -#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) -#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) -#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) -#endif - -/* PyObjectGetAttrStr.proto */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); -#else -#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) -#endif - -/* PyObjectGetAttrStrNoError.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); - -/* GetBuiltinName.proto */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name); - -/* TupleAndListFromArray.proto */ +/* TupleAndListFromArray.proto (used by fastcall) */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n); #endif @@ -2115,13 +2071,13 @@ static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_s static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n); #endif -/* IncludeStringH.proto */ +/* IncludeStringH.proto (used by BytesEquals) */ #include -/* BytesEquals.proto */ +/* BytesEquals.proto (used by UnicodeEquals) */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); -/* UnicodeEquals.proto */ +/* UnicodeEquals.proto (used by fastcall) */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* fastcall.proto */ @@ -2160,19 +2116,10 @@ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int #define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop) #endif -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static CYTHON_INLINE int __Pyx_ParseKeywords( - PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], - PyObject *kwds2, PyObject *values[], - Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, - const char* function_name, - int ignore_unknown_kwargs -); +/* py_dict_items.proto (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); -/* CallCFunction.proto */ +/* CallCFunction.proto (used by CallUnboundCMethod0) */ #define __Pyx_CallCFunction(cfunc, self, args)\ ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args) #define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\ @@ -2182,52 +2129,33 @@ static CYTHON_INLINE int __Pyx_ParseKeywords( #define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\ ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames) -/* PyFunctionFastCall.proto */ -#if CYTHON_FAST_PYCALL -#if !CYTHON_VECTORCALL -#define __Pyx_PyFunction_FastCall(func, args, nargs)\ - __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs); -#endif -#define __Pyx_BUILD_ASSERT_EXPR(cond)\ - (sizeof(char [1 - 2*!(cond)]) - 1) -#ifndef Py_MEMBER_SIZE -#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member) -#endif -#if !CYTHON_VECTORCALL -#if PY_VERSION_HEX >= 0x03080000 - #include "frameobject.h" - #define __Pxy_PyFrame_Initialize_Offsets() - #define __Pyx_PyFrame_GetLocalsplus(frame) ((frame)->f_localsplus) -#else - static size_t __pyx_pyframe_localsplus_offset = 0; - #include "frameobject.h" - #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 -#endif -#endif - -/* PyObjectCall.proto */ +/* PyObjectCall.proto (used by PyObjectFastCall) */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif -/* PyObjectCallMethO.proto */ +/* PyObjectCallMethO.proto (used by PyObjectFastCall) */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif -/* PyObjectFastCall.proto */ +/* PyObjectFastCall.proto (used by PyObjectCallOneArg) */ #define __Pyx_PyObject_FastCall(func, args, nargs) __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL) static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs); -/* UnpackUnboundCMethod.proto */ +/* PyObjectCallOneArg.proto (used by CallUnboundCMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + +/* PyObjectGetAttrStr.proto (used by UnpackUnboundCMethod) */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name); +#else +#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) +#endif + +/* UnpackUnboundCMethod.proto (used by CallUnboundCMethod0) */ typedef struct { PyObject *type; PyObject **method_name; @@ -2260,61 +2188,200 @@ static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_Ca #define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc) #endif -/* CallUnboundCMethod2.proto */ +/* CallUnboundCMethod0.proto */ CYTHON_UNUSED -static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self); #else -#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#define __Pyx_CallUnboundCMethod0(cfunc, self) __Pyx__CallUnboundCMethod0(cfunc, self) #endif -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* ArgTypeTest.proto */ -#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ - ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ - __Pyx__ArgTypeTest(obj, type, name, exact)) -static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); - -/* RaiseException.proto */ -static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); +/* py_dict_values.proto (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d); -/* PyObjectFastCallMethod.proto */ -#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 -#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) +/* OwnedDictNext.proto (used by ParseKeywordsImpl) */ +#if CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue); #else -static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); -#endif - -/* RaiseUnexpectedTypeError.proto */ -static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); - -/* BuildPyUnicode.proto */ -static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, - int prepend_sign, char padding_char); - -/* COrdinalToPyUnicode.proto */ -static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value); -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char); - -/* GCCDiagnostics.proto */ -#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) -#define __Pyx_HAS_GCC_DIAGNOSTIC +CYTHON_INLINE +static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue); #endif -/* IncludeStdlibH.proto */ -#include - -/* CIntToPyUnicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char); +/* RaiseDoubleKeywords.proto (used by ParseKeywordsImpl) */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywordsImpl.export */ +static int __Pyx_ParseKeywordsTuple( + PyObject *kwds, + PyObject * const *kwvalues, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); +static int __Pyx_ParseKeywordDictToDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *kwds2, + PyObject *values[], + Py_ssize_t num_pos_args, + const char* function_name +); +static int __Pyx_ParseKeywordDict( + PyObject *kwds, + PyObject ** const argnames[], + PyObject *values[], + Py_ssize_t num_pos_args, + Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* CallUnboundCMethod2.proto */ +CYTHON_UNUSED +static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2); +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2); +#else +#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2) __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2) +#endif + +/* ParseKeywords.proto */ +static CYTHON_INLINE int __Pyx_ParseKeywords( + PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[], + PyObject *kwds2, PyObject *values[], + Py_ssize_t num_pos_args, Py_ssize_t num_kwargs, + const char* function_name, + int ignore_unknown_kwargs +); + +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* ArgTypeTestFunc.export */ +static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact); + +/* ArgTypeTest.proto */ +#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\ + ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\ + __Pyx__ArgTypeTest(obj, type, name, exact)) + +/* PyErrExceptionMatches.proto (used by PyObjectGetAttrStrNoError) */ +#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 + +/* PyThreadStateGet.proto (used by PyErrFetchRestore) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; +#define __Pyx_PyThreadState_assign __pyx_tstate = __Pyx_PyThreadState_Current; +#if PY_VERSION_HEX >= 0x030C00A6 +#define __Pyx_PyErr_Occurred() (__pyx_tstate->current_exception != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL) +#else +#define __Pyx_PyErr_Occurred() (__pyx_tstate->curexc_type != NULL) +#define __Pyx_PyErr_CurrentExceptionType() (__pyx_tstate->curexc_type) +#endif +#else +#define __Pyx_PyThreadState_declare +#define __Pyx_PyThreadState_assign +#define __Pyx_PyErr_Occurred() (PyErr_Occurred() != NULL) +#define __Pyx_PyErr_CurrentExceptionType() PyErr_Occurred() +#endif + +/* PyErrFetchRestore.proto (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL) +#define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); +#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6 +#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL)) +#else +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#endif +#else +#define __Pyx_PyErr_Clear() PyErr_Clear() +#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc) +#define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestoreInState(tstate, type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetchInState(tstate, type, value, tb) PyErr_Fetch(type, value, tb) +#define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) +#define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) +#endif + +/* PyObjectGetAttrStrNoError.proto (used by GetBuiltinName) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name); + +/* GetBuiltinName.proto */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name); + +/* PyValueError_Check.proto */ +#define __Pyx_PyExc_ValueError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ValueError) + +/* RaiseException.export */ +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); + +/* PyObjectFastCallMethod.proto */ +#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000 +#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL) +#else +static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf); +#endif + +/* RaiseUnexpectedTypeError.proto */ +static int __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj); + +/* PyMemoryError_Check.proto */ +#define __Pyx_PyExc_MemoryError_Check(obj) __Pyx_TypeCheck(obj, PyExc_MemoryError) + +/* BuildPyUnicode.proto (used by COrdinalToPyUnicode) */ +static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, + int prepend_sign, char padding_char); + +/* COrdinalToPyUnicode.proto (used by CIntToPyUnicode) */ +static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value); +static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char); + +/* GCCDiagnostics.proto (used by CIntToPyUnicode) */ +#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) +#define __Pyx_HAS_GCC_DIAGNOSTIC +#endif + +/* IncludeStdlibH.proto (used by CIntToPyUnicode) */ +#include /* CIntToPyUnicode.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); +#define __Pyx_PyUnicode_From_int(value, width, padding_char, format_char) (\ + ((format_char) == ('c')) ?\ + __Pyx_uchar___Pyx_PyUnicode_From_int(value, width, padding_char) :\ + __Pyx____Pyx_PyUnicode_From_int(value, width, padding_char, format_char)\ + ) +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char); +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char); -/* JoinPyUnicode.proto */ +/* CIntToPyUnicode.proto */ +#define __Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char) (\ + ((format_char) == ('c')) ?\ + __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char) :\ + __Pyx____Pyx_PyUnicode_From_Py_ssize_t(value, width, padding_char, format_char)\ + ) +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char); +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char); + +/* JoinPyUnicode.export */ static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength, Py_UCS4 max_char); @@ -2341,29 +2408,26 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *); /*proto*/ static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *); /* GetItemInt.proto */ -#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ +#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ + __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck, unsafe_shared) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) -#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ +#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); -#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ + int wraparound, int boundscheck, int unsafe_shared); +#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ + __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck, unsafe_shared) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - int wraparound, int boundscheck); + int wraparound, int boundscheck, int unsafe_shared); static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, - int is_list, int wraparound, int boundscheck); - -/* PyObjectCallOneArg.proto */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); + int is_list, int wraparound, int boundscheck, int unsafe_shared); /* ObjectGetItem.proto */ #if CYTHON_USE_TYPE_SLOTS @@ -2372,9 +2436,12 @@ static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *k #define __Pyx_PyObject_GetItem(obj, key) PyObject_GetItem(obj, key) #endif -/* RejectKeywords.proto */ +/* RejectKeywords.export */ static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds); +/* PyTypeError_Check.proto */ +#define __Pyx_PyExc_TypeError_Check(obj) __Pyx_TypeCheck(obj, PyExc_TypeError) + /* DivInt[Py_ssize_t].proto */ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t, int b_is_constant); @@ -2385,7 +2452,7 @@ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t, Py_ssize_t, int /* GetAttr3.proto */ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject *); -/* PyDictVersioning.proto */ +/* PyDictVersioning.proto (used by GetModuleGlobalName) */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS #define __PYX_DICT_VERSION_INIT ((PY_UINT64_T) -1) #define __PYX_GET_DICT_VERSION(dict) (((PyDictObject*)(dict))->ma_version_tag) @@ -2396,7 +2463,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *, PyObject *, PyObject * static PY_UINT64_T __pyx_dict_version = 0;\ static PyObject *__pyx_dict_cached_value = NULL;\ if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\ - (VAR) = __pyx_dict_cached_value;\ + (VAR) = __Pyx_XNewRef(__pyx_dict_cached_value);\ } else {\ (VAR) = __pyx_dict_cached_value = (LOOKUP);\ __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\ @@ -2433,9 +2500,12 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #endif /* AssertionsEnabled.proto */ -#if CYTHON_COMPILING_IN_LIMITED_API || (CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030C0000) +#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000 static int __pyx_assertions_enabled_flag; #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag) + #if __clang__ || __GNUC__ + __attribute__((no_sanitize("thread"))) + #endif static int __Pyx_init_assertions_enabled(void) { PyObject *builtins, *debug, *debug_str; int flag; @@ -2460,6 +2530,9 @@ static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name); #define __pyx_assertions_enabled() (!Py_OptimizeFlag) #endif +/* PyAssertionError_Check.proto */ +#define __Pyx_PyExc_AssertionError_Check(obj) __Pyx_TypeCheck(obj, PyExc_AssertionError) + /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); @@ -2472,7 +2545,7 @@ static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void); /* ExtTypeTest.proto */ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); -/* GetTopmostException.proto */ +/* GetTopmostException.proto (used by SaveResetException) */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate); #endif @@ -2504,12 +2577,18 @@ static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject * static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif -/* Import.proto */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); +/* HasAttr.proto (used by ImportImpl) */ +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 +#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) +#else +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); +#endif -/* ImportDottedModule.proto */ -static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple); -static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple); +/* ImportImpl.export */ +static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level); + +/* Import.proto */ +static CYTHON_INLINE PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level); /* FastTypeChecks.proto */ #if CYTHON_COMPILING_IN_CPYTHON @@ -2559,7 +2638,11 @@ static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { /* PySequenceMultiply.proto */ #define __Pyx_PySequence_Multiply_Left(mul, seq) __Pyx_PySequence_Multiply(seq, mul) +#if !CYTHON_USE_TYPE_SLOTS +#define __Pyx_PySequence_Multiply PySequence_Repeat +#else static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul); +#endif /* PyObjectFormatAndDecref.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f); @@ -2573,41 +2656,31 @@ static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f); #endif /* SetItemInt.proto */ -#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\ +#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil, unsafe_shared)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ - __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\ + __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck, unsafe_shared) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\ __Pyx_SetItemInt_Generic(o, to_py_func(i), v))) static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v); static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, - int is_list, int wraparound, int boundscheck); + int is_list, int wraparound, int boundscheck, int unsafe_shared); /* RaiseUnboundLocalError.proto */ static void __Pyx_RaiseUnboundLocalError(const char *varname); +/* PyIndexError_Check.proto */ +#define __Pyx_PyExc_IndexError_Check(obj) __Pyx_TypeCheck(obj, PyExc_IndexError) + /* DivInt[long].proto */ static CYTHON_INLINE long __Pyx_div_long(long, long, int b_is_constant); -/* PySequenceContains.proto */ -static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) { - int result = PySequence_Contains(seq, item); - return unlikely(result < 0) ? result : (result == (eq == Py_EQ)); -} - -/* ImportFrom.proto */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); - -/* HasAttr.proto */ -#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 -#define __Pyx_HasAttr(o, n) PyObject_HasAttrWithError(o, n) -#else -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *); -#endif +/* PyImportError_Check.proto */ +#define __Pyx_PyExc_ImportError_Check(obj) __Pyx_TypeCheck(obj, PyExc_ImportError) -/* IsLittleEndian.proto */ +/* IsLittleEndian.proto (used by BufferFormatCheck) */ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void); -/* BufferFormatCheck.proto */ +/* BufferFormatCheck.proto (used by BufferGetAndValidate) */ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, @@ -2658,6 +2731,9 @@ static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, P static void __Pyx_RaiseBufferFallbackError(void); #define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0) +/* AllocateExtensionType.proto */ +static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final); + /* CallTypeTraverse.proto */ #if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) #define __Pyx_call_type_traverse(o, always_call, visit, arg) 0 @@ -2665,28 +2741,30 @@ static void __Pyx_RaiseBufferFallbackError(void); static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg); #endif -/* LimitedApiGetTypeDict.proto */ +/* LimitedApiGetTypeDict.proto (used by SetItemOnTypeDict) */ #if CYTHON_COMPILING_IN_LIMITED_API static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp); #endif -/* SetItemOnTypeDict.proto */ +/* SetItemOnTypeDict.proto (used by FixUpExtensionType) */ static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v); #define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v) /* FixUpExtensionType.proto */ static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type); -/* PyObjectCallNoArg.proto */ +/* PyObjectCallNoArg.proto (used by PyObjectCallMethod0) */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); -/* PyObjectGetMethod.proto */ +/* PyObjectGetMethod.proto (used by PyObjectCallMethod0) */ +#if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method); +#endif -/* PyObjectCallMethod0.proto */ +/* PyObjectCallMethod0.proto (used by PyType_Ready) */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name); -/* ValidateBasesTuple.proto */ +/* ValidateBasesTuple.proto (used by PyType_Ready) */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases); #endif @@ -2697,13 +2775,13 @@ CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t); /* SetVTable.proto */ static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable); -/* GetVTable.proto */ +/* GetVTable.proto (used by MergeVTables) */ static void* __Pyx_GetVtable(PyTypeObject *type); /* MergeVTables.proto */ static int __Pyx_MergeVtables(PyTypeObject *type); -/* DelItemOnTypeDict.proto */ +/* DelItemOnTypeDict.proto (used by SetupReduce) */ static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); #define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k) @@ -2711,46 +2789,54 @@ static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k); static int __Pyx_setup_reduce(PyObject* type_obj); /* TypeImport.proto */ -#ifndef __PYX_HAVE_RT_ImportType_proto_3_1_4 -#define __PYX_HAVE_RT_ImportType_proto_3_1_4 +#ifndef __PYX_HAVE_RT_ImportType_proto_3_2_3 +#define __PYX_HAVE_RT_ImportType_proto_3_2_3 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L #include #endif #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L -#define __PYX_GET_STRUCT_ALIGNMENT_3_1_4(s) alignof(s) +#define __PYX_GET_STRUCT_ALIGNMENT_3_2_3(s) alignof(s) #else -#define __PYX_GET_STRUCT_ALIGNMENT_3_1_4(s) sizeof(void*) +#define __PYX_GET_STRUCT_ALIGNMENT_3_2_3(s) sizeof(void*) #endif -enum __Pyx_ImportType_CheckSize_3_1_4 { - __Pyx_ImportType_CheckSize_Error_3_1_4 = 0, - __Pyx_ImportType_CheckSize_Warn_3_1_4 = 1, - __Pyx_ImportType_CheckSize_Ignore_3_1_4 = 2 +enum __Pyx_ImportType_CheckSize_3_2_3 { + __Pyx_ImportType_CheckSize_Error_3_2_3 = 0, + __Pyx_ImportType_CheckSize_Warn_3_2_3 = 1, + __Pyx_ImportType_CheckSize_Ignore_3_2_3 = 2 }; -static PyTypeObject *__Pyx_ImportType_3_1_4(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_4 check_size); +static PyTypeObject *__Pyx_ImportType_3_2_3(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_3 check_size); #endif -/* FetchSharedCythonModule.proto */ -static PyObject *__Pyx_FetchSharedCythonABIModule(void); +/* dict_setdefault.proto (used by FetchCommonType) */ +static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value); + +/* AddModuleRef.proto (used by FetchSharedCythonModule) */ +#if ((CYTHON_COMPILING_IN_CPYTHON_FREETHREADING ) ||\ + __PYX_LIMITED_VERSION_HEX < 0x030d0000) + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name); +#else + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) +#endif -/* dict_setdefault.proto */ -static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, int is_safe_type); +/* FetchSharedCythonModule.proto (used by FetchCommonType) */ +static PyObject *__Pyx_FetchSharedCythonABIModule(void); -/* FetchCommonType.proto */ +/* FetchCommonType.proto (used by CommonTypesMetaclass) */ static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases); -/* CommonTypesMetaclass.proto */ +/* CommonTypesMetaclass.proto (used by CythonFunctionShared) */ static int __pyx_CommonTypesMetaclass_init(PyObject *module); #define __Pyx_CommonTypesMetaclass_USED -/* PyMethodNew.proto */ +/* PyMethodNew.proto (used by CythonFunctionShared) */ static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ); -/* PyVectorcallFastCallDict.proto */ -#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) +/* PyVectorcallFastCallDict.proto (used by CythonFunctionShared) */ +#if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw); #endif -/* CythonFunctionShared.proto */ +/* CythonFunctionShared.proto (used by CythonFunction) */ #define __Pyx_CyFunction_USED #define __Pyx_CYFUNCTION_STATICMETHOD 0x01 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02 @@ -2780,14 +2866,15 @@ typedef struct { #else PyCMethodObject func; #endif -#if CYTHON_BACKPORT_VECTORCALL ||\ - (CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL) +#if CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL __pyx_vectorcallfunc func_vectorcall; #endif #if CYTHON_COMPILING_IN_LIMITED_API PyObject *func_weakreflist; #endif +#if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API PyObject *func_dict; +#endif PyObject *func_name; PyObject *func_qualname; PyObject *func_doc; @@ -2832,7 +2919,7 @@ static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *c static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames); -#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API +#if CYTHON_COMPILING_IN_LIMITED_API #define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall) #else #define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall) @@ -2846,14 +2933,14 @@ static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, PyObject *module, PyObject *globals, PyObject* code); -/* CLineInTraceback.proto */ +/* CLineInTraceback.proto (used by AddTraceback) */ #if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line); #else #define __Pyx_CLineForTraceback(tstate, c_line) (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0) #endif -/* CodeObjectCache.proto */ +/* CodeObjectCache.proto (used by AddTraceback) */ #if CYTHON_COMPILING_IN_LIMITED_API typedef PyObject __Pyx_CachedCodeObjectType; #else @@ -2893,6 +2980,17 @@ typedef struct { __Pyx_Buf_DimInfo diminfo[8]; } __Pyx_LocalBuf_ND; +/* MemviewRefcount.proto */ +static CYTHON_INLINE int __pyx_add_acquisition_count_locked( + __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); +static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( + __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); +#define __pyx_get_slice_count_pointer(memview) (&memview->acquisition_count) +#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) +#define __PYX_XCLEAR_MEMVIEW(slice, have_gil) __Pyx_XCLEAR_MEMVIEW(slice, have_gil, __LINE__) +static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); +static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *, int, int); + /* MemviewSliceIsContig.proto */ static int __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim); @@ -2901,10 +2999,17 @@ static int __pyx_slices_overlap(__Pyx_memviewslice *slice1, __Pyx_memviewslice *slice2, int ndim, size_t itemsize); -/* TypeInfoCompare.proto */ +/* MemviewSliceInit.proto */ +static int __Pyx_init_memviewslice( + struct __pyx_memoryview_obj *memview, + int ndim, + __Pyx_memviewslice *memviewslice, + int memview_is_new_reference); + +/* TypeInfoCompare.proto (used by MemviewSliceValidateAndInit) */ static int __pyx_typeinfo_cmp(const __Pyx_TypeInfo *a, const __Pyx_TypeInfo *b); -/* MemviewSliceValidateAndInit.proto */ +/* MemviewSliceValidateAndInit.export */ static int __Pyx_ValidateAndInit_memviewslice( int *axes_specs, int c_or_f_flag, @@ -3060,38 +3165,24 @@ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn_ #endif #endif -/* MemviewSliceCopyTemplate.proto */ +/* MemviewSliceCopy.proto */ static __Pyx_memviewslice __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, const char *mode, int ndim, size_t sizeof_dtype, int contig_flag, int dtype_is_object); -/* MemviewSliceInit.proto */ -#include -#define __Pyx_BUF_MAX_NDIMS %(BUF_MAX_NDIMS)d -#define __Pyx_MEMVIEW_DIRECT 1 -#define __Pyx_MEMVIEW_PTR 2 -#define __Pyx_MEMVIEW_FULL 4 -#define __Pyx_MEMVIEW_CONTIG 8 -#define __Pyx_MEMVIEW_STRIDED 16 -#define __Pyx_MEMVIEW_FOLLOW 32 -#define __Pyx_IS_C_CONTIG 1 -#define __Pyx_IS_F_CONTIG 2 -static int __Pyx_init_memviewslice( - struct __pyx_memoryview_obj *memview, - int ndim, - __Pyx_memviewslice *memviewslice, - int memview_is_new_reference); -static CYTHON_INLINE int __pyx_add_acquisition_count_locked( - __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); -static CYTHON_INLINE int __pyx_sub_acquisition_count_locked( - __pyx_atomic_int_type *acquisition_count, PyThread_type_lock lock); -#define __pyx_get_slice_count_pointer(memview) (&memview->acquisition_count) -#define __PYX_INC_MEMVIEW(slice, have_gil) __Pyx_INC_MEMVIEW(slice, have_gil, __LINE__) -#define __PYX_XCLEAR_MEMVIEW(slice, have_gil) __Pyx_XCLEAR_MEMVIEW(slice, have_gil, __LINE__) -static CYTHON_INLINE void __Pyx_INC_MEMVIEW(__Pyx_memviewslice *, int, int); -static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *, int, int); +/* PyObjectCall2Args.proto (used by PyObjectCallMethod1) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2); + +/* PyObjectCallMethod1.proto (used by UpdateUnpickledDict) */ +static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); + +/* UpdateUnpickledDict.proto */ +static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index); + +/* CheckUnpickleChecksum.proto */ +static CYTHON_INLINE int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *); @@ -3126,11 +3217,20 @@ typedef const char *__Pyx_TypeName; #endif /* GetRuntimeVersion.proto */ +#if __PYX_LIMITED_VERSION_HEX < 0x030b0000 +static unsigned long __Pyx_cached_runtime_version = 0; +static void __Pyx_init_runtime_version(void); +#else +#define __Pyx_init_runtime_version() +#endif static unsigned long __Pyx_get_runtime_version(void); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer); +/* DecompressString.proto */ +static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo); + /* MultiPhaseInitModuleState.proto */ #if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE static PyObject *__Pyx_State_FindModule(void*); @@ -3284,190 +3384,14 @@ int __pyx_module_is_main_oceanmesh__geometry__point_in_polygon_ = 0; /* Implementation of "oceanmesh.geometry.point_in_polygon_" */ /* #### Code section: global_var ### */ -static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin___import__; -static PyObject *__pyx_builtin_ValueError; -static PyObject *__pyx_builtin_MemoryError; static PyObject *__pyx_builtin_enumerate; -static PyObject *__pyx_builtin_TypeError; -static PyObject *__pyx_builtin_AssertionError; static PyObject *__pyx_builtin_Ellipsis; static PyObject *__pyx_builtin_id; -static PyObject *__pyx_builtin_IndexError; -static PyObject *__pyx_builtin_ImportError; /* #### Code section: string_decls ### */ -static const char __pyx_k_[] = ": "; -static const char __pyx_k_O[] = "O"; static const char __pyx_k_c[] = "c"; -static const char __pyx_k_e[] = "e"; -static const char __pyx_k_i[] = "i"; -static const char __pyx_k_j[] = "j"; -static const char __pyx_k_n[] = "n"; -static const char __pyx_k_t[] = "t"; -static const char __pyx_k_v[] = "v"; -static const char __pyx_k_x[] = "x"; -static const char __pyx_k__2[] = "."; -static const char __pyx_k__3[] = ">"; -static const char __pyx_k__4[] = "'"; -static const char __pyx_k__5[] = ")"; -static const char __pyx_k__6[] = "?"; -static const char __pyx_k_dx[] = "dx"; -static const char __pyx_k_dy[] = "dy"; -static const char __pyx_k_gc[] = "gc"; -static const char __pyx_k_i0[] = "i0"; -static const char __pyx_k_i1[] = "i1"; -static const char __pyx_k_id[] = "id"; -static const char __pyx_k_np[] = "np"; -static const char __pyx_k_px[] = "px"; -static const char __pyx_k_py[] = "py"; -static const char __pyx_k_x0[] = "x0"; -static const char __pyx_k_x1[] = "x1"; -static const char __pyx_k_y0[] = "y0"; -static const char __pyx_k_y1[] = "y1"; -static const char __pyx_k_abc[] = "abc"; -static const char __pyx_k_and[] = " and "; -static const char __pyx_k_got[] = " (got "; -static const char __pyx_k_new[] = "__new__"; -static const char __pyx_k_obj[] = "obj"; -static const char __pyx_k_pop[] = "pop"; -static const char __pyx_k_base[] = "base"; -static const char __pyx_k_bnds[] = "bnds"; -static const char __pyx_k_dict[] = "__dict__"; -static const char __pyx_k_dist[] = "dist"; -static const char __pyx_k_edge[] = "edge"; -static const char __pyx_k_ftol[] = "ftol"; -static const char __pyx_k_func[] = "__func__"; -static const char __pyx_k_main[] = "__main__"; -static const char __pyx_k_mode[] = "mode"; static const char __pyx_k_name[] = "name"; -static const char __pyx_k_ndim[] = "ndim"; -static const char __pyx_k_node[] = "node"; -static const char __pyx_k_pack[] = "pack"; -static const char __pyx_k_size[] = "size"; -static const char __pyx_k_spec[] = "__spec__"; -static const char __pyx_k_stat[] = "stat"; -static const char __pyx_k_step[] = "step"; -static const char __pyx_k_stop[] = "stop"; -static const char __pyx_k_test[] = "__test__"; -static const char __pyx_k_vert[] = "vert"; -static const char __pyx_k_ASCII[] = "ASCII"; -static const char __pyx_k_at_0x[] = " at 0x"; -static const char __pyx_k_class[] = "__class__"; -static const char __pyx_k_count[] = "count"; -static const char __pyx_k_dtype[] = "dtype"; -static const char __pyx_k_empty[] = "empty"; -static const char __pyx_k_error[] = "error"; -static const char __pyx_k_eymax[] = "eymax"; -static const char __pyx_k_eymin[] = "eymin"; -static const char __pyx_k_flags[] = "flags"; -static const char __pyx_k_index[] = "index"; -static const char __pyx_k_int32[] = "int32"; -static const char __pyx_k_numpy[] = "numpy"; -static const char __pyx_k_projx[] = "projx"; -static const char __pyx_k_projy[] = "projy"; -static const char __pyx_k_range[] = "range"; -static const char __pyx_k_shape[] = "shape"; -static const char __pyx_k_start[] = "start"; -static const char __pyx_k_uint8[] = "uint8"; -static const char __pyx_k_xints[] = "xints"; -static const char __pyx_k_zeros[] = "zeros"; -static const char __pyx_k_astype[] = "astype"; -static const char __pyx_k_enable[] = "enable"; -static const char __pyx_k_encode[] = "encode"; -static const char __pyx_k_format[] = "format"; -static const char __pyx_k_import[] = "__import__"; -static const char __pyx_k_inside[] = "inside"; -static const char __pyx_k_module[] = "__module__"; -static const char __pyx_k_n_edge[] = "n_edge"; -static const char __pyx_k_n_vert[] = "n_vert"; -static const char __pyx_k_name_2[] = "__name__"; -static const char __pyx_k_object[] = " object>"; -static const char __pyx_k_on_bnd[] = "on_bnd"; -static const char __pyx_k_pickle[] = "pickle"; -static const char __pyx_k_reduce[] = "__reduce__"; -static const char __pyx_k_struct[] = "struct"; -static const char __pyx_k_unpack[] = "unpack"; -static const char __pyx_k_update[] = "update"; -static const char __pyx_k_bnd_arr[] = "bnd_arr"; -static const char __pyx_k_disable[] = "disable"; -static const char __pyx_k_float64[] = "float64"; static const char __pyx_k_fortran[] = "fortran"; -static const char __pyx_k_memview[] = "memview"; -static const char __pyx_k_Ellipsis[] = "Ellipsis"; -static const char __pyx_k_Sequence[] = "Sequence"; -static const char __pyx_k_add_note[] = "add_note"; -static const char __pyx_k_getstate[] = "__getstate__"; -static const char __pyx_k_itemsize[] = "itemsize"; -static const char __pyx_k_pyx_type[] = "__pyx_type"; -static const char __pyx_k_qualname[] = "__qualname__"; -static const char __pyx_k_register[] = "register"; -static const char __pyx_k_set_name[] = "__set_name__"; -static const char __pyx_k_setstate[] = "__setstate__"; -static const char __pyx_k_stat_arr[] = "stat_arr"; -static const char __pyx_k_TypeError[] = "TypeError"; -static const char __pyx_k_enumerate[] = "enumerate"; -static const char __pyx_k_isenabled[] = "isenabled"; -static const char __pyx_k_pyx_state[] = "__pyx_state"; -static const char __pyx_k_reduce_ex[] = "__reduce_ex__"; -static const char __pyx_k_IndexError[] = "IndexError"; -static const char __pyx_k_ValueError[] = "ValueError"; -static const char __pyx_k_eymax_view[] = "eymax_view"; -static const char __pyx_k_eymin_view[] = "eymin_view"; -static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__"; -static const char __pyx_k_ImportError[] = "ImportError"; -static const char __pyx_k_MemoryError[] = "MemoryError"; -static const char __pyx_k_PickleError[] = "PickleError"; -static const char __pyx_k_C_CONTIGUOUS[] = "C_CONTIGUOUS"; -static const char __pyx_k_initializing[] = "_initializing"; -static const char __pyx_k_inpoly2_fast[] = "inpoly2_fast"; -static const char __pyx_k_is_coroutine[] = "_is_coroutine"; -static const char __pyx_k_pyx_checksum[] = "__pyx_checksum"; -static const char __pyx_k_MemoryView_of[] = "__pyx_empty_tuple); Py_CLEAR(clear_module_state->__pyx_empty_bytes); Py_CLEAR(clear_module_state->__pyx_empty_unicode); - #ifdef __Pyx_CyFunction_USED - Py_CLEAR(clear_module_state->__pyx_CyFunctionType); - #endif - #ifdef __Pyx_FusedFunction_USED - Py_CLEAR(clear_module_state->__pyx_FusedFunctionType); - #endif #if CYTHON_PEP489_MULTI_PHASE_INIT __Pyx_State_RemoveModule(NULL); #endif @@ -3843,14 +3741,17 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { for (int i=0; i<1; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); } for (int i=0; i<2; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } for (int i=0; i<1; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<171; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } - Py_CLEAR(clear_module_state->__pyx_int_0); - Py_CLEAR(clear_module_state->__pyx_int_1); - Py_CLEAR(clear_module_state->__pyx_int_112105877); - Py_CLEAR(clear_module_state->__pyx_int_136983863); - Py_CLEAR(clear_module_state->__pyx_int_184977713); - Py_CLEAR(clear_module_state->__pyx_int_neg_1); - return 0; + for (int i=0; i<165; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + for (int i=0; i<4; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); } +/* #### Code section: module_state_clear_contents ### */ +/* CommonTypesMetaclass.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_CommonTypesMetaclassType); + +/* CythonFunctionShared.module_state_clear */ +Py_CLEAR(clear_module_state->__pyx_CyFunctionType); + +/* #### Code section: module_state_clear_end ### */ +return 0; } #endif /* #### Code section: module_state_traverse ### */ @@ -3864,12 +3765,6 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple); __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes); __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode); - #ifdef __Pyx_CyFunction_USED - Py_VISIT(traverse_module_state->__pyx_CyFunctionType); - #endif - #ifdef __Pyx_FusedFunction_USED - Py_VISIT(traverse_module_state->__pyx_FusedFunctionType); - #endif Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type); Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_dtype); Py_VISIT(traverse_module_state->__pyx_ptype_5numpy_flatiter); @@ -3897,14 +3792,17 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void for (int i=0; i<1; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); } for (int i=0; i<2; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } for (int i=0; i<1; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<171; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } - __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0); - __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1); - __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_112105877); - __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_136983863); - __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_184977713); - __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_neg_1); - return 0; + for (int i=0; i<165; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + for (int i=0; i<4; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); } +/* #### Code section: module_state_traverse_contents ### */ +/* CommonTypesMetaclass.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_CommonTypesMetaclassType); + +/* CythonFunctionShared.module_state_traverse */ +Py_VISIT(traverse_module_state->__pyx_CyFunctionType); + +/* #### Code section: module_state_traverse_end ### */ +return 0; } #endif /* #### Code section: module_code ### */ @@ -3970,7 +3868,7 @@ static int __pyx_array___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, P default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < 0) __PYX_ERR(1, 129, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 129, __pyx_L3_error) if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_c)); for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 3, 5, i); __PYX_ERR(1, 129, __pyx_L3_error) } @@ -4123,7 +4021,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if itemsize <= 0: */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Empty_shape_tuple_for_cython_arr, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Empty_shape_tuple_for_cython_arr, 0, 0); __PYX_ERR(1, 139, __pyx_L1_error) /* "View.MemoryView":138 @@ -4152,7 +4050,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * if not isinstance(format, bytes): */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_itemsize_0_for_cython_array, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_itemsize_0_for_cython_array, 0, 0); __PYX_ERR(1, 142, __pyx_L1_error) /* "View.MemoryView":141 @@ -4187,7 +4085,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_6 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ASCII}; - __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); @@ -4269,7 +4167,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ * * */ - __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_shape_and_str, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_MemoryError))), __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_shape_and_str, 0, 0); __PYX_ERR(1, 154, __pyx_L1_error) /* "View.MemoryView":153 @@ -4344,7 +4242,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_12, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_12, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(1, 159, __pyx_L1_error) @@ -4473,7 +4371,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array___cinit__(struct __ __pyx_t_12 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Invalid_mode_expected_c_or_fortr, __pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_12, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_12, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(1, 170, __pyx_L1_error) } @@ -4697,7 +4595,7 @@ static int __pyx_array___pyx_pf_15View_dot_MemoryView_5array_2__getbuffer__(stru * info.buf = self.data * info.len = self.len */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Can_only_create_a_buffer_that_is, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Can_only_create_a_buffer_that_is, 0, 0); __PYX_ERR(1, 189, __pyx_L1_error) /* "View.MemoryView":188 @@ -5127,8 +5025,7 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - size_t __pyx_t_6; + size_t __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -5152,20 +5049,17 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 224, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 224, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 224, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = 1; + __pyx_t_5 = 1; { - PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_t_4, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_t_3, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_memoryview_type, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 224, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } @@ -5187,7 +5081,6 @@ static PyObject *__pyx_array_get_memview(struct __pyx_array_obj *__pyx_v_self) { __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.array.get_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -5510,7 +5403,7 @@ static PyObject *__pyx_pf___pyx_array___reduce_cython__(CYTHON_UNUSED struct __p * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 @@ -5584,7 +5477,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } } @@ -5632,7 +5525,7 @@ static PyObject *__pyx_pf___pyx_array_2__setstate_cython__(CYTHON_UNUSED struct * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 @@ -5706,7 +5599,7 @@ static int __pyx_array_allocate_buffer(struct __pyx_array_obj *__pyx_v_self) { * * if self.dtype_is_object: */ - __Pyx_Raise(__pyx_builtin_MemoryError, __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_array_data, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_MemoryError))), __pyx_mstate_global->__pyx_kp_u_unable_to_allocate_array_data, 0, 0); __PYX_ERR(1, 255, __pyx_L1_error) /* "View.MemoryView":254 @@ -5929,7 +5822,7 @@ static struct __pyx_array_obj *__pyx_array_new(PyObject *__pyx_v_shape, Py_ssize __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_allocate_buffer, Py_False) < 0) __PYX_ERR(1, 273, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_allocate_buffer, Py_False) < (0)) __PYX_ERR(1, 273, __pyx_L1_error) __pyx_t_3 = ((PyObject *)__pyx_tp_new_array(((PyTypeObject *)__pyx_mstate_global->__pyx_array_type), __pyx_t_1, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 273, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -6024,7 +5917,7 @@ static int __pyx_MemviewEnum___init__(PyObject *__pyx_v_self, PyObject *__pyx_ar default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(1, 302, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < (0)) __PYX_ERR(1, 302, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(1, 302, __pyx_L3_error) } } @@ -6201,8 +6094,9 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; + int __pyx_t_3; PyObject *__pyx_t_4 = NULL; + PyObject *__pyx_t_5 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -6213,7 +6107,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * cdef bint use_setstate * state = (self.name,) # <<<<<<<<<<<<<< * _dict = getattr(self, '__dict__', None) - * if _dict is not None: + * if _dict is not None and _dict: */ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); @@ -6227,7 +6121,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi * cdef bint use_setstate * state = (self.name,) * _dict = getattr(self, '__dict__', None) # <<<<<<<<<<<<<< - * if _dict is not None: + * if _dict is not None and _dict: * state += (_dict,) */ __pyx_t_1 = __Pyx_GetAttr3(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_dict, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) @@ -6238,16 +6132,24 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi /* "(tree fragment)":7 * state = (self.name,) * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< + * if _dict is not None and _dict: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ - __pyx_t_2 = (__pyx_v__dict != Py_None); + __pyx_t_3 = (__pyx_v__dict != Py_None); + if (__pyx_t_3) { + } else { + __pyx_t_2 = __pyx_t_3; + goto __pyx_L4_bool_binop_done; + } + __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v__dict); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(1, 7, __pyx_L1_error) + __pyx_t_2 = __pyx_t_3; + __pyx_L4_bool_binop_done:; if (__pyx_t_2) { /* "(tree fragment)":8 * _dict = getattr(self, '__dict__', None) - * if _dict is not None: + * if _dict is not None and _dict: * state += (_dict,) # <<<<<<<<<<<<<< * use_setstate = True * else: @@ -6257,25 +6159,25 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(__pyx_v__dict); __Pyx_GIVEREF(__pyx_v__dict); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__dict) != (0)) __PYX_ERR(1, 8, __pyx_L1_error); - __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 8, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_state, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 8, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_3)); - __pyx_t_3 = 0; + __Pyx_DECREF_SET(__pyx_v_state, ((PyObject*)__pyx_t_4)); + __pyx_t_4 = 0; /* "(tree fragment)":9 - * if _dict is not None: + * if _dict is not None and _dict: * state += (_dict,) * use_setstate = True # <<<<<<<<<<<<<< * else: - * use_setstate = self.name is not None + * use_setstate = ('self.name is not None',) */ __pyx_v_use_setstate = 1; /* "(tree fragment)":7 * state = (self.name,) * _dict = getattr(self, '__dict__', None) - * if _dict is not None: # <<<<<<<<<<<<<< + * if _dict is not None and _dict: # <<<<<<<<<<<<<< * state += (_dict,) * use_setstate = True */ @@ -6285,19 +6187,19 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi /* "(tree fragment)":11 * use_setstate = True * else: - * use_setstate = self.name is not None # <<<<<<<<<<<<<< + * use_setstate = ('self.name is not None',) # <<<<<<<<<<<<<< * if use_setstate: * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state */ /*else*/ { - __pyx_t_2 = (__pyx_v_self->name != Py_None); + __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_mstate_global->__pyx_tuple[0]); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 11, __pyx_L1_error) __pyx_v_use_setstate = __pyx_t_2; } __pyx_L3:; /* "(tree fragment)":12 * else: - * use_setstate = self.name is not None + * use_setstate = ('self.name is not None',) * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state * else: @@ -6305,15 +6207,15 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi if (__pyx_v_use_setstate) { /* "(tree fragment)":13 - * use_setstate = self.name is not None + * use_setstate = ('self.name is not None',) * if use_setstate: * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state # <<<<<<<<<<<<<< * else: * return __pyx_unpickle_Enum, (type(self), 0x82a3537, state) */ __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); @@ -6325,24 +6227,24 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 13, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_1 = 0; - __pyx_r = __pyx_t_4; + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 13, __pyx_L1_error); __pyx_t_4 = 0; + __pyx_t_1 = 0; + __pyx_r = __pyx_t_5; + __pyx_t_5 = 0; goto __pyx_L0; /* "(tree fragment)":12 * else: - * use_setstate = self.name is not None + * use_setstate = ('self.name is not None',) * if use_setstate: # <<<<<<<<<<<<<< * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state * else: @@ -6358,8 +6260,8 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 15, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)Py_TYPE(((PyObject *)__pyx_v_self)))); @@ -6371,16 +6273,16 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi __Pyx_INCREF(__pyx_v_state); __Pyx_GIVEREF(__pyx_v_state); if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_state) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 15, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_GIVEREF(__pyx_t_5); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); - __pyx_t_4 = 0; + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1) != (0)) __PYX_ERR(1, 15, __pyx_L1_error); + __pyx_t_5 = 0; __pyx_t_1 = 0; - __pyx_r = __pyx_t_3; - __pyx_t_3 = 0; + __pyx_r = __pyx_t_4; + __pyx_t_4 = 0; goto __pyx_L0; } @@ -6393,8 +6295,8 @@ static PyObject *__pyx_pf___pyx_MemviewEnum___reduce_cython__(struct __pyx_Memvi /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); + __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.Enum.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6461,7 +6363,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 16, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 16, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 16, __pyx_L3_error) } } @@ -6500,6 +6402,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -6510,10 +6413,17 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me * def __setstate_cython__(self, __pyx_state): * __pyx_unpickle_Enum__set_state(self, __pyx_state) # <<<<<<<<<<<<<< */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 17, __pyx_L1_error) - __pyx_t_1 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 17, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __pyx_t_1 = __pyx_v___pyx_state; + __Pyx_INCREF(__pyx_t_1); + if (!(likely(PyTuple_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_t_1))) __PYX_ERR(1, 17, __pyx_L1_error) + if (unlikely(__pyx_t_1 == Py_None)) { + PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); + __PYX_ERR(1, 17, __pyx_L1_error) + } + __pyx_t_2 = __pyx_unpickle_Enum__set_state(__pyx_v_self, ((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 17, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":16 * else: @@ -6527,6 +6437,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.Enum.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; @@ -6535,7 +6446,7 @@ static PyObject *__pyx_pf___pyx_MemviewEnum_2__setstate_cython__(struct __pyx_Me return __pyx_r; } -/* "View.MemoryView":347 +/* "View.MemoryView":348 * cdef const __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< @@ -6567,55 +6478,55 @@ static int __pyx_memoryview___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_ar { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,&__pyx_mstate_global->__pyx_n_u_flags,&__pyx_mstate_global->__pyx_n_u_dtype_is_object,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 347, __pyx_L3_error) + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 348, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 347, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 348, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 347, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 348, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 347, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 348, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < 0) __PYX_ERR(1, 347, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__cinit__", 0) < (0)) __PYX_ERR(1, 348, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 2; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, i); __PYX_ERR(1, 347, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, i); __PYX_ERR(1, 348, __pyx_L3_error) } } } else { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 347, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 348, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 347, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 348, __pyx_L3_error) values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 347, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 348, __pyx_L3_error) break; default: goto __pyx_L5_argtuple_error; } } __pyx_v_obj = values[0]; - __pyx_v_flags = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 347, __pyx_L3_error) + __pyx_v_flags = __Pyx_PyLong_As_int(values[1]); if (unlikely((__pyx_v_flags == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 348, __pyx_L3_error) if (values[2]) { - __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 347, __pyx_L3_error) + __pyx_v_dtype_is_object = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dtype_is_object == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 348, __pyx_L3_error) } else { __pyx_v_dtype_is_object = ((int)0); } } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 347, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, __pyx_nargs); __PYX_ERR(1, 348, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -6649,7 +6560,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__cinit__", 0); - /* "View.MemoryView":348 + /* "View.MemoryView":349 * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj # <<<<<<<<<<<<<< @@ -6662,7 +6573,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __Pyx_DECREF(__pyx_v_self->obj); __pyx_v_self->obj = __pyx_v_obj; - /* "View.MemoryView":349 + /* "View.MemoryView":350 * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): * self.obj = obj * self.flags = flags # <<<<<<<<<<<<<< @@ -6671,7 +6582,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->flags = __pyx_v_flags; - /* "View.MemoryView":350 + /* "View.MemoryView":351 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< @@ -6689,16 +6600,16 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_L4_bool_binop_done:; if (__pyx_t_1) { - /* "View.MemoryView":351 + /* "View.MemoryView":352 * self.flags = flags * if type(self) is memoryview or obj is not None: * PyObject_GetBuffer(obj, &self.view, flags) # <<<<<<<<<<<<<< * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None */ - __pyx_t_3 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 351, __pyx_L1_error) + __pyx_t_3 = PyObject_GetBuffer(__pyx_v_obj, (&__pyx_v_self->view), __pyx_v_flags); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 352, __pyx_L1_error) - /* "View.MemoryView":352 + /* "View.MemoryView":353 * if type(self) is memoryview or obj is not None: * PyObject_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< @@ -6708,7 +6619,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (((PyObject *)__pyx_v_self->view.obj) == NULL); if (__pyx_t_1) { - /* "View.MemoryView":353 + /* "View.MemoryView":354 * PyObject_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None # <<<<<<<<<<<<<< @@ -6717,7 +6628,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ ((Py_buffer *)(&__pyx_v_self->view))->obj = Py_None; - /* "View.MemoryView":354 + /* "View.MemoryView":355 * if self.view.obj == NULL: * (<__pyx_buffer *> &self.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -6726,7 +6637,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ Py_INCREF(Py_None); - /* "View.MemoryView":352 + /* "View.MemoryView":353 * if type(self) is memoryview or obj is not None: * PyObject_GetBuffer(obj, &self.view, flags) * if self.view.obj == NULL: # <<<<<<<<<<<<<< @@ -6735,7 +6646,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":350 + /* "View.MemoryView":351 * self.obj = obj * self.flags = flags * if type(self) is memoryview or obj is not None: # <<<<<<<<<<<<<< @@ -6744,7 +6655,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":356 + /* "View.MemoryView":357 * Py_INCREF(Py_None) * * if not __PYX_CYTHON_ATOMICS_ENABLED(): # <<<<<<<<<<<<<< @@ -6754,7 +6665,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (!__PYX_CYTHON_ATOMICS_ENABLED()); if (__pyx_t_1) { - /* "View.MemoryView":358 + /* "View.MemoryView":359 * if not __PYX_CYTHON_ATOMICS_ENABLED(): * global __pyx_memoryview_thread_locks_used * if (__pyx_memoryview_thread_locks_used < 8 and # <<<<<<<<<<<<<< @@ -6768,7 +6679,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ goto __pyx_L9_bool_binop_done; } - /* "View.MemoryView":360 + /* "View.MemoryView":361 * if (__pyx_memoryview_thread_locks_used < 8 and * * not __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING()): # <<<<<<<<<<<<<< @@ -6779,7 +6690,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - /* "View.MemoryView":358 + /* "View.MemoryView":359 * if not __PYX_CYTHON_ATOMICS_ENABLED(): * global __pyx_memoryview_thread_locks_used * if (__pyx_memoryview_thread_locks_used < 8 and # <<<<<<<<<<<<<< @@ -6788,7 +6699,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ if (__pyx_t_1) { - /* "View.MemoryView":361 + /* "View.MemoryView":362 * * not __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING()): * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] # <<<<<<<<<<<<<< @@ -6797,7 +6708,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->lock = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); - /* "View.MemoryView":362 + /* "View.MemoryView":363 * not __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING()): * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 # <<<<<<<<<<<<<< @@ -6806,7 +6717,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used + 1); - /* "View.MemoryView":358 + /* "View.MemoryView":359 * if not __PYX_CYTHON_ATOMICS_ENABLED(): * global __pyx_memoryview_thread_locks_used * if (__pyx_memoryview_thread_locks_used < 8 and # <<<<<<<<<<<<<< @@ -6815,7 +6726,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":363 + /* "View.MemoryView":364 * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6825,7 +6736,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (__pyx_v_self->lock == NULL); if (__pyx_t_1) { - /* "View.MemoryView":364 + /* "View.MemoryView":365 * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() # <<<<<<<<<<<<<< @@ -6834,7 +6745,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->lock = PyThread_allocate_lock(); - /* "View.MemoryView":365 + /* "View.MemoryView":366 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6844,16 +6755,16 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = (__pyx_v_self->lock == NULL); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":366 + /* "View.MemoryView":367 * self.lock = PyThread_allocate_lock() * if self.lock is NULL: * raise MemoryError # <<<<<<<<<<<<<< * * if flags & PyBUF_FORMAT: */ - PyErr_NoMemory(); __PYX_ERR(1, 366, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 367, __pyx_L1_error) - /* "View.MemoryView":365 + /* "View.MemoryView":366 * if self.lock is NULL: * self.lock = PyThread_allocate_lock() * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6862,7 +6773,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":363 + /* "View.MemoryView":364 * self.lock = __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] * __pyx_memoryview_thread_locks_used += 1 * if self.lock is NULL: # <<<<<<<<<<<<<< @@ -6871,7 +6782,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":356 + /* "View.MemoryView":357 * Py_INCREF(Py_None) * * if not __PYX_CYTHON_ATOMICS_ENABLED(): # <<<<<<<<<<<<<< @@ -6880,7 +6791,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ } - /* "View.MemoryView":368 + /* "View.MemoryView":369 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -6890,7 +6801,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":369 + /* "View.MemoryView":370 * * if flags & PyBUF_FORMAT: * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') # <<<<<<<<<<<<<< @@ -6908,7 +6819,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_L14_bool_binop_done:; __pyx_v_self->dtype_is_object = __pyx_t_1; - /* "View.MemoryView":368 + /* "View.MemoryView":369 * raise MemoryError * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -6918,7 +6829,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ goto __pyx_L13; } - /* "View.MemoryView":371 + /* "View.MemoryView":372 * self.dtype_is_object = (self.view.format[0] == b'O' and self.view.format[1] == b'\0') * else: * self.dtype_is_object = dtype_is_object # <<<<<<<<<<<<<< @@ -6930,7 +6841,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ } __pyx_L13:; - /* "View.MemoryView":373 + /* "View.MemoryView":374 * self.dtype_is_object = dtype_is_object * * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 # <<<<<<<<<<<<<< @@ -6943,19 +6854,19 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ __pyx_t_5 = (sizeof(__pyx_atomic_int_type)); if (unlikely(__pyx_t_5 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 373, __pyx_L1_error) + __PYX_ERR(1, 374, __pyx_L1_error) } __pyx_t_1 = ((__pyx_t_4 % __pyx_t_5) == 0); if (unlikely(!__pyx_t_1)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(1, 373, __pyx_L1_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_AssertionError))), 0, 0, 0); + __PYX_ERR(1, 374, __pyx_L1_error) } } #else - if ((1)); else __PYX_ERR(1, 373, __pyx_L1_error) + if ((1)); else __PYX_ERR(1, 374, __pyx_L1_error) #endif - /* "View.MemoryView":374 + /* "View.MemoryView":375 * * assert (&self.acquisition_count) % sizeof(__pyx_atomic_int_type) == 0 * self.typeinfo = NULL # <<<<<<<<<<<<<< @@ -6964,7 +6875,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ */ __pyx_v_self->typeinfo = NULL; - /* "View.MemoryView":347 + /* "View.MemoryView":348 * cdef const __Pyx_TypeInfo *typeinfo * * def __cinit__(memoryview self, object obj, int flags, bint dtype_is_object=False): # <<<<<<<<<<<<<< @@ -6983,7 +6894,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview___cinit_ return __pyx_r; } -/* "View.MemoryView":376 +/* "View.MemoryView":377 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< @@ -7013,7 +6924,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal PyThread_type_lock __pyx_t_5; PyThread_type_lock __pyx_t_6; - /* "View.MemoryView":377 + /* "View.MemoryView":378 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< @@ -7023,7 +6934,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (__pyx_v_self->obj != Py_None); if (__pyx_t_1) { - /* "View.MemoryView":378 + /* "View.MemoryView":379 * def __dealloc__(memoryview self): * if self.obj is not None: * PyBuffer_Release(&self.view) # <<<<<<<<<<<<<< @@ -7032,7 +6943,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ PyBuffer_Release((&__pyx_v_self->view)); - /* "View.MemoryView":377 + /* "View.MemoryView":378 * * def __dealloc__(memoryview self): * if self.obj is not None: # <<<<<<<<<<<<<< @@ -7042,7 +6953,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal goto __pyx_L3; } - /* "View.MemoryView":379 + /* "View.MemoryView":380 * if self.obj is not None: * PyBuffer_Release(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< @@ -7052,7 +6963,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (((Py_buffer *)(&__pyx_v_self->view))->obj == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":381 + /* "View.MemoryView":382 * elif (<__pyx_buffer *> &self.view).obj == Py_None: * * (<__pyx_buffer *> &self.view).obj = NULL # <<<<<<<<<<<<<< @@ -7061,7 +6972,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ ((Py_buffer *)(&__pyx_v_self->view))->obj = NULL; - /* "View.MemoryView":382 + /* "View.MemoryView":383 * * (<__pyx_buffer *> &self.view).obj = NULL * Py_DECREF(Py_None) # <<<<<<<<<<<<<< @@ -7070,7 +6981,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ Py_DECREF(Py_None); - /* "View.MemoryView":379 + /* "View.MemoryView":380 * if self.obj is not None: * PyBuffer_Release(&self.view) * elif (<__pyx_buffer *> &self.view).obj == Py_None: # <<<<<<<<<<<<<< @@ -7080,7 +6991,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } __pyx_L3:; - /* "View.MemoryView":386 + /* "View.MemoryView":387 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -7090,7 +7001,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (__pyx_v_self->lock != NULL); if (__pyx_t_1) { - /* "View.MemoryView":387 + /* "View.MemoryView":388 * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): # <<<<<<<<<<<<<< @@ -7107,7 +7018,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":388 + /* "View.MemoryView":389 * if self.lock != NULL: * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< @@ -7117,7 +7028,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = ((__pyx_memoryview_thread_locks[__pyx_v_i]) == __pyx_v_self->lock); if (__pyx_t_1) { - /* "View.MemoryView":389 + /* "View.MemoryView":390 * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 # <<<<<<<<<<<<<< @@ -7126,7 +7037,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ __pyx_memoryview_thread_locks_used = (__pyx_memoryview_thread_locks_used - 1); - /* "View.MemoryView":390 + /* "View.MemoryView":391 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< @@ -7136,7 +7047,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_1 = (__pyx_v_i != __pyx_memoryview_thread_locks_used); if (__pyx_t_1) { - /* "View.MemoryView":392 + /* "View.MemoryView":393 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) # <<<<<<<<<<<<<< @@ -7146,7 +7057,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal __pyx_t_5 = (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]); __pyx_t_6 = (__pyx_memoryview_thread_locks[__pyx_v_i]); - /* "View.MemoryView":391 + /* "View.MemoryView":392 * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( # <<<<<<<<<<<<<< @@ -7156,7 +7067,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal (__pyx_memoryview_thread_locks[__pyx_v_i]) = __pyx_t_5; (__pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used]) = __pyx_t_6; - /* "View.MemoryView":390 + /* "View.MemoryView":391 * if __pyx_memoryview_thread_locks[i] is self.lock: * __pyx_memoryview_thread_locks_used -= 1 * if i != __pyx_memoryview_thread_locks_used: # <<<<<<<<<<<<<< @@ -7165,7 +7076,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ } - /* "View.MemoryView":393 + /* "View.MemoryView":394 * __pyx_memoryview_thread_locks[i], __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used] = ( * __pyx_memoryview_thread_locks[__pyx_memoryview_thread_locks_used], __pyx_memoryview_thread_locks[i]) * break # <<<<<<<<<<<<<< @@ -7174,7 +7085,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ goto __pyx_L6_break; - /* "View.MemoryView":388 + /* "View.MemoryView":389 * if self.lock != NULL: * for i in range(0 if __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() else __pyx_memoryview_thread_locks_used): * if __pyx_memoryview_thread_locks[i] is self.lock: # <<<<<<<<<<<<<< @@ -7185,7 +7096,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } /*else*/ { - /* "View.MemoryView":395 + /* "View.MemoryView":396 * break * else: * PyThread_free_lock(self.lock) # <<<<<<<<<<<<<< @@ -7196,7 +7107,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal } __pyx_L6_break:; - /* "View.MemoryView":386 + /* "View.MemoryView":387 * cdef int i * global __pyx_memoryview_thread_locks_used * if self.lock != NULL: # <<<<<<<<<<<<<< @@ -7205,7 +7116,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal */ } - /* "View.MemoryView":376 + /* "View.MemoryView":377 * self.typeinfo = NULL * * def __dealloc__(memoryview self): # <<<<<<<<<<<<<< @@ -7216,7 +7127,7 @@ static void __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_2__deal /* function exit code */ } -/* "View.MemoryView":397 +/* "View.MemoryView":398 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -7242,7 +7153,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_item_pointer", 0); - /* "View.MemoryView":399 + /* "View.MemoryView":400 * cdef char *get_item_pointer(memoryview self, object index) except NULL: * cdef Py_ssize_t dim * cdef char *itemp = self.view.buf # <<<<<<<<<<<<<< @@ -7251,7 +7162,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py */ __pyx_v_itemp = ((char *)__pyx_v_self->view.buf); - /* "View.MemoryView":401 + /* "View.MemoryView":402 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -7264,9 +7175,9 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { - __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 401, __pyx_L1_error) + __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 402, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 401, __pyx_L1_error) + __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 402, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { @@ -7274,17 +7185,17 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 402, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } - __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_3); + __pyx_t_5 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_3, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_3; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 401, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 402, __pyx_L1_error) #endif if (__pyx_t_3 >= __pyx_temp) break; } @@ -7295,13 +7206,13 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py #endif ++__pyx_t_3; } - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 401, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 402, __pyx_L1_error) } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 401, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 402, __pyx_L1_error) PyErr_Clear(); } break; @@ -7313,18 +7224,18 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_v_dim = __pyx_t_1; __pyx_t_1 = (__pyx_t_1 + 1); - /* "View.MemoryView":402 + /* "View.MemoryView":403 * * for dim, idx in enumerate(index): * itemp = pybuffer_index(&self.view, itemp, idx, dim) # <<<<<<<<<<<<<< * * return itemp */ - __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 402, __pyx_L1_error) - __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((char *)0))) __PYX_ERR(1, 402, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_v_idx); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 403, __pyx_L1_error) + __pyx_t_7 = __pyx_pybuffer_index((&__pyx_v_self->view), __pyx_v_itemp, __pyx_t_6, __pyx_v_dim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 403, __pyx_L1_error) __pyx_v_itemp = __pyx_t_7; - /* "View.MemoryView":401 + /* "View.MemoryView":402 * cdef char *itemp = self.view.buf * * for dim, idx in enumerate(index): # <<<<<<<<<<<<<< @@ -7334,7 +7245,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":404 + /* "View.MemoryView":405 * itemp = pybuffer_index(&self.view, itemp, idx, dim) * * return itemp # <<<<<<<<<<<<<< @@ -7344,7 +7255,7 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __pyx_r = __pyx_v_itemp; goto __pyx_L0; - /* "View.MemoryView":397 + /* "View.MemoryView":398 * PyThread_free_lock(self.lock) * * cdef char *get_item_pointer(memoryview self, object index) except NULL: # <<<<<<<<<<<<<< @@ -7357,14 +7268,14 @@ static char *__pyx_memoryview_get_item_pointer(struct __pyx_memoryview_obj *__py __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview.get_item_pointer", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; + __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_idx); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":407 +/* "View.MemoryView":408 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -7403,7 +7314,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__getitem__", 0); - /* "View.MemoryView":408 + /* "View.MemoryView":409 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -7413,7 +7324,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_t_1 = (__pyx_v_index == __pyx_builtin_Ellipsis); if (__pyx_t_1) { - /* "View.MemoryView":409 + /* "View.MemoryView":410 * def __getitem__(memoryview self, object index): * if index is Ellipsis: * return self # <<<<<<<<<<<<<< @@ -7425,7 +7336,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_r = ((PyObject *)__pyx_v_self); goto __pyx_L0; - /* "View.MemoryView":408 + /* "View.MemoryView":409 * * def __getitem__(memoryview self, object index): * if index is Ellipsis: # <<<<<<<<<<<<<< @@ -7434,14 +7345,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ */ } - /* "View.MemoryView":411 + /* "View.MemoryView":412 * return self * * have_slices, indices = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * cdef char *itemp */ - __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 411, __pyx_L1_error) + __pyx_t_2 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(__pyx_t_2 != Py_None)) { PyObject* sequence = __pyx_t_2; @@ -7449,7 +7360,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 411, __pyx_L1_error) + __PYX_ERR(1, 412, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); @@ -7457,31 +7368,31 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_4); #else - __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error) + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 411, __pyx_L1_error) + __pyx_t_4 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 411, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 412, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_indices = __pyx_t_4; __pyx_t_4 = 0; - /* "View.MemoryView":414 + /* "View.MemoryView":415 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< * return memview_slice(self, indices) * else: */ - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 414, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 415, __pyx_L1_error) if (__pyx_t_1) { - /* "View.MemoryView":415 + /* "View.MemoryView":416 * cdef char *itemp * if have_slices: * return memview_slice(self, indices) # <<<<<<<<<<<<<< @@ -7489,13 +7400,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * itemp = self.get_item_pointer(indices) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 415, __pyx_L1_error) + __pyx_t_2 = ((PyObject *)__pyx_memview_slice(__pyx_v_self, __pyx_v_indices)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":414 + /* "View.MemoryView":415 * * cdef char *itemp * if have_slices: # <<<<<<<<<<<<<< @@ -7504,7 +7415,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ */ } - /* "View.MemoryView":417 + /* "View.MemoryView":418 * return memview_slice(self, indices) * else: * itemp = self.get_item_pointer(indices) # <<<<<<<<<<<<<< @@ -7512,10 +7423,10 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * */ /*else*/ { - __pyx_t_5 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_5 == ((char *)0))) __PYX_ERR(1, 417, __pyx_L1_error) + __pyx_t_5 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_indices); if (unlikely(__pyx_t_5 == ((void *)NULL))) __PYX_ERR(1, 418, __pyx_L1_error) __pyx_v_itemp = __pyx_t_5; - /* "View.MemoryView":418 + /* "View.MemoryView":419 * else: * itemp = self.get_item_pointer(indices) * return self.convert_item_to_object(itemp) # <<<<<<<<<<<<<< @@ -7523,14 +7434,14 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ * def __setitem__(memoryview self, object index, object value): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 418, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->convert_item_to_object(__pyx_v_self, __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":407 + /* "View.MemoryView":408 * * * def __getitem__(memoryview self, object index): # <<<<<<<<<<<<<< @@ -7553,7 +7464,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_4_ return __pyx_r; } -/* "View.MemoryView":420 +/* "View.MemoryView":421 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -7591,7 +7502,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __Pyx_RefNannySetupContext("__setitem__", 0); __Pyx_INCREF(__pyx_v_index); - /* "View.MemoryView":421 + /* "View.MemoryView":422 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< @@ -7600,17 +7511,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit */ if (unlikely(__pyx_v_self->view.readonly)) { - /* "View.MemoryView":422 + /* "View.MemoryView":423 * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: * raise TypeError, "Cannot assign to read-only memoryview" # <<<<<<<<<<<<<< * * have_slices, index = _unellipsify(index, self.view.ndim) */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_Cannot_assign_to_read_only_memor, 0, 0); - __PYX_ERR(1, 422, __pyx_L1_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_Cannot_assign_to_read_only_memor, 0, 0); + __PYX_ERR(1, 423, __pyx_L1_error) - /* "View.MemoryView":421 + /* "View.MemoryView":422 * * def __setitem__(memoryview self, object index, object value): * if self.view.readonly: # <<<<<<<<<<<<<< @@ -7619,14 +7530,14 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit */ } - /* "View.MemoryView":424 + /* "View.MemoryView":425 * raise TypeError, "Cannot assign to read-only memoryview" * * have_slices, index = _unellipsify(index, self.view.ndim) # <<<<<<<<<<<<<< * * if have_slices: */ - __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 424, __pyx_L1_error) + __pyx_t_1 = _unellipsify(__pyx_v_index, __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(__pyx_t_1 != Py_None)) { PyObject* sequence = __pyx_t_1; @@ -7634,7 +7545,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(1, 424, __pyx_L1_error) + __PYX_ERR(1, 425, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); @@ -7642,43 +7553,43 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __Pyx_INCREF(__pyx_t_3); #else - __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 424, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 424, __pyx_L1_error) + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 425, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { - __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 424, __pyx_L1_error) + __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 425, __pyx_L1_error) } __pyx_v_have_slices = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":426 + /* "View.MemoryView":427 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< * obj = self.is_slice(value) * if obj is not None: */ - __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 426, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_have_slices); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(1, 427, __pyx_L1_error) if (__pyx_t_4) { - /* "View.MemoryView":427 + /* "View.MemoryView":428 * * if have_slices: * obj = self.is_slice(value) # <<<<<<<<<<<<<< * if obj is not None: * self.setitem_slice_assignment(self[index], obj) */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 427, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->is_slice(__pyx_v_self, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 428, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_obj = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":428 + /* "View.MemoryView":429 * if have_slices: * obj = self.is_slice(value) * if obj is not None: # <<<<<<<<<<<<<< @@ -7688,21 +7599,21 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit __pyx_t_4 = (__pyx_v_obj != Py_None); if (__pyx_t_4) { - /* "View.MemoryView":429 + /* "View.MemoryView":430 * obj = self.is_slice(value) * if obj is not None: * self.setitem_slice_assignment(self[index], obj) # <<<<<<<<<<<<<< * else: * self.setitem_slice_assign_scalar(self[index], value) */ - __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 429, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 429, __pyx_L1_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assignment(__pyx_v_self, __pyx_t_1, __pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":428 + /* "View.MemoryView":429 * if have_slices: * obj = self.is_slice(value) * if obj is not None: # <<<<<<<<<<<<<< @@ -7712,7 +7623,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit goto __pyx_L5; } - /* "View.MemoryView":431 + /* "View.MemoryView":432 * self.setitem_slice_assignment(self[index], obj) * else: * self.setitem_slice_assign_scalar(self[index], value) # <<<<<<<<<<<<<< @@ -7720,17 +7631,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * self.setitem_indexed(index, value) */ /*else*/ { - __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 431, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self), __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 431, __pyx_L1_error) - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error) + if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 432, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_slice_assign_scalar(__pyx_v_self, ((struct __pyx_memoryview_obj *)__pyx_t_3), __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 432, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L5:; - /* "View.MemoryView":426 + /* "View.MemoryView":427 * have_slices, index = _unellipsify(index, self.view.ndim) * * if have_slices: # <<<<<<<<<<<<<< @@ -7740,7 +7651,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit goto __pyx_L4; } - /* "View.MemoryView":433 + /* "View.MemoryView":434 * self.setitem_slice_assign_scalar(self[index], value) * else: * self.setitem_indexed(index, value) # <<<<<<<<<<<<<< @@ -7748,13 +7659,13 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit * cdef is_slice(self, obj): */ /*else*/ { - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 433, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->setitem_indexed(__pyx_v_self, __pyx_v_index, __pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __pyx_L4:; - /* "View.MemoryView":420 + /* "View.MemoryView":421 * return self.convert_item_to_object(itemp) * * def __setitem__(memoryview self, object index, object value): # <<<<<<<<<<<<<< @@ -7779,7 +7690,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_6__setit return __pyx_r; } -/* "View.MemoryView":435 +/* "View.MemoryView":436 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -7799,16 +7710,15 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - size_t __pyx_t_11; - int __pyx_t_12; + size_t __pyx_t_10; + int __pyx_t_11; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_slice", 0); __Pyx_INCREF(__pyx_v_obj); - /* "View.MemoryView":436 + /* "View.MemoryView":437 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< @@ -7819,7 +7729,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "View.MemoryView":437 + /* "View.MemoryView":438 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -7835,7 +7745,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XGOTREF(__pyx_t_5); /*try:*/ { - /* "View.MemoryView":438 + /* "View.MemoryView":439 * if not isinstance(obj, memoryview): * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, # <<<<<<<<<<<<<< @@ -7843,35 +7753,32 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ * except TypeError: */ __pyx_t_7 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); - __pyx_t_8 = ((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); - __pyx_t_9 = __Pyx_PyLong_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 438, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_9); + __pyx_t_8 = __Pyx_PyLong_From_int(((__pyx_v_self->flags & (~PyBUF_WRITABLE)) | PyBUF_ANY_CONTIGUOUS)); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 439, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_8); - /* "View.MemoryView":439 + /* "View.MemoryView":440 * try: * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) # <<<<<<<<<<<<<< * except TypeError: * return None */ - __pyx_t_10 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 439, __pyx_L4_error) - __Pyx_GOTREF(__pyx_t_10); - __pyx_t_11 = 1; + __pyx_t_9 = __Pyx_PyBool_FromLong(__pyx_v_self->dtype_is_object); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 440, __pyx_L4_error) + __Pyx_GOTREF(__pyx_t_9); + __pyx_t_10 = 1; { - PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_obj, __pyx_t_9, __pyx_t_10}; - __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_11, (4-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_v_obj, __pyx_t_8, __pyx_t_9}; + __pyx_t_6 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_memoryview_type, __pyx_callargs+__pyx_t_10, (4-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 438, __pyx_L4_error) + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; + if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 439, __pyx_L4_error) __Pyx_GOTREF((PyObject *)__pyx_t_6); } __Pyx_DECREF_SET(__pyx_v_obj, ((PyObject *)__pyx_t_6)); __pyx_t_6 = 0; - /* "View.MemoryView":437 + /* "View.MemoryView":438 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -7884,24 +7791,23 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L9_try_end; __pyx_L4_error:; - __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "View.MemoryView":440 + /* "View.MemoryView":441 * obj = memoryview(obj, self.flags & ~PyBUF_WRITABLE | PyBUF_ANY_CONTIGUOUS, * self.dtype_is_object) * except TypeError: # <<<<<<<<<<<<<< * return None * */ - __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError); - if (__pyx_t_12) { + __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_TypeError)))); + if (__pyx_t_11) { __Pyx_ErrRestore(0,0,0); - /* "View.MemoryView":441 + /* "View.MemoryView":442 * self.dtype_is_object) * except TypeError: * return None # <<<<<<<<<<<<<< @@ -7914,7 +7820,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ } goto __pyx_L6_except_error; - /* "View.MemoryView":437 + /* "View.MemoryView":438 * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): * try: # <<<<<<<<<<<<<< @@ -7936,7 +7842,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_L9_try_end:; } - /* "View.MemoryView":436 + /* "View.MemoryView":437 * * cdef is_slice(self, obj): * if not isinstance(obj, memoryview): # <<<<<<<<<<<<<< @@ -7945,7 +7851,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ */ } - /* "View.MemoryView":443 + /* "View.MemoryView":444 * return None * * return obj # <<<<<<<<<<<<<< @@ -7957,7 +7863,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __pyx_r = __pyx_v_obj; goto __pyx_L0; - /* "View.MemoryView":435 + /* "View.MemoryView":436 * self.setitem_indexed(index, value) * * cdef is_slice(self, obj): # <<<<<<<<<<<<<< @@ -7971,7 +7877,6 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("View.MemoryView.memoryview.is_slice", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -7981,7 +7886,7 @@ static PyObject *__pyx_memoryview_is_slice(struct __pyx_memoryview_obj *__pyx_v_ return __pyx_r; } -/* "View.MemoryView":445 +/* "View.MemoryView":446 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -8006,46 +7911,46 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assignment", 0); - /* "View.MemoryView":448 + /* "View.MemoryView":449 * cdef __Pyx_memviewslice dst_slice * cdef __Pyx_memviewslice src_slice * cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0] # <<<<<<<<<<<<<< * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] * */ - if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 448, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 448, __pyx_L1_error) + if (!(likely(((__pyx_v_src) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_src, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 449, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_src), (&__pyx_v_src_slice)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 449, __pyx_L1_error) __pyx_v_msrc = (__pyx_t_1[0]); - /* "View.MemoryView":449 + /* "View.MemoryView":450 * cdef __Pyx_memviewslice src_slice * cdef __Pyx_memviewslice msrc = get_slice_from_memview(src, &src_slice)[0] * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] # <<<<<<<<<<<<<< * * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) */ - if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 449, __pyx_L1_error) - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 449, __pyx_L1_error) + if (!(likely(((__pyx_v_dst) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_dst, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 450, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(((struct __pyx_memoryview_obj *)__pyx_v_dst), (&__pyx_v_dst_slice)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 450, __pyx_L1_error) __pyx_v_mdst = (__pyx_t_1[0]); - /* "View.MemoryView":451 + /* "View.MemoryView":452 * cdef __Pyx_memviewslice mdst = get_slice_from_memview(dst, &dst_slice)[0] * * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) # <<<<<<<<<<<<<< * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_src, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dst, __pyx_mstate_global->__pyx_n_u_ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyLong_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_memoryview_copy_contents(__pyx_v_msrc, __pyx_v_mdst, __pyx_t_3, __pyx_t_4, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 451, __pyx_L1_error) + __pyx_t_5 = __pyx_memoryview_copy_contents(__pyx_v_msrc, __pyx_v_mdst, __pyx_t_3, __pyx_t_4, __pyx_v_self->dtype_is_object); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 452, __pyx_L1_error) - /* "View.MemoryView":445 + /* "View.MemoryView":446 * return obj * * cdef setitem_slice_assignment(self, dst, src): # <<<<<<<<<<<<<< @@ -8066,7 +7971,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi return __pyx_r; } -/* "View.MemoryView":453 +/* "View.MemoryView":454 * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -8075,7 +7980,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assignment(struct __pyx_memoryvi */ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memoryview_obj *__pyx_v_self, struct __pyx_memoryview_obj *__pyx_v_dst, PyObject *__pyx_v_value) { - int __pyx_v_array[0x80]; + int __pyx_v_array[128]; void *__pyx_v_tmp; void *__pyx_v_item; __Pyx_memviewslice *__pyx_v_dst_slice; @@ -8099,7 +8004,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_slice_assign_scalar", 0); - /* "View.MemoryView":455 + /* "View.MemoryView":456 * cdef setitem_slice_assign_scalar(self, memoryview dst, value): * cdef int array[128] * cdef void *tmp = NULL # <<<<<<<<<<<<<< @@ -8108,17 +8013,17 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = NULL; - /* "View.MemoryView":460 + /* "View.MemoryView":461 * cdef __Pyx_memviewslice *dst_slice * cdef __Pyx_memviewslice tmp_slice * dst_slice = get_slice_from_memview(dst, &tmp_slice) # <<<<<<<<<<<<<< * * if self.view.itemsize > sizeof(array): */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 460, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_dst, (&__pyx_v_tmp_slice)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 461, __pyx_L1_error) __pyx_v_dst_slice = __pyx_t_1; - /* "View.MemoryView":462 + /* "View.MemoryView":463 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< @@ -8128,7 +8033,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_2 = (((size_t)__pyx_v_self->view.itemsize) > (sizeof(__pyx_v_array))); if (__pyx_t_2) { - /* "View.MemoryView":463 + /* "View.MemoryView":464 * * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) # <<<<<<<<<<<<<< @@ -8137,7 +8042,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_tmp = PyMem_Malloc(__pyx_v_self->view.itemsize); - /* "View.MemoryView":464 + /* "View.MemoryView":465 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< @@ -8147,16 +8052,16 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_2 = (__pyx_v_tmp == NULL); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":465 + /* "View.MemoryView":466 * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: * raise MemoryError # <<<<<<<<<<<<<< * item = tmp * else: */ - PyErr_NoMemory(); __PYX_ERR(1, 465, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 466, __pyx_L1_error) - /* "View.MemoryView":464 + /* "View.MemoryView":465 * if self.view.itemsize > sizeof(array): * tmp = PyMem_Malloc(self.view.itemsize) * if tmp == NULL: # <<<<<<<<<<<<<< @@ -8165,7 +8070,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ } - /* "View.MemoryView":466 + /* "View.MemoryView":467 * if tmp == NULL: * raise MemoryError * item = tmp # <<<<<<<<<<<<<< @@ -8174,7 +8079,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ __pyx_v_item = __pyx_v_tmp; - /* "View.MemoryView":462 + /* "View.MemoryView":463 * dst_slice = get_slice_from_memview(dst, &tmp_slice) * * if self.view.itemsize > sizeof(array): # <<<<<<<<<<<<<< @@ -8184,7 +8089,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor goto __pyx_L3; } - /* "View.MemoryView":468 + /* "View.MemoryView":469 * item = tmp * else: * item = array # <<<<<<<<<<<<<< @@ -8196,7 +8101,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor } __pyx_L3:; - /* "View.MemoryView":470 + /* "View.MemoryView":471 * item = array * * try: # <<<<<<<<<<<<<< @@ -8205,7 +8110,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ /*try:*/ { - /* "View.MemoryView":471 + /* "View.MemoryView":472 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -8214,7 +8119,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ if (__pyx_v_self->dtype_is_object) { - /* "View.MemoryView":472 + /* "View.MemoryView":473 * try: * if self.dtype_is_object: * ( item)[0] = value # <<<<<<<<<<<<<< @@ -8223,7 +8128,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ (((PyObject **)__pyx_v_item)[0]) = ((PyObject *)__pyx_v_value); - /* "View.MemoryView":471 + /* "View.MemoryView":472 * * try: * if self.dtype_is_object: # <<<<<<<<<<<<<< @@ -8233,7 +8138,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor goto __pyx_L8; } - /* "View.MemoryView":474 + /* "View.MemoryView":475 * ( item)[0] = value * else: * self.assign_item_from_object( item, value) # <<<<<<<<<<<<<< @@ -8241,13 +8146,13 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor * */ /*else*/ { - __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 474, __pyx_L6_error) + __pyx_t_3 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, ((char *)__pyx_v_item), __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 475, __pyx_L6_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L8:; - /* "View.MemoryView":478 + /* "View.MemoryView":479 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -8257,16 +8162,16 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_t_2 = (__pyx_v_self->view.suboffsets != NULL); if (__pyx_t_2) { - /* "View.MemoryView":479 + /* "View.MemoryView":480 * * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) # <<<<<<<<<<<<<< * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, * item, self.dtype_is_object) */ - __pyx_t_4 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 479, __pyx_L6_error) + __pyx_t_4 = assert_direct_dimensions(__pyx_v_self->view.suboffsets, __pyx_v_self->view.ndim); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 480, __pyx_L6_error) - /* "View.MemoryView":478 + /* "View.MemoryView":479 * * * if self.view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -8275,7 +8180,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor */ } - /* "View.MemoryView":480 + /* "View.MemoryView":481 * if self.view.suboffsets != NULL: * assert_direct_dimensions(self.view.suboffsets, self.view.ndim) * slice_assign_scalar(dst_slice, dst.view.ndim, self.view.itemsize, # <<<<<<<<<<<<<< @@ -8285,7 +8190,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_memoryview_slice_assign_scalar(__pyx_v_dst_slice, __pyx_v_dst->view.ndim, __pyx_v_self->view.itemsize, __pyx_v_item, __pyx_v_self->dtype_is_object); } - /* "View.MemoryView":483 + /* "View.MemoryView":484 * item, self.dtype_is_object) * finally: * PyMem_Free(tmp) # <<<<<<<<<<<<<< @@ -8330,7 +8235,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor __pyx_L7:; } - /* "View.MemoryView":453 + /* "View.MemoryView":454 * memoryview_copy_contents(msrc, mdst, src.ndim, dst.ndim, self.dtype_is_object) * * cdef setitem_slice_assign_scalar(self, memoryview dst, value): # <<<<<<<<<<<<<< @@ -8351,7 +8256,7 @@ static PyObject *__pyx_memoryview_setitem_slice_assign_scalar(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":485 +/* "View.MemoryView":486 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -8370,28 +8275,28 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("setitem_indexed", 0); - /* "View.MemoryView":486 + /* "View.MemoryView":487 * * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) # <<<<<<<<<<<<<< * self.assign_item_from_object(itemp, value) * */ - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((char *)0))) __PYX_ERR(1, 486, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->get_item_pointer(__pyx_v_self, __pyx_v_index); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 487, __pyx_L1_error) __pyx_v_itemp = __pyx_t_1; - /* "View.MemoryView":487 + /* "View.MemoryView":488 * cdef setitem_indexed(self, index, value): * cdef char *itemp = self.get_item_pointer(index) * self.assign_item_from_object(itemp, value) # <<<<<<<<<<<<<< * * cdef convert_item_to_object(self, char *itemp): */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 487, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->assign_item_from_object(__pyx_v_self, __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":485 + /* "View.MemoryView":486 * PyMem_Free(tmp) * * cdef setitem_indexed(self, index, value): # <<<<<<<<<<<<<< @@ -8412,7 +8317,7 @@ static PyObject *__pyx_memoryview_setitem_indexed(struct __pyx_memoryview_obj *_ return __pyx_r; } -/* "View.MemoryView":489 +/* "View.MemoryView":490 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -8442,31 +8347,32 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":492 + /* "View.MemoryView":493 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef bytes bytesitem * */ - __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 492, __pyx_L1_error) + __pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_struct, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 493, __pyx_L1_error) + __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":495 + /* "View.MemoryView":496 * cdef bytes bytesitem * * bytesitem = itemp[:self.view.itemsize] # <<<<<<<<<<<<<< * try: * result = struct.unpack(self.view.format, bytesitem) */ - __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 495, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_itemp + 0, __pyx_v_self->view.itemsize - 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_bytesitem = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":496 + /* "View.MemoryView":497 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -8482,7 +8388,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XGOTREF(__pyx_t_4); /*try:*/ { - /* "View.MemoryView":497 + /* "View.MemoryView":498 * bytesitem = itemp[:self.view.itemsize] * try: * result = struct.unpack(self.view.format, bytesitem) # <<<<<<<<<<<<<< @@ -8491,21 +8397,21 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ __pyx_t_5 = __pyx_v_struct; __Pyx_INCREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 497, __pyx_L3_error) + __pyx_t_6 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 498, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = 0; { PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_6, __pyx_v_bytesitem}; - __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_unpack, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_unpack, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 497, __pyx_L3_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 498, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_result = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":496 + /* "View.MemoryView":497 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -8514,7 +8420,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ } - /* "View.MemoryView":501 + /* "View.MemoryView":502 * raise ValueError, "Unable to convert item to object" * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< @@ -8522,11 +8428,11 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * return result */ /*else:*/ { - __pyx_t_8 = __Pyx_ssize_strlen(__pyx_v_self->view.format); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 501, __pyx_L5_except_error) + __pyx_t_8 = __Pyx_ssize_strlen(__pyx_v_self->view.format); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(1, 502, __pyx_L5_except_error) __pyx_t_9 = (__pyx_t_8 == 1); if (__pyx_t_9) { - /* "View.MemoryView":502 + /* "View.MemoryView":503 * else: * if len(self.view.format) == 1: * return result[0] # <<<<<<<<<<<<<< @@ -8534,13 +8440,13 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 502, __pyx_L5_except_error) + __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_result, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 503, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L6_except_return; - /* "View.MemoryView":501 + /* "View.MemoryView":502 * raise ValueError, "Unable to convert item to object" * else: * if len(self.view.format) == 1: # <<<<<<<<<<<<<< @@ -8549,7 +8455,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview */ } - /* "View.MemoryView":503 + /* "View.MemoryView":504 * if len(self.view.format) == 1: * return result[0] * return result # <<<<<<<<<<<<<< @@ -8566,7 +8472,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":498 + /* "View.MemoryView":499 * try: * result = struct.unpack(self.view.format, bytesitem) * except struct.error: # <<<<<<<<<<<<<< @@ -8574,7 +8480,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview * else: */ __Pyx_ErrFetch(&__pyx_t_1, &__pyx_t_6, &__pyx_t_5); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 498, __pyx_L5_except_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_error); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 499, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_1, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; @@ -8582,24 +8488,24 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; if (__pyx_t_11) { __Pyx_AddTraceback("View.MemoryView.memoryview.convert_item_to_object", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(1, 498, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_1) < 0) __PYX_ERR(1, 499, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_1); - /* "View.MemoryView":499 + /* "View.MemoryView":500 * result = struct.unpack(self.view.format, bytesitem) * except struct.error: * raise ValueError, "Unable to convert item to object" # <<<<<<<<<<<<<< * else: * if len(self.view.format) == 1: */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Unable_to_convert_item_to_object, 0, 0); - __PYX_ERR(1, 499, __pyx_L5_except_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Unable_to_convert_item_to_object, 0, 0); + __PYX_ERR(1, 500, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "View.MemoryView":496 + /* "View.MemoryView":497 * * bytesitem = itemp[:self.view.itemsize] * try: # <<<<<<<<<<<<<< @@ -8620,7 +8526,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview goto __pyx_L0; } - /* "View.MemoryView":489 + /* "View.MemoryView":490 * self.assign_item_from_object(itemp, value) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -8645,7 +8551,7 @@ static PyObject *__pyx_memoryview_convert_item_to_object(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":505 +/* "View.MemoryView":506 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -8661,76 +8567,78 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; - PyObject *__pyx_t_3 = NULL; + PyObject *__pyx_t_2 = NULL; + int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - size_t __pyx_t_6; - Py_ssize_t __pyx_t_7; - PyObject *__pyx_t_8 = NULL; - char *__pyx_t_9; + PyObject *__pyx_t_6 = NULL; + size_t __pyx_t_7; + Py_ssize_t __pyx_t_8; + PyObject *__pyx_t_9 = NULL; char *__pyx_t_10; - Py_ssize_t __pyx_t_11; - char *__pyx_t_12; + char *__pyx_t_11; + Py_ssize_t __pyx_t_12; char *__pyx_t_13; + char *__pyx_t_14; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":508 + /* "View.MemoryView":509 * """Only used if instantiated manually by the user, or if Cython doesn't * know how to convert the type""" * import struct # <<<<<<<<<<<<<< * cdef char c * cdef bytes bytesvalue */ - __pyx_t_1 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_struct, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 508, __pyx_L1_error) + __pyx_t_2 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_struct, 0, 0, NULL, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 509, __pyx_L1_error) + __pyx_t_1 = __pyx_t_2; __Pyx_GOTREF(__pyx_t_1); __pyx_v_struct = __pyx_t_1; __pyx_t_1 = 0; - /* "View.MemoryView":513 + /* "View.MemoryView":514 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< * bytesvalue = struct.pack(self.view.format, *value) * else: */ - __pyx_t_2 = PyTuple_Check(__pyx_v_value); - if (__pyx_t_2) { + __pyx_t_3 = PyTuple_Check(__pyx_v_value); + if (__pyx_t_3) { - /* "View.MemoryView":514 + /* "View.MemoryView":515 * * if isinstance(value, tuple): * bytesvalue = struct.pack(self.view.format, *value) # <<<<<<<<<<<<<< * else: * bytesvalue = struct.pack(self.view.format, value) */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 514, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_mstate_global->__pyx_n_u_pack); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 514, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_GIVEREF(__pyx_t_3); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(1, 514, __pyx_L1_error); - __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 514, __pyx_L1_error) + __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); + __Pyx_GIVEREF(__pyx_t_4); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4) != (0)) __PYX_ERR(1, 515, __pyx_L1_error); + __pyx_t_4 = 0; + __pyx_t_4 = __Pyx_PySequence_Tuple(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 515, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 514, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 515, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 514, __pyx_L1_error) - __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 515, __pyx_L1_error) + __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; - /* "View.MemoryView":513 + /* "View.MemoryView":514 * cdef Py_ssize_t i * * if isinstance(value, tuple): # <<<<<<<<<<<<<< @@ -8740,7 +8648,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie goto __pyx_L3; } - /* "View.MemoryView":516 + /* "View.MemoryView":517 * bytesvalue = struct.pack(self.view.format, *value) * else: * bytesvalue = struct.pack(self.view.format, value) # <<<<<<<<<<<<<< @@ -8748,65 +8656,65 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie * for i, c in enumerate(bytesvalue): */ /*else*/ { - __pyx_t_5 = __pyx_v_struct; - __Pyx_INCREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 516, __pyx_L1_error) + __pyx_t_6 = __pyx_v_struct; + __Pyx_INCREF(__pyx_t_6); + __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_self->view.format); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = 0; + __pyx_t_7 = 0; { - PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_1, __pyx_v_value}; - __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_pack, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_1, __pyx_v_value}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_pack, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 516, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 517, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); } - if (!(likely(PyBytes_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_3))) __PYX_ERR(1, 516, __pyx_L1_error) - __pyx_v_bytesvalue = ((PyObject*)__pyx_t_3); - __pyx_t_3 = 0; + if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None) || __Pyx_RaiseUnexpectedTypeError("bytes", __pyx_t_4))) __PYX_ERR(1, 517, __pyx_L1_error) + __pyx_v_bytesvalue = ((PyObject*)__pyx_t_4); + __pyx_t_4 = 0; } __pyx_L3:; - /* "View.MemoryView":518 + /* "View.MemoryView":519 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< * itemp[i] = c * */ - __pyx_t_7 = 0; + __pyx_t_8 = 0; if (unlikely(__pyx_v_bytesvalue == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable"); - __PYX_ERR(1, 518, __pyx_L1_error) + __PYX_ERR(1, 519, __pyx_L1_error) } __Pyx_INCREF(__pyx_v_bytesvalue); - __pyx_t_8 = __pyx_v_bytesvalue; - __pyx_t_10 = __Pyx_PyBytes_AsWritableString(__pyx_t_8); if (unlikely(__pyx_t_10 == ((char *)NULL))) __PYX_ERR(1, 518, __pyx_L1_error) - __pyx_t_11 = __Pyx_PyBytes_GET_SIZE(__pyx_t_8); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(1, 518, __pyx_L1_error) - __pyx_t_12 = (__pyx_t_10 + __pyx_t_11); - for (__pyx_t_13 = __pyx_t_10; __pyx_t_13 < __pyx_t_12; __pyx_t_13++) { - __pyx_t_9 = __pyx_t_13; - __pyx_v_c = (__pyx_t_9[0]); + __pyx_t_9 = __pyx_v_bytesvalue; + __pyx_t_11 = __Pyx_PyBytes_AsWritableString(__pyx_t_9); if (unlikely(__pyx_t_11 == ((char *)NULL))) __PYX_ERR(1, 519, __pyx_L1_error) + __pyx_t_12 = __Pyx_PyBytes_GET_SIZE(__pyx_t_9); if (unlikely(__pyx_t_12 == ((Py_ssize_t)-1))) __PYX_ERR(1, 519, __pyx_L1_error) + __pyx_t_13 = (__pyx_t_11 + __pyx_t_12); + for (__pyx_t_14 = __pyx_t_11; __pyx_t_14 < __pyx_t_13; __pyx_t_14++) { + __pyx_t_10 = __pyx_t_14; + __pyx_v_c = (__pyx_t_10[0]); - /* "View.MemoryView":519 + /* "View.MemoryView":520 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< * * @cname('getbuffer') */ - __pyx_v_i = __pyx_t_7; + __pyx_v_i = __pyx_t_8; - /* "View.MemoryView":518 + /* "View.MemoryView":519 * bytesvalue = struct.pack(self.view.format, value) * * for i, c in enumerate(bytesvalue): # <<<<<<<<<<<<<< * itemp[i] = c * */ - __pyx_t_7 = (__pyx_t_7 + 1); + __pyx_t_8 = (__pyx_t_8 + 1); - /* "View.MemoryView":519 + /* "View.MemoryView":520 * * for i, c in enumerate(bytesvalue): * itemp[i] = c # <<<<<<<<<<<<<< @@ -8815,9 +8723,9 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie */ (__pyx_v_itemp[__pyx_v_i]) = __pyx_v_c; } - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; - /* "View.MemoryView":505 + /* "View.MemoryView":506 * return result * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -8830,10 +8738,10 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_8); + __Pyx_XDECREF(__pyx_t_6); + __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("View.MemoryView.memoryview.assign_item_from_object", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -8844,7 +8752,7 @@ static PyObject *__pyx_memoryview_assign_item_from_object(struct __pyx_memoryvie return __pyx_r; } -/* "View.MemoryView":521 +/* "View.MemoryView":522 * itemp[i] = c * * @cname('getbuffer') # <<<<<<<<<<<<<< @@ -8888,7 +8796,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None); __Pyx_GIVEREF(__pyx_v_info->obj); - /* "View.MemoryView":523 + /* "View.MemoryView":524 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< @@ -8905,17 +8813,17 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_L4_bool_binop_done:; if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":524 + /* "View.MemoryView":525 * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: * raise ValueError, "Cannot create writable memory view from read-only memoryview" # <<<<<<<<<<<<<< * * if flags & PyBUF_ND: */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Cannot_create_writable_memory_vi, 0, 0); - __PYX_ERR(1, 524, __pyx_L1_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Cannot_create_writable_memory_vi, 0, 0); + __PYX_ERR(1, 525, __pyx_L1_error) - /* "View.MemoryView":523 + /* "View.MemoryView":524 * @cname('getbuffer') * def __getbuffer__(self, Py_buffer *info, int flags): * if flags & PyBUF_WRITABLE and self.view.readonly: # <<<<<<<<<<<<<< @@ -8924,7 +8832,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu */ } - /* "View.MemoryView":526 + /* "View.MemoryView":527 * raise ValueError, "Cannot create writable memory view from read-only memoryview" * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< @@ -8934,7 +8842,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_ND) != 0); if (__pyx_t_1) { - /* "View.MemoryView":527 + /* "View.MemoryView":528 * * if flags & PyBUF_ND: * info.shape = self.view.shape # <<<<<<<<<<<<<< @@ -8944,7 +8852,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_3 = __pyx_v_self->view.shape; __pyx_v_info->shape = __pyx_t_3; - /* "View.MemoryView":526 + /* "View.MemoryView":527 * raise ValueError, "Cannot create writable memory view from read-only memoryview" * * if flags & PyBUF_ND: # <<<<<<<<<<<<<< @@ -8954,7 +8862,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L6; } - /* "View.MemoryView":529 + /* "View.MemoryView":530 * info.shape = self.view.shape * else: * info.shape = NULL # <<<<<<<<<<<<<< @@ -8966,7 +8874,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L6:; - /* "View.MemoryView":531 + /* "View.MemoryView":532 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -8976,7 +8884,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_STRIDES) != 0); if (__pyx_t_1) { - /* "View.MemoryView":532 + /* "View.MemoryView":533 * * if flags & PyBUF_STRIDES: * info.strides = self.view.strides # <<<<<<<<<<<<<< @@ -8986,7 +8894,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_3 = __pyx_v_self->view.strides; __pyx_v_info->strides = __pyx_t_3; - /* "View.MemoryView":531 + /* "View.MemoryView":532 * info.shape = NULL * * if flags & PyBUF_STRIDES: # <<<<<<<<<<<<<< @@ -8996,7 +8904,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L7; } - /* "View.MemoryView":534 + /* "View.MemoryView":535 * info.strides = self.view.strides * else: * info.strides = NULL # <<<<<<<<<<<<<< @@ -9008,7 +8916,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L7:; - /* "View.MemoryView":536 + /* "View.MemoryView":537 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -9018,7 +8926,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_INDIRECT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":537 + /* "View.MemoryView":538 * * if flags & PyBUF_INDIRECT: * info.suboffsets = self.view.suboffsets # <<<<<<<<<<<<<< @@ -9028,7 +8936,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_3 = __pyx_v_self->view.suboffsets; __pyx_v_info->suboffsets = __pyx_t_3; - /* "View.MemoryView":536 + /* "View.MemoryView":537 * info.strides = NULL * * if flags & PyBUF_INDIRECT: # <<<<<<<<<<<<<< @@ -9038,7 +8946,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L8; } - /* "View.MemoryView":539 + /* "View.MemoryView":540 * info.suboffsets = self.view.suboffsets * else: * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -9050,7 +8958,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L8:; - /* "View.MemoryView":541 + /* "View.MemoryView":542 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -9060,7 +8968,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = ((__pyx_v_flags & PyBUF_FORMAT) != 0); if (__pyx_t_1) { - /* "View.MemoryView":542 + /* "View.MemoryView":543 * * if flags & PyBUF_FORMAT: * info.format = self.view.format # <<<<<<<<<<<<<< @@ -9070,7 +8978,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_4 = __pyx_v_self->view.format; __pyx_v_info->format = __pyx_t_4; - /* "View.MemoryView":541 + /* "View.MemoryView":542 * info.suboffsets = NULL * * if flags & PyBUF_FORMAT: # <<<<<<<<<<<<<< @@ -9080,7 +8988,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu goto __pyx_L9; } - /* "View.MemoryView":544 + /* "View.MemoryView":545 * info.format = self.view.format * else: * info.format = NULL # <<<<<<<<<<<<<< @@ -9092,7 +9000,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu } __pyx_L9:; - /* "View.MemoryView":546 + /* "View.MemoryView":547 * info.format = NULL * * info.buf = self.view.buf # <<<<<<<<<<<<<< @@ -9102,7 +9010,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_5 = __pyx_v_self->view.buf; __pyx_v_info->buf = __pyx_t_5; - /* "View.MemoryView":547 + /* "View.MemoryView":548 * * info.buf = self.view.buf * info.ndim = self.view.ndim # <<<<<<<<<<<<<< @@ -9112,7 +9020,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_6 = __pyx_v_self->view.ndim; __pyx_v_info->ndim = __pyx_t_6; - /* "View.MemoryView":548 + /* "View.MemoryView":549 * info.buf = self.view.buf * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize # <<<<<<<<<<<<<< @@ -9122,7 +9030,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_7 = __pyx_v_self->view.itemsize; __pyx_v_info->itemsize = __pyx_t_7; - /* "View.MemoryView":549 + /* "View.MemoryView":550 * info.ndim = self.view.ndim * info.itemsize = self.view.itemsize * info.len = self.view.len # <<<<<<<<<<<<<< @@ -9132,7 +9040,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_7 = __pyx_v_self->view.len; __pyx_v_info->len = __pyx_t_7; - /* "View.MemoryView":550 + /* "View.MemoryView":551 * info.itemsize = self.view.itemsize * info.len = self.view.len * info.readonly = self.view.readonly # <<<<<<<<<<<<<< @@ -9142,7 +9050,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __pyx_t_1 = __pyx_v_self->view.readonly; __pyx_v_info->readonly = __pyx_t_1; - /* "View.MemoryView":551 + /* "View.MemoryView":552 * info.len = self.view.len * info.readonly = self.view.readonly * info.obj = self # <<<<<<<<<<<<<< @@ -9155,7 +9063,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = ((PyObject *)__pyx_v_self); - /* "View.MemoryView":521 + /* "View.MemoryView":522 * itemp[i] = c * * @cname('getbuffer') # <<<<<<<<<<<<<< @@ -9184,7 +9092,7 @@ static int __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_8__getbu return __pyx_r; } -/* "View.MemoryView":554 +/* "View.MemoryView":555 * * * @property # <<<<<<<<<<<<<< @@ -9218,29 +9126,29 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":556 + /* "View.MemoryView":557 * @property * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) # <<<<<<<<<<<<<< * transpose_memslice(&result.from_slice) * return result */ - __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 556, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 557, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 556, __pyx_L1_error) + if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 557, __pyx_L1_error) __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":557 + /* "View.MemoryView":558 * def T(self): * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) # <<<<<<<<<<<<<< * return result * */ - __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 557, __pyx_L1_error) + __pyx_t_2 = __pyx_memslice_transpose((&__pyx_v_result->from_slice)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 558, __pyx_L1_error) - /* "View.MemoryView":558 + /* "View.MemoryView":559 * cdef _memoryviewslice result = memoryview_copy(self) * transpose_memslice(&result.from_slice) * return result # <<<<<<<<<<<<<< @@ -9252,7 +9160,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":554 + /* "View.MemoryView":555 * * * @property # <<<<<<<<<<<<<< @@ -9272,7 +9180,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_1T___get__(struct _ return __pyx_r; } -/* "View.MemoryView":560 +/* "View.MemoryView":561 * return result * * @property # <<<<<<<<<<<<<< @@ -9304,7 +9212,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":562 + /* "View.MemoryView":563 * @property * def base(self): * return self._get_base() # <<<<<<<<<<<<<< @@ -9312,13 +9220,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc * cdef _get_base(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->_get_base(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error) + __pyx_t_1 = ((struct __pyx_vtabstruct_memoryview *)__pyx_v_self->__pyx_vtab)->_get_base(__pyx_v_self); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 563, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":560 + /* "View.MemoryView":561 * return result * * @property # <<<<<<<<<<<<<< @@ -9337,7 +9245,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4base___get__(struc return __pyx_r; } -/* "View.MemoryView":564 +/* "View.MemoryView":565 * return self._get_base() * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -9350,7 +9258,7 @@ static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_base", 0); - /* "View.MemoryView":565 + /* "View.MemoryView":566 * * cdef _get_base(self): * return self.obj # <<<<<<<<<<<<<< @@ -9362,7 +9270,7 @@ static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v __pyx_r = __pyx_v_self->obj; goto __pyx_L0; - /* "View.MemoryView":564 + /* "View.MemoryView":565 * return self._get_base() * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -9377,7 +9285,7 @@ static PyObject *__pyx_memoryview__get_base(struct __pyx_memoryview_obj *__pyx_v return __pyx_r; } -/* "View.MemoryView":567 +/* "View.MemoryView":568 * return self.obj * * @property # <<<<<<<<<<<<<< @@ -9414,7 +9322,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":569 + /* "View.MemoryView":570 * @property * def shape(self): * return tuple([length for length in self.view.shape[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -9423,26 +9331,26 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 569, __pyx_L1_error) + __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; __pyx_7genexpr__pyx_v_length = (__pyx_t_2[0]); - __pyx_t_5 = PyLong_FromSsize_t(__pyx_7genexpr__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t(__pyx_7genexpr__pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 569, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } /* exit inner scope */ - __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 569, __pyx_L1_error) + __pyx_t_5 = PyList_AsTuple(((PyObject*)__pyx_t_1)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0; - /* "View.MemoryView":567 + /* "View.MemoryView":568 * return self.obj * * @property # <<<<<<<<<<<<<< @@ -9462,7 +9370,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_5shape___get__(stru return __pyx_r; } -/* "View.MemoryView":571 +/* "View.MemoryView":572 * return tuple([length for length in self.view.shape[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9500,7 +9408,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":573 + /* "View.MemoryView":574 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -9510,17 +9418,17 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st __pyx_t_1 = (__pyx_v_self->view.strides == NULL); if (unlikely(__pyx_t_1)) { - /* "View.MemoryView":575 + /* "View.MemoryView":576 * if self.view.strides == NULL: * * raise ValueError, "Buffer view does not expose strides" # <<<<<<<<<<<<<< * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Buffer_view_does_not_expose_stri, 0, 0); - __PYX_ERR(1, 575, __pyx_L1_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Buffer_view_does_not_expose_stri, 0, 0); + __PYX_ERR(1, 576, __pyx_L1_error) - /* "View.MemoryView":573 + /* "View.MemoryView":574 * @property * def strides(self): * if self.view.strides == NULL: # <<<<<<<<<<<<<< @@ -9529,7 +9437,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st */ } - /* "View.MemoryView":577 + /* "View.MemoryView":578 * raise ValueError, "Buffer view does not expose strides" * * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -9538,26 +9446,26 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 577, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.strides + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.strides; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_8genexpr1__pyx_v_stride = (__pyx_t_3[0]); - __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr1__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error) + __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr1__pyx_v_stride); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 577, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error) + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 578, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; - /* "View.MemoryView":571 + /* "View.MemoryView":572 * return tuple([length for length in self.view.shape[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9577,7 +9485,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_7strides___get__(st return __pyx_r; } -/* "View.MemoryView":579 +/* "View.MemoryView":580 * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9615,7 +9523,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":581 + /* "View.MemoryView":582 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< @@ -9625,7 +9533,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ __pyx_t_1 = (__pyx_v_self->view.suboffsets == NULL); if (__pyx_t_1) { - /* "View.MemoryView":582 + /* "View.MemoryView":583 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< @@ -9633,13 +9541,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PySequence_Multiply(__pyx_mstate_global->__pyx_tuple[0], __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 582, __pyx_L1_error) + __pyx_t_2 = __Pyx_PySequence_Multiply(__pyx_mstate_global->__pyx_tuple[1], __pyx_v_self->view.ndim); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":581 + /* "View.MemoryView":582 * @property * def suboffsets(self): * if self.view.suboffsets == NULL: # <<<<<<<<<<<<<< @@ -9648,7 +9556,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ */ } - /* "View.MemoryView":584 + /* "View.MemoryView":585 * return (-1,) * self.view.ndim * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) # <<<<<<<<<<<<<< @@ -9657,26 +9565,26 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ - __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 584, __pyx_L1_error) + __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = (__pyx_v_self->view.suboffsets + __pyx_v_self->view.ndim); for (__pyx_t_5 = __pyx_v_self->view.suboffsets; __pyx_t_5 < __pyx_t_4; __pyx_t_5++) { __pyx_t_3 = __pyx_t_5; __pyx_8genexpr2__pyx_v_suboffset = (__pyx_t_3[0]); - __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr2__pyx_v_suboffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error) + __pyx_t_6 = PyLong_FromSsize_t(__pyx_8genexpr2__pyx_v_suboffset); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 584, __pyx_L1_error) + if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } /* exit inner scope */ - __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error) + __pyx_t_6 = PyList_AsTuple(((PyObject*)__pyx_t_2)); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; - /* "View.MemoryView":579 + /* "View.MemoryView":580 * return tuple([stride for stride in self.view.strides[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9696,7 +9604,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_10suboffsets___get_ return __pyx_r; } -/* "View.MemoryView":586 +/* "View.MemoryView":587 * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9728,7 +9636,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":588 + /* "View.MemoryView":589 * @property * def ndim(self): * return self.view.ndim # <<<<<<<<<<<<<< @@ -9736,13 +9644,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 588, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->view.ndim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":586 + /* "View.MemoryView":587 * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) * * @property # <<<<<<<<<<<<<< @@ -9761,7 +9669,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4ndim___get__(struc return __pyx_r; } -/* "View.MemoryView":590 +/* "View.MemoryView":591 * return self.view.ndim * * @property # <<<<<<<<<<<<<< @@ -9793,7 +9701,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":592 + /* "View.MemoryView":593 * @property * def itemsize(self): * return self.view.itemsize # <<<<<<<<<<<<<< @@ -9801,13 +9709,13 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 592, __pyx_L1_error) + __pyx_t_1 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":590 + /* "View.MemoryView":591 * return self.view.ndim * * @property # <<<<<<<<<<<<<< @@ -9826,7 +9734,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_8itemsize___get__(s return __pyx_r; } -/* "View.MemoryView":594 +/* "View.MemoryView":595 * return self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9860,7 +9768,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":596 + /* "View.MemoryView":597 * @property * def nbytes(self): * return self.size * self.view.itemsize # <<<<<<<<<<<<<< @@ -9868,11 +9776,11 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str * @property */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 596, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 596, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_self->view.itemsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 596, __pyx_L1_error) + __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -9880,7 +9788,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":594 + /* "View.MemoryView":595 * return self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9901,7 +9809,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_6nbytes___get__(str return __pyx_r; } -/* "View.MemoryView":598 +/* "View.MemoryView":599 * return self.size * self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -9939,7 +9847,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__get__", 0); - /* "View.MemoryView":600 + /* "View.MemoryView":601 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -9949,7 +9857,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_1 = (__pyx_v_self->_size == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":601 + /* "View.MemoryView":602 * def size(self): * if self._size is None: * result = 1 # <<<<<<<<<<<<<< @@ -9959,7 +9867,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_INCREF(__pyx_mstate_global->__pyx_int_1); __pyx_v_result = __pyx_mstate_global->__pyx_int_1; - /* "View.MemoryView":603 + /* "View.MemoryView":604 * result = 1 * * for length in self.view.shape[:self.view.ndim]: # <<<<<<<<<<<<<< @@ -9969,25 +9877,25 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_t_3 = (__pyx_v_self->view.shape + __pyx_v_self->view.ndim); for (__pyx_t_4 = __pyx_v_self->view.shape; __pyx_t_4 < __pyx_t_3; __pyx_t_4++) { __pyx_t_2 = __pyx_t_4; - __pyx_t_5 = PyLong_FromSsize_t((__pyx_t_2[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 603, __pyx_L1_error) + __pyx_t_5 = PyLong_FromSsize_t((__pyx_t_2[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_5); __pyx_t_5 = 0; - /* "View.MemoryView":604 + /* "View.MemoryView":605 * * for length in self.view.shape[:self.view.ndim]: * result *= length # <<<<<<<<<<<<<< * * self._size = result */ - __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 604, __pyx_L1_error) + __pyx_t_5 = PyNumber_InPlaceMultiply(__pyx_v_result, __pyx_v_length); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_5); __pyx_t_5 = 0; } - /* "View.MemoryView":606 + /* "View.MemoryView":607 * result *= length * * self._size = result # <<<<<<<<<<<<<< @@ -10000,7 +9908,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __Pyx_DECREF(__pyx_v_self->_size); __pyx_v_self->_size = __pyx_v_result; - /* "View.MemoryView":600 + /* "View.MemoryView":601 * @property * def size(self): * if self._size is None: # <<<<<<<<<<<<<< @@ -10009,7 +9917,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc */ } - /* "View.MemoryView":608 + /* "View.MemoryView":609 * self._size = result * * return self._size # <<<<<<<<<<<<<< @@ -10021,7 +9929,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc __pyx_r = __pyx_v_self->_size; goto __pyx_L0; - /* "View.MemoryView":598 + /* "View.MemoryView":599 * return self.size * self.view.itemsize * * @property # <<<<<<<<<<<<<< @@ -10042,7 +9950,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView_10memoryview_4size___get__(struc return __pyx_r; } -/* "View.MemoryView":610 +/* "View.MemoryView":611 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -10069,7 +9977,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 Py_ssize_t __pyx_r; int __pyx_t_1; - /* "View.MemoryView":611 + /* "View.MemoryView":612 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -10079,7 +9987,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_t_1 = (__pyx_v_self->view.ndim >= 1); if (__pyx_t_1) { - /* "View.MemoryView":612 + /* "View.MemoryView":613 * def __len__(self): * if self.view.ndim >= 1: * return self.view.shape[0] # <<<<<<<<<<<<<< @@ -10089,7 +9997,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = (__pyx_v_self->view.shape[0]); goto __pyx_L0; - /* "View.MemoryView":611 + /* "View.MemoryView":612 * * def __len__(self): * if self.view.ndim >= 1: # <<<<<<<<<<<<<< @@ -10098,7 +10006,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 */ } - /* "View.MemoryView":614 + /* "View.MemoryView":615 * return self.view.shape[0] * * return 0 # <<<<<<<<<<<<<< @@ -10108,7 +10016,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":610 + /* "View.MemoryView":611 * return self._size * * def __len__(self): # <<<<<<<<<<<<<< @@ -10121,7 +10029,7 @@ static Py_ssize_t __pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_1 return __pyx_r; } -/* "View.MemoryView":616 +/* "View.MemoryView":617 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -10156,7 +10064,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__repr__", 0); - /* "View.MemoryView":617 + /* "View.MemoryView":618 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< @@ -10164,28 +10072,28 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":618 + /* "View.MemoryView":619 * def __repr__(self): * return "" % (self.base.__class__.__name__, * id(self)) # <<<<<<<<<<<<<< * * def __str__(self): */ - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_id, ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 618, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_MemoryView_of; @@ -10194,7 +10102,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 __pyx_t_4[3] = __pyx_t_3; __pyx_t_4[4] = __pyx_mstate_global->__pyx_kp_u__3; - /* "View.MemoryView":617 + /* "View.MemoryView":618 * * def __repr__(self): * return "" % (self.base.__class__.__name__, # <<<<<<<<<<<<<< @@ -10202,7 +10110,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 * */ __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_4, 5, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3)); - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; @@ -10210,7 +10118,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":616 + /* "View.MemoryView":617 * return 0 * * def __repr__(self): # <<<<<<<<<<<<<< @@ -10231,7 +10139,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_12 return __pyx_r; } -/* "View.MemoryView":620 +/* "View.MemoryView":621 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -10265,7 +10173,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__str__", 0); - /* "View.MemoryView":621 + /* "View.MemoryView":622 * * def __str__(self): * return "" % (self.base.__class__.__name__,) # <<<<<<<<<<<<<< @@ -10273,29 +10181,29 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_base); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 621, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_1), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3[0] = __pyx_mstate_global->__pyx_kp_u_MemoryView_of; __pyx_t_3[1] = __pyx_t_2; __pyx_t_3[2] = __pyx_mstate_global->__pyx_kp_u_object; __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_3, 3, 15 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 8, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2)); - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 621, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":620 + /* "View.MemoryView":621 * id(self)) * * def __str__(self): # <<<<<<<<<<<<<< @@ -10315,7 +10223,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_14 return __pyx_r; } -/* "View.MemoryView":624 +/* "View.MemoryView":625 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -10376,17 +10284,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_c_contig", 0); - /* "View.MemoryView":627 + /* "View.MemoryView":628 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'C', self.view.ndim) * */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 627, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 628, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":628 + /* "View.MemoryView":629 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'C', self.view.ndim) # <<<<<<<<<<<<<< @@ -10394,13 +10302,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 * def is_f_contig(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 628, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'C', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":624 + /* "View.MemoryView":625 * * * def is_c_contig(self): # <<<<<<<<<<<<<< @@ -10419,7 +10327,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_16 return __pyx_r; } -/* "View.MemoryView":630 +/* "View.MemoryView":631 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -10480,17 +10388,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("is_f_contig", 0); - /* "View.MemoryView":633 + /* "View.MemoryView":634 * cdef __Pyx_memviewslice *mslice * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) # <<<<<<<<<<<<<< * return slice_is_contig(mslice[0], 'F', self.view.ndim) * */ - __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((__Pyx_memviewslice *)0))) __PYX_ERR(1, 633, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_get_slice_from_memoryview(__pyx_v_self, (&__pyx_v_tmp)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 634, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":634 + /* "View.MemoryView":635 * cdef __Pyx_memviewslice tmp * mslice = get_slice_from_memview(self, &tmp) * return slice_is_contig(mslice[0], 'F', self.view.ndim) # <<<<<<<<<<<<<< @@ -10498,13 +10406,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 * def copy(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 634, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_memviewslice_is_contig((__pyx_v_mslice[0]), 'F', __pyx_v_self->view.ndim)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":630 + /* "View.MemoryView":631 * return slice_is_contig(mslice[0], 'C', self.view.ndim) * * def is_f_contig(self): # <<<<<<<<<<<<<< @@ -10523,7 +10431,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_18 return __pyx_r; } -/* "View.MemoryView":636 +/* "View.MemoryView":637 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -10584,7 +10492,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy", 0); - /* "View.MemoryView":638 + /* "View.MemoryView":639 * def copy(self): * cdef __Pyx_memviewslice mslice * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS # <<<<<<<<<<<<<< @@ -10593,7 +10501,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_F_CONTIGUOUS)); - /* "View.MemoryView":640 + /* "View.MemoryView":641 * cdef int flags = self.flags & ~PyBUF_F_CONTIGUOUS * * slice_copy(self, &mslice) # <<<<<<<<<<<<<< @@ -10602,17 +10510,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_mslice)); - /* "View.MemoryView":641 + /* "View.MemoryView":642 * * slice_copy(self, &mslice) * mslice = slice_copy_contig(&mslice, "c", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_C_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), ((char const *)"c"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 641, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_mslice), __pyx_k_c, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_C_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 642, __pyx_L1_error) __pyx_v_mslice = __pyx_t_1; - /* "View.MemoryView":646 + /* "View.MemoryView":647 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &mslice) # <<<<<<<<<<<<<< @@ -10620,13 +10528,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 * def copy_fortran(self): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 646, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_mslice)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 647, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":636 + /* "View.MemoryView":637 * return slice_is_contig(mslice[0], 'F', self.view.ndim) * * def copy(self): # <<<<<<<<<<<<<< @@ -10645,7 +10553,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_20 return __pyx_r; } -/* "View.MemoryView":648 +/* "View.MemoryView":649 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -10707,7 +10615,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 int __pyx_clineno = 0; __Pyx_RefNannySetupContext("copy_fortran", 0); - /* "View.MemoryView":650 + /* "View.MemoryView":651 * def copy_fortran(self): * cdef __Pyx_memviewslice src, dst * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS # <<<<<<<<<<<<<< @@ -10716,7 +10624,7 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_v_flags = (__pyx_v_self->flags & (~PyBUF_C_CONTIGUOUS)); - /* "View.MemoryView":652 + /* "View.MemoryView":653 * cdef int flags = self.flags & ~PyBUF_C_CONTIGUOUS * * slice_copy(self, &src) # <<<<<<<<<<<<<< @@ -10725,17 +10633,17 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 */ __pyx_memoryview_slice_copy(__pyx_v_self, (&__pyx_v_src)); - /* "View.MemoryView":653 + /* "View.MemoryView":654 * * slice_copy(self, &src) * dst = slice_copy_contig(&src, "fortran", self.view.ndim, # <<<<<<<<<<<<<< * self.view.itemsize, * flags|PyBUF_F_CONTIGUOUS, */ - __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), ((char const *)"fortran"), __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 653, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_new_contig((&__pyx_v_src), __pyx_k_fortran, __pyx_v_self->view.ndim, __pyx_v_self->view.itemsize, (__pyx_v_flags | PyBUF_F_CONTIGUOUS), __pyx_v_self->dtype_is_object); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 654, __pyx_L1_error) __pyx_v_dst = __pyx_t_1; - /* "View.MemoryView":658 + /* "View.MemoryView":659 * self.dtype_is_object) * * return memoryview_copy_from_slice(self, &dst) # <<<<<<<<<<<<<< @@ -10743,13 +10651,13 @@ static PyObject *__pyx_memoryview___pyx_pf_15View_dot_MemoryView_10memoryview_22 * */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 658, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_copy_object_from_slice(__pyx_v_self, (&__pyx_v_dst)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":648 + /* "View.MemoryView":649 * return memoryview_copy_from_slice(self, &mslice) * * def copy_fortran(self): # <<<<<<<<<<<<<< @@ -10829,7 +10737,7 @@ static PyObject *__pyx_pf___pyx_memoryview___reduce_cython__(CYTHON_UNUSED struc * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 @@ -10903,7 +10811,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } } @@ -10951,7 +10859,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 @@ -10970,7 +10878,7 @@ static PyObject *__pyx_pf___pyx_memoryview_2__setstate_cython__(CYTHON_UNUSED st return __pyx_r; } -/* "View.MemoryView":661 +/* "View.MemoryView":662 * * * @cname('__pyx_memoryview_new') # <<<<<<<<<<<<<< @@ -10986,14 +10894,13 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; - PyObject *__pyx_t_5 = NULL; - size_t __pyx_t_6; + size_t __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_cwrapper", 0); - /* "View.MemoryView":663 + /* "View.MemoryView":664 * @cname('__pyx_memoryview_new') * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, const __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) # <<<<<<<<<<<<<< @@ -11001,27 +10908,24 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in * return result */ __pyx_t_2 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); - __pyx_t_3 = ((PyObject *)__pyx_mstate_global->__pyx_memoryview_type); - __pyx_t_4 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 663, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyLong_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 664, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_3); + __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 663, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = 1; + __pyx_t_5 = 1; { - PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_o, __pyx_t_4, __pyx_t_5}; - __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_v_o, __pyx_t_3, __pyx_t_4}; + __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_memoryview_type, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 663, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 664, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_1); } __pyx_v_result = ((struct __pyx_memoryview_obj *)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":664 + /* "View.MemoryView":665 * cdef memoryview_cwrapper(object o, int flags, bint dtype_is_object, const __Pyx_TypeInfo *typeinfo): * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo # <<<<<<<<<<<<<< @@ -11030,7 +10934,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in */ __pyx_v_result->typeinfo = __pyx_v_typeinfo; - /* "View.MemoryView":665 + /* "View.MemoryView":666 * cdef memoryview result = memoryview(o, flags, dtype_is_object) * result.typeinfo = typeinfo * return result # <<<<<<<<<<<<<< @@ -11042,7 +10946,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":661 + /* "View.MemoryView":662 * * * @cname('__pyx_memoryview_new') # <<<<<<<<<<<<<< @@ -11056,7 +10960,6 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); - __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.memoryview_cwrapper", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -11066,7 +10969,7 @@ static PyObject *__pyx_memoryview_new(PyObject *__pyx_v_o, int __pyx_v_flags, in return __pyx_r; } -/* "View.MemoryView":667 +/* "View.MemoryView":668 * return result * * @cname('__pyx_memoryview_check') # <<<<<<<<<<<<<< @@ -11078,7 +10981,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { int __pyx_r; int __pyx_t_1; - /* "View.MemoryView":669 + /* "View.MemoryView":670 * @cname('__pyx_memoryview_check') * cdef inline bint memoryview_check(object o) noexcept: * return isinstance(o, memoryview) # <<<<<<<<<<<<<< @@ -11089,7 +10992,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { __pyx_r = __pyx_t_1; goto __pyx_L0; - /* "View.MemoryView":667 + /* "View.MemoryView":668 * return result * * @cname('__pyx_memoryview_check') # <<<<<<<<<<<<<< @@ -11102,7 +11005,7 @@ static CYTHON_INLINE int __pyx_memoryview_check(PyObject *__pyx_v_o) { return __pyx_r; } -/* "View.MemoryView":671 +/* "View.MemoryView":672 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -11132,7 +11035,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("_unellipsify", 0); - /* "View.MemoryView":677 + /* "View.MemoryView":678 * """ * cdef Py_ssize_t idx * tup = index if isinstance(index, tuple) else (index,) # <<<<<<<<<<<<<< @@ -11144,37 +11047,37 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_INCREF(((PyObject*)__pyx_v_index)); __pyx_t_1 = __pyx_v_index; } else { - __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 677, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index) != (0)) __PYX_ERR(1, 677, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_index) != (0)) __PYX_ERR(1, 678, __pyx_L1_error); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_v_tup = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":679 + /* "View.MemoryView":680 * tup = index if isinstance(index, tuple) else (index,) * * result = [slice(None)] * ndim # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ - __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndim<0) ? 0:__pyx_v_ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 679, __pyx_L1_error) + __pyx_t_1 = PyList_New(1 * ((__pyx_v_ndim<0) ? 0:__pyx_v_ndim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 680, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); { Py_ssize_t __pyx_temp; for (__pyx_temp=0; __pyx_temp < __pyx_v_ndim; __pyx_temp++) { __Pyx_INCREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(1, 679, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, __pyx_temp, __pyx_mstate_global->__pyx_slice[0]) != (0)) __PYX_ERR(1, 680, __pyx_L1_error); } } __pyx_v_result = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":680 + /* "View.MemoryView":681 * * result = [slice(None)] * ndim * have_slices = False # <<<<<<<<<<<<<< @@ -11183,7 +11086,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 0; - /* "View.MemoryView":681 + /* "View.MemoryView":682 * result = [slice(None)] * ndim * have_slices = False * seen_ellipsis = False # <<<<<<<<<<<<<< @@ -11192,7 +11095,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 0; - /* "View.MemoryView":682 + /* "View.MemoryView":683 * have_slices = False * seen_ellipsis = False * idx = 0 # <<<<<<<<<<<<<< @@ -11201,7 +11104,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_idx = 0; - /* "View.MemoryView":683 + /* "View.MemoryView":684 * seen_ellipsis = False * idx = 0 * for item in tup: # <<<<<<<<<<<<<< @@ -11210,7 +11113,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ if (unlikely(__pyx_v_tup == Py_None)) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); - __PYX_ERR(1, 683, __pyx_L1_error) + __PYX_ERR(1, 684, __pyx_L1_error) } __pyx_t_1 = __pyx_v_tup; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; @@ -11218,7 +11121,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 683, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 684, __pyx_L1_error) #endif if (__pyx_t_4 >= __pyx_temp) break; } @@ -11228,12 +11131,12 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_4); #endif ++__pyx_t_4; - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 683, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_3); __pyx_t_3 = 0; - /* "View.MemoryView":684 + /* "View.MemoryView":685 * idx = 0 * for item in tup: * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -11243,7 +11146,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = (__pyx_v_item == __pyx_builtin_Ellipsis); if (__pyx_t_2) { - /* "View.MemoryView":685 + /* "View.MemoryView":686 * for item in tup: * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -11253,7 +11156,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = (!__pyx_v_seen_ellipsis); if (__pyx_t_2) { - /* "View.MemoryView":686 + /* "View.MemoryView":687 * if item is Ellipsis: * if not seen_ellipsis: * idx += ndim - len(tup) # <<<<<<<<<<<<<< @@ -11262,12 +11165,12 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ if (unlikely(__pyx_v_tup == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 686, __pyx_L1_error) + __PYX_ERR(1, 687, __pyx_L1_error) } - __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(__pyx_v_tup); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 686, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyTuple_GET_SIZE(__pyx_v_tup); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(1, 687, __pyx_L1_error) __pyx_v_idx = (__pyx_v_idx + (__pyx_v_ndim - __pyx_t_5)); - /* "View.MemoryView":687 + /* "View.MemoryView":688 * if not seen_ellipsis: * idx += ndim - len(tup) * seen_ellipsis = True # <<<<<<<<<<<<<< @@ -11276,7 +11179,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_seen_ellipsis = 1; - /* "View.MemoryView":685 + /* "View.MemoryView":686 * for item in tup: * if item is Ellipsis: * if not seen_ellipsis: # <<<<<<<<<<<<<< @@ -11285,7 +11188,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ } - /* "View.MemoryView":688 + /* "View.MemoryView":689 * idx += ndim - len(tup) * seen_ellipsis = True * have_slices = True # <<<<<<<<<<<<<< @@ -11294,7 +11197,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 1; - /* "View.MemoryView":684 + /* "View.MemoryView":685 * idx = 0 * for item in tup: * if item is Ellipsis: # <<<<<<<<<<<<<< @@ -11304,7 +11207,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L5; } - /* "View.MemoryView":690 + /* "View.MemoryView":691 * have_slices = True * else: * if isinstance(item, slice): # <<<<<<<<<<<<<< @@ -11315,7 +11218,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = PySlice_Check(__pyx_v_item); if (__pyx_t_2) { - /* "View.MemoryView":691 + /* "View.MemoryView":692 * else: * if isinstance(item, slice): * have_slices = True # <<<<<<<<<<<<<< @@ -11324,7 +11227,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_have_slices = 1; - /* "View.MemoryView":690 + /* "View.MemoryView":691 * have_slices = True * else: * if isinstance(item, slice): # <<<<<<<<<<<<<< @@ -11334,7 +11237,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { goto __pyx_L7; } - /* "View.MemoryView":692 + /* "View.MemoryView":693 * if isinstance(item, slice): * have_slices = True * elif not PyIndex_Check(item): # <<<<<<<<<<<<<< @@ -11344,27 +11247,27 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __pyx_t_2 = (!(PyIndex_Check(__pyx_v_item) != 0)); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":693 + /* "View.MemoryView":694 * have_slices = True * elif not PyIndex_Check(item): * raise TypeError, f"Cannot index with type '{type(item)}'" # <<<<<<<<<<<<<< * result[idx] = item * idx += 1 */ - __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 693, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_item)), __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_Cannot_index_with_type; __pyx_t_6[1] = __pyx_t_3; __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u__4; __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, 24 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3)); - if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 693, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_7, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_t_7, 0, 0); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __PYX_ERR(1, 693, __pyx_L1_error) + __PYX_ERR(1, 694, __pyx_L1_error) - /* "View.MemoryView":692 + /* "View.MemoryView":693 * if isinstance(item, slice): * have_slices = True * elif not PyIndex_Check(item): # <<<<<<<<<<<<<< @@ -11374,18 +11277,18 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { } __pyx_L7:; - /* "View.MemoryView":694 + /* "View.MemoryView":695 * elif not PyIndex_Check(item): * raise TypeError, f"Cannot index with type '{type(item)}'" * result[idx] = item # <<<<<<<<<<<<<< * idx += 1 * */ - if (unlikely((__Pyx_SetItemInt(__pyx_v_result, __pyx_v_idx, __pyx_v_item, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, 1) < 0))) __PYX_ERR(1, 694, __pyx_L1_error) + if (unlikely((__Pyx_SetItemInt(__pyx_v_result, __pyx_v_idx, __pyx_v_item, Py_ssize_t, 1, PyLong_FromSsize_t, 1, 1, 1, 1, __Pyx_ReferenceSharing_OwnStrongReference) < 0))) __PYX_ERR(1, 695, __pyx_L1_error) } __pyx_L5:; - /* "View.MemoryView":695 + /* "View.MemoryView":696 * raise TypeError, f"Cannot index with type '{type(item)}'" * result[idx] = item * idx += 1 # <<<<<<<<<<<<<< @@ -11394,7 +11297,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_idx = (__pyx_v_idx + 1); - /* "View.MemoryView":683 + /* "View.MemoryView":684 * seen_ellipsis = False * idx = 0 * for item in tup: # <<<<<<<<<<<<<< @@ -11404,7 +11307,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "View.MemoryView":697 + /* "View.MemoryView":698 * idx += 1 * * nslices = ndim - idx # <<<<<<<<<<<<<< @@ -11413,7 +11316,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { */ __pyx_v_nslices = (__pyx_v_ndim - __pyx_v_idx); - /* "View.MemoryView":698 + /* "View.MemoryView":699 * * nslices = ndim - idx * return have_slices or nslices, tuple(result) # <<<<<<<<<<<<<< @@ -11423,32 +11326,32 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { __Pyx_XDECREF(__pyx_r); if (!__pyx_v_have_slices) { } else { - __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyBool_FromLong(__pyx_v_have_slices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L9_bool_binop_done; } - __pyx_t_7 = PyLong_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) + __pyx_t_7 = PyLong_FromSsize_t(__pyx_v_nslices); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; __pyx_L9_bool_binop_done:; - __pyx_t_7 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 698, __pyx_L1_error) + __pyx_t_7 = PyList_AsTuple(__pyx_v_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 698, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 698, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1) != (0)) __PYX_ERR(1, 699, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_7); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7) != (0)) __PYX_ERR(1, 698, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_7) != (0)) __PYX_ERR(1, 699, __pyx_L1_error); __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_r = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L0; - /* "View.MemoryView":671 + /* "View.MemoryView":672 * return isinstance(o, memoryview) * * cdef tuple _unellipsify(object index, int ndim): # <<<<<<<<<<<<<< @@ -11472,7 +11375,7 @@ static PyObject *_unellipsify(PyObject *__pyx_v_index, int __pyx_v_ndim) { return __pyx_r; } -/* "View.MemoryView":700 +/* "View.MemoryView":701 * return have_slices or nslices, tuple(result) * * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: # <<<<<<<<<<<<<< @@ -11491,7 +11394,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "View.MemoryView":701 + /* "View.MemoryView":702 * * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: * for suboffset in suboffsets[:ndim]: # <<<<<<<<<<<<<< @@ -11503,7 +11406,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ __pyx_t_1 = __pyx_t_3; __pyx_v_suboffset = (__pyx_t_1[0]); - /* "View.MemoryView":702 + /* "View.MemoryView":703 * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -11513,17 +11416,17 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ __pyx_t_4 = (__pyx_v_suboffset >= 0); if (unlikely(__pyx_t_4)) { - /* "View.MemoryView":703 + /* "View.MemoryView":704 * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: * raise ValueError, "Indirect dimensions not supported" # <<<<<<<<<<<<<< * return 0 # return type just used as an error flag * */ - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_mstate_global->__pyx_kp_u_Indirect_dimensions_not_supporte, 0, 0); - __PYX_ERR(1, 703, __pyx_L1_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_mstate_global->__pyx_kp_u_Indirect_dimensions_not_supporte, 0, 0); + __PYX_ERR(1, 704, __pyx_L1_error) - /* "View.MemoryView":702 + /* "View.MemoryView":703 * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: * for suboffset in suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -11533,7 +11436,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ } } - /* "View.MemoryView":704 + /* "View.MemoryView":705 * if suboffset >= 0: * raise ValueError, "Indirect dimensions not supported" * return 0 # return type just used as an error flag # <<<<<<<<<<<<<< @@ -11543,7 +11446,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":700 + /* "View.MemoryView":701 * return have_slices or nslices, tuple(result) * * cdef int assert_direct_dimensions(Py_ssize_t *suboffsets, int ndim) except -1: # <<<<<<<<<<<<<< @@ -11559,7 +11462,7 @@ static int assert_direct_dimensions(Py_ssize_t *__pyx_v_suboffsets, int __pyx_v_ return __pyx_r; } -/* "View.MemoryView":710 +/* "View.MemoryView":711 * * * @cname('__pyx_memview_slice') # <<<<<<<<<<<<<< @@ -11603,7 +11506,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memview_slice", 0); - /* "View.MemoryView":712 + /* "View.MemoryView":713 * @cname('__pyx_memview_slice') * cdef memoryview memview_slice(memoryview memview, object indices): * cdef int new_ndim = 0, suboffset_dim = -1, dim # <<<<<<<<<<<<<< @@ -11613,7 +11516,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_new_ndim = 0; __pyx_v_suboffset_dim = -1; - /* "View.MemoryView":719 + /* "View.MemoryView":720 * * * memset(&dst, 0, sizeof(dst)) # <<<<<<<<<<<<<< @@ -11622,7 +11525,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (void)(memset((&__pyx_v_dst), 0, (sizeof(__pyx_v_dst)))); - /* "View.MemoryView":723 + /* "View.MemoryView":724 * cdef _memoryviewslice memviewsliceobj * * assert memview.view.ndim > 0 # <<<<<<<<<<<<<< @@ -11633,15 +11536,15 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ if (unlikely(__pyx_assertions_enabled())) { __pyx_t_1 = (__pyx_v_memview->view.ndim > 0); if (unlikely(!__pyx_t_1)) { - __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0); - __PYX_ERR(1, 723, __pyx_L1_error) + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_AssertionError))), 0, 0, 0); + __PYX_ERR(1, 724, __pyx_L1_error) } } #else - if ((1)); else __PYX_ERR(1, 723, __pyx_L1_error) + if ((1)); else __PYX_ERR(1, 724, __pyx_L1_error) #endif - /* "View.MemoryView":725 + /* "View.MemoryView":726 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -11651,7 +11554,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":726 + /* "View.MemoryView":727 * * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview # <<<<<<<<<<<<<< @@ -11660,11 +11563,11 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_t_2 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 726, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 727, __pyx_L1_error) __pyx_v_memviewsliceobj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":727 + /* "View.MemoryView":728 * if isinstance(memview, _memoryviewslice): * memviewsliceobj = memview * p_src = &memviewsliceobj.from_slice # <<<<<<<<<<<<<< @@ -11673,7 +11576,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_src = (&__pyx_v_memviewsliceobj->from_slice); - /* "View.MemoryView":725 + /* "View.MemoryView":726 * assert memview.view.ndim > 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -11683,7 +11586,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L3; } - /* "View.MemoryView":729 + /* "View.MemoryView":730 * p_src = &memviewsliceobj.from_slice * else: * slice_copy(memview, &src) # <<<<<<<<<<<<<< @@ -11693,7 +11596,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_src)); - /* "View.MemoryView":730 + /* "View.MemoryView":731 * else: * slice_copy(memview, &src) * p_src = &src # <<<<<<<<<<<<<< @@ -11704,7 +11607,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L3:; - /* "View.MemoryView":736 + /* "View.MemoryView":737 * * * dst.memview = p_src.memview # <<<<<<<<<<<<<< @@ -11714,7 +11617,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_3 = __pyx_v_p_src->memview; __pyx_v_dst.memview = __pyx_t_3; - /* "View.MemoryView":737 + /* "View.MemoryView":738 * * dst.memview = p_src.memview * dst.data = p_src.data # <<<<<<<<<<<<<< @@ -11724,7 +11627,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_4 = __pyx_v_p_src->data; __pyx_v_dst.data = __pyx_t_4; - /* "View.MemoryView":742 + /* "View.MemoryView":743 * * * cdef __Pyx_memviewslice *p_dst = &dst # <<<<<<<<<<<<<< @@ -11733,7 +11636,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_dst = (&__pyx_v_dst); - /* "View.MemoryView":743 + /* "View.MemoryView":744 * * cdef __Pyx_memviewslice *p_dst = &dst * cdef int *p_suboffset_dim = &suboffset_dim # <<<<<<<<<<<<<< @@ -11742,7 +11645,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_p_suboffset_dim = (&__pyx_v_suboffset_dim); - /* "View.MemoryView":747 + /* "View.MemoryView":748 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -11755,9 +11658,9 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { - __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 747, __pyx_L1_error) + __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_indices); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 748, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 747, __pyx_L1_error) + __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 748, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { @@ -11765,17 +11668,17 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ { Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 748, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } - __pyx_t_8 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_6); + __pyx_t_8 = __Pyx_PyList_GetItemRefFast(__pyx_t_2, __pyx_t_6, __Pyx_ReferenceSharing_OwnStrongReference); ++__pyx_t_6; } else { { Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2); #if !CYTHON_ASSUME_SAFE_SIZE - if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 747, __pyx_L1_error) + if (unlikely((__pyx_temp < 0))) __PYX_ERR(1, 748, __pyx_L1_error) #endif if (__pyx_t_6 >= __pyx_temp) break; } @@ -11786,13 +11689,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ #endif ++__pyx_t_6; } - if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 747, __pyx_L1_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 748, __pyx_L1_error) } else { __pyx_t_8 = __pyx_t_7(__pyx_t_2); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { - if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 747, __pyx_L1_error) + if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(1, 748, __pyx_L1_error) PyErr_Clear(); } break; @@ -11804,7 +11707,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_v_dim = __pyx_t_5; __pyx_t_5 = (__pyx_t_5 + 1); - /* "View.MemoryView":748 + /* "View.MemoryView":749 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -11814,26 +11717,26 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = (PyIndex_Check(__pyx_v_index) != 0); if (__pyx_t_1) { - /* "View.MemoryView":749 + /* "View.MemoryView":750 * for dim, index in enumerate(indices): * if PyIndex_Check(index): * cindex = index # <<<<<<<<<<<<<< * slice_memviewslice( * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], */ - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 749, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 750, __pyx_L1_error) __pyx_v_cindex = __pyx_t_9; - /* "View.MemoryView":750 + /* "View.MemoryView":751 * if PyIndex_Check(index): * cindex = index * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_cindex, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 750, __pyx_L1_error) + __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_cindex, 0, 0, 0, 0, 0, 0); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 751, __pyx_L1_error) - /* "View.MemoryView":748 + /* "View.MemoryView":749 * * for dim, index in enumerate(indices): * if PyIndex_Check(index): # <<<<<<<<<<<<<< @@ -11843,7 +11746,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L6; } - /* "View.MemoryView":756 + /* "View.MemoryView":757 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -11853,7 +11756,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = (__pyx_v_index == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":757 + /* "View.MemoryView":758 * False) * elif index is None: * p_dst.shape[new_ndim] = 1 # <<<<<<<<<<<<<< @@ -11862,7 +11765,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->shape[__pyx_v_new_ndim]) = 1; - /* "View.MemoryView":758 + /* "View.MemoryView":759 * elif index is None: * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 # <<<<<<<<<<<<<< @@ -11871,7 +11774,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->strides[__pyx_v_new_ndim]) = 0; - /* "View.MemoryView":759 + /* "View.MemoryView":760 * p_dst.shape[new_ndim] = 1 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 # <<<<<<<<<<<<<< @@ -11880,7 +11783,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ (__pyx_v_p_dst->suboffsets[__pyx_v_new_ndim]) = -1L; - /* "View.MemoryView":760 + /* "View.MemoryView":761 * p_dst.strides[new_ndim] = 0 * p_dst.suboffsets[new_ndim] = -1 * new_ndim += 1 # <<<<<<<<<<<<<< @@ -11889,7 +11792,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __pyx_v_new_ndim = (__pyx_v_new_ndim + 1); - /* "View.MemoryView":756 + /* "View.MemoryView":757 * 0, 0, 0, # have_{start,stop,step} * False) * elif index is None: # <<<<<<<<<<<<<< @@ -11899,7 +11802,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ goto __pyx_L6; } - /* "View.MemoryView":762 + /* "View.MemoryView":763 * new_ndim += 1 * else: * start = index.start or 0 # <<<<<<<<<<<<<< @@ -11907,13 +11810,13 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ * step = index.step or 0 */ /*else*/ { - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 762, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 762, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 763, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 762, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 763, __pyx_L1_error) __pyx_t_9 = __pyx_t_11; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L7_bool_binop_done; @@ -11922,20 +11825,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L7_bool_binop_done:; __pyx_v_start = __pyx_t_9; - /* "View.MemoryView":763 + /* "View.MemoryView":764 * else: * start = index.start or 0 * stop = index.stop or 0 # <<<<<<<<<<<<<< * step = index.step or 0 * */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 763, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 763, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 764, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 763, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 764, __pyx_L1_error) __pyx_t_9 = __pyx_t_11; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L9_bool_binop_done; @@ -11944,20 +11847,20 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L9_bool_binop_done:; __pyx_v_stop = __pyx_t_9; - /* "View.MemoryView":764 + /* "View.MemoryView":765 * start = index.start or 0 * stop = index.stop or 0 * step = index.step or 0 # <<<<<<<<<<<<<< * * have_start = index.start is not None */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 765, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(1, 765, __pyx_L1_error) if (!__pyx_t_1) { __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { - __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 764, __pyx_L1_error) + __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 765, __pyx_L1_error) __pyx_t_9 = __pyx_t_11; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L11_bool_binop_done; @@ -11966,55 +11869,55 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_L11_bool_binop_done:; __pyx_v_step = __pyx_t_9; - /* "View.MemoryView":766 + /* "View.MemoryView":767 * step = index.step or 0 * * have_start = index.start is not None # <<<<<<<<<<<<<< * have_stop = index.stop is not None * have_step = index.step is not None */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 766, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_start); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_t_8 != Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_have_start = __pyx_t_1; - /* "View.MemoryView":767 + /* "View.MemoryView":768 * * have_start = index.start is not None * have_stop = index.stop is not None # <<<<<<<<<<<<<< * have_step = index.step is not None * */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 767, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_stop); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_t_8 != Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_have_stop = __pyx_t_1; - /* "View.MemoryView":768 + /* "View.MemoryView":769 * have_start = index.start is not None * have_stop = index.stop is not None * have_step = index.step is not None # <<<<<<<<<<<<<< * * slice_memviewslice( */ - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 768, __pyx_L1_error) + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_index, __pyx_mstate_global->__pyx_n_u_step); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = (__pyx_t_8 != Py_None); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_have_step = __pyx_t_1; - /* "View.MemoryView":770 + /* "View.MemoryView":771 * have_step = index.step is not None * * slice_memviewslice( # <<<<<<<<<<<<<< * p_dst, p_src.shape[dim], p_src.strides[dim], p_src.suboffsets[dim], * dim, new_ndim, p_suboffset_dim, */ - __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 770, __pyx_L1_error) + __pyx_t_10 = __pyx_memoryview_slice_memviewslice(__pyx_v_p_dst, (__pyx_v_p_src->shape[__pyx_v_dim]), (__pyx_v_p_src->strides[__pyx_v_dim]), (__pyx_v_p_src->suboffsets[__pyx_v_dim]), __pyx_v_dim, __pyx_v_new_ndim, __pyx_v_p_suboffset_dim, __pyx_v_start, __pyx_v_stop, __pyx_v_step, __pyx_v_have_start, __pyx_v_have_stop, __pyx_v_have_step, 1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(1, 771, __pyx_L1_error) - /* "View.MemoryView":776 + /* "View.MemoryView":777 * have_start, have_stop, have_step, * True) * new_ndim += 1 # <<<<<<<<<<<<<< @@ -12025,7 +11928,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __pyx_L6:; - /* "View.MemoryView":747 + /* "View.MemoryView":748 * cdef bint have_start, have_stop, have_step * * for dim, index in enumerate(indices): # <<<<<<<<<<<<<< @@ -12035,7 +11938,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":778 + /* "View.MemoryView":779 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -12045,7 +11948,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":779 + /* "View.MemoryView":780 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< @@ -12054,39 +11957,39 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ __Pyx_XDECREF((PyObject *)__pyx_r); - /* "View.MemoryView":780 + /* "View.MemoryView":781 * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, # <<<<<<<<<<<<<< * memviewsliceobj.to_dtype_func, * memview.dtype_is_object) */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 780, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 781, __pyx_L1_error) } - /* "View.MemoryView":781 + /* "View.MemoryView":782 * return memoryview_fromslice(dst, new_ndim, * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, # <<<<<<<<<<<<<< * memview.dtype_is_object) * else: */ - if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 781, __pyx_L1_error) } + if (unlikely(!__pyx_v_memviewsliceobj)) { __Pyx_RaiseUnboundLocalError("memviewsliceobj"); __PYX_ERR(1, 782, __pyx_L1_error) } - /* "View.MemoryView":779 + /* "View.MemoryView":780 * * if isinstance(memview, _memoryviewslice): * return memoryview_fromslice(dst, new_ndim, # <<<<<<<<<<<<<< * memviewsliceobj.to_object_func, * memviewsliceobj.to_dtype_func, */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 779, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, __pyx_v_memviewsliceobj->to_object_func, __pyx_v_memviewsliceobj->to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 780, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 779, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 780, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":778 + /* "View.MemoryView":779 * new_ndim += 1 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -12095,7 +11998,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ */ } - /* "View.MemoryView":784 + /* "View.MemoryView":785 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< @@ -12105,30 +12008,30 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ /*else*/ { __Pyx_XDECREF((PyObject *)__pyx_r); - /* "View.MemoryView":785 + /* "View.MemoryView":786 * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 784, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_dst, __pyx_v_new_ndim, NULL, NULL, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 785, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - /* "View.MemoryView":784 + /* "View.MemoryView":785 * memview.dtype_is_object) * else: * return memoryview_fromslice(dst, new_ndim, NULL, NULL, # <<<<<<<<<<<<<< * memview.dtype_is_object) * */ - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 784, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryview_type))))) __PYX_ERR(1, 785, __pyx_L1_error) __pyx_r = ((struct __pyx_memoryview_obj *)__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":710 + /* "View.MemoryView":711 * * * @cname('__pyx_memview_slice') # <<<<<<<<<<<<<< @@ -12150,7 +12053,7 @@ static struct __pyx_memoryview_obj *__pyx_memview_slice(struct __pyx_memoryview_ return __pyx_r; } -/* "View.MemoryView":792 +/* "View.MemoryView":793 * * * @cname('__pyx_memoryview_slice_memviewslice') # <<<<<<<<<<<<<< @@ -12170,7 +12073,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":813 + /* "View.MemoryView":814 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -12180,7 +12083,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = (!__pyx_v_is_slice); if (__pyx_t_1) { - /* "View.MemoryView":815 + /* "View.MemoryView":816 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -12190,7 +12093,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_1 = (__pyx_v_start < 0); if (__pyx_t_1) { - /* "View.MemoryView":816 + /* "View.MemoryView":817 * * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -12199,7 +12102,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":815 + /* "View.MemoryView":816 * if not is_slice: * * if start < 0: # <<<<<<<<<<<<<< @@ -12208,7 +12111,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":817 + /* "View.MemoryView":818 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -12222,16 +12125,16 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (!__pyx_t_1); if (__pyx_t_2) { - /* "View.MemoryView":818 + /* "View.MemoryView":819 * start += shape * if not 0 <= start < shape: * _err_dim(PyExc_IndexError, "Index out of bounds (axis %d)", dim) # <<<<<<<<<<<<<< * else: * */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 818, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_Index_out_of_bounds_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 819, __pyx_L1_error) - /* "View.MemoryView":817 + /* "View.MemoryView":818 * if start < 0: * start += shape * if not 0 <= start < shape: # <<<<<<<<<<<<<< @@ -12240,7 +12143,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":813 + /* "View.MemoryView":814 * cdef bint negative_step * * if not is_slice: # <<<<<<<<<<<<<< @@ -12250,7 +12153,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L3; } - /* "View.MemoryView":821 + /* "View.MemoryView":822 * else: * * if have_step: # <<<<<<<<<<<<<< @@ -12261,7 +12164,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_step != 0); if (__pyx_t_2) { - /* "View.MemoryView":822 + /* "View.MemoryView":823 * * if have_step: * negative_step = step < 0 # <<<<<<<<<<<<<< @@ -12270,7 +12173,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_negative_step = (__pyx_v_step < 0); - /* "View.MemoryView":823 + /* "View.MemoryView":824 * if have_step: * negative_step = step < 0 * if step == 0: # <<<<<<<<<<<<<< @@ -12280,16 +12183,16 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_step == 0); if (__pyx_t_2) { - /* "View.MemoryView":824 + /* "View.MemoryView":825 * negative_step = step < 0 * if step == 0: * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) # <<<<<<<<<<<<<< * else: * negative_step = False */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 824, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Step_may_not_be_zero_axis_d, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 825, __pyx_L1_error) - /* "View.MemoryView":823 + /* "View.MemoryView":824 * if have_step: * negative_step = step < 0 * if step == 0: # <<<<<<<<<<<<<< @@ -12298,7 +12201,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":821 + /* "View.MemoryView":822 * else: * * if have_step: # <<<<<<<<<<<<<< @@ -12308,7 +12211,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L6; } - /* "View.MemoryView":826 + /* "View.MemoryView":827 * _err_dim(PyExc_ValueError, "Step may not be zero (axis %d)", dim) * else: * negative_step = False # <<<<<<<<<<<<<< @@ -12318,7 +12221,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, /*else*/ { __pyx_v_negative_step = 0; - /* "View.MemoryView":827 + /* "View.MemoryView":828 * else: * negative_step = False * step = 1 # <<<<<<<<<<<<<< @@ -12329,7 +12232,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L6:; - /* "View.MemoryView":830 + /* "View.MemoryView":831 * * * if have_start: # <<<<<<<<<<<<<< @@ -12339,7 +12242,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_start != 0); if (__pyx_t_2) { - /* "View.MemoryView":831 + /* "View.MemoryView":832 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -12349,7 +12252,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_start < 0); if (__pyx_t_2) { - /* "View.MemoryView":832 + /* "View.MemoryView":833 * if have_start: * if start < 0: * start += shape # <<<<<<<<<<<<<< @@ -12358,7 +12261,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_start + __pyx_v_shape); - /* "View.MemoryView":833 + /* "View.MemoryView":834 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -12368,7 +12271,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_start < 0); if (__pyx_t_2) { - /* "View.MemoryView":834 + /* "View.MemoryView":835 * start += shape * if start < 0: * start = 0 # <<<<<<<<<<<<<< @@ -12377,7 +12280,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = 0; - /* "View.MemoryView":833 + /* "View.MemoryView":834 * if start < 0: * start += shape * if start < 0: # <<<<<<<<<<<<<< @@ -12386,7 +12289,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":831 + /* "View.MemoryView":832 * * if have_start: * if start < 0: # <<<<<<<<<<<<<< @@ -12396,7 +12299,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L9; } - /* "View.MemoryView":835 + /* "View.MemoryView":836 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -12406,7 +12309,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_start >= __pyx_v_shape); if (__pyx_t_2) { - /* "View.MemoryView":836 + /* "View.MemoryView":837 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -12415,7 +12318,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ if (__pyx_v_negative_step) { - /* "View.MemoryView":837 + /* "View.MemoryView":838 * elif start >= shape: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -12424,7 +12327,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_shape - 1); - /* "View.MemoryView":836 + /* "View.MemoryView":837 * start = 0 * elif start >= shape: * if negative_step: # <<<<<<<<<<<<<< @@ -12434,7 +12337,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L11; } - /* "View.MemoryView":839 + /* "View.MemoryView":840 * start = shape - 1 * else: * start = shape # <<<<<<<<<<<<<< @@ -12446,7 +12349,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L11:; - /* "View.MemoryView":835 + /* "View.MemoryView":836 * if start < 0: * start = 0 * elif start >= shape: # <<<<<<<<<<<<<< @@ -12456,7 +12359,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L9:; - /* "View.MemoryView":830 + /* "View.MemoryView":831 * * * if have_start: # <<<<<<<<<<<<<< @@ -12466,7 +12369,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L8; } - /* "View.MemoryView":841 + /* "View.MemoryView":842 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12476,7 +12379,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, /*else*/ { if (__pyx_v_negative_step) { - /* "View.MemoryView":842 + /* "View.MemoryView":843 * else: * if negative_step: * start = shape - 1 # <<<<<<<<<<<<<< @@ -12485,7 +12388,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_start = (__pyx_v_shape - 1); - /* "View.MemoryView":841 + /* "View.MemoryView":842 * start = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12495,7 +12398,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L12; } - /* "View.MemoryView":844 + /* "View.MemoryView":845 * start = shape - 1 * else: * start = 0 # <<<<<<<<<<<<<< @@ -12509,7 +12412,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L8:; - /* "View.MemoryView":846 + /* "View.MemoryView":847 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -12519,7 +12422,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_have_stop != 0); if (__pyx_t_2) { - /* "View.MemoryView":847 + /* "View.MemoryView":848 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -12529,7 +12432,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_stop < 0); if (__pyx_t_2) { - /* "View.MemoryView":848 + /* "View.MemoryView":849 * if have_stop: * if stop < 0: * stop += shape # <<<<<<<<<<<<<< @@ -12538,7 +12441,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = (__pyx_v_stop + __pyx_v_shape); - /* "View.MemoryView":849 + /* "View.MemoryView":850 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -12548,7 +12451,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_stop < 0); if (__pyx_t_2) { - /* "View.MemoryView":850 + /* "View.MemoryView":851 * stop += shape * if stop < 0: * stop = 0 # <<<<<<<<<<<<<< @@ -12557,7 +12460,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = 0; - /* "View.MemoryView":849 + /* "View.MemoryView":850 * if stop < 0: * stop += shape * if stop < 0: # <<<<<<<<<<<<<< @@ -12566,7 +12469,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":847 + /* "View.MemoryView":848 * * if have_stop: * if stop < 0: # <<<<<<<<<<<<<< @@ -12576,7 +12479,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L14; } - /* "View.MemoryView":851 + /* "View.MemoryView":852 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -12586,7 +12489,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_stop > __pyx_v_shape); if (__pyx_t_2) { - /* "View.MemoryView":852 + /* "View.MemoryView":853 * stop = 0 * elif stop > shape: * stop = shape # <<<<<<<<<<<<<< @@ -12595,7 +12498,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = __pyx_v_shape; - /* "View.MemoryView":851 + /* "View.MemoryView":852 * if stop < 0: * stop = 0 * elif stop > shape: # <<<<<<<<<<<<<< @@ -12605,7 +12508,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L14:; - /* "View.MemoryView":846 + /* "View.MemoryView":847 * start = 0 * * if have_stop: # <<<<<<<<<<<<<< @@ -12615,7 +12518,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L13; } - /* "View.MemoryView":854 + /* "View.MemoryView":855 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12625,7 +12528,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, /*else*/ { if (__pyx_v_negative_step) { - /* "View.MemoryView":855 + /* "View.MemoryView":856 * else: * if negative_step: * stop = -1 # <<<<<<<<<<<<<< @@ -12634,7 +12537,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_stop = -1L; - /* "View.MemoryView":854 + /* "View.MemoryView":855 * stop = shape * else: * if negative_step: # <<<<<<<<<<<<<< @@ -12644,7 +12547,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L16; } - /* "View.MemoryView":857 + /* "View.MemoryView":858 * stop = -1 * else: * stop = shape # <<<<<<<<<<<<<< @@ -12658,7 +12561,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L13:; - /* "View.MemoryView":861 + /* "View.MemoryView":862 * * with cython.cdivision(True): * new_shape = (stop - start) // step # <<<<<<<<<<<<<< @@ -12667,7 +12570,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = ((__pyx_v_stop - __pyx_v_start) / __pyx_v_step); - /* "View.MemoryView":863 + /* "View.MemoryView":864 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -12677,7 +12580,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (((__pyx_v_stop - __pyx_v_start) - (__pyx_v_step * __pyx_v_new_shape)) != 0); if (__pyx_t_2) { - /* "View.MemoryView":864 + /* "View.MemoryView":865 * * if (stop - start) - step * new_shape: * new_shape += 1 # <<<<<<<<<<<<<< @@ -12686,7 +12589,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = (__pyx_v_new_shape + 1); - /* "View.MemoryView":863 + /* "View.MemoryView":864 * new_shape = (stop - start) // step * * if (stop - start) - step * new_shape: # <<<<<<<<<<<<<< @@ -12695,7 +12598,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":866 + /* "View.MemoryView":867 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -12705,7 +12608,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_new_shape < 0); if (__pyx_t_2) { - /* "View.MemoryView":867 + /* "View.MemoryView":868 * * if new_shape < 0: * new_shape = 0 # <<<<<<<<<<<<<< @@ -12714,7 +12617,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_new_shape = 0; - /* "View.MemoryView":866 + /* "View.MemoryView":867 * new_shape += 1 * * if new_shape < 0: # <<<<<<<<<<<<<< @@ -12723,7 +12626,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":870 + /* "View.MemoryView":871 * * * dst.strides[new_ndim] = stride * step # <<<<<<<<<<<<<< @@ -12732,7 +12635,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->strides[__pyx_v_new_ndim]) = (__pyx_v_stride * __pyx_v_step); - /* "View.MemoryView":871 + /* "View.MemoryView":872 * * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape # <<<<<<<<<<<<<< @@ -12741,7 +12644,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ (__pyx_v_dst->shape[__pyx_v_new_ndim]) = __pyx_v_new_shape; - /* "View.MemoryView":872 + /* "View.MemoryView":873 * dst.strides[new_ndim] = stride * step * dst.shape[new_ndim] = new_shape * dst.suboffsets[new_ndim] = suboffset # <<<<<<<<<<<<<< @@ -12752,7 +12655,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L3:; - /* "View.MemoryView":875 + /* "View.MemoryView":876 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -12762,7 +12665,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = ((__pyx_v_suboffset_dim[0]) < 0); if (__pyx_t_2) { - /* "View.MemoryView":876 + /* "View.MemoryView":877 * * if suboffset_dim[0] < 0: * dst.data += start * stride # <<<<<<<<<<<<<< @@ -12771,7 +12674,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_dst->data = (__pyx_v_dst->data + (__pyx_v_start * __pyx_v_stride)); - /* "View.MemoryView":875 + /* "View.MemoryView":876 * * * if suboffset_dim[0] < 0: # <<<<<<<<<<<<<< @@ -12781,7 +12684,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L19; } - /* "View.MemoryView":878 + /* "View.MemoryView":879 * dst.data += start * stride * else: * dst.suboffsets[suboffset_dim[0]] += start * stride # <<<<<<<<<<<<<< @@ -12794,7 +12697,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L19:; - /* "View.MemoryView":880 + /* "View.MemoryView":881 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -12804,7 +12707,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_suboffset >= 0); if (__pyx_t_2) { - /* "View.MemoryView":881 + /* "View.MemoryView":882 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -12814,7 +12717,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (!__pyx_v_is_slice); if (__pyx_t_2) { - /* "View.MemoryView":882 + /* "View.MemoryView":883 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -12824,7 +12727,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_t_2 = (__pyx_v_new_ndim == 0); if (__pyx_t_2) { - /* "View.MemoryView":883 + /* "View.MemoryView":884 * if not is_slice: * if new_ndim == 0: * dst.data = ( dst.data)[0] + suboffset # <<<<<<<<<<<<<< @@ -12833,7 +12736,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ __pyx_v_dst->data = ((((char **)__pyx_v_dst->data)[0]) + __pyx_v_suboffset); - /* "View.MemoryView":882 + /* "View.MemoryView":883 * if suboffset >= 0: * if not is_slice: * if new_ndim == 0: # <<<<<<<<<<<<<< @@ -12843,7 +12746,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L22; } - /* "View.MemoryView":885 + /* "View.MemoryView":886 * dst.data = ( dst.data)[0] + suboffset * else: * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " # <<<<<<<<<<<<<< @@ -12852,18 +12755,18 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ /*else*/ { - /* "View.MemoryView":886 + /* "View.MemoryView":887 * else: * _err_dim(PyExc_IndexError, "All dimensions preceding dimension %d " * "must be indexed and not sliced", dim) # <<<<<<<<<<<<<< * else: * suboffset_dim[0] = new_ndim */ - __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 885, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_dim(PyExc_IndexError, __pyx_mstate_global->__pyx_kp_u_All_dimensions_preceding_dimensi, __pyx_v_dim); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 886, __pyx_L1_error) } __pyx_L22:; - /* "View.MemoryView":881 + /* "View.MemoryView":882 * * if suboffset >= 0: * if not is_slice: # <<<<<<<<<<<<<< @@ -12873,7 +12776,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, goto __pyx_L21; } - /* "View.MemoryView":888 + /* "View.MemoryView":889 * "must be indexed and not sliced", dim) * else: * suboffset_dim[0] = new_ndim # <<<<<<<<<<<<<< @@ -12885,7 +12788,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, } __pyx_L21:; - /* "View.MemoryView":880 + /* "View.MemoryView":881 * dst.suboffsets[suboffset_dim[0]] += start * stride * * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -12894,7 +12797,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, */ } - /* "View.MemoryView":890 + /* "View.MemoryView":891 * suboffset_dim[0] = new_ndim * * return 0 # <<<<<<<<<<<<<< @@ -12904,7 +12807,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":792 + /* "View.MemoryView":793 * * * @cname('__pyx_memoryview_slice_memviewslice') # <<<<<<<<<<<<<< @@ -12922,7 +12825,7 @@ static int __pyx_memoryview_slice_memviewslice(__Pyx_memviewslice *__pyx_v_dst, return __pyx_r; } -/* "View.MemoryView":895 +/* "View.MemoryView":896 * * * @cname('__pyx_pybuffer_index') # <<<<<<<<<<<<<< @@ -12948,7 +12851,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pybuffer_index", 0); - /* "View.MemoryView":898 + /* "View.MemoryView":899 * cdef char *pybuffer_index(Py_buffer *view, char *bufp, Py_ssize_t index, * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 # <<<<<<<<<<<<<< @@ -12957,7 +12860,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_suboffset = -1L; - /* "View.MemoryView":899 + /* "View.MemoryView":900 * Py_ssize_t dim) except NULL: * cdef Py_ssize_t shape, stride, suboffset = -1 * cdef Py_ssize_t itemsize = view.itemsize # <<<<<<<<<<<<<< @@ -12967,7 +12870,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_1 = __pyx_v_view->itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":902 + /* "View.MemoryView":903 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -12977,7 +12880,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_view->ndim == 0); if (__pyx_t_2) { - /* "View.MemoryView":903 + /* "View.MemoryView":904 * * if view.ndim == 0: * shape = view.len // itemsize # <<<<<<<<<<<<<< @@ -12986,15 +12889,15 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ if (unlikely(__pyx_v_itemsize == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); - __PYX_ERR(1, 903, __pyx_L1_error) + __PYX_ERR(1, 904, __pyx_L1_error) } else if (sizeof(Py_ssize_t) == sizeof(long) && (!(((Py_ssize_t)-1) > 0)) && unlikely(__pyx_v_itemsize == (Py_ssize_t)-1) && unlikely(__Pyx_UNARY_NEG_WOULD_OVERFLOW(__pyx_v_view->len))) { PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); - __PYX_ERR(1, 903, __pyx_L1_error) + __PYX_ERR(1, 904, __pyx_L1_error) } __pyx_v_shape = __Pyx_div_Py_ssize_t(__pyx_v_view->len, __pyx_v_itemsize, 0); - /* "View.MemoryView":904 + /* "View.MemoryView":905 * if view.ndim == 0: * shape = view.len // itemsize * stride = itemsize # <<<<<<<<<<<<<< @@ -13003,7 +12906,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = __pyx_v_itemsize; - /* "View.MemoryView":902 + /* "View.MemoryView":903 * cdef char *resultp * * if view.ndim == 0: # <<<<<<<<<<<<<< @@ -13013,7 +12916,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P goto __pyx_L3; } - /* "View.MemoryView":906 + /* "View.MemoryView":907 * stride = itemsize * else: * shape = view.shape[dim] # <<<<<<<<<<<<<< @@ -13023,7 +12926,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P /*else*/ { __pyx_v_shape = (__pyx_v_view->shape[__pyx_v_dim]); - /* "View.MemoryView":907 + /* "View.MemoryView":908 * else: * shape = view.shape[dim] * stride = view.strides[dim] # <<<<<<<<<<<<<< @@ -13032,7 +12935,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_stride = (__pyx_v_view->strides[__pyx_v_dim]); - /* "View.MemoryView":908 + /* "View.MemoryView":909 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -13042,7 +12945,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_view->suboffsets != NULL); if (__pyx_t_2) { - /* "View.MemoryView":909 + /* "View.MemoryView":910 * stride = view.strides[dim] * if view.suboffsets != NULL: * suboffset = view.suboffsets[dim] # <<<<<<<<<<<<<< @@ -13051,7 +12954,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_suboffset = (__pyx_v_view->suboffsets[__pyx_v_dim]); - /* "View.MemoryView":908 + /* "View.MemoryView":909 * shape = view.shape[dim] * stride = view.strides[dim] * if view.suboffsets != NULL: # <<<<<<<<<<<<<< @@ -13062,7 +12965,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P } __pyx_L3:; - /* "View.MemoryView":911 + /* "View.MemoryView":912 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -13072,7 +12975,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_index < 0); if (__pyx_t_2) { - /* "View.MemoryView":912 + /* "View.MemoryView":913 * * if index < 0: * index += view.shape[dim] # <<<<<<<<<<<<<< @@ -13081,7 +12984,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_index = (__pyx_v_index + (__pyx_v_view->shape[__pyx_v_dim])); - /* "View.MemoryView":913 + /* "View.MemoryView":914 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -13091,27 +12994,27 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_index < 0); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":914 + /* "View.MemoryView":915 * index += view.shape[dim] * if index < 0: * raise IndexError, f"Out of bounds on buffer access (axis {dim})" # <<<<<<<<<<<<<< * * if index >= shape: */ - __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 914, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a; __pyx_t_4[1] = __pyx_t_3; __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, 37 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127); - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 914, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 915, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_5, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_IndexError))), __pyx_t_5, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(1, 914, __pyx_L1_error) + __PYX_ERR(1, 915, __pyx_L1_error) - /* "View.MemoryView":913 + /* "View.MemoryView":914 * if index < 0: * index += view.shape[dim] * if index < 0: # <<<<<<<<<<<<<< @@ -13120,7 +13023,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":911 + /* "View.MemoryView":912 * suboffset = view.suboffsets[dim] * * if index < 0: # <<<<<<<<<<<<<< @@ -13129,7 +13032,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":916 + /* "View.MemoryView":917 * raise IndexError, f"Out of bounds on buffer access (axis {dim})" * * if index >= shape: # <<<<<<<<<<<<<< @@ -13139,27 +13042,27 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_index >= __pyx_v_shape); if (unlikely(__pyx_t_2)) { - /* "View.MemoryView":917 + /* "View.MemoryView":918 * * if index >= shape: * raise IndexError, f"Out of bounds on buffer access (axis {dim})" # <<<<<<<<<<<<<< * * resultp = bufp + index * stride */ - __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 917, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_dim, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 918, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_Out_of_bounds_on_buffer_access_a; __pyx_t_4[1] = __pyx_t_5; __pyx_t_4[2] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, 37 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1, 127); - if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 918, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_Raise(__pyx_builtin_IndexError, __pyx_t_3, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_IndexError))), __pyx_t_3, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __PYX_ERR(1, 917, __pyx_L1_error) + __PYX_ERR(1, 918, __pyx_L1_error) - /* "View.MemoryView":916 + /* "View.MemoryView":917 * raise IndexError, f"Out of bounds on buffer access (axis {dim})" * * if index >= shape: # <<<<<<<<<<<<<< @@ -13168,7 +13071,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":919 + /* "View.MemoryView":920 * raise IndexError, f"Out of bounds on buffer access (axis {dim})" * * resultp = bufp + index * stride # <<<<<<<<<<<<<< @@ -13177,7 +13080,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = (__pyx_v_bufp + (__pyx_v_index * __pyx_v_stride)); - /* "View.MemoryView":920 + /* "View.MemoryView":921 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -13187,7 +13090,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_t_2 = (__pyx_v_suboffset >= 0); if (__pyx_t_2) { - /* "View.MemoryView":921 + /* "View.MemoryView":922 * resultp = bufp + index * stride * if suboffset >= 0: * resultp = ( resultp)[0] + suboffset # <<<<<<<<<<<<<< @@ -13196,7 +13099,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ __pyx_v_resultp = ((((char **)__pyx_v_resultp)[0]) + __pyx_v_suboffset); - /* "View.MemoryView":920 + /* "View.MemoryView":921 * * resultp = bufp + index * stride * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -13205,7 +13108,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P */ } - /* "View.MemoryView":923 + /* "View.MemoryView":924 * resultp = ( resultp)[0] + suboffset * * return resultp # <<<<<<<<<<<<<< @@ -13215,7 +13118,7 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __pyx_r = __pyx_v_resultp; goto __pyx_L0; - /* "View.MemoryView":895 + /* "View.MemoryView":896 * * * @cname('__pyx_pybuffer_index') # <<<<<<<<<<<<<< @@ -13228,13 +13131,13 @@ static char *__pyx_pybuffer_index(Py_buffer *__pyx_v_view, char *__pyx_v_bufp, P __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("View.MemoryView.pybuffer_index", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; + __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":928 +/* "View.MemoryView":929 * * * @cname('__pyx_memslice_transpose') # <<<<<<<<<<<<<< @@ -13263,7 +13166,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":930 + /* "View.MemoryView":931 * @cname('__pyx_memslice_transpose') * cdef int transpose_memslice(__Pyx_memviewslice *memslice) except -1 nogil: * cdef int ndim = memslice.memview.view.ndim # <<<<<<<<<<<<<< @@ -13273,7 +13176,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_1 = __pyx_v_memslice->memview->view.ndim; __pyx_v_ndim = __pyx_t_1; - /* "View.MemoryView":932 + /* "View.MemoryView":933 * cdef int ndim = memslice.memview.view.ndim * * cdef Py_ssize_t *shape = memslice.shape # <<<<<<<<<<<<<< @@ -13283,7 +13186,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->shape; __pyx_v_shape = __pyx_t_2; - /* "View.MemoryView":933 + /* "View.MemoryView":934 * * cdef Py_ssize_t *shape = memslice.shape * cdef Py_ssize_t *strides = memslice.strides # <<<<<<<<<<<<<< @@ -13293,7 +13196,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_t_2 = __pyx_v_memslice->strides; __pyx_v_strides = __pyx_t_2; - /* "View.MemoryView":937 + /* "View.MemoryView":938 * * cdef int i, j * for i in range(ndim // 2): # <<<<<<<<<<<<<< @@ -13305,7 +13208,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { for (__pyx_t_1 = 0; __pyx_t_1 < __pyx_t_4; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":938 + /* "View.MemoryView":939 * cdef int i, j * for i in range(ndim // 2): * j = ndim - 1 - i # <<<<<<<<<<<<<< @@ -13314,7 +13217,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { */ __pyx_v_j = ((__pyx_v_ndim - 1) - __pyx_v_i); - /* "View.MemoryView":939 + /* "View.MemoryView":940 * for i in range(ndim // 2): * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] # <<<<<<<<<<<<<< @@ -13326,7 +13229,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_strides[__pyx_v_i]) = __pyx_t_5; (__pyx_v_strides[__pyx_v_j]) = __pyx_t_6; - /* "View.MemoryView":940 + /* "View.MemoryView":941 * j = ndim - 1 - i * strides[i], strides[j] = strides[j], strides[i] * shape[i], shape[j] = shape[j], shape[i] # <<<<<<<<<<<<<< @@ -13338,7 +13241,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { (__pyx_v_shape[__pyx_v_i]) = __pyx_t_6; (__pyx_v_shape[__pyx_v_j]) = __pyx_t_5; - /* "View.MemoryView":942 + /* "View.MemoryView":943 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -13356,16 +13259,16 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_L6_bool_binop_done:; if (__pyx_t_7) { - /* "View.MemoryView":943 + /* "View.MemoryView":944 * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") # <<<<<<<<<<<<<< * * return 0 */ - __pyx_t_9 = __pyx_memoryview_err(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 943, __pyx_L1_error) + __pyx_t_9 = __pyx_memoryview_err(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Cannot_transpose_memoryview_with); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(1, 944, __pyx_L1_error) - /* "View.MemoryView":942 + /* "View.MemoryView":943 * shape[i], shape[j] = shape[j], shape[i] * * if memslice.suboffsets[i] >= 0 or memslice.suboffsets[j] >= 0: # <<<<<<<<<<<<<< @@ -13375,7 +13278,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { } } - /* "View.MemoryView":945 + /* "View.MemoryView":946 * _err(PyExc_ValueError, "Cannot transpose memoryview with indirect dimensions") * * return 0 # <<<<<<<<<<<<<< @@ -13385,7 +13288,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":928 + /* "View.MemoryView":929 * * * @cname('__pyx_memslice_transpose') # <<<<<<<<<<<<<< @@ -13403,7 +13306,7 @@ static int __pyx_memslice_transpose(__Pyx_memviewslice *__pyx_v_memslice) { return __pyx_r; } -/* "View.MemoryView":963 +/* "View.MemoryView":964 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -13426,7 +13329,7 @@ static void __pyx_memoryviewslice___dealloc__(PyObject *__pyx_v_self) { static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewslice___dealloc__(struct __pyx_memoryviewslice_obj *__pyx_v_self) { - /* "View.MemoryView":964 + /* "View.MemoryView":965 * * def __dealloc__(self): * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) # <<<<<<<<<<<<<< @@ -13435,7 +13338,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl */ __PYX_XCLEAR_MEMVIEW((&__pyx_v_self->from_slice), 1); - /* "View.MemoryView":963 + /* "View.MemoryView":964 * cdef int (*to_dtype_func)(char *, object) except 0 * * def __dealloc__(self): # <<<<<<<<<<<<<< @@ -13446,7 +13349,7 @@ static void __pyx_memoryviewslice___pyx_pf_15View_dot_MemoryView_16_memoryviewsl /* function exit code */ } -/* "View.MemoryView":966 +/* "View.MemoryView":967 * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -13464,7 +13367,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor int __pyx_clineno = 0; __Pyx_RefNannySetupContext("convert_item_to_object", 0); - /* "View.MemoryView":967 + /* "View.MemoryView":968 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -13474,7 +13377,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor __pyx_t_1 = (__pyx_v_self->to_object_func != NULL); if (__pyx_t_1) { - /* "View.MemoryView":968 + /* "View.MemoryView":969 * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: * return self.to_object_func(itemp) # <<<<<<<<<<<<<< @@ -13482,13 +13385,13 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor * return memoryview.convert_item_to_object(self, itemp) */ __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 968, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_object_func(__pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 969, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; - /* "View.MemoryView":967 + /* "View.MemoryView":968 * * cdef convert_item_to_object(self, char *itemp): * if self.to_object_func != NULL: # <<<<<<<<<<<<<< @@ -13497,7 +13400,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ } - /* "View.MemoryView":970 + /* "View.MemoryView":971 * return self.to_object_func(itemp) * else: * return memoryview.convert_item_to_object(self, itemp) # <<<<<<<<<<<<<< @@ -13506,14 +13409,14 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor */ /*else*/ { __Pyx_XDECREF(__pyx_r); - __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 970, __pyx_L1_error) + __pyx_t_2 = __pyx_memoryview_convert_item_to_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; } - /* "View.MemoryView":966 + /* "View.MemoryView":967 * __PYX_XCLEAR_MEMVIEW(&self.from_slice, 1) * * cdef convert_item_to_object(self, char *itemp): # <<<<<<<<<<<<<< @@ -13532,7 +13435,7 @@ static PyObject *__pyx_memoryviewslice_convert_item_to_object(struct __pyx_memor return __pyx_r; } -/* "View.MemoryView":972 +/* "View.MemoryView":973 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -13551,7 +13454,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo int __pyx_clineno = 0; __Pyx_RefNannySetupContext("assign_item_from_object", 0); - /* "View.MemoryView":973 + /* "View.MemoryView":974 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -13561,16 +13464,16 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo __pyx_t_1 = (__pyx_v_self->to_dtype_func != NULL); if (__pyx_t_1) { - /* "View.MemoryView":974 + /* "View.MemoryView":975 * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: * self.to_dtype_func(itemp, value) # <<<<<<<<<<<<<< * else: * memoryview.assign_item_from_object(self, itemp, value) */ - __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 974, __pyx_L1_error) + __pyx_t_2 = __pyx_v_self->to_dtype_func(__pyx_v_itemp, __pyx_v_value); if (unlikely(__pyx_t_2 == ((int)0))) __PYX_ERR(1, 975, __pyx_L1_error) - /* "View.MemoryView":973 + /* "View.MemoryView":974 * * cdef assign_item_from_object(self, char *itemp, object value): * if self.to_dtype_func != NULL: # <<<<<<<<<<<<<< @@ -13580,7 +13483,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo goto __pyx_L3; } - /* "View.MemoryView":976 + /* "View.MemoryView":977 * self.to_dtype_func(itemp, value) * else: * memoryview.assign_item_from_object(self, itemp, value) # <<<<<<<<<<<<<< @@ -13588,13 +13491,13 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo * cdef _get_base(self): */ /*else*/ { - __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 976, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_assign_item_from_object(((struct __pyx_memoryview_obj *)__pyx_v_self), __pyx_v_itemp, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; - /* "View.MemoryView":972 + /* "View.MemoryView":973 * return memoryview.convert_item_to_object(self, itemp) * * cdef assign_item_from_object(self, char *itemp, object value): # <<<<<<<<<<<<<< @@ -13615,7 +13518,7 @@ static PyObject *__pyx_memoryviewslice_assign_item_from_object(struct __pyx_memo return __pyx_r; } -/* "View.MemoryView":978 +/* "View.MemoryView":979 * memoryview.assign_item_from_object(self, itemp, value) * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -13628,7 +13531,7 @@ static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_ob __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("_get_base", 0); - /* "View.MemoryView":979 + /* "View.MemoryView":980 * * cdef _get_base(self): * return self.from_object # <<<<<<<<<<<<<< @@ -13640,7 +13543,7 @@ static PyObject *__pyx_memoryviewslice__get_base(struct __pyx_memoryviewslice_ob __pyx_r = __pyx_v_self->from_object; goto __pyx_L0; - /* "View.MemoryView":978 + /* "View.MemoryView":979 * memoryview.assign_item_from_object(self, itemp, value) * * cdef _get_base(self): # <<<<<<<<<<<<<< @@ -13716,7 +13619,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice___reduce_cython__(CYTHON_UNUSED * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 2, __pyx_L1_error) /* "(tree fragment)":1 @@ -13790,7 +13693,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < (0)) __PYX_ERR(1, 3, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 1; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) } } @@ -13838,7 +13741,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS * def __setstate_cython__(self, __pyx_state): * raise TypeError, "no default __reduce__ due to non-trivial __cinit__" # <<<<<<<<<<<<<< */ - __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_TypeError))), __pyx_mstate_global->__pyx_kp_u_no_default___reduce___due_to_non, 0, 0); __PYX_ERR(1, 4, __pyx_L1_error) /* "(tree fragment)":3 @@ -13857,7 +13760,7 @@ static PyObject *__pyx_pf___pyx_memoryviewslice_2__setstate_cython__(CYTHON_UNUS return __pyx_r; } -/* "View.MemoryView":998 +/* "View.MemoryView":999 * pass # ignore failure, it's a minor issue * * @cname('__pyx_memoryview_fromslice') # <<<<<<<<<<<<<< @@ -13885,7 +13788,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_fromslice", 0); - /* "View.MemoryView":1007 + /* "View.MemoryView":1008 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< @@ -13895,7 +13798,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = (((PyObject *)__pyx_v_memviewslice.memview) == Py_None); if (__pyx_t_1) { - /* "View.MemoryView":1008 + /* "View.MemoryView":1009 * * if memviewslice.memview == Py_None: * return None # <<<<<<<<<<<<<< @@ -13906,7 +13809,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "View.MemoryView":1007 + /* "View.MemoryView":1008 * cdef _memoryviewslice result * * if memviewslice.memview == Py_None: # <<<<<<<<<<<<<< @@ -13915,33 +13818,33 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ } - /* "View.MemoryView":1013 + /* "View.MemoryView":1014 * * * result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object) # <<<<<<<<<<<<<< * * result.from_slice = memviewslice */ - __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_dtype_is_object); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1013, __pyx_L1_error) + __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(Py_None); __Pyx_GIVEREF(Py_None); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None) != (0)) __PYX_ERR(1, 1013, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 0, Py_None) != (0)) __PYX_ERR(1, 1014, __pyx_L1_error); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_0); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(1, 1013, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_mstate_global->__pyx_int_0) != (0)) __PYX_ERR(1, 1014, __pyx_L1_error); __Pyx_GIVEREF(__pyx_t_2); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2) != (0)) __PYX_ERR(1, 1013, __pyx_L1_error); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2) != (0)) __PYX_ERR(1, 1014, __pyx_L1_error); __pyx_t_2 = 0; - __pyx_t_2 = ((PyObject *)__pyx_tp_new__memoryviewslice(((PyTypeObject *)__pyx_mstate_global->__pyx_memoryviewslice_type), __pyx_t_3, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1013, __pyx_L1_error) + __pyx_t_2 = ((PyObject *)__pyx_tp_new__memoryviewslice(((PyTypeObject *)__pyx_mstate_global->__pyx_memoryviewslice_type), __pyx_t_3, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1014, __pyx_L1_error) __Pyx_GOTREF((PyObject *)__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1015 + /* "View.MemoryView":1016 * result = _memoryviewslice.__new__(_memoryviewslice, None, 0, dtype_is_object) * * result.from_slice = memviewslice # <<<<<<<<<<<<<< @@ -13950,7 +13853,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->from_slice = __pyx_v_memviewslice; - /* "View.MemoryView":1016 + /* "View.MemoryView":1017 * * result.from_slice = memviewslice * __PYX_INC_MEMVIEW(&memviewslice, 1) # <<<<<<<<<<<<<< @@ -13959,14 +13862,14 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __PYX_INC_MEMVIEW((&__pyx_v_memviewslice), 1); - /* "View.MemoryView":1018 + /* "View.MemoryView":1019 * __PYX_INC_MEMVIEW(&memviewslice, 1) * * result.from_object = ( memviewslice.memview)._get_base() # <<<<<<<<<<<<<< * result.typeinfo = memviewslice.memview.typeinfo * */ - __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->__pyx_vtab)->_get_base(((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1018, __pyx_L1_error) + __pyx_t_2 = ((struct __pyx_vtabstruct_memoryview *)((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->__pyx_vtab)->_get_base(((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1019, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_result->from_object); @@ -13974,7 +13877,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_v_result->from_object = __pyx_t_2; __pyx_t_2 = 0; - /* "View.MemoryView":1019 + /* "View.MemoryView":1020 * * result.from_object = ( memviewslice.memview)._get_base() * result.typeinfo = memviewslice.memview.typeinfo # <<<<<<<<<<<<<< @@ -13984,7 +13887,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_4 = __pyx_v_memviewslice.memview->typeinfo; __pyx_v_result->__pyx_base.typeinfo = __pyx_t_4; - /* "View.MemoryView":1021 + /* "View.MemoryView":1022 * result.typeinfo = memviewslice.memview.typeinfo * * result.view = memviewslice.memview.view # <<<<<<<<<<<<<< @@ -13994,7 +13897,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_5 = __pyx_v_memviewslice.memview->view; __pyx_v_result->__pyx_base.view = __pyx_t_5; - /* "View.MemoryView":1022 + /* "View.MemoryView":1023 * * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data # <<<<<<<<<<<<<< @@ -14003,7 +13906,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.buf = ((void *)__pyx_v_memviewslice.data); - /* "View.MemoryView":1023 + /* "View.MemoryView":1024 * result.view = memviewslice.memview.view * result.view.buf = memviewslice.data * result.view.ndim = ndim # <<<<<<<<<<<<<< @@ -14012,7 +13915,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.ndim = __pyx_v_ndim; - /* "View.MemoryView":1024 + /* "View.MemoryView":1025 * result.view.buf = memviewslice.data * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None # <<<<<<<<<<<<<< @@ -14021,7 +13924,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ ((Py_buffer *)(&__pyx_v_result->__pyx_base.view))->obj = Py_None; - /* "View.MemoryView":1025 + /* "View.MemoryView":1026 * result.view.ndim = ndim * (<__pyx_buffer *> &result.view).obj = Py_None * Py_INCREF(Py_None) # <<<<<<<<<<<<<< @@ -14030,7 +13933,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ Py_INCREF(Py_None); - /* "View.MemoryView":1027 + /* "View.MemoryView":1028 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< @@ -14040,7 +13943,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = ((((struct __pyx_memoryview_obj *)__pyx_v_memviewslice.memview)->flags & PyBUF_WRITABLE) != 0); if (__pyx_t_1) { - /* "View.MemoryView":1028 + /* "View.MemoryView":1029 * * if (memviewslice.memview).flags & PyBUF_WRITABLE: * result.flags = PyBUF_RECORDS # <<<<<<<<<<<<<< @@ -14049,7 +13952,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.flags = PyBUF_RECORDS; - /* "View.MemoryView":1027 + /* "View.MemoryView":1028 * Py_INCREF(Py_None) * * if (memviewslice.memview).flags & PyBUF_WRITABLE: # <<<<<<<<<<<<<< @@ -14059,7 +13962,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl goto __pyx_L4; } - /* "View.MemoryView":1030 + /* "View.MemoryView":1031 * result.flags = PyBUF_RECORDS * else: * result.flags = PyBUF_RECORDS_RO # <<<<<<<<<<<<<< @@ -14071,7 +13974,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl } __pyx_L4:; - /* "View.MemoryView":1032 + /* "View.MemoryView":1033 * result.flags = PyBUF_RECORDS_RO * * result.view.shape = result.from_slice.shape # <<<<<<<<<<<<<< @@ -14080,7 +13983,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.shape = ((Py_ssize_t *)__pyx_v_result->from_slice.shape); - /* "View.MemoryView":1033 + /* "View.MemoryView":1034 * * result.view.shape = result.from_slice.shape * result.view.strides = result.from_slice.strides # <<<<<<<<<<<<<< @@ -14089,7 +13992,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.strides = ((Py_ssize_t *)__pyx_v_result->from_slice.strides); - /* "View.MemoryView":1036 + /* "View.MemoryView":1037 * * * result.view.suboffsets = NULL # <<<<<<<<<<<<<< @@ -14098,7 +14001,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.suboffsets = NULL; - /* "View.MemoryView":1037 + /* "View.MemoryView":1038 * * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: # <<<<<<<<<<<<<< @@ -14110,7 +14013,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_6 = __pyx_t_8; __pyx_v_suboffset = (__pyx_t_6[0]); - /* "View.MemoryView":1038 + /* "View.MemoryView":1039 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -14120,7 +14023,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_1 = (__pyx_v_suboffset >= 0); if (__pyx_t_1) { - /* "View.MemoryView":1039 + /* "View.MemoryView":1040 * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets # <<<<<<<<<<<<<< @@ -14129,7 +14032,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->__pyx_base.view.suboffsets = ((Py_ssize_t *)__pyx_v_result->from_slice.suboffsets); - /* "View.MemoryView":1040 + /* "View.MemoryView":1041 * if suboffset >= 0: * result.view.suboffsets = result.from_slice.suboffsets * break # <<<<<<<<<<<<<< @@ -14138,7 +14041,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ goto __pyx_L6_break; - /* "View.MemoryView":1038 + /* "View.MemoryView":1039 * result.view.suboffsets = NULL * for suboffset in result.from_slice.suboffsets[:ndim]: * if suboffset >= 0: # <<<<<<<<<<<<<< @@ -14149,7 +14052,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl } __pyx_L6_break:; - /* "View.MemoryView":1042 + /* "View.MemoryView":1043 * break * * result.view.len = result.view.itemsize # <<<<<<<<<<<<<< @@ -14159,7 +14062,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_9 = __pyx_v_result->__pyx_base.view.itemsize; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; - /* "View.MemoryView":1043 + /* "View.MemoryView":1044 * * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: # <<<<<<<<<<<<<< @@ -14169,29 +14072,29 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_t_7 = (__pyx_v_result->__pyx_base.view.shape + __pyx_v_ndim); for (__pyx_t_8 = __pyx_v_result->__pyx_base.view.shape; __pyx_t_8 < __pyx_t_7; __pyx_t_8++) { __pyx_t_6 = __pyx_t_8; - __pyx_t_2 = PyLong_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1043, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t((__pyx_t_6[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_length, __pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1044 + /* "View.MemoryView":1045 * result.view.len = result.view.itemsize * for length in result.view.shape[:ndim]: * result.view.len *= length # <<<<<<<<<<<<<< * * result.to_object_func = to_object_func */ - __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error) + __pyx_t_2 = PyLong_FromSsize_t(__pyx_v_result->__pyx_base.view.len); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1044, __pyx_L1_error) + __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_v_length); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1044, __pyx_L1_error) + __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1045, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_result->__pyx_base.view.len = __pyx_t_9; } - /* "View.MemoryView":1046 + /* "View.MemoryView":1047 * result.view.len *= length * * result.to_object_func = to_object_func # <<<<<<<<<<<<<< @@ -14200,7 +14103,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_object_func = __pyx_v_to_object_func; - /* "View.MemoryView":1047 + /* "View.MemoryView":1048 * * result.to_object_func = to_object_func * result.to_dtype_func = to_dtype_func # <<<<<<<<<<<<<< @@ -14209,7 +14112,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl */ __pyx_v_result->to_dtype_func = __pyx_v_to_dtype_func; - /* "View.MemoryView":1049 + /* "View.MemoryView":1050 * result.to_dtype_func = to_dtype_func * * return result # <<<<<<<<<<<<<< @@ -14221,7 +14124,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl __pyx_r = ((PyObject *)__pyx_v_result); goto __pyx_L0; - /* "View.MemoryView":998 + /* "View.MemoryView":999 * pass # ignore failure, it's a minor issue * * @cname('__pyx_memoryview_fromslice') # <<<<<<<<<<<<<< @@ -14243,7 +14146,7 @@ static PyObject *__pyx_memoryview_fromslice(__Pyx_memviewslice __pyx_v_memviewsl return __pyx_r; } -/* "View.MemoryView":1051 +/* "View.MemoryView":1052 * return result * * @cname('__pyx_memoryview_get_slice_from_memoryview') # <<<<<<<<<<<<<< @@ -14262,7 +14165,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p int __pyx_clineno = 0; __Pyx_RefNannySetupContext("get_slice_from_memview", 0); - /* "View.MemoryView":1055 + /* "View.MemoryView":1056 * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14272,7 +14175,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":1056 + /* "View.MemoryView":1057 * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): * obj = memview # <<<<<<<<<<<<<< @@ -14281,11 +14184,11 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p */ __pyx_t_2 = ((PyObject *)__pyx_v_memview); __Pyx_INCREF(__pyx_t_2); - if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 1056, __pyx_L1_error) + if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_mstate_global->__pyx_memoryviewslice_type))))) __PYX_ERR(1, 1057, __pyx_L1_error) __pyx_v_obj = ((struct __pyx_memoryviewslice_obj *)__pyx_t_2); __pyx_t_2 = 0; - /* "View.MemoryView":1057 + /* "View.MemoryView":1058 * if isinstance(memview, _memoryviewslice): * obj = memview * return &obj.from_slice # <<<<<<<<<<<<<< @@ -14295,7 +14198,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_r = (&__pyx_v_obj->from_slice); goto __pyx_L0; - /* "View.MemoryView":1055 + /* "View.MemoryView":1056 * __Pyx_memviewslice *mslice) except NULL: * cdef _memoryviewslice obj * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14304,7 +14207,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p */ } - /* "View.MemoryView":1059 + /* "View.MemoryView":1060 * return &obj.from_slice * else: * slice_copy(memview, mslice) # <<<<<<<<<<<<<< @@ -14314,7 +14217,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p /*else*/ { __pyx_memoryview_slice_copy(__pyx_v_memview, __pyx_v_mslice); - /* "View.MemoryView":1060 + /* "View.MemoryView":1061 * else: * slice_copy(memview, mslice) * return mslice # <<<<<<<<<<<<<< @@ -14325,7 +14228,7 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p goto __pyx_L0; } - /* "View.MemoryView":1051 + /* "View.MemoryView":1052 * return result * * @cname('__pyx_memoryview_get_slice_from_memoryview') # <<<<<<<<<<<<<< @@ -14337,14 +14240,14 @@ static __Pyx_memviewslice *__pyx_memoryview_get_slice_from_memoryview(struct __p __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("View.MemoryView.get_slice_from_memview", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; + __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF((PyObject *)__pyx_v_obj); __Pyx_RefNannyFinishContext(); return __pyx_r; } -/* "View.MemoryView":1062 +/* "View.MemoryView":1063 * return mslice * * @cname('__pyx_memoryview_slice_copy') # <<<<<<<<<<<<<< @@ -14364,7 +14267,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem Py_ssize_t __pyx_t_5; int __pyx_t_6; - /* "View.MemoryView":1067 + /* "View.MemoryView":1068 * cdef (Py_ssize_t*) shape, strides, suboffsets * * shape = memview.view.shape # <<<<<<<<<<<<<< @@ -14374,7 +14277,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.shape; __pyx_v_shape = __pyx_t_1; - /* "View.MemoryView":1068 + /* "View.MemoryView":1069 * * shape = memview.view.shape * strides = memview.view.strides # <<<<<<<<<<<<<< @@ -14384,7 +14287,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.strides; __pyx_v_strides = __pyx_t_1; - /* "View.MemoryView":1069 + /* "View.MemoryView":1070 * shape = memview.view.shape * strides = memview.view.strides * suboffsets = memview.view.suboffsets # <<<<<<<<<<<<<< @@ -14394,7 +14297,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem __pyx_t_1 = __pyx_v_memview->view.suboffsets; __pyx_v_suboffsets = __pyx_t_1; - /* "View.MemoryView":1071 + /* "View.MemoryView":1072 * suboffsets = memview.view.suboffsets * * dst.memview = <__pyx_memoryview *> memview # <<<<<<<<<<<<<< @@ -14403,7 +14306,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->memview = ((struct __pyx_memoryview_obj *)__pyx_v_memview); - /* "View.MemoryView":1072 + /* "View.MemoryView":1073 * * dst.memview = <__pyx_memoryview *> memview * dst.data = memview.view.buf # <<<<<<<<<<<<<< @@ -14412,7 +14315,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ __pyx_v_dst->data = ((char *)__pyx_v_memview->view.buf); - /* "View.MemoryView":1074 + /* "View.MemoryView":1075 * dst.data = memview.view.buf * * for dim in range(memview.view.ndim): # <<<<<<<<<<<<<< @@ -14424,7 +14327,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_dim = __pyx_t_4; - /* "View.MemoryView":1075 + /* "View.MemoryView":1076 * * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] # <<<<<<<<<<<<<< @@ -14433,7 +14336,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ (__pyx_v_dst->shape[__pyx_v_dim]) = (__pyx_v_shape[__pyx_v_dim]); - /* "View.MemoryView":1076 + /* "View.MemoryView":1077 * for dim in range(memview.view.ndim): * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] # <<<<<<<<<<<<<< @@ -14442,7 +14345,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem */ (__pyx_v_dst->strides[__pyx_v_dim]) = (__pyx_v_strides[__pyx_v_dim]); - /* "View.MemoryView":1077 + /* "View.MemoryView":1078 * dst.shape[dim] = shape[dim] * dst.strides[dim] = strides[dim] * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 # <<<<<<<<<<<<<< @@ -14458,7 +14361,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem (__pyx_v_dst->suboffsets[__pyx_v_dim]) = __pyx_t_5; } - /* "View.MemoryView":1062 + /* "View.MemoryView":1063 * return mslice * * @cname('__pyx_memoryview_slice_copy') # <<<<<<<<<<<<<< @@ -14469,7 +14372,7 @@ static void __pyx_memoryview_slice_copy(struct __pyx_memoryview_obj *__pyx_v_mem /* function exit code */ } -/* "View.MemoryView":1079 +/* "View.MemoryView":1080 * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 * * @cname('__pyx_memoryview_copy_object') # <<<<<<<<<<<<<< @@ -14487,7 +14390,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy", 0); - /* "View.MemoryView":1083 + /* "View.MemoryView":1084 * "Create a new memoryview object" * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -14496,7 +14399,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx */ __pyx_memoryview_slice_copy(__pyx_v_memview, (&__pyx_v_memviewslice)); - /* "View.MemoryView":1084 + /* "View.MemoryView":1085 * cdef __Pyx_memviewslice memviewslice * slice_copy(memview, &memviewslice) * return memoryview_copy_from_slice(memview, &memviewslice) # <<<<<<<<<<<<<< @@ -14504,13 +14407,13 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx * @cname('__pyx_memoryview_copy_object_from_slice') */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1084, __pyx_L1_error) + __pyx_t_1 = __pyx_memoryview_copy_object_from_slice(__pyx_v_memview, (&__pyx_v_memviewslice)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "View.MemoryView":1079 + /* "View.MemoryView":1080 * dst.suboffsets[dim] = suboffsets[dim] if suboffsets else -1 * * @cname('__pyx_memoryview_copy_object') # <<<<<<<<<<<<<< @@ -14529,7 +14432,7 @@ static PyObject *__pyx_memoryview_copy_object(struct __pyx_memoryview_obj *__pyx return __pyx_r; } -/* "View.MemoryView":1086 +/* "View.MemoryView":1087 * return memoryview_copy_from_slice(memview, &memviewslice) * * @cname('__pyx_memoryview_copy_object_from_slice') # <<<<<<<<<<<<<< @@ -14551,7 +14454,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview int __pyx_clineno = 0; __Pyx_RefNannySetupContext("memoryview_copy_from_slice", 0); - /* "View.MemoryView":1094 + /* "View.MemoryView":1095 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14561,7 +14464,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_memview), __pyx_mstate_global->__pyx_memoryviewslice_type); if (__pyx_t_1) { - /* "View.MemoryView":1095 + /* "View.MemoryView":1096 * * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func # <<<<<<<<<<<<<< @@ -14571,7 +14474,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_2 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_object_func; __pyx_v_to_object_func = __pyx_t_2; - /* "View.MemoryView":1096 + /* "View.MemoryView":1097 * if isinstance(memview, _memoryviewslice): * to_object_func = (<_memoryviewslice> memview).to_object_func * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func # <<<<<<<<<<<<<< @@ -14581,7 +14484,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview __pyx_t_3 = ((struct __pyx_memoryviewslice_obj *)__pyx_v_memview)->to_dtype_func; __pyx_v_to_dtype_func = __pyx_t_3; - /* "View.MemoryView":1094 + /* "View.MemoryView":1095 * cdef int (*to_dtype_func)(char *, object) except 0 * * if isinstance(memview, _memoryviewslice): # <<<<<<<<<<<<<< @@ -14591,7 +14494,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview goto __pyx_L3; } - /* "View.MemoryView":1098 + /* "View.MemoryView":1099 * to_dtype_func = (<_memoryviewslice> memview).to_dtype_func * else: * to_object_func = NULL # <<<<<<<<<<<<<< @@ -14601,7 +14504,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview /*else*/ { __pyx_v_to_object_func = NULL; - /* "View.MemoryView":1099 + /* "View.MemoryView":1100 * else: * to_object_func = NULL * to_dtype_func = NULL # <<<<<<<<<<<<<< @@ -14612,7 +14515,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview } __pyx_L3:; - /* "View.MemoryView":1101 + /* "View.MemoryView":1102 * to_dtype_func = NULL * * return memoryview_fromslice(memviewslice[0], memview.view.ndim, # <<<<<<<<<<<<<< @@ -14621,20 +14524,20 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview */ __Pyx_XDECREF(__pyx_r); - /* "View.MemoryView":1103 + /* "View.MemoryView":1104 * return memoryview_fromslice(memviewslice[0], memview.view.ndim, * to_object_func, to_dtype_func, * memview.dtype_is_object) # <<<<<<<<<<<<<< * * */ - __pyx_t_4 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1101, __pyx_L1_error) + __pyx_t_4 = __pyx_memoryview_fromslice((__pyx_v_memviewslice[0]), __pyx_v_memview->view.ndim, __pyx_v_to_object_func, __pyx_v_to_dtype_func, __pyx_v_memview->dtype_is_object); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; - /* "View.MemoryView":1086 + /* "View.MemoryView":1087 * return memoryview_copy_from_slice(memview, &memviewslice) * * @cname('__pyx_memoryview_copy_object_from_slice') # <<<<<<<<<<<<<< @@ -14653,7 +14556,7 @@ static PyObject *__pyx_memoryview_copy_object_from_slice(struct __pyx_memoryview return __pyx_r; } -/* "View.MemoryView":1109 +/* "View.MemoryView":1110 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: # <<<<<<<<<<<<<< @@ -14666,7 +14569,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { Py_ssize_t __pyx_t_1; int __pyx_t_2; - /* "View.MemoryView":1110 + /* "View.MemoryView":1111 * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: * return -arg if arg < 0 else arg # <<<<<<<<<<<<<< @@ -14682,7 +14585,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { __pyx_r = __pyx_t_1; goto __pyx_L0; - /* "View.MemoryView":1109 + /* "View.MemoryView":1110 * * * cdef Py_ssize_t abs_py_ssize_t(Py_ssize_t arg) noexcept nogil: # <<<<<<<<<<<<<< @@ -14695,7 +14598,7 @@ static Py_ssize_t abs_py_ssize_t(Py_ssize_t __pyx_v_arg) { return __pyx_r; } -/* "View.MemoryView":1112 +/* "View.MemoryView":1113 * return -arg if arg < 0 else arg * * @cname('__pyx_get_best_slice_order') # <<<<<<<<<<<<<< @@ -14713,7 +14616,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ int __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1118 + /* "View.MemoryView":1119 * """ * cdef int i * cdef Py_ssize_t c_stride = 0 # <<<<<<<<<<<<<< @@ -14722,7 +14625,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = 0; - /* "View.MemoryView":1119 + /* "View.MemoryView":1120 * cdef int i * cdef Py_ssize_t c_stride = 0 * cdef Py_ssize_t f_stride = 0 # <<<<<<<<<<<<<< @@ -14731,7 +14634,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = 0; - /* "View.MemoryView":1121 + /* "View.MemoryView":1122 * cdef Py_ssize_t f_stride = 0 * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -14741,7 +14644,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1122 + /* "View.MemoryView":1123 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14751,7 +14654,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1); if (__pyx_t_2) { - /* "View.MemoryView":1123 + /* "View.MemoryView":1124 * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -14760,7 +14663,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_c_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1124 + /* "View.MemoryView":1125 * if mslice.shape[i] > 1: * c_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -14769,7 +14672,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ goto __pyx_L4_break; - /* "View.MemoryView":1122 + /* "View.MemoryView":1123 * * for i in range(ndim - 1, -1, -1): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14780,7 +14683,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ } __pyx_L4_break:; - /* "View.MemoryView":1126 + /* "View.MemoryView":1127 * break * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -14792,7 +14695,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1127 + /* "View.MemoryView":1128 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14802,7 +14705,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = ((__pyx_v_mslice->shape[__pyx_v_i]) > 1); if (__pyx_t_2) { - /* "View.MemoryView":1128 + /* "View.MemoryView":1129 * for i in range(ndim): * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] # <<<<<<<<<<<<<< @@ -14811,7 +14714,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ __pyx_v_f_stride = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1129 + /* "View.MemoryView":1130 * if mslice.shape[i] > 1: * f_stride = mslice.strides[i] * break # <<<<<<<<<<<<<< @@ -14820,7 +14723,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ goto __pyx_L7_break; - /* "View.MemoryView":1127 + /* "View.MemoryView":1128 * * for i in range(ndim): * if mslice.shape[i] > 1: # <<<<<<<<<<<<<< @@ -14831,7 +14734,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ } __pyx_L7_break:; - /* "View.MemoryView":1131 + /* "View.MemoryView":1132 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -14841,7 +14744,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_t_2 = (abs_py_ssize_t(__pyx_v_c_stride) <= abs_py_ssize_t(__pyx_v_f_stride)); if (__pyx_t_2) { - /* "View.MemoryView":1132 + /* "View.MemoryView":1133 * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): * return 'C' # <<<<<<<<<<<<<< @@ -14851,7 +14754,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ __pyx_r = 'C'; goto __pyx_L0; - /* "View.MemoryView":1131 + /* "View.MemoryView":1132 * break * * if abs_py_ssize_t(c_stride) <= abs_py_ssize_t(f_stride): # <<<<<<<<<<<<<< @@ -14860,7 +14763,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ */ } - /* "View.MemoryView":1134 + /* "View.MemoryView":1135 * return 'C' * else: * return 'F' # <<<<<<<<<<<<<< @@ -14872,7 +14775,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ goto __pyx_L0; } - /* "View.MemoryView":1112 + /* "View.MemoryView":1113 * return -arg if arg < 0 else arg * * @cname('__pyx_get_best_slice_order') # <<<<<<<<<<<<<< @@ -14885,7 +14788,7 @@ static char __pyx_get_best_slice_order(__Pyx_memviewslice *__pyx_v_mslice, int _ return __pyx_r; } -/* "View.MemoryView":1136 +/* "View.MemoryView":1137 * return 'F' * * @cython.cdivision(True) # <<<<<<<<<<<<<< @@ -14905,7 +14808,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v Py_ssize_t __pyx_t_4; Py_ssize_t __pyx_t_5; - /* "View.MemoryView":1144 + /* "View.MemoryView":1145 * * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] # <<<<<<<<<<<<<< @@ -14914,7 +14817,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_extent = (__pyx_v_src_shape[0]); - /* "View.MemoryView":1145 + /* "View.MemoryView":1146 * cdef Py_ssize_t i * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] # <<<<<<<<<<<<<< @@ -14923,7 +14826,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_extent = (__pyx_v_dst_shape[0]); - /* "View.MemoryView":1146 + /* "View.MemoryView":1147 * cdef Py_ssize_t src_extent = src_shape[0] * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] # <<<<<<<<<<<<<< @@ -14932,7 +14835,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_stride = (__pyx_v_src_strides[0]); - /* "View.MemoryView":1147 + /* "View.MemoryView":1148 * cdef Py_ssize_t dst_extent = dst_shape[0] * cdef Py_ssize_t src_stride = src_strides[0] * cdef Py_ssize_t dst_stride = dst_strides[0] # <<<<<<<<<<<<<< @@ -14941,21 +14844,21 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_dst_stride = (__pyx_v_dst_strides[0]); - /* "View.MemoryView":1149 + /* "View.MemoryView":1150 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): */ __pyx_t_1 = (__pyx_v_ndim == 1); if (__pyx_t_1) { - /* "View.MemoryView":1150 + /* "View.MemoryView":1151 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ __pyx_t_2 = (__pyx_v_src_stride > 0); @@ -14971,10 +14874,10 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v goto __pyx_L5_bool_binop_done; } - /* "View.MemoryView":1151 + /* "View.MemoryView":1152 * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< + * src_stride == itemsize == dst_stride): # <<<<<<<<<<<<<< * memcpy(dst_data, src_data, itemsize * dst_extent) * else: */ @@ -14985,35 +14888,35 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; - /* "View.MemoryView":1150 + /* "View.MemoryView":1151 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ if (__pyx_t_1) { - /* "View.MemoryView":1152 + /* "View.MemoryView":1153 * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) # <<<<<<<<<<<<<< * else: * for i in range(dst_extent): */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, (__pyx_v_itemsize * __pyx_v_dst_extent))); - /* "View.MemoryView":1150 + /* "View.MemoryView":1151 * * if ndim == 1: * if (src_stride > 0 and dst_stride > 0 and # <<<<<<<<<<<<<< - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): * memcpy(dst_data, src_data, itemsize * dst_extent) */ goto __pyx_L4; } - /* "View.MemoryView":1154 + /* "View.MemoryView":1155 * memcpy(dst_data, src_data, itemsize * dst_extent) * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< @@ -15026,7 +14929,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1155 + /* "View.MemoryView":1156 * else: * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) # <<<<<<<<<<<<<< @@ -15035,7 +14938,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ (void)(memcpy(__pyx_v_dst_data, __pyx_v_src_data, __pyx_v_itemsize)); - /* "View.MemoryView":1156 + /* "View.MemoryView":1157 * for i in range(dst_extent): * memcpy(dst_data, src_data, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -15044,7 +14947,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1157 + /* "View.MemoryView":1158 * memcpy(dst_data, src_data, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -15056,17 +14959,17 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L4:; - /* "View.MemoryView":1149 + /* "View.MemoryView":1150 * cdef Py_ssize_t dst_stride = dst_strides[0] * * if ndim == 1: # <<<<<<<<<<<<<< * if (src_stride > 0 and dst_stride > 0 and - * src_stride == itemsize == dst_stride): + * src_stride == itemsize == dst_stride): */ goto __pyx_L3; } - /* "View.MemoryView":1159 + /* "View.MemoryView":1160 * dst_data += dst_stride * else: * for i in range(dst_extent): # <<<<<<<<<<<<<< @@ -15079,7 +14982,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "View.MemoryView":1160 + /* "View.MemoryView":1161 * else: * for i in range(dst_extent): * _copy_strided_to_strided(src_data, src_strides + 1, # <<<<<<<<<<<<<< @@ -15088,7 +14991,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ _copy_strided_to_strided(__pyx_v_src_data, (__pyx_v_src_strides + 1), __pyx_v_dst_data, (__pyx_v_dst_strides + 1), (__pyx_v_src_shape + 1), (__pyx_v_dst_shape + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize); - /* "View.MemoryView":1164 + /* "View.MemoryView":1165 * src_shape + 1, dst_shape + 1, * ndim - 1, itemsize) * src_data += src_stride # <<<<<<<<<<<<<< @@ -15097,7 +15000,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v */ __pyx_v_src_data = (__pyx_v_src_data + __pyx_v_src_stride); - /* "View.MemoryView":1165 + /* "View.MemoryView":1166 * ndim - 1, itemsize) * src_data += src_stride * dst_data += dst_stride # <<<<<<<<<<<<<< @@ -15109,7 +15012,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v } __pyx_L3:; - /* "View.MemoryView":1136 + /* "View.MemoryView":1137 * return 'F' * * @cython.cdivision(True) # <<<<<<<<<<<<<< @@ -15120,7 +15023,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v /* function exit code */ } -/* "View.MemoryView":1167 +/* "View.MemoryView":1168 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -15130,7 +15033,7 @@ static void _copy_strided_to_strided(char *__pyx_v_src_data, Py_ssize_t *__pyx_v static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize) { - /* "View.MemoryView":1170 + /* "View.MemoryView":1171 * __Pyx_memviewslice *dst, * int ndim, size_t itemsize) noexcept nogil: * _copy_strided_to_strided(src.data, src.strides, dst.data, dst.strides, # <<<<<<<<<<<<<< @@ -15139,7 +15042,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi */ _copy_strided_to_strided(__pyx_v_src->data, __pyx_v_src->strides, __pyx_v_dst->data, __pyx_v_dst->strides, __pyx_v_src->shape, __pyx_v_dst->shape, __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1167 + /* "View.MemoryView":1168 * dst_data += dst_stride * * cdef void copy_strided_to_strided(__Pyx_memviewslice *src, # <<<<<<<<<<<<<< @@ -15150,7 +15053,7 @@ static void copy_strided_to_strided(__Pyx_memviewslice *__pyx_v_src, __Pyx_memvi /* function exit code */ } -/* "View.MemoryView":1173 +/* "View.MemoryView":1174 * src.shape, dst.shape, ndim, itemsize) * * @cname('__pyx_memoryview_slice_get_size') # <<<<<<<<<<<<<< @@ -15167,7 +15070,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr Py_ssize_t *__pyx_t_3; Py_ssize_t *__pyx_t_4; - /* "View.MemoryView":1176 + /* "View.MemoryView":1177 * cdef Py_ssize_t slice_get_size(__Pyx_memviewslice *src, int ndim) noexcept nogil: * "Return the size of the memory occupied by the slice in number of bytes" * cdef Py_ssize_t shape, size = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -15177,7 +15080,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_size = __pyx_t_1; - /* "View.MemoryView":1178 + /* "View.MemoryView":1179 * cdef Py_ssize_t shape, size = src.memview.view.itemsize * * for shape in src.shape[:ndim]: # <<<<<<<<<<<<<< @@ -15189,7 +15092,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_t_2 = __pyx_t_4; __pyx_v_shape = (__pyx_t_2[0]); - /* "View.MemoryView":1179 + /* "View.MemoryView":1180 * * for shape in src.shape[:ndim]: * size *= shape # <<<<<<<<<<<<<< @@ -15199,7 +15102,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_v_size = (__pyx_v_size * __pyx_v_shape); } - /* "View.MemoryView":1181 + /* "View.MemoryView":1182 * size *= shape * * return size # <<<<<<<<<<<<<< @@ -15209,7 +15112,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr __pyx_r = __pyx_v_size; goto __pyx_L0; - /* "View.MemoryView":1173 + /* "View.MemoryView":1174 * src.shape, dst.shape, ndim, itemsize) * * @cname('__pyx_memoryview_slice_get_size') # <<<<<<<<<<<<<< @@ -15222,7 +15125,7 @@ static Py_ssize_t __pyx_memoryview_slice_get_size(__Pyx_memviewslice *__pyx_v_sr return __pyx_r; } -/* "View.MemoryView":1183 +/* "View.MemoryView":1184 * return size * * @cname('__pyx_fill_contig_strides_array') # <<<<<<<<<<<<<< @@ -15238,7 +15141,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ int __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1193 + /* "View.MemoryView":1194 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -15248,7 +15151,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_t_1 = (__pyx_v_order == 'F'); if (__pyx_t_1) { - /* "View.MemoryView":1194 + /* "View.MemoryView":1195 * * if order == 'F': * for idx in range(ndim): # <<<<<<<<<<<<<< @@ -15260,7 +15163,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_idx = __pyx_t_4; - /* "View.MemoryView":1195 + /* "View.MemoryView":1196 * if order == 'F': * for idx in range(ndim): * strides[idx] = stride # <<<<<<<<<<<<<< @@ -15269,7 +15172,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1196 + /* "View.MemoryView":1197 * for idx in range(ndim): * strides[idx] = stride * stride *= shape[idx] # <<<<<<<<<<<<<< @@ -15279,7 +15182,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_v_stride = (__pyx_v_stride * (__pyx_v_shape[__pyx_v_idx])); } - /* "View.MemoryView":1193 + /* "View.MemoryView":1194 * cdef int idx * * if order == 'F': # <<<<<<<<<<<<<< @@ -15289,7 +15192,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ goto __pyx_L3; } - /* "View.MemoryView":1198 + /* "View.MemoryView":1199 * stride *= shape[idx] * else: * for idx in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -15300,7 +15203,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ for (__pyx_t_2 = (__pyx_v_ndim - 1); __pyx_t_2 > -1; __pyx_t_2-=1) { __pyx_v_idx = __pyx_t_2; - /* "View.MemoryView":1199 + /* "View.MemoryView":1200 * else: * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride # <<<<<<<<<<<<<< @@ -15309,7 +15212,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ */ (__pyx_v_strides[__pyx_v_idx]) = __pyx_v_stride; - /* "View.MemoryView":1200 + /* "View.MemoryView":1201 * for idx in range(ndim - 1, -1, -1): * strides[idx] = stride * stride *= shape[idx] # <<<<<<<<<<<<<< @@ -15321,7 +15224,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ } __pyx_L3:; - /* "View.MemoryView":1202 + /* "View.MemoryView":1203 * stride *= shape[idx] * * return stride # <<<<<<<<<<<<<< @@ -15331,7 +15234,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ __pyx_r = __pyx_v_stride; goto __pyx_L0; - /* "View.MemoryView":1183 + /* "View.MemoryView":1184 * return size * * @cname('__pyx_fill_contig_strides_array') # <<<<<<<<<<<<<< @@ -15344,7 +15247,7 @@ static Py_ssize_t __pyx_fill_contig_strides_array(Py_ssize_t *__pyx_v_shape, Py_ return __pyx_r; } -/* "View.MemoryView":1204 +/* "View.MemoryView":1205 * return stride * * @cname('__pyx_memoryview_copy_data_to_temp') # <<<<<<<<<<<<<< @@ -15369,7 +15272,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":1216 + /* "View.MemoryView":1217 * cdef void *result * * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -15379,7 +15282,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_1 = __pyx_v_src->memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1217 + /* "View.MemoryView":1218 * * cdef size_t itemsize = src.memview.view.itemsize * cdef size_t size = slice_get_size(src, ndim) # <<<<<<<<<<<<<< @@ -15388,7 +15291,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_size = __pyx_memoryview_slice_get_size(__pyx_v_src, __pyx_v_ndim); - /* "View.MemoryView":1219 + /* "View.MemoryView":1220 * cdef size_t size = slice_get_size(src, ndim) * * result = malloc(size) # <<<<<<<<<<<<<< @@ -15397,7 +15300,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_result = malloc(__pyx_v_size); - /* "View.MemoryView":1220 + /* "View.MemoryView":1221 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -15407,16 +15310,16 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = (!(__pyx_v_result != 0)); if (__pyx_t_2) { - /* "View.MemoryView":1221 + /* "View.MemoryView":1222 * result = malloc(size) * if not result: * _err_no_memory() # <<<<<<<<<<<<<< * * */ - __pyx_t_3 = __pyx_memoryview_err_no_memory(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1221, __pyx_L1_error) + __pyx_t_3 = __pyx_memoryview_err_no_memory(); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 1222, __pyx_L1_error) - /* "View.MemoryView":1220 + /* "View.MemoryView":1221 * * result = malloc(size) * if not result: # <<<<<<<<<<<<<< @@ -15425,7 +15328,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ } - /* "View.MemoryView":1224 + /* "View.MemoryView":1225 * * * tmpslice.data = result # <<<<<<<<<<<<<< @@ -15434,7 +15337,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ __pyx_v_tmpslice->data = ((char *)__pyx_v_result); - /* "View.MemoryView":1225 + /* "View.MemoryView":1226 * * tmpslice.data = result * tmpslice.memview = src.memview # <<<<<<<<<<<<<< @@ -15444,7 +15347,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_4 = __pyx_v_src->memview; __pyx_v_tmpslice->memview = __pyx_t_4; - /* "View.MemoryView":1226 + /* "View.MemoryView":1227 * tmpslice.data = result * tmpslice.memview = src.memview * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15456,7 +15359,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1227 + /* "View.MemoryView":1228 * tmpslice.memview = src.memview * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] # <<<<<<<<<<<<<< @@ -15465,7 +15368,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->shape[__pyx_v_i]) = (__pyx_v_src->shape[__pyx_v_i]); - /* "View.MemoryView":1228 + /* "View.MemoryView":1229 * for i in range(ndim): * tmpslice.shape[i] = src.shape[i] * tmpslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< @@ -15475,7 +15378,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, (__pyx_v_tmpslice->suboffsets[__pyx_v_i]) = -1L; } - /* "View.MemoryView":1230 + /* "View.MemoryView":1231 * tmpslice.suboffsets[i] = -1 * * fill_contig_strides_array(&tmpslice.shape[0], &tmpslice.strides[0], itemsize, ndim, order) # <<<<<<<<<<<<<< @@ -15484,7 +15387,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (void)(__pyx_fill_contig_strides_array((&(__pyx_v_tmpslice->shape[0])), (&(__pyx_v_tmpslice->strides[0])), __pyx_v_itemsize, __pyx_v_ndim, __pyx_v_order)); - /* "View.MemoryView":1233 + /* "View.MemoryView":1234 * * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15496,7 +15399,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) { __pyx_v_i = __pyx_t_6; - /* "View.MemoryView":1234 + /* "View.MemoryView":1235 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15506,7 +15409,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = ((__pyx_v_tmpslice->shape[__pyx_v_i]) == 1); if (__pyx_t_2) { - /* "View.MemoryView":1235 + /* "View.MemoryView":1236 * for i in range(ndim): * if tmpslice.shape[i] == 1: * tmpslice.strides[i] = 0 # <<<<<<<<<<<<<< @@ -15515,7 +15418,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (__pyx_v_tmpslice->strides[__pyx_v_i]) = 0; - /* "View.MemoryView":1234 + /* "View.MemoryView":1235 * * for i in range(ndim): * if tmpslice.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15525,7 +15428,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, } } - /* "View.MemoryView":1237 + /* "View.MemoryView":1238 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< @@ -15535,7 +15438,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_t_2 = __pyx_memviewslice_is_contig((__pyx_v_src[0]), __pyx_v_order, __pyx_v_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1238 + /* "View.MemoryView":1239 * * if slice_is_contig(src[0], order, ndim): * memcpy(result, src.data, size) # <<<<<<<<<<<<<< @@ -15544,7 +15447,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, */ (void)(memcpy(__pyx_v_result, __pyx_v_src->data, __pyx_v_size)); - /* "View.MemoryView":1237 + /* "View.MemoryView":1238 * tmpslice.strides[i] = 0 * * if slice_is_contig(src[0], order, ndim): # <<<<<<<<<<<<<< @@ -15554,7 +15457,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, goto __pyx_L9; } - /* "View.MemoryView":1240 + /* "View.MemoryView":1241 * memcpy(result, src.data, size) * else: * copy_strided_to_strided(src, tmpslice, ndim, itemsize) # <<<<<<<<<<<<<< @@ -15566,7 +15469,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, } __pyx_L9:; - /* "View.MemoryView":1242 + /* "View.MemoryView":1243 * copy_strided_to_strided(src, tmpslice, ndim, itemsize) * * return result # <<<<<<<<<<<<<< @@ -15576,7 +15479,7 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_r = __pyx_v_result; goto __pyx_L0; - /* "View.MemoryView":1204 + /* "View.MemoryView":1205 * return stride * * @cname('__pyx_memoryview_copy_data_to_temp') # <<<<<<<<<<<<<< @@ -15588,13 +15491,13 @@ static void *__pyx_memoryview_copy_data_to_temp(__Pyx_memviewslice *__pyx_v_src, __pyx_L1_error:; __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); __Pyx_AddTraceback("View.MemoryView.copy_data_to_temp", __pyx_clineno, __pyx_lineno, __pyx_filename); - __pyx_r = 0; + __pyx_r = NULL; __Pyx_PyGILState_Release(__pyx_gilstate_save); __pyx_L0:; return __pyx_r; } -/* "View.MemoryView":1246 +/* "View.MemoryView":1247 * * * @cname('__pyx_memoryview_err_extents') # <<<<<<<<<<<<<< @@ -15616,18 +15519,18 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); __Pyx_RefNannySetupContext("_err_extents", 0); - /* "View.MemoryView":1249 + /* "View.MemoryView":1250 * cdef int _err_extents(int i, Py_ssize_t extent1, * Py_ssize_t extent2) except -1 with gil: * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err_dim') */ - __pyx_t_1 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1249, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyUnicode_From_int(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent1, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1249, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent1, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent2, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1249, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_extent2, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4[0] = __pyx_mstate_global->__pyx_kp_u_got_differing_extents_in_dimensi; __pyx_t_4[1] = __pyx_t_1; @@ -15637,16 +15540,16 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent __pyx_t_4[5] = __pyx_t_3; __pyx_t_4[6] = __pyx_mstate_global->__pyx_kp_u__5; __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 7, 35 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 5 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127); - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1249, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_5, 0, 0); + __Pyx_Raise(((PyObject *)(((PyTypeObject*)PyExc_ValueError))), __pyx_t_5, 0, 0); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __PYX_ERR(1, 1249, __pyx_L1_error) + __PYX_ERR(1, 1250, __pyx_L1_error) - /* "View.MemoryView":1246 + /* "View.MemoryView":1247 * * * @cname('__pyx_memoryview_err_extents') # <<<<<<<<<<<<<< @@ -15667,7 +15570,7 @@ static int __pyx_memoryview_err_extents(int __pyx_v_i, Py_ssize_t __pyx_v_extent return __pyx_r; } -/* "View.MemoryView":1251 +/* "View.MemoryView":1252 * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" * * @cname('__pyx_memoryview_err_dim') # <<<<<<<<<<<<<< @@ -15687,23 +15590,23 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, PyObject *__pyx_v_m __Pyx_RefNannySetupContext("_err_dim", 0); __Pyx_INCREF(__pyx_v_msg); - /* "View.MemoryView":1253 + /* "View.MemoryView":1254 * @cname('__pyx_memoryview_err_dim') * cdef int _err_dim(PyObject *error, str msg, int dim) except -1 with gil: * raise error, msg % dim # <<<<<<<<<<<<<< * * @cname('__pyx_memoryview_err') */ - __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1253, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1253, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyUnicode_FormatSafe(__pyx_v_msg, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1254, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_t_2, 0, 0); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __PYX_ERR(1, 1253, __pyx_L1_error) + __PYX_ERR(1, 1254, __pyx_L1_error) - /* "View.MemoryView":1251 + /* "View.MemoryView":1252 * raise ValueError, f"got differing extents in dimension {i} (got {extent1} and {extent2})" * * @cname('__pyx_memoryview_err_dim') # <<<<<<<<<<<<<< @@ -15723,7 +15626,7 @@ static int __pyx_memoryview_err_dim(PyObject *__pyx_v_error, PyObject *__pyx_v_m return __pyx_r; } -/* "View.MemoryView":1255 +/* "View.MemoryView":1256 * raise error, msg % dim * * @cname('__pyx_memoryview_err') # <<<<<<<<<<<<<< @@ -15741,7 +15644,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) __Pyx_RefNannySetupContext("_err", 0); __Pyx_INCREF(__pyx_v_msg); - /* "View.MemoryView":1257 + /* "View.MemoryView":1258 * @cname('__pyx_memoryview_err') * cdef int _err(PyObject *error, str msg) except -1 with gil: * raise error, msg # <<<<<<<<<<<<<< @@ -15749,9 +15652,9 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) * @cname('__pyx_memoryview_err_no_memory') */ __Pyx_Raise(((PyObject *)__pyx_v_error), __pyx_v_msg, 0, 0); - __PYX_ERR(1, 1257, __pyx_L1_error) + __PYX_ERR(1, 1258, __pyx_L1_error) - /* "View.MemoryView":1255 + /* "View.MemoryView":1256 * raise error, msg % dim * * @cname('__pyx_memoryview_err') # <<<<<<<<<<<<<< @@ -15769,7 +15672,7 @@ static int __pyx_memoryview_err(PyObject *__pyx_v_error, PyObject *__pyx_v_msg) return __pyx_r; } -/* "View.MemoryView":1259 +/* "View.MemoryView":1260 * raise error, msg * * @cname('__pyx_memoryview_err_no_memory') # <<<<<<<<<<<<<< @@ -15784,16 +15687,16 @@ static int __pyx_memoryview_err_no_memory(void) { int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - /* "View.MemoryView":1261 + /* "View.MemoryView":1262 * @cname('__pyx_memoryview_err_no_memory') * cdef int _err_no_memory() except -1 with gil: * raise MemoryError # <<<<<<<<<<<<<< * * */ - PyErr_NoMemory(); __PYX_ERR(1, 1261, __pyx_L1_error) + PyErr_NoMemory(); __PYX_ERR(1, 1262, __pyx_L1_error) - /* "View.MemoryView":1259 + /* "View.MemoryView":1260 * raise error, msg * * @cname('__pyx_memoryview_err_no_memory') # <<<<<<<<<<<<<< @@ -15809,7 +15712,7 @@ static int __pyx_memoryview_err_no_memory(void) { return __pyx_r; } -/* "View.MemoryView":1264 +/* "View.MemoryView":1265 * * * @cname('__pyx_memoryview_copy_contents') # <<<<<<<<<<<<<< @@ -15839,7 +15742,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ int __pyx_clineno = 0; PyGILState_STATE __pyx_gilstate_save; - /* "View.MemoryView":1273 + /* "View.MemoryView":1274 * Check for overlapping memory and verify the shapes. * """ * cdef void *tmpdata = NULL # <<<<<<<<<<<<<< @@ -15848,7 +15751,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_tmpdata = NULL; - /* "View.MemoryView":1274 + /* "View.MemoryView":1275 * """ * cdef void *tmpdata = NULL * cdef size_t itemsize = src.memview.view.itemsize # <<<<<<<<<<<<<< @@ -15858,7 +15761,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_1 = __pyx_v_src.memview->view.itemsize; __pyx_v_itemsize = __pyx_t_1; - /* "View.MemoryView":1276 + /* "View.MemoryView":1277 * cdef size_t itemsize = src.memview.view.itemsize * cdef int i * cdef char order = get_best_order(&src, src_ndim) # <<<<<<<<<<<<<< @@ -15867,7 +15770,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_src), __pyx_v_src_ndim); - /* "View.MemoryView":1277 + /* "View.MemoryView":1278 * cdef int i * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False # <<<<<<<<<<<<<< @@ -15876,7 +15779,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 0; - /* "View.MemoryView":1278 + /* "View.MemoryView":1279 * cdef char order = get_best_order(&src, src_ndim) * cdef bint broadcasting = False * cdef bint direct_copy = False # <<<<<<<<<<<<<< @@ -15885,7 +15788,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = 0; - /* "View.MemoryView":1281 + /* "View.MemoryView":1282 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -15895,7 +15798,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_v_src_ndim < __pyx_v_dst_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1282 + /* "View.MemoryView":1283 * * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -15904,7 +15807,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_broadcast_leading((&__pyx_v_src), __pyx_v_src_ndim, __pyx_v_dst_ndim); - /* "View.MemoryView":1281 + /* "View.MemoryView":1282 * cdef __Pyx_memviewslice tmp * * if src_ndim < dst_ndim: # <<<<<<<<<<<<<< @@ -15914,7 +15817,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L3; } - /* "View.MemoryView":1283 + /* "View.MemoryView":1284 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -15924,7 +15827,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (__pyx_v_dst_ndim < __pyx_v_src_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1284 + /* "View.MemoryView":1285 * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: * broadcast_leading(&dst, dst_ndim, src_ndim) # <<<<<<<<<<<<<< @@ -15933,7 +15836,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_broadcast_leading((&__pyx_v_dst), __pyx_v_dst_ndim, __pyx_v_src_ndim); - /* "View.MemoryView":1283 + /* "View.MemoryView":1284 * if src_ndim < dst_ndim: * broadcast_leading(&src, src_ndim, dst_ndim) * elif dst_ndim < src_ndim: # <<<<<<<<<<<<<< @@ -15943,7 +15846,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_L3:; - /* "View.MemoryView":1286 + /* "View.MemoryView":1287 * broadcast_leading(&dst, dst_ndim, src_ndim) * * cdef int ndim = max(src_ndim, dst_ndim) # <<<<<<<<<<<<<< @@ -15960,7 +15863,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_v_ndim = __pyx_t_5; - /* "View.MemoryView":1288 + /* "View.MemoryView":1289 * cdef int ndim = max(src_ndim, dst_ndim) * * for i in range(ndim): # <<<<<<<<<<<<<< @@ -15972,7 +15875,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1289 + /* "View.MemoryView":1290 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -15982,7 +15885,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) != (__pyx_v_dst.shape[__pyx_v_i])); if (__pyx_t_2) { - /* "View.MemoryView":1290 + /* "View.MemoryView":1291 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -15992,7 +15895,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src.shape[__pyx_v_i]) == 1); if (__pyx_t_2) { - /* "View.MemoryView":1291 + /* "View.MemoryView":1292 * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: * broadcasting = True # <<<<<<<<<<<<<< @@ -16001,7 +15904,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_broadcasting = 1; - /* "View.MemoryView":1292 + /* "View.MemoryView":1293 * if src.shape[i] == 1: * broadcasting = True * src.strides[i] = 0 # <<<<<<<<<<<<<< @@ -16010,7 +15913,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ (__pyx_v_src.strides[__pyx_v_i]) = 0; - /* "View.MemoryView":1290 + /* "View.MemoryView":1291 * for i in range(ndim): * if src.shape[i] != dst.shape[i]: * if src.shape[i] == 1: # <<<<<<<<<<<<<< @@ -16020,7 +15923,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L7; } - /* "View.MemoryView":1294 + /* "View.MemoryView":1295 * src.strides[i] = 0 * else: * _err_extents(i, dst.shape[i], src.shape[i]) # <<<<<<<<<<<<<< @@ -16028,11 +15931,11 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ * if src.suboffsets[i] >= 0: */ /*else*/ { - __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1294, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_extents(__pyx_v_i, (__pyx_v_dst.shape[__pyx_v_i]), (__pyx_v_src.shape[__pyx_v_i])); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1295, __pyx_L1_error) } __pyx_L7:; - /* "View.MemoryView":1289 + /* "View.MemoryView":1290 * * for i in range(ndim): * if src.shape[i] != dst.shape[i]: # <<<<<<<<<<<<<< @@ -16041,7 +15944,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1296 + /* "View.MemoryView":1297 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -16051,16 +15954,16 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = ((__pyx_v_src.suboffsets[__pyx_v_i]) >= 0); if (__pyx_t_2) { - /* "View.MemoryView":1297 + /* "View.MemoryView":1298 * * if src.suboffsets[i] >= 0: * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) # <<<<<<<<<<<<<< * * if slices_overlap(&src, &dst, ndim, itemsize): */ - __pyx_t_6 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1297, __pyx_L1_error) + __pyx_t_6 = __pyx_memoryview_err_dim(PyExc_ValueError, __pyx_mstate_global->__pyx_kp_u_Dimension_d_is_not_direct, __pyx_v_i); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(1, 1298, __pyx_L1_error) - /* "View.MemoryView":1296 + /* "View.MemoryView":1297 * _err_extents(i, dst.shape[i], src.shape[i]) * * if src.suboffsets[i] >= 0: # <<<<<<<<<<<<<< @@ -16070,7 +15973,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } } - /* "View.MemoryView":1299 + /* "View.MemoryView":1300 * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -16080,7 +15983,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = __pyx_slices_overlap((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); if (__pyx_t_2) { - /* "View.MemoryView":1301 + /* "View.MemoryView":1302 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -16090,7 +15993,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (!__pyx_memviewslice_is_contig(__pyx_v_src, __pyx_v_order, __pyx_v_ndim)); if (__pyx_t_2) { - /* "View.MemoryView":1302 + /* "View.MemoryView":1303 * * if not slice_is_contig(src, order, ndim): * order = get_best_order(&dst, ndim) # <<<<<<<<<<<<<< @@ -16099,7 +16002,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_order = __pyx_get_best_slice_order((&__pyx_v_dst), __pyx_v_ndim); - /* "View.MemoryView":1301 + /* "View.MemoryView":1302 * if slices_overlap(&src, &dst, ndim, itemsize): * * if not slice_is_contig(src, order, ndim): # <<<<<<<<<<<<<< @@ -16108,17 +16011,17 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1304 + /* "View.MemoryView":1305 * order = get_best_order(&dst, ndim) * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) # <<<<<<<<<<<<<< * src = tmp * */ - __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)0))) __PYX_ERR(1, 1304, __pyx_L1_error) + __pyx_t_7 = __pyx_memoryview_copy_data_to_temp((&__pyx_v_src), (&__pyx_v_tmp), __pyx_v_order, __pyx_v_ndim); if (unlikely(__pyx_t_7 == ((void *)NULL))) __PYX_ERR(1, 1305, __pyx_L1_error) __pyx_v_tmpdata = __pyx_t_7; - /* "View.MemoryView":1305 + /* "View.MemoryView":1306 * * tmpdata = copy_data_to_temp(&src, &tmp, order, ndim) * src = tmp # <<<<<<<<<<<<<< @@ -16127,7 +16030,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_src = __pyx_v_tmp; - /* "View.MemoryView":1299 + /* "View.MemoryView":1300 * _err_dim(PyExc_ValueError, "Dimension %d is not direct", i) * * if slices_overlap(&src, &dst, ndim, itemsize): # <<<<<<<<<<<<<< @@ -16136,7 +16039,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1307 + /* "View.MemoryView":1308 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -16146,7 +16049,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = (!__pyx_v_broadcasting); if (__pyx_t_2) { - /* "View.MemoryView":1310 + /* "View.MemoryView":1311 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< @@ -16156,7 +16059,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'C', __pyx_v_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1311 + /* "View.MemoryView":1312 * * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) # <<<<<<<<<<<<<< @@ -16165,7 +16068,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'C', __pyx_v_ndim); - /* "View.MemoryView":1310 + /* "View.MemoryView":1311 * * * if slice_is_contig(src, 'C', ndim): # <<<<<<<<<<<<<< @@ -16175,7 +16078,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ goto __pyx_L12; } - /* "View.MemoryView":1312 + /* "View.MemoryView":1313 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< @@ -16185,7 +16088,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_t_2 = __pyx_memviewslice_is_contig(__pyx_v_src, 'F', __pyx_v_ndim); if (__pyx_t_2) { - /* "View.MemoryView":1313 + /* "View.MemoryView":1314 * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): * direct_copy = slice_is_contig(dst, 'F', ndim) # <<<<<<<<<<<<<< @@ -16194,7 +16097,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_v_direct_copy = __pyx_memviewslice_is_contig(__pyx_v_dst, 'F', __pyx_v_ndim); - /* "View.MemoryView":1312 + /* "View.MemoryView":1313 * if slice_is_contig(src, 'C', ndim): * direct_copy = slice_is_contig(dst, 'C', ndim) * elif slice_is_contig(src, 'F', ndim): # <<<<<<<<<<<<<< @@ -16204,7 +16107,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } __pyx_L12:; - /* "View.MemoryView":1315 + /* "View.MemoryView":1316 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -16213,7 +16116,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ if (__pyx_v_direct_copy) { - /* "View.MemoryView":1317 + /* "View.MemoryView":1318 * if direct_copy: * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< @@ -16222,7 +16125,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1318 + /* "View.MemoryView":1319 * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) # <<<<<<<<<<<<<< @@ -16231,7 +16134,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ (void)(memcpy(__pyx_v_dst.data, __pyx_v_src.data, __pyx_memoryview_slice_get_size((&__pyx_v_src), __pyx_v_ndim))); - /* "View.MemoryView":1319 + /* "View.MemoryView":1320 * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< @@ -16240,7 +16143,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1320 + /* "View.MemoryView":1321 * memcpy(dst.data, src.data, slice_get_size(&src, ndim)) * refcount_copying(&dst, dtype_is_object, ndim, inc=True) * free(tmpdata) # <<<<<<<<<<<<<< @@ -16249,7 +16152,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1321 + /* "View.MemoryView":1322 * refcount_copying(&dst, dtype_is_object, ndim, inc=True) * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -16259,7 +16162,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1315 + /* "View.MemoryView":1316 * direct_copy = slice_is_contig(dst, 'F', ndim) * * if direct_copy: # <<<<<<<<<<<<<< @@ -16268,7 +16171,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1307 + /* "View.MemoryView":1308 * src = tmp * * if not broadcasting: # <<<<<<<<<<<<<< @@ -16277,7 +16180,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1323 + /* "View.MemoryView":1324 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -16290,25 +16193,25 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ } if (__pyx_t_2) { - /* "View.MemoryView":1326 + /* "View.MemoryView":1327 * * * transpose_memslice(&src) # <<<<<<<<<<<<<< * transpose_memslice(&dst) * */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1326, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_src)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1327, __pyx_L1_error) - /* "View.MemoryView":1327 + /* "View.MemoryView":1328 * * transpose_memslice(&src) * transpose_memslice(&dst) # <<<<<<<<<<<<<< * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) */ - __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1327, __pyx_L1_error) + __pyx_t_5 = __pyx_memslice_transpose((&__pyx_v_dst)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(1, 1328, __pyx_L1_error) - /* "View.MemoryView":1323 + /* "View.MemoryView":1324 * return 0 * * if order == 'F' == get_best_order(&dst, ndim): # <<<<<<<<<<<<<< @@ -16317,7 +16220,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ } - /* "View.MemoryView":1329 + /* "View.MemoryView":1330 * transpose_memslice(&dst) * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< @@ -16326,7 +16229,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1330 + /* "View.MemoryView":1331 * * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) # <<<<<<<<<<<<<< @@ -16335,7 +16238,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ copy_strided_to_strided((&__pyx_v_src), (&__pyx_v_dst), __pyx_v_ndim, __pyx_v_itemsize); - /* "View.MemoryView":1331 + /* "View.MemoryView":1332 * refcount_copying(&dst, dtype_is_object, ndim, inc=False) * copy_strided_to_strided(&src, &dst, ndim, itemsize) * refcount_copying(&dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< @@ -16344,7 +16247,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ __pyx_memoryview_refcount_copying((&__pyx_v_dst), __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1333 + /* "View.MemoryView":1334 * refcount_copying(&dst, dtype_is_object, ndim, inc=True) * * free(tmpdata) # <<<<<<<<<<<<<< @@ -16353,7 +16256,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ */ free(__pyx_v_tmpdata); - /* "View.MemoryView":1334 + /* "View.MemoryView":1335 * * free(tmpdata) * return 0 # <<<<<<<<<<<<<< @@ -16363,7 +16266,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ __pyx_r = 0; goto __pyx_L0; - /* "View.MemoryView":1264 + /* "View.MemoryView":1265 * * * @cname('__pyx_memoryview_copy_contents') # <<<<<<<<<<<<<< @@ -16381,7 +16284,7 @@ static int __pyx_memoryview_copy_contents(__Pyx_memviewslice __pyx_v_src, __Pyx_ return __pyx_r; } -/* "View.MemoryView":1336 +/* "View.MemoryView":1337 * return 0 * * @cname('__pyx_memoryview_broadcast_leading') # <<<<<<<<<<<<<< @@ -16396,7 +16299,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic int __pyx_t_2; int __pyx_t_3; - /* "View.MemoryView":1341 + /* "View.MemoryView":1342 * int ndim_other) noexcept nogil: * cdef int i * cdef int offset = ndim_other - ndim # <<<<<<<<<<<<<< @@ -16405,7 +16308,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ __pyx_v_offset = (__pyx_v_ndim_other - __pyx_v_ndim); - /* "View.MemoryView":1343 + /* "View.MemoryView":1344 * cdef int offset = ndim_other - ndim * * for i in range(ndim - 1, -1, -1): # <<<<<<<<<<<<<< @@ -16415,7 +16318,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic for (__pyx_t_1 = (__pyx_v_ndim - 1); __pyx_t_1 > -1; __pyx_t_1-=1) { __pyx_v_i = __pyx_t_1; - /* "View.MemoryView":1344 + /* "View.MemoryView":1345 * * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] # <<<<<<<<<<<<<< @@ -16424,7 +16327,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->shape[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->shape[__pyx_v_i]); - /* "View.MemoryView":1345 + /* "View.MemoryView":1346 * for i in range(ndim - 1, -1, -1): * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] # <<<<<<<<<<<<<< @@ -16433,7 +16336,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->strides[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->strides[__pyx_v_i]); - /* "View.MemoryView":1346 + /* "View.MemoryView":1347 * mslice.shape[i + offset] = mslice.shape[i] * mslice.strides[i + offset] = mslice.strides[i] * mslice.suboffsets[i + offset] = mslice.suboffsets[i] # <<<<<<<<<<<<<< @@ -16443,7 +16346,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic (__pyx_v_mslice->suboffsets[(__pyx_v_i + __pyx_v_offset)]) = (__pyx_v_mslice->suboffsets[__pyx_v_i]); } - /* "View.MemoryView":1348 + /* "View.MemoryView":1349 * mslice.suboffsets[i + offset] = mslice.suboffsets[i] * * for i in range(offset): # <<<<<<<<<<<<<< @@ -16455,7 +16358,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1349 + /* "View.MemoryView":1350 * * for i in range(offset): * mslice.shape[i] = 1 # <<<<<<<<<<<<<< @@ -16464,7 +16367,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->shape[__pyx_v_i]) = 1; - /* "View.MemoryView":1350 + /* "View.MemoryView":1351 * for i in range(offset): * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] # <<<<<<<<<<<<<< @@ -16473,7 +16376,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic */ (__pyx_v_mslice->strides[__pyx_v_i]) = (__pyx_v_mslice->strides[0]); - /* "View.MemoryView":1351 + /* "View.MemoryView":1352 * mslice.shape[i] = 1 * mslice.strides[i] = mslice.strides[0] * mslice.suboffsets[i] = -1 # <<<<<<<<<<<<<< @@ -16483,7 +16386,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic (__pyx_v_mslice->suboffsets[__pyx_v_i]) = -1L; } - /* "View.MemoryView":1336 + /* "View.MemoryView":1337 * return 0 * * @cname('__pyx_memoryview_broadcast_leading') # <<<<<<<<<<<<<< @@ -16494,7 +16397,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic /* function exit code */ } -/* "View.MemoryView":1358 +/* "View.MemoryView":1359 * * * @cname('__pyx_memoryview_refcount_copying') # <<<<<<<<<<<<<< @@ -16504,7 +16407,7 @@ static void __pyx_memoryview_broadcast_leading(__Pyx_memviewslice *__pyx_v_mslic static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_dtype_is_object, int __pyx_v_ndim, int __pyx_v_inc) { - /* "View.MemoryView":1361 + /* "View.MemoryView":1362 * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -16513,7 +16416,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ if (__pyx_v_dtype_is_object) { - /* "View.MemoryView":1362 + /* "View.MemoryView":1363 * * if dtype_is_object: * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) # <<<<<<<<<<<<<< @@ -16522,7 +16425,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ __pyx_memoryview_refcount_objects_in_slice_with_gil(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1361 + /* "View.MemoryView":1362 * cdef void refcount_copying(__Pyx_memviewslice *dst, bint dtype_is_object, int ndim, bint inc) noexcept nogil: * * if dtype_is_object: # <<<<<<<<<<<<<< @@ -16531,7 +16434,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i */ } - /* "View.MemoryView":1358 + /* "View.MemoryView":1359 * * * @cname('__pyx_memoryview_refcount_copying') # <<<<<<<<<<<<<< @@ -16542,7 +16445,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i /* function exit code */ } -/* "View.MemoryView":1364 +/* "View.MemoryView":1365 * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') # <<<<<<<<<<<<<< @@ -16553,7 +16456,7 @@ static void __pyx_memoryview_refcount_copying(__Pyx_memviewslice *__pyx_v_dst, i static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_data, Py_ssize_t *__pyx_v_shape, Py_ssize_t *__pyx_v_strides, int __pyx_v_ndim, int __pyx_v_inc) { PyGILState_STATE __pyx_gilstate_save = __Pyx_PyGILState_Ensure(); - /* "View.MemoryView":1368 + /* "View.MemoryView":1369 * Py_ssize_t *strides, int ndim, * bint inc) noexcept with gil: * refcount_objects_in_slice(data, shape, strides, ndim, inc) # <<<<<<<<<<<<<< @@ -16562,7 +16465,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da */ __pyx_memoryview_refcount_objects_in_slice(__pyx_v_data, __pyx_v_shape, __pyx_v_strides, __pyx_v_ndim, __pyx_v_inc); - /* "View.MemoryView":1364 + /* "View.MemoryView":1365 * refcount_objects_in_slice_with_gil(dst.data, dst.shape, dst.strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice_with_gil') # <<<<<<<<<<<<<< @@ -16574,7 +16477,7 @@ static void __pyx_memoryview_refcount_objects_in_slice_with_gil(char *__pyx_v_da __Pyx_PyGILState_Release(__pyx_gilstate_save); } -/* "View.MemoryView":1370 +/* "View.MemoryView":1371 * refcount_objects_in_slice(data, shape, strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice') # <<<<<<<<<<<<<< @@ -16590,7 +16493,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss Py_ssize_t __pyx_t_3; int __pyx_t_4; - /* "View.MemoryView":1374 + /* "View.MemoryView":1375 * Py_ssize_t *strides, int ndim, bint inc) noexcept: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< @@ -16599,7 +16502,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ __pyx_v_stride = (__pyx_v_strides[0]); - /* "View.MemoryView":1376 + /* "View.MemoryView":1377 * cdef Py_ssize_t stride = strides[0] * * for i in range(shape[0]): # <<<<<<<<<<<<<< @@ -16611,7 +16514,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; - /* "View.MemoryView":1377 + /* "View.MemoryView":1378 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -16621,7 +16524,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_t_4 = (__pyx_v_ndim == 1); if (__pyx_t_4) { - /* "View.MemoryView":1378 + /* "View.MemoryView":1379 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -16630,7 +16533,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ if (__pyx_v_inc) { - /* "View.MemoryView":1379 + /* "View.MemoryView":1380 * if ndim == 1: * if inc: * Py_INCREF(( data)[0]) # <<<<<<<<<<<<<< @@ -16639,7 +16542,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss */ Py_INCREF((((PyObject **)__pyx_v_data)[0])); - /* "View.MemoryView":1378 + /* "View.MemoryView":1379 * for i in range(shape[0]): * if ndim == 1: * if inc: # <<<<<<<<<<<<<< @@ -16649,7 +16552,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss goto __pyx_L6; } - /* "View.MemoryView":1381 + /* "View.MemoryView":1382 * Py_INCREF(( data)[0]) * else: * Py_DECREF(( data)[0]) # <<<<<<<<<<<<<< @@ -16661,7 +16564,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss } __pyx_L6:; - /* "View.MemoryView":1377 + /* "View.MemoryView":1378 * * for i in range(shape[0]): * if ndim == 1: # <<<<<<<<<<<<<< @@ -16671,7 +16574,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss goto __pyx_L5; } - /* "View.MemoryView":1383 + /* "View.MemoryView":1384 * Py_DECREF(( data)[0]) * else: * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) # <<<<<<<<<<<<<< @@ -16683,7 +16586,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss } __pyx_L5:; - /* "View.MemoryView":1385 + /* "View.MemoryView":1386 * refcount_objects_in_slice(data, shape + 1, strides + 1, ndim - 1, inc) * * data += stride # <<<<<<<<<<<<<< @@ -16693,7 +16596,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } - /* "View.MemoryView":1370 + /* "View.MemoryView":1371 * refcount_objects_in_slice(data, shape, strides, ndim, inc) * * @cname('__pyx_memoryview_refcount_objects_in_slice') # <<<<<<<<<<<<<< @@ -16704,7 +16607,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss /* function exit code */ } -/* "View.MemoryView":1390 +/* "View.MemoryView":1391 * * * @cname('__pyx_memoryview_slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16714,7 +16617,7 @@ static void __pyx_memoryview_refcount_objects_in_slice(char *__pyx_v_data, Py_ss static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst, int __pyx_v_ndim, size_t __pyx_v_itemsize, void *__pyx_v_item, int __pyx_v_dtype_is_object) { - /* "View.MemoryView":1394 + /* "View.MemoryView":1395 * size_t itemsize, void *item, * bint dtype_is_object) noexcept nogil: * refcount_copying(dst, dtype_is_object, ndim, inc=False) # <<<<<<<<<<<<<< @@ -16723,7 +16626,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 0); - /* "View.MemoryView":1395 + /* "View.MemoryView":1396 * bint dtype_is_object) noexcept nogil: * refcount_copying(dst, dtype_is_object, ndim, inc=False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) # <<<<<<<<<<<<<< @@ -16732,7 +16635,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview__slice_assign_scalar(__pyx_v_dst->data, __pyx_v_dst->shape, __pyx_v_dst->strides, __pyx_v_ndim, __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1396 + /* "View.MemoryView":1397 * refcount_copying(dst, dtype_is_object, ndim, inc=False) * _slice_assign_scalar(dst.data, dst.shape, dst.strides, ndim, itemsize, item) * refcount_copying(dst, dtype_is_object, ndim, inc=True) # <<<<<<<<<<<<<< @@ -16741,7 +16644,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst */ __pyx_memoryview_refcount_copying(__pyx_v_dst, __pyx_v_dtype_is_object, __pyx_v_ndim, 1); - /* "View.MemoryView":1390 + /* "View.MemoryView":1391 * * * @cname('__pyx_memoryview_slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16752,7 +16655,7 @@ static void __pyx_memoryview_slice_assign_scalar(__Pyx_memviewslice *__pyx_v_dst /* function exit code */ } -/* "View.MemoryView":1399 +/* "View.MemoryView":1400 * * * @cname('__pyx_memoryview__slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16769,7 +16672,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t Py_ssize_t __pyx_t_3; Py_ssize_t __pyx_t_4; - /* "View.MemoryView":1404 + /* "View.MemoryView":1405 * size_t itemsize, void *item) noexcept nogil: * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] # <<<<<<<<<<<<<< @@ -16778,7 +16681,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_stride = (__pyx_v_strides[0]); - /* "View.MemoryView":1405 + /* "View.MemoryView":1406 * cdef Py_ssize_t i * cdef Py_ssize_t stride = strides[0] * cdef Py_ssize_t extent = shape[0] # <<<<<<<<<<<<<< @@ -16787,7 +16690,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_v_extent = (__pyx_v_shape[0]); - /* "View.MemoryView":1407 + /* "View.MemoryView":1408 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -16797,7 +16700,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_t_1 = (__pyx_v_ndim == 1); if (__pyx_t_1) { - /* "View.MemoryView":1408 + /* "View.MemoryView":1409 * * if ndim == 1: * for i in range(extent): # <<<<<<<<<<<<<< @@ -16809,7 +16712,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1409 + /* "View.MemoryView":1410 * if ndim == 1: * for i in range(extent): * memcpy(data, item, itemsize) # <<<<<<<<<<<<<< @@ -16818,7 +16721,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ (void)(memcpy(__pyx_v_data, __pyx_v_item, __pyx_v_itemsize)); - /* "View.MemoryView":1410 + /* "View.MemoryView":1411 * for i in range(extent): * memcpy(data, item, itemsize) * data += stride # <<<<<<<<<<<<<< @@ -16828,7 +16731,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } - /* "View.MemoryView":1407 + /* "View.MemoryView":1408 * cdef Py_ssize_t extent = shape[0] * * if ndim == 1: # <<<<<<<<<<<<<< @@ -16838,7 +16741,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t goto __pyx_L3; } - /* "View.MemoryView":1412 + /* "View.MemoryView":1413 * data += stride * else: * for i in range(extent): # <<<<<<<<<<<<<< @@ -16851,7 +16754,7 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_i = __pyx_t_4; - /* "View.MemoryView":1413 + /* "View.MemoryView":1414 * else: * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) # <<<<<<<<<<<<<< @@ -16860,19 +16763,18 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t */ __pyx_memoryview__slice_assign_scalar(__pyx_v_data, (__pyx_v_shape + 1), (__pyx_v_strides + 1), (__pyx_v_ndim - 1), __pyx_v_itemsize, __pyx_v_item); - /* "View.MemoryView":1414 + /* "View.MemoryView":1415 * for i in range(extent): * _slice_assign_scalar(data, shape + 1, strides + 1, ndim - 1, itemsize, item) * data += stride # <<<<<<<<<<<<<< * - * */ __pyx_v_data = (__pyx_v_data + __pyx_v_stride); } } __pyx_L3:; - /* "View.MemoryView":1399 + /* "View.MemoryView":1400 * * * @cname('__pyx_memoryview__slice_assign_scalar') # <<<<<<<<<<<<<< @@ -16883,10 +16785,12 @@ static void __pyx_memoryview__slice_assign_scalar(char *__pyx_v_data, Py_ssize_t /* function exit code */ } -/* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError +/* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') */ /* Python wrapper */ @@ -16930,46 +16834,46 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_type,&__pyx_mstate_global->__pyx_n_u_pyx_checksum,&__pyx_mstate_global->__pyx_n_u_pyx_state,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 1, __pyx_L3_error) + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 4, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 1, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 1, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 1, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_Enum", 0) < 0) __PYX_ERR(1, 1, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__pyx_unpickle_Enum", 0) < (0)) __PYX_ERR(1, 4, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, i); __PYX_ERR(1, 1, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, i); __PYX_ERR(1, 4, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 1, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 4, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 1, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(1, 4, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 1, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(1, 4, __pyx_L3_error) } __pyx_v___pyx_type = values[0]; - __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 1, __pyx_L3_error) - __pyx_v___pyx_state = values[2]; + __pyx_v___pyx_checksum = __Pyx_PyLong_As_long(values[1]); if (unlikely((__pyx_v___pyx_checksum == (long)-1) && PyErr_Occurred())) __PYX_ERR(1, 4, __pyx_L3_error) + __pyx_v___pyx_state = ((PyObject*)values[2]); } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 1, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("__pyx_unpickle_Enum", 1, 3, 3, __pyx_nargs); __PYX_ERR(1, 4, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -16980,93 +16884,52 @@ PyObject *__pyx_args, PyObject *__pyx_kwds __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v___pyx_state), (&PyTuple_Type), 1, "__pyx_state", 1))) __PYX_ERR(1, 4, __pyx_L1_error) __pyx_r = __pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(__pyx_self, __pyx_v___pyx_type, __pyx_v___pyx_checksum, __pyx_v___pyx_state); /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { + Py_XDECREF(values[__pyx_temp]); + } + goto __pyx_L7_cleaned_up; + __pyx_L0:; for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) { Py_XDECREF(values[__pyx_temp]); } + __pyx_L7_cleaned_up:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v___pyx_type, long __pyx_v___pyx_checksum, PyObject *__pyx_v___pyx_state) { - PyObject *__pyx_v___pyx_PickleError = 0; PyObject *__pyx_v___pyx_result = 0; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations - PyObject *__pyx_t_1 = NULL; - int __pyx_t_2; + int __pyx_t_1; + PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; size_t __pyx_t_4; + int __pyx_t_5; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("__pyx_unpickle_Enum", 0); - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum -*/ - __pyx_t_1 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_mstate_global->__pyx_tuple[1], Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (__pyx_t_2) { - - /* "(tree fragment)":5 + /* "(tree fragment)":6 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): - * from pickle import PickleError as __pyx_PickleError # <<<<<<<<<<<<<< - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum - * __pyx_result = Enum.__new__(__pyx_type) -*/ - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_PickleError); - __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_PickleError); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_mstate_global->__pyx_n_u_PickleError) != (0)) __PYX_ERR(1, 5, __pyx_L1_error); - __pyx_t_3 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_pickle, __pyx_t_1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PickleError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 5, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_INCREF(__pyx_t_1); - __pyx_v___pyx_PickleError = __pyx_t_1; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - - /* "(tree fragment)":6 - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum # <<<<<<<<<<<<<< + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') # <<<<<<<<<<<<<< * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: */ - __pyx_t_3 = __Pyx_PyLong_From_long(__pyx_v___pyx_checksum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyUnicode_Format(__pyx_mstate_global->__pyx_kp_u_Incompatible_checksums_0x_x_vs_0, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 6, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - __Pyx_Raise(__pyx_v___pyx_PickleError, __pyx_t_1, 0, 0); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(1, 6, __pyx_L1_error) - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum -*/ - } + __pyx_t_1 = __Pyx_CheckUnpickleChecksum(__pyx_v___pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, __pyx_k_name); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 6, __pyx_L1_error) /* "(tree fragment)":7 - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum + * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') * __pyx_result = Enum.__new__(__pyx_type) # <<<<<<<<<<<<<< * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) @@ -17076,38 +16939,41 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE __pyx_t_4 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v___pyx_type}; - __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_new, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 7, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); } - __pyx_v___pyx_result = __pyx_t_1; - __pyx_t_1 = 0; + __pyx_v___pyx_result = __pyx_t_2; + __pyx_t_2 = 0; /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result */ - __pyx_t_2 = (__pyx_v___pyx_state != Py_None); - if (__pyx_t_2) { + __pyx_t_5 = (__pyx_v___pyx_state != ((PyObject*)Py_None)); + if (__pyx_t_5) { /* "(tree fragment)":9 * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) # <<<<<<<<<<<<<< * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): */ - if (!(likely(PyTuple_CheckExact(__pyx_v___pyx_state))||((__pyx_v___pyx_state) == Py_None) || __Pyx_RaiseUnexpectedTypeError("tuple", __pyx_v___pyx_state))) __PYX_ERR(1, 9, __pyx_L1_error) - __pyx_t_1 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), ((PyObject*)__pyx_v___pyx_state)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 9, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + if (unlikely(__pyx_v___pyx_state == Py_None)) { + PyErr_SetString(PyExc_TypeError, "cannot pass None into a C function argument that is declared 'not None'"); + __PYX_ERR(1, 9, __pyx_L1_error) + } + __pyx_t_2 = __pyx_unpickle_Enum__set_state(((struct __pyx_MemviewEnum_obj *)__pyx_v___pyx_result), __pyx_v___pyx_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 9, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "(tree fragment)":8 - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') * __pyx_result = Enum.__new__(__pyx_type) * if __pyx_state is not None: # <<<<<<<<<<<<<< * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) @@ -17119,7 +16985,7 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE * if __pyx_state is not None: * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result # <<<<<<<<<<<<<< - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): * __pyx_result.name = __pyx_state[0] */ __Pyx_XDECREF(__pyx_r); @@ -17127,20 +16993,21 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE __pyx_r = __pyx_v___pyx_result; goto __pyx_L0; - /* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') */ /* function exit code */ __pyx_L1_error:; - __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; - __Pyx_XDECREF(__pyx_v___pyx_PickleError); __Pyx_XDECREF(__pyx_v___pyx_result); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); @@ -17150,9 +17017,9 @@ static PyObject *__pyx_pf_15View_dot_MemoryView___pyx_unpickle_Enum(CYTHON_UNUSE /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) */ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__pyx_v___pyx_result, PyObject *__pyx_v___pyx_state) { @@ -17160,12 +17027,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; - Py_ssize_t __pyx_t_3; - int __pyx_t_4; - PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - PyObject *__pyx_t_7 = NULL; - size_t __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -17173,16 +17034,11 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ /* "(tree fragment)":12 * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): * __pyx_result.name = __pyx_state[0] # <<<<<<<<<<<<<< - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) */ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 12, __pyx_L1_error) - } - __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) + __pyx_t_1 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1, __Pyx_ReferenceSharing_FunctionArgument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v___pyx_result->name); @@ -17191,68 +17047,18 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ __pyx_t_1 = 0; /* "(tree fragment)":13 - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) -*/ - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); - __PYX_ERR(1, 13, __pyx_L1_error) - } - __pyx_t_3 = __Pyx_PyTuple_GET_SIZE(__pyx_v___pyx_state); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_4 = (__pyx_t_3 > 1); - if (__pyx_t_4) { - } else { - __pyx_t_2 = __pyx_t_4; - goto __pyx_L4_bool_binop_done; - } - __pyx_t_4 = __Pyx_HasAttr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) - __pyx_t_2 = __pyx_t_4; - __pyx_L4_bool_binop_done:; - if (__pyx_t_2) { - - /* "(tree fragment)":14 - * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): - * __pyx_result.__dict__.update(__pyx_state[1]) # <<<<<<<<<<<<<< -*/ - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v___pyx_result), __pyx_mstate_global->__pyx_n_u_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __pyx_t_5 = __pyx_t_6; - __Pyx_INCREF(__pyx_t_5); - if (unlikely(__pyx_v___pyx_state == Py_None)) { - PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable"); - __PYX_ERR(1, 14, __pyx_L1_error) - } - __pyx_t_7 = __Pyx_GetItemInt_Tuple(__pyx_v___pyx_state, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = 0; - { - PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7}; - __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_update, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 14, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "(tree fragment)":13 - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): # <<<<<<<<<<<<<< - * __pyx_result.__dict__.update(__pyx_state[1]) + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) # <<<<<<<<<<<<<< */ - } + __pyx_t_2 = __Pyx_UpdateUnpickledDict(((PyObject *)__pyx_v___pyx_result), __pyx_v___pyx_state, 1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(1, 13, __pyx_L1_error) /* "(tree fragment)":11 * __pyx_unpickle_Enum__set_state( __pyx_result, __pyx_state) * return __pyx_result - * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, tuple __pyx_state): # <<<<<<<<<<<<<< + * cdef __pyx_unpickle_Enum__set_state(Enum __pyx_result, __pyx_state: tuple): # <<<<<<<<<<<<<< * __pyx_result.name = __pyx_state[0] - * if len(__pyx_state) > 1 and hasattr(__pyx_result, '__dict__'): + * __Pyx_UpdateUnpickledDict(__pyx_result, __pyx_state, 1) */ /* function exit code */ @@ -17260,9 +17066,6 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); - __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); - __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("View.MemoryView.__pyx_unpickle_Enum__set_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; @@ -17271,7 +17074,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17282,7 +17085,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":287 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":245 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -17292,7 +17095,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D __pyx_r = PyDataType_ELSIZE(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17305,7 +17108,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17316,7 +17119,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":291 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -17326,7 +17129,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":289 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17339,7 +17142,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17353,7 +17156,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("fields", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":297 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -17366,7 +17169,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc __pyx_r = ((PyObject *)__pyx_t_1); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17381,7 +17184,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17395,7 +17198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("names", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":301 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -17408,7 +17211,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr __pyx_r = ((PyObject*)__pyx_t_1); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":299 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17423,7 +17226,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":306 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17434,7 +17237,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":308 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":266 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -17444,7 +17247,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra __pyx_r = PyDataType_SUBARRAY(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":306 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17457,7 +17260,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17468,7 +17271,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":313 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -17478,7 +17281,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr __pyx_r = PyDataType_FLAGS(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":310 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17491,7 +17294,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17502,7 +17305,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":325 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -17512,7 +17315,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":322 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17525,7 +17328,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17536,7 +17339,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":330 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":288 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -17546,7 +17349,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17559,7 +17362,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17570,7 +17373,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":293 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -17580,7 +17383,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":332 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17593,7 +17396,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":337 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17604,7 +17407,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":340 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":298 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -17614,7 +17417,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":337 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17627,7 +17430,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":342 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17638,7 +17441,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":345 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":303 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -17648,7 +17451,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":342 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17661,7 +17464,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17672,7 +17475,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":351 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":309 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -17682,7 +17485,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17695,7 +17498,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":365 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17706,7 +17509,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -17716,7 +17519,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject __pyx_r = PyArray_BASE(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":365 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17729,7 +17532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":371 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17743,7 +17546,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("descr", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":375 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -17756,7 +17559,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray __pyx_r = ((PyArray_Descr *)__pyx_t_1); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":371 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17771,7 +17574,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":377 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17782,7 +17585,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":381 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -17792,7 +17595,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx __pyx_r = PyArray_NDIM(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":377 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17805,7 +17608,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":383 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17816,7 +17619,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":389 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -17826,7 +17629,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec __pyx_r = PyArray_DIMS(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":383 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17839,7 +17642,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":391 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17850,7 +17653,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":396 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":354 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -17860,7 +17663,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO __pyx_r = PyArray_STRIDES(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":391 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17873,7 +17676,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":398 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17884,7 +17687,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":402 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":360 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -17894,7 +17697,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * __pyx_r = PyArray_SIZE(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":398 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17907,7 +17710,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":404 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17918,7 +17721,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":411 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -17928,7 +17731,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p __pyx_r = PyArray_BYTES(__pyx_v_self); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":404 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17941,7 +17744,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17958,7 +17761,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":808 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17966,13 +17769,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ * cdef inline object PyArray_MultiIterNew2(a, b): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 808, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 778, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":807 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17991,7 +17794,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -18008,7 +17811,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":811 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":781 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -18016,13 +17819,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ * cdef inline object PyArray_MultiIterNew3(a, b, c): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 811, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":810 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -18041,7 +17844,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -18058,7 +17861,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":814 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -18066,13 +17869,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ * cdef inline object PyArray_MultiIterNew4(a, b, c, d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 814, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 784, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":813 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -18091,7 +17894,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":816 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -18108,7 +17911,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":817 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -18116,13 +17919,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 817, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":816 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -18141,7 +17944,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":819 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -18158,7 +17961,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":820 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":790 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -18166,13 +17969,13 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ * cdef inline tuple PyDataType_SHAPE(dtype d): */ __Pyx_XDECREF(__pyx_r); - __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 820, __pyx_L1_error) + __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":819 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -18191,7 +17994,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":822 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18206,7 +18009,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":823 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18216,7 +18019,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); if (__pyx_t_1) { - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":824 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -18229,7 +18032,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_t_2); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":823 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18238,7 +18041,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":826 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -18252,7 +18055,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":822 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18267,7 +18070,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18281,7 +18084,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -18290,16 +18093,16 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1012 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":997 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< * * cdef inline object get_array_base(ndarray arr): */ - __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 1012, __pyx_L1_error) + __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 997, __pyx_L1_error) - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18314,7 +18117,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_L0:; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18329,7 +18132,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -18338,7 +18141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18348,7 +18151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = (__pyx_v_base == NULL); if (__pyx_t_1) { - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -18359,7 +18162,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18368,7 +18171,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1018 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1003 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -18380,7 +18183,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18395,7 +18198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18415,14 +18218,13 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - size_t __pyx_t_11; + size_t __pyx_t_10; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18438,16 +18240,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1024 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy._core.multiarray failed to import") */ - __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1024, __pyx_L3_error) + __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1009, __pyx_L3_error) - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18461,7 +18263,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1025 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -18471,12 +18273,12 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1025, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1010, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -18484,24 +18286,21 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { * cdef inline int import_umath() except -1: */ __pyx_t_9 = NULL; - __Pyx_INCREF(__pyx_builtin_ImportError); - __pyx_t_10 = __pyx_builtin_ImportError; - __pyx_t_11 = 1; + __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_multiarray_failed_to}; - __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1026, __pyx_L5_except_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1011, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); } __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1026, __pyx_L5_except_error) + __PYX_ERR(2, 1011, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18517,7 +18316,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18534,7 +18333,6 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("numpy.import_array", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -18542,7 +18340,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18562,14 +18360,13 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - size_t __pyx_t_11; + size_t __pyx_t_10; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18585,16 +18382,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1030 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy._core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1030, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1015, __pyx_L3_error) - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18608,7 +18405,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1031 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18618,12 +18415,12 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1031, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1016, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1032 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18631,24 +18428,21 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { * cdef inline int import_ufunc() except -1: */ __pyx_t_9 = NULL; - __Pyx_INCREF(__pyx_builtin_ImportError); - __pyx_t_10 = __pyx_builtin_ImportError; - __pyx_t_11 = 1; + __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo}; - __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1032, __pyx_L5_except_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1017, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); } __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1032, __pyx_L5_except_error) + __PYX_ERR(2, 1017, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1029 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18664,7 +18458,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1028 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18681,7 +18475,6 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("numpy.import_umath", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -18689,7 +18482,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18709,14 +18502,13 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; - PyObject *__pyx_t_10 = NULL; - size_t __pyx_t_11; + size_t __pyx_t_10; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18732,16 +18524,16 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1036 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< * except Exception: * raise ImportError("numpy._core.umath failed to import") */ - __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1036, __pyx_L3_error) + __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1021, __pyx_L3_error) - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18755,7 +18547,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1037 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18765,12 +18557,12 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_t_4 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (__pyx_t_4) { __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1037, __pyx_L5_except_error) + if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(2, 1022, __pyx_L5_except_error) __Pyx_XGOTREF(__pyx_t_5); __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18778,24 +18570,21 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { * */ __pyx_t_9 = NULL; - __Pyx_INCREF(__pyx_builtin_ImportError); - __pyx_t_10 = __pyx_builtin_ImportError; - __pyx_t_11 = 1; + __pyx_t_10 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_numpy__core_umath_failed_to_impo}; - __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_11, (2-__pyx_t_11) | (__pyx_t_11*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_8 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_ImportError)), __pyx_callargs+__pyx_t_10, (2-__pyx_t_10) | (__pyx_t_10*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; - __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1038, __pyx_L5_except_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 1023, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_8); } __Pyx_Raise(__pyx_t_8, 0, 0, 0); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - __PYX_ERR(2, 1038, __pyx_L5_except_error) + __PYX_ERR(2, 1023, __pyx_L5_except_error) } goto __pyx_L5_except_error; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1035 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18811,7 +18600,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1034 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18828,7 +18617,6 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_9); - __Pyx_XDECREF(__pyx_t_10); __Pyx_AddTraceback("numpy.import_ufunc", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = -1; __pyx_L0:; @@ -18836,7 +18624,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18847,7 +18635,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -18857,7 +18645,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18870,7 +18658,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18881,7 +18669,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1068 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -18891,7 +18679,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18904,7 +18692,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18915,7 +18703,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1078 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1063 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18925,7 +18713,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1071 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18938,7 +18726,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18949,7 +18737,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1085 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18959,7 +18747,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1081 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18972,7 +18760,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1088 +/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18983,7 +18771,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1092 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -18993,7 +18781,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* "../../miniconda3/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1088 + /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -19080,7 +18868,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "inpoly2_fast", 0) < 0) __PYX_ERR(0, 16, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "inpoly2_fast", 0) < (0)) __PYX_ERR(0, 16, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 4; i++) { if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("inpoly2_fast", 1, 4, 4, i); __PYX_ERR(0, 16, __pyx_L3_error) } } @@ -19312,8 +19100,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, ((PyObject *)__pyx_v_vert)}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 43, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_7, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 43, __pyx_L1_error) - __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_7, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 43, __pyx_L1_error) + __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19402,8 +19190,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, ((PyObject *)__pyx_v_node)}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 45, __pyx_L1_error) - __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 45, __pyx_L1_error) + __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19492,8 +19280,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, ((PyObject *)__pyx_v_edge)}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 47, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 47, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 47, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -19585,8 +19373,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_5}; __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 52, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_6, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 52, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 52, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -19643,8 +19431,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, __pyx_t_6}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 53, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 53, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_13, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_1, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 53, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_13, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -19737,8 +19525,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_13, __pyx_t_5}; __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_6, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 64, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_2, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 64, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; @@ -19795,8 +19583,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, __pyx_t_6}; __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 65, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_5, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 65, __pyx_L1_error) - __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_dtype, __pyx_t_13, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 65, __pyx_L1_error) + __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; @@ -20471,8 +20259,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject*)&PyBool_Type)}; - __pyx_t_7 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)(&PyBool_Type))}; + __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); @@ -20490,8 +20278,8 @@ static PyObject *__pyx_pf_9oceanmesh_8geometry_17point_in_polygon__inpoly2_fast( __Pyx_INCREF(__pyx_t_2); __pyx_t_8 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject*)&PyBool_Type)}; - __pyx_t_7 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)(&PyBool_Type))}; + __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_astype, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); @@ -20584,17 +20372,8 @@ static struct __pyx_vtabstruct_array __pyx_vtable_array; static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_array_obj *p; PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); - } + o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - #endif p = ((struct __pyx_array_obj *)o); p->__pyx_vtab = __pyx_vtabptr_array; p->mode = ((PyObject*)Py_None); Py_INCREF(Py_None); @@ -20609,7 +20388,7 @@ static PyObject *__pyx_tp_new_array(PyTypeObject *t, PyObject *a, PyObject *k) { static void __pyx_tp_dealloc_array(PyObject *o) { struct __pyx_array_obj *p = (struct __pyx_array_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_array) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -20625,14 +20404,18 @@ static void __pyx_tp_dealloc_array(PyObject *o) { } Py_CLEAR(p->mode); Py_CLEAR(p->_format); + PyTypeObject *tp = Py_TYPE(o); #if CYTHON_USE_TYPE_SLOTS - (*Py_TYPE(o)->tp_free)(o); + (*tp->tp_free)(o); #else { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); if (tp_free) tp_free(o); } #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif } static PyObject *__pyx_sq_item_array(PyObject *o, Py_ssize_t i) { @@ -20748,12 +20531,7 @@ static PyTypeObject __pyx_type___pyx_array = { sizeof(struct __pyx_array_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_array, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ - #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -20802,7 +20580,7 @@ static PyTypeObject __pyx_type___pyx_array = { #else NULL, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -20823,17 +20601,8 @@ static PyTypeObject __pyx_type___pyx_array = { static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { struct __pyx_MemviewEnum_obj *p; PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); - } + o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - #endif p = ((struct __pyx_MemviewEnum_obj *)o); p->name = Py_None; Py_INCREF(Py_None); return o; @@ -20842,7 +20611,7 @@ static PyObject *__pyx_tp_new_Enum(PyTypeObject *t, CYTHON_UNUSED PyObject *a, C static void __pyx_tp_dealloc_Enum(PyObject *o) { struct __pyx_MemviewEnum_obj *p = (struct __pyx_MemviewEnum_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_Enum) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -20850,14 +20619,18 @@ static void __pyx_tp_dealloc_Enum(PyObject *o) { #endif PyObject_GC_UnTrack(o); Py_CLEAR(p->name); + PyTypeObject *tp = Py_TYPE(o); #if CYTHON_USE_TYPE_SLOTS - (*Py_TYPE(o)->tp_free)(o); + (*tp->tp_free)(o); #else { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); if (tp_free) tp_free(o); } #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif } static int __pyx_tp_traverse_Enum(PyObject *o, visitproc v, void *a) { @@ -20913,12 +20686,7 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { sizeof(struct __pyx_MemviewEnum_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_Enum, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ - #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -20967,7 +20735,7 @@ static PyTypeObject __pyx_type___pyx_MemviewEnum = { #else NULL, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -20989,22 +20757,12 @@ static struct __pyx_vtabstruct_memoryview __pyx_vtable_memoryview; static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject *k) { struct __pyx_memoryview_obj *p; PyObject *o; - #if CYTHON_COMPILING_IN_LIMITED_API - allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc); - o = alloc_func(t, 0); - #else - if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { - o = (*t->tp_alloc)(t, 0); - } else { - o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); - } + o = __Pyx_AllocateExtensionType(t, 0); if (unlikely(!o)) return 0; - #endif p = ((struct __pyx_memoryview_obj *)o); p->__pyx_vtab = __pyx_vtabptr_memoryview; p->obj = Py_None; Py_INCREF(Py_None); p->_size = Py_None; Py_INCREF(Py_None); - p->_array_interface = Py_None; Py_INCREF(Py_None); p->view.obj = NULL; if (unlikely(__pyx_memoryview___cinit__(o, a, k) < 0)) goto bad; return o; @@ -21016,7 +20774,7 @@ static PyObject *__pyx_tp_new_memoryview(PyTypeObject *t, PyObject *a, PyObject static void __pyx_tp_dealloc_memoryview(PyObject *o) { struct __pyx_memoryview_obj *p = (struct __pyx_memoryview_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_memoryview) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -21033,15 +20791,18 @@ static void __pyx_tp_dealloc_memoryview(PyObject *o) { } Py_CLEAR(p->obj); Py_CLEAR(p->_size); - Py_CLEAR(p->_array_interface); + PyTypeObject *tp = Py_TYPE(o); #if CYTHON_USE_TYPE_SLOTS - (*Py_TYPE(o)->tp_free)(o); + (*tp->tp_free)(o); #else { - freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free); + freefunc tp_free = (freefunc)PyType_GetSlot(tp, Py_tp_free); if (tp_free) tp_free(o); } #endif + #if CYTHON_USE_TYPE_SPECS + Py_DECREF(tp); + #endif } static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { @@ -21057,9 +20818,6 @@ static int __pyx_tp_traverse_memoryview(PyObject *o, visitproc v, void *a) { if (p->_size) { e = (*v)(p->_size, a); if (e) return e; } - if (p->_array_interface) { - e = (*v)(p->_array_interface, a); if (e) return e; - } if (p->view.obj) { e = (*v)(p->view.obj, a); if (e) return e; } @@ -21075,9 +20833,6 @@ static int __pyx_tp_clear_memoryview(PyObject *o) { tmp = ((PyObject*)p->_size); p->_size = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); - tmp = ((PyObject*)p->_array_interface); - p->_array_interface = Py_None; Py_INCREF(Py_None); - Py_XDECREF(tmp); Py_CLEAR(p->view.obj); return 0; } @@ -21232,12 +20987,7 @@ static PyTypeObject __pyx_type___pyx_memoryview = { sizeof(struct __pyx_memoryview_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_memoryview, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ - #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -21286,7 +21036,7 @@ static PyTypeObject __pyx_type___pyx_memoryview = { #else NULL, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -21319,7 +21069,7 @@ static PyObject *__pyx_tp_new__memoryviewslice(PyTypeObject *t, PyObject *a, PyO static void __pyx_tp_dealloc__memoryviewslice(PyObject *o) { struct __pyx_memoryviewslice_obj *p = (struct __pyx_memoryviewslice_obj *)o; #if CYTHON_USE_TP_FINALIZE - if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { + if (unlikely(__Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) { if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc__memoryviewslice) { if (PyObject_CallFinalizerFromDealloc(o)) return; } @@ -21390,12 +21140,7 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { sizeof(struct __pyx_memoryviewslice_obj), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc__memoryviewslice, /*tp_dealloc*/ - #if PY_VERSION_HEX < 0x030800b4 - 0, /*tp_print*/ - #endif - #if PY_VERSION_HEX >= 0x030800b4 0, /*tp_vectorcall_offset*/ - #endif 0, /*tp_getattr*/ 0, /*tp_setattr*/ 0, /*tp_as_async*/ @@ -21452,7 +21197,7 @@ static PyTypeObject __pyx_type___pyx_memoryviewslice = { #else NULL, /*tp_finalize*/ #endif - #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800) + #if !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800 0, /*tp_vectorcall*/ #endif #if __PYX_NEED_TP_PRINT_SLOT == 1 @@ -21546,35 +21291,41 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { #else #warning "The buffer protocol is not supported in the Limited C-API < 3.11." #endif - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_array_spec, __pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_array_spec, __pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) #else __pyx_mstate->__pyx_array_type = &__pyx_type___pyx_array; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_array_type, __pyx_vtabptr_array) < 0) __PYX_ERR(1, 110, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_array_type) < 0) __PYX_ERR(1, 110, __pyx_L1_error) + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_array_type); + #endif + if (__Pyx_SetVtable(__pyx_mstate->__pyx_array_type, __pyx_vtabptr_array) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_array_type) < (0)) __PYX_ERR(1, 110, __pyx_L1_error) #if CYTHON_USE_TYPE_SPECS __pyx_mstate->__pyx_MemviewEnum_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_MemviewEnum_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_MemviewEnum_type)) __PYX_ERR(1, 299, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_MemviewEnum_spec, __pyx_mstate->__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 299, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_MemviewEnum_spec, __pyx_mstate->__pyx_MemviewEnum_type) < (0)) __PYX_ERR(1, 299, __pyx_L1_error) #else __pyx_mstate->__pyx_MemviewEnum_type = &__pyx_type___pyx_MemviewEnum; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 299, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_MemviewEnum_type) < (0)) __PYX_ERR(1, 299, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_MemviewEnum_type); #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_MemviewEnum_type->tp_dictoffset && __pyx_mstate->__pyx_MemviewEnum_type->tp_getattro == PyObject_GenericGetAttr)) { __pyx_mstate->__pyx_MemviewEnum_type->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_MemviewEnum_type) < 0) __PYX_ERR(1, 299, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_MemviewEnum_type) < (0)) __PYX_ERR(1, 299, __pyx_L1_error) __pyx_vtabptr_memoryview = &__pyx_vtable_memoryview; __pyx_vtable_memoryview.get_item_pointer = (char *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_get_item_pointer; __pyx_vtable_memoryview.is_slice = (PyObject *(*)(struct __pyx_memoryview_obj *, PyObject *))__pyx_memoryview_is_slice; @@ -21598,35 +21349,38 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { #else #warning "The buffer protocol is not supported in the Limited C-API < 3.11." #endif - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryview_spec, __pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryview_spec, __pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) #else __pyx_mstate->__pyx_memoryview_type = &__pyx_type___pyx_memoryview; #endif #if !CYTHON_COMPILING_IN_LIMITED_API #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_memoryview_type); #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_memoryview_type->tp_dictoffset && __pyx_mstate->__pyx_memoryview_type->tp_getattro == PyObject_GenericGetAttr)) { __pyx_mstate->__pyx_memoryview_type->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryview_type, __pyx_vtabptr_memoryview) < 0) __PYX_ERR(1, 334, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryview_type) < 0) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryview_type, __pyx_vtabptr_memoryview) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryview_type) < (0)) __PYX_ERR(1, 334, __pyx_L1_error) __pyx_vtabptr__memoryviewslice = &__pyx_vtable__memoryviewslice; __pyx_vtable__memoryviewslice.__pyx_base = *__pyx_vtabptr_memoryview; __pyx_vtable__memoryviewslice.__pyx_base.convert_item_to_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *))__pyx_memoryviewslice_convert_item_to_object; __pyx_vtable__memoryviewslice.__pyx_base.assign_item_from_object = (PyObject *(*)(struct __pyx_memoryview_obj *, char *, PyObject *))__pyx_memoryviewslice_assign_item_from_object; __pyx_vtable__memoryviewslice.__pyx_base._get_base = (PyObject *(*)(struct __pyx_memoryview_obj *))__pyx_memoryviewslice__get_base; #if CYTHON_USE_TYPE_SPECS - __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_memoryview_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 950, __pyx_L1_error) + __pyx_t_1 = PyTuple_Pack(1, (PyObject *)__pyx_mstate_global->__pyx_memoryview_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_mstate->__pyx_memoryviewslice_type = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type___pyx_memoryviewslice_spec, __pyx_t_1); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_mstate->__pyx_memoryviewslice_type)) __PYX_ERR(1, 950, __pyx_L1_error) - if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryviewslice_spec, __pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) + if (unlikely(!__pyx_mstate->__pyx_memoryviewslice_type)) __PYX_ERR(1, 951, __pyx_L1_error) + if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type___pyx_memoryviewslice_spec, __pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) #else __pyx_mstate->__pyx_memoryviewslice_type = &__pyx_type___pyx_memoryviewslice; #endif @@ -21634,16 +21388,19 @@ static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) { __pyx_mstate_global->__pyx_memoryviewslice_type->tp_base = __pyx_mstate_global->__pyx_memoryview_type; #endif #if !CYTHON_USE_TYPE_SPECS - if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) + if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) + #endif + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount((PyObject*)__pyx_mstate->__pyx_memoryviewslice_type); #endif #if !CYTHON_COMPILING_IN_LIMITED_API if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_memoryviewslice_type->tp_dictoffset && __pyx_mstate->__pyx_memoryviewslice_type->tp_getattro == PyObject_GenericGetAttr)) { __pyx_mstate->__pyx_memoryviewslice_type->tp_getattro = PyObject_GenericGetAttr; } #endif - if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryviewslice_type, __pyx_vtabptr__memoryviewslice) < 0) __PYX_ERR(1, 950, __pyx_L1_error) - if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) - if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryviewslice_type) < 0) __PYX_ERR(1, 950, __pyx_L1_error) + if (__Pyx_SetVtable(__pyx_mstate->__pyx_memoryviewslice_type, __pyx_vtabptr__memoryviewslice) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) + if (__Pyx_MergeVtables(__pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) + if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_memoryviewslice_type) < (0)) __PYX_ERR(1, 951, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -21663,153 +21420,153 @@ static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) { /*--- Type import code ---*/ __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 9, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_1_4(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", + __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_2_3(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyTypeObject), + sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyTypeObject), #elif CYTHON_COMPILING_IN_LIMITED_API 0, 0, #else - sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyHeapTypeObject), + sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyHeapTypeObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(3, 9, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 271, __pyx_L1_error) + __pyx_t_1 = PyImport_ImportModule("numpy"); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_mstate->__pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "dtype", + __pyx_mstate->__pyx_ptype_5numpy_dtype = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "dtype", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArray_Descr), + sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArray_Descr), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArray_Descr), + sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArray_Descr), #else - sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArray_Descr), + sizeof(PyArray_Descr), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArray_Descr), #endif - __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 271, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "flatiter", + __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_dtype) __PYX_ERR(2, 229, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_flatiter = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "flatiter", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayIterObject), + sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayIterObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayIterObject), + sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayIterObject), #else - sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayIterObject), + sizeof(PyArrayIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayIterObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 316, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "broadcast", + __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_flatiter) __PYX_ERR(2, 274, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_broadcast = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "broadcast", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayMultiIterObject), + sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayMultiIterObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayMultiIterObject), + sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayMultiIterObject), #else - sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayMultiIterObject), + sizeof(PyArrayMultiIterObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayMultiIterObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 320, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "ndarray", + __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_broadcast) __PYX_ERR(2, 278, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_ndarray = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "ndarray", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayObject), + sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayObject), + sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject), #else - sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyArrayObject), + sizeof(PyArrayObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyArrayObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 359, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_generic = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "generic", + __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_ndarray) __PYX_ERR(2, 317, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_generic = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "generic", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_generic) __PYX_ERR(2, 848, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_number = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "number", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_generic) __PYX_ERR(2, 826, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_number = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "number", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_number) __PYX_ERR(2, 850, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_integer = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "integer", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_number) __PYX_ERR(2, 828, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_integer = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "integer", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_integer) __PYX_ERR(2, 852, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "signedinteger", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_integer) __PYX_ERR(2, 830, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_signedinteger = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "signedinteger", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 854, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "unsignedinteger", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_signedinteger) __PYX_ERR(2, 832, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_unsignedinteger = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "unsignedinteger", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 856, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "inexact", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_unsignedinteger) __PYX_ERR(2, 834, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_inexact = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "inexact", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 858, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_floating = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "floating", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_inexact) __PYX_ERR(2, 836, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_floating = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "floating", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_floating) __PYX_ERR(2, 860, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "complexfloating", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_floating) __PYX_ERR(2, 838, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_complexfloating = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "complexfloating", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 862, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "flexible", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_complexfloating) __PYX_ERR(2, 840, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_flexible = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "flexible", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 864, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_character = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "character", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_flexible) __PYX_ERR(2, 842, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_character = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "character", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #else - sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyObject), + sizeof(PyObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyObject), #endif - __Pyx_ImportType_CheckSize_Warn_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_character) __PYX_ERR(2, 866, __pyx_L1_error) - __pyx_mstate->__pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_1_4(__pyx_t_1, "numpy", "ufunc", + __Pyx_ImportType_CheckSize_Warn_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_character) __PYX_ERR(2, 844, __pyx_L1_error) + __pyx_mstate->__pyx_ptype_5numpy_ufunc = __Pyx_ImportType_3_2_3(__pyx_t_1, "numpy", "ufunc", #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000 - sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyUFuncObject), + sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyUFuncObject), #elif CYTHON_COMPILING_IN_LIMITED_API - sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyUFuncObject), + sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyUFuncObject), #else - sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_4(PyUFuncObject), + sizeof(PyUFuncObject), __PYX_GET_STRUCT_ALIGNMENT_3_2_3(PyUFuncObject), #endif - __Pyx_ImportType_CheckSize_Ignore_3_1_4); if (!__pyx_mstate->__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 930, __pyx_L1_error) + __Pyx_ImportType_CheckSize_Ignore_3_2_3); if (!__pyx_mstate->__pyx_ptype_5numpy_ufunc) __PYX_ERR(2, 908, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_RefNannyFinishContext(); return 0; @@ -21844,7 +21601,7 @@ static PyModuleDef_Slot __pyx_moduledef_slots[] = { {Py_mod_create, (void*)__pyx_pymod_create}, {Py_mod_exec, (void*)__pyx_pymod_exec_point_in_polygon_}, #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - {Py_mod_gil, Py_MOD_GIL_USED}, + {Py_mod_gil, __Pyx_FREETHREADING_COMPATIBLE}, #endif #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED}, @@ -21906,7 +21663,8 @@ __Pyx_PyMODINIT_FUNC PyInit_point_in_polygon_(void) return PyModuleDef_Init(&__pyx_moduledef); } /* ModuleCreationPEP489 */ -#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 +#if CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ + || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { { PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think @@ -21936,12 +21694,15 @@ static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) { #if !CYTHON_USE_MODULE_STATE static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) { static PY_INT64_T main_interpreter_id = -1; -#if CYTHON_COMPILING_IN_GRAAL +#if CYTHON_COMPILING_IN_GRAAL && defined(GRAALPY_VERSION_NUM) && GRAALPY_VERSION_NUM > 0x19000000 + PY_INT64_T current_id = GraalPyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); +#elif CYTHON_COMPILING_IN_GRAAL PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get()); -#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x03090000 - PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get()); -#elif CYTHON_COMPILING_IN_LIMITED_API +#elif CYTHON_COMPILING_IN_LIMITED_API && (__PYX_LIMITED_VERSION_HEX < 0x03090000\ + || ((defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)) && __PYX_LIMITED_VERSION_HEX < 0x030A0000)) PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId(); +#elif CYTHON_COMPILING_IN_LIMITED_API + PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get()); #else PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp); #endif @@ -22016,10 +21777,9 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_point_in_polygon_(PyObject *__pyx_ PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; - PyObject *__pyx_t_6 = NULL; - size_t __pyx_t_7; - static PyThread_type_lock __pyx_t_8[8]; - int __pyx_t_9; + size_t __pyx_t_6; + static PyThread_type_lock __pyx_t_7[8]; + int __pyx_t_8; int __pyx_lineno = 0; const char *__pyx_filename = NULL; int __pyx_clineno = 0; @@ -22062,48 +21822,28 @@ static CYTHON_SMALL_CODE int __pyx_pymod_exec_point_in_polygon_(PyObject *__pyx_ if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error) /* ImportRefnannyAPI */ #if CYTHON_REFNANNY -__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); -if (!__Pyx_RefNanny) { - PyErr_Clear(); - __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); - if (!__Pyx_RefNanny) - Py_FatalError("failed to import 'refnanny' module"); -} -#endif - -__Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); - if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #ifdef __Pxy_PyFrame_Initialize_Offsets - __Pxy_PyFrame_Initialize_Offsets(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); + if (!__Pyx_RefNanny) { + PyErr_Clear(); + __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); + if (!__Pyx_RefNanny) + Py_FatalError("failed to import 'refnanny' module"); + } #endif + +__Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); + __Pyx_init_runtime_version(); + if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) + /*--- Library function declarations ---*/ /*--- Initialize various global constants etc. ---*/ - if (__Pyx_InitConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) stringtab_initialized = 1; - if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #if 0 || defined(__Pyx_CyFunction_USED) || defined(__Pyx_FusedFunction_USED) || defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED) || defined(__Pyx_AsyncGen_USED) - if (__pyx_CommonTypesMetaclass_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_CyFunction_USED - if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_FusedFunction_USED - if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Coroutine_USED - if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_Generator_USED - if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - #ifdef __Pyx_AsyncGen_USED - if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - #endif - /*--- Library function declarations ---*/ + if (__Pyx_InitGlobals() < (0)) __PYX_ERR(0, 1, __pyx_L1_error) if (__pyx_module_is_main_oceanmesh__geometry__point_in_polygon_) { - if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) } { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) @@ -22112,10 +21852,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); } } /*--- Builtin init code ---*/ - if (__Pyx_InitCachedBuiltins(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitCachedBuiltins(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ - if (__Pyx_InitCachedConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - if (__Pyx_CreateCodeObjects(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_InitCachedConstants(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + if (__Pyx_CreateCodeObjects(__pyx_mstate) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global type/function init code ---*/ (void)__Pyx_modinit_global_init_code(__pyx_mstate); (void)__Pyx_modinit_variable_export_code(__pyx_mstate); @@ -22150,23 +21890,20 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * */ __pyx_t_5 = NULL; - __Pyx_INCREF(__pyx_builtin___import__); - __pyx_t_6 = __pyx_builtin___import__; - __pyx_t_7 = 1; + __pyx_t_6 = 1; { PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_collections_abc}; - __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin___import__, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) __Pyx_GOTREF(__pyx_t_4); } - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_abc); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 101, __pyx_L2_error) - __Pyx_GOTREF(__pyx_t_6); + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_abc); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 101, __pyx_L2_error) + __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_Sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Sequence); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L2_error) __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XGOTREF(__pyx_collections_abc_Sequence); __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_4); @@ -22187,7 +21924,6 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L2_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; /* "View.MemoryView":102 * try: @@ -22197,11 +21933,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * __pyx_collections_abc_Sequence = None */ /*except:*/ { - __Pyx_AddTraceback("View.MemoryView", __pyx_clineno, __pyx_lineno, __pyx_filename); - if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_5) < 0) __PYX_ERR(1, 102, __pyx_L4_except_error) - __Pyx_XGOTREF(__pyx_t_4); - __Pyx_XGOTREF(__pyx_t_6); - __Pyx_XGOTREF(__pyx_t_5); + __Pyx_ErrRestore(0,0,0); /* "View.MemoryView":104 * except: @@ -22214,25 +21946,8 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __Pyx_XGOTREF(__pyx_collections_abc_Sequence); __Pyx_DECREF_SET(__pyx_collections_abc_Sequence, Py_None); __Pyx_GIVEREF(Py_None); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L3_exception_handled; } - - /* "View.MemoryView":100 - * - * cdef object __pyx_collections_abc_Sequence "__pyx_collections_abc_Sequence" - * try: # <<<<<<<<<<<<<< - * __pyx_collections_abc_Sequence = __import__("collections.abc").abc.Sequence - * except: -*/ - __pyx_L4_except_error:; - __Pyx_XGIVEREF(__pyx_t_1); - __Pyx_XGIVEREF(__pyx_t_2); - __Pyx_XGIVEREF(__pyx_t_3); - __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); - goto __pyx_L1_error; __pyx_L3_exception_handled:; __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); @@ -22264,10 +21979,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * index = __pyx_collections_abc_Sequence.index * except: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 240, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_5) < 0) __PYX_ERR(1, 240, __pyx_L10_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 240, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_4) < (0)) __PYX_ERR(1, 240, __pyx_L10_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "View.MemoryView":241 * try: @@ -22276,10 +21991,10 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 241, __pyx_L10_error) - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_5) < 0) __PYX_ERR(1, 241, __pyx_L10_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 241, __pyx_L10_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_array_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_4) < (0)) __PYX_ERR(1, 241, __pyx_L10_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "View.MemoryView":239 * @@ -22296,7 +22011,6 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L10_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; /* "View.MemoryView":242 * count = __pyx_collections_abc_Sequence.count @@ -22324,22 +22038,19 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cdef strided = Enum("") # default * cdef indirect = Enum("") */ - __pyx_t_6 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_7 = 1; + __pyx_t_5 = NULL; + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_strided_and_direct_or_indirect}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 307, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_strided_and_direct_or_indirect}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 307, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_4); } __Pyx_XGOTREF(generic); - __Pyx_DECREF_SET(generic, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF((PyObject *)__pyx_t_5); - __pyx_t_5 = 0; + __Pyx_DECREF_SET(generic, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF((PyObject *)__pyx_t_4); + __pyx_t_4 = 0; /* "View.MemoryView":308 * @@ -22348,22 +22059,19 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cdef indirect = Enum("") * */ - __pyx_t_4 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_6 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_7 = 1; + __pyx_t_5 = NULL; + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_strided_and_direct}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 308, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_strided_and_direct}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 308, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_4); } __Pyx_XGOTREF(strided); - __Pyx_DECREF_SET(strided, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF((PyObject *)__pyx_t_5); - __pyx_t_5 = 0; + __Pyx_DECREF_SET(strided, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF((PyObject *)__pyx_t_4); + __pyx_t_4 = 0; /* "View.MemoryView":309 * cdef generic = Enum("") @@ -22372,22 +22080,19 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * * */ - __pyx_t_6 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_7 = 1; + __pyx_t_5 = NULL; + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_strided_and_indirect}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 309, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_strided_and_indirect}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 309, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_4); } __Pyx_XGOTREF(indirect); - __Pyx_DECREF_SET(indirect, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF((PyObject *)__pyx_t_5); - __pyx_t_5 = 0; + __Pyx_DECREF_SET(indirect, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF((PyObject *)__pyx_t_4); + __pyx_t_4 = 0; /* "View.MemoryView":312 * @@ -22396,22 +22101,19 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cdef indirect_contiguous = Enum("") * */ - __pyx_t_4 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_6 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_7 = 1; + __pyx_t_5 = NULL; + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_contiguous_and_direct}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 312, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_contiguous_and_direct}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 312, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_4); } __Pyx_XGOTREF(contiguous); - __Pyx_DECREF_SET(contiguous, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF((PyObject *)__pyx_t_5); - __pyx_t_5 = 0; + __Pyx_DECREF_SET(contiguous, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF((PyObject *)__pyx_t_4); + __pyx_t_4 = 0; /* "View.MemoryView":313 * @@ -22420,22 +22122,19 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * * */ - __pyx_t_6 = NULL; - __Pyx_INCREF((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_4 = ((PyObject *)__pyx_mstate_global->__pyx_MemviewEnum_type); - __pyx_t_7 = 1; + __pyx_t_5 = NULL; + __pyx_t_6 = 1; { - PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_contiguous_and_indirect}; - __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 313, __pyx_L1_error) - __Pyx_GOTREF((PyObject *)__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_contiguous_and_indirect}; + __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_mstate_global->__pyx_MemviewEnum_type, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 313, __pyx_L1_error) + __Pyx_GOTREF((PyObject *)__pyx_t_4); } __Pyx_XGOTREF(indirect_contiguous); - __Pyx_DECREF_SET(indirect_contiguous, ((PyObject *)__pyx_t_5)); - __Pyx_GIVEREF((PyObject *)__pyx_t_5); - __pyx_t_5 = 0; + __Pyx_DECREF_SET(indirect_contiguous, ((PyObject *)__pyx_t_4)); + __Pyx_GIVEREF((PyObject *)__pyx_t_4); + __pyx_t_4 = 0; /* "View.MemoryView":321 * @@ -22453,17 +22152,17 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * PyThread_allocate_lock(), * PyThread_allocate_lock(), */ - __pyx_t_8[0] = PyThread_allocate_lock(); - __pyx_t_8[1] = PyThread_allocate_lock(); - __pyx_t_8[2] = PyThread_allocate_lock(); - __pyx_t_8[3] = PyThread_allocate_lock(); - __pyx_t_8[4] = PyThread_allocate_lock(); - __pyx_t_8[5] = PyThread_allocate_lock(); - __pyx_t_8[6] = PyThread_allocate_lock(); - __pyx_t_8[7] = PyThread_allocate_lock(); - memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_8, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); + __pyx_t_7[0] = PyThread_allocate_lock(); + __pyx_t_7[1] = PyThread_allocate_lock(); + __pyx_t_7[2] = PyThread_allocate_lock(); + __pyx_t_7[3] = PyThread_allocate_lock(); + __pyx_t_7[4] = PyThread_allocate_lock(); + __pyx_t_7[5] = PyThread_allocate_lock(); + __pyx_t_7[6] = PyThread_allocate_lock(); + __pyx_t_7[7] = PyThread_allocate_lock(); + memcpy(&(__pyx_memoryview_thread_locks[0]), __pyx_t_7, sizeof(__pyx_memoryview_thread_locks[0]) * (8)); - /* "View.MemoryView":982 + /* "View.MemoryView":983 * * * try: # <<<<<<<<<<<<<< @@ -22479,31 +22178,31 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "View.MemoryView":983 + /* "View.MemoryView":984 * * try: * count = __pyx_collections_abc_Sequence.count # <<<<<<<<<<<<<< * index = __pyx_collections_abc_Sequence.index * except: */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 983, __pyx_L18_error) - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_5) < 0) __PYX_ERR(1, 983, __pyx_L18_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 984, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_4) < (0)) __PYX_ERR(1, 984, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":984 + /* "View.MemoryView":985 * try: * count = __pyx_collections_abc_Sequence.count * index = __pyx_collections_abc_Sequence.index # <<<<<<<<<<<<<< * except: * pass */ - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 984, __pyx_L18_error) - __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_5) < 0) __PYX_ERR(1, 984, __pyx_L18_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_collections_abc_Sequence, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 985, __pyx_L18_error) + __Pyx_GOTREF(__pyx_t_4); + if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_memoryviewslice_type, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_4) < (0)) __PYX_ERR(1, 985, __pyx_L18_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":982 + /* "View.MemoryView":983 * * * try: # <<<<<<<<<<<<<< @@ -22518,9 +22217,8 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L18_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":985 + /* "View.MemoryView":986 * count = __pyx_collections_abc_Sequence.count * index = __pyx_collections_abc_Sequence.index * except: # <<<<<<<<<<<<<< @@ -22539,7 +22237,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L23_try_end:; } - /* "View.MemoryView":988 + /* "View.MemoryView":989 * pass * * try: # <<<<<<<<<<<<<< @@ -22555,55 +22253,55 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __Pyx_XGOTREF(__pyx_t_1); /*try:*/ { - /* "View.MemoryView":989 + /* "View.MemoryView":990 * * try: * if __pyx_collections_abc_Sequence: # <<<<<<<<<<<<<< * * */ - __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_collections_abc_Sequence); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(1, 989, __pyx_L26_error) - if (__pyx_t_9) { + __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_collections_abc_Sequence); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(1, 990, __pyx_L26_error) + if (__pyx_t_8) { - /* "View.MemoryView":993 + /* "View.MemoryView":994 * * * __pyx_collections_abc_Sequence.register(_memoryviewslice) # <<<<<<<<<<<<<< * __pyx_collections_abc_Sequence.register(array) * except: */ - __pyx_t_4 = __pyx_collections_abc_Sequence; - __Pyx_INCREF(__pyx_t_4); - __pyx_t_7 = 0; + __pyx_t_5 = __pyx_collections_abc_Sequence; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_memoryviewslice_type)}; - __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 993, __pyx_L26_error) - __Pyx_GOTREF(__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_mstate_global->__pyx_memoryviewslice_type)}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 994, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_4); } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":994 + /* "View.MemoryView":995 * * __pyx_collections_abc_Sequence.register(_memoryviewslice) * __pyx_collections_abc_Sequence.register(array) # <<<<<<<<<<<<<< * except: * pass # ignore failure, it's a minor issue */ - __pyx_t_4 = __pyx_collections_abc_Sequence; - __Pyx_INCREF(__pyx_t_4); - __pyx_t_7 = 0; + __pyx_t_5 = __pyx_collections_abc_Sequence; + __Pyx_INCREF(__pyx_t_5); + __pyx_t_6 = 0; { - PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_mstate_global->__pyx_array_type)}; - __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 994, __pyx_L26_error) - __Pyx_GOTREF(__pyx_t_5); + PyObject *__pyx_callargs[2] = {__pyx_t_5, ((PyObject *)__pyx_mstate_global->__pyx_array_type)}; + __pyx_t_4 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_register, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; + if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 995, __pyx_L26_error) + __Pyx_GOTREF(__pyx_t_4); } - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "View.MemoryView":989 + /* "View.MemoryView":990 * * try: * if __pyx_collections_abc_Sequence: # <<<<<<<<<<<<<< @@ -22612,7 +22310,7 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); */ } - /* "View.MemoryView":988 + /* "View.MemoryView":989 * pass * * try: # <<<<<<<<<<<<<< @@ -22627,9 +22325,8 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L26_error:; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "View.MemoryView":995 + /* "View.MemoryView":996 * __pyx_collections_abc_Sequence.register(_memoryviewslice) * __pyx_collections_abc_Sequence.register(array) * except: # <<<<<<<<<<<<<< @@ -22648,15 +22345,17 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L31_try_end:; } - /* "(tree fragment)":1 - * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, __pyx_state): # <<<<<<<<<<<<<< - * cdef object __pyx_PickleError + /* "(tree fragment)":4 + * int __Pyx_CheckUnpickleChecksum(long, long, long, long, const char*) except -1 + * int __Pyx_UpdateUnpickledDict(object, object, Py_ssize_t) except -1 + * def __pyx_unpickle_Enum(__pyx_type, long __pyx_checksum, tuple __pyx_state): # <<<<<<<<<<<<<< * cdef object __pyx_result + * __Pyx_CheckUnpickleChecksum(__pyx_checksum, 0x82a3537, 0x6ae9995, 0xb068931, b'name') */ - __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_mstate_global->__pyx_n_u_View_MemoryView); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum, __pyx_t_5) < 0) __PYX_ERR(1, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_15View_dot_MemoryView_1__pyx_unpickle_Enum, NULL, __pyx_mstate_global->__pyx_n_u_View_MemoryView); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pyx_unpickle_Enum, __pyx_t_4) < (0)) __PYX_ERR(1, 4, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "oceanmesh/geometry/point_in_polygon_.pyx":7 * # cython: cdivision=True @@ -22665,10 +22364,11 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * cimport numpy as np * */ - __pyx_t_5 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_numpy, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_np, __pyx_t_5) < 0) __PYX_ERR(0, 7, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_1 = __Pyx_Import(__pyx_mstate_global->__pyx_n_u_numpy, 0, 0, NULL, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) + __pyx_t_4 = __pyx_t_1; + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_np, __pyx_t_4) < (0)) __PYX_ERR(0, 7, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "oceanmesh/geometry/point_in_polygon_.pyx":16 * @@ -22677,20 +22377,23 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); * np.ndarray[DTYPE_t, ndim=2] node, * np.ndarray[ITYPE_t, ndim=2] edge, */ - __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_9oceanmesh_8geometry_17point_in_polygon__1inpoly2_fast, 0, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, NULL, __pyx_mstate_global->__pyx_n_u_oceanmesh_geometry_point_in_poly, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, __pyx_t_5) < 0) __PYX_ERR(0, 16, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_9oceanmesh_8geometry_17point_in_polygon__1inpoly2_fast, 0, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, NULL, __pyx_mstate_global->__pyx_n_u_oceanmesh_geometry_point_in_poly, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 + PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); + #endif + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_inpoly2_fast, __pyx_t_4) < (0)) __PYX_ERR(0, 16, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "oceanmesh/geometry/point_in_polygon_.pyx":1 * # cython: language_level=3 # <<<<<<<<<<<<<< * # cython: boundscheck=False * # cython: wraparound=False */ - __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_5) < 0) __PYX_ERR(0, 1, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_4) < (0)) __PYX_ERR(0, 1, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /*--- Wrapped vars code ---*/ @@ -22698,7 +22401,6 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); - __Pyx_XDECREF(__pyx_t_6); if (__pyx_m) { if (__pyx_mstate->__pyx_d && stringtab_initialized) { __Pyx_AddTraceback("init oceanmesh.geometry.point_in_polygon_", __pyx_clineno, __pyx_lineno, __pyx_filename); @@ -22726,223 +22428,22 @@ __Pyx_RefNannySetupContext("PyInit_point_in_polygon_", 0); #endif } /* #### Code section: pystring_table ### */ - -typedef struct { - const char *s; -#if 179 <= 65535 - const unsigned short n; -#elif 179 / 2 < INT_MAX - const unsigned int n; -#elif 179 / 2 < LONG_MAX - const unsigned long n; -#else - const Py_ssize_t n; -#endif -#if 1 <= 31 - const unsigned int encoding : 5; -#elif 1 <= 255 - const unsigned char encoding; -#elif 1 <= 65535 - const unsigned short encoding; -#else - const Py_ssize_t encoding; -#endif - const unsigned int is_unicode : 1; - const unsigned int intern : 1; -} __Pyx_StringTabEntry; -static const char * const __pyx_string_tab_encodings[] = { 0 }; -static const __Pyx_StringTabEntry __pyx_string_tab[] = { - {__pyx_k_, sizeof(__pyx_k_), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ */ - {__pyx_k_ASCII, sizeof(__pyx_k_ASCII), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ASCII */ - {__pyx_k_All_dimensions_preceding_dimensi, sizeof(__pyx_k_All_dimensions_preceding_dimensi), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_All_dimensions_preceding_dimensi */ - {__pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_AssertionError */ - {__pyx_k_Buffer_view_does_not_expose_stri, sizeof(__pyx_k_Buffer_view_does_not_expose_stri), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Buffer_view_does_not_expose_stri */ - {__pyx_k_C_CONTIGUOUS, sizeof(__pyx_k_C_CONTIGUOUS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_C_CONTIGUOUS */ - {__pyx_k_Can_only_create_a_buffer_that_is, sizeof(__pyx_k_Can_only_create_a_buffer_that_is), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Can_only_create_a_buffer_that_is */ - {__pyx_k_Cannot_assign_to_read_only_memor, sizeof(__pyx_k_Cannot_assign_to_read_only_memor), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_assign_to_read_only_memor */ - {__pyx_k_Cannot_create_writable_memory_vi, sizeof(__pyx_k_Cannot_create_writable_memory_vi), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_create_writable_memory_vi */ - {__pyx_k_Cannot_index_with_type, sizeof(__pyx_k_Cannot_index_with_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_index_with_type */ - {__pyx_k_Cannot_transpose_memoryview_with, sizeof(__pyx_k_Cannot_transpose_memoryview_with), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Cannot_transpose_memoryview_with */ - {__pyx_k_Dimension_d_is_not_direct, sizeof(__pyx_k_Dimension_d_is_not_direct), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Dimension_d_is_not_direct */ - {__pyx_k_Ellipsis, sizeof(__pyx_k_Ellipsis), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Ellipsis */ - {__pyx_k_Empty_shape_tuple_for_cython_arr, sizeof(__pyx_k_Empty_shape_tuple_for_cython_arr), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Empty_shape_tuple_for_cython_arr */ - {__pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ImportError */ - {__pyx_k_Incompatible_checksums_0x_x_vs_0, sizeof(__pyx_k_Incompatible_checksums_0x_x_vs_0), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Incompatible_checksums_0x_x_vs_0 */ - {__pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_IndexError */ - {__pyx_k_Index_out_of_bounds_axis_d, sizeof(__pyx_k_Index_out_of_bounds_axis_d), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Index_out_of_bounds_axis_d */ - {__pyx_k_Indirect_dimensions_not_supporte, sizeof(__pyx_k_Indirect_dimensions_not_supporte), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Indirect_dimensions_not_supporte */ - {__pyx_k_Invalid_mode_expected_c_or_fortr, sizeof(__pyx_k_Invalid_mode_expected_c_or_fortr), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Invalid_mode_expected_c_or_fortr */ - {__pyx_k_Invalid_shape_in_axis, sizeof(__pyx_k_Invalid_shape_in_axis), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Invalid_shape_in_axis */ - {__pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MemoryError */ - {__pyx_k_MemoryView_of, sizeof(__pyx_k_MemoryView_of), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_MemoryView_of */ - {__pyx_k_Note_that_Cython_is_deliberately, sizeof(__pyx_k_Note_that_Cython_is_deliberately), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Note_that_Cython_is_deliberately */ - {__pyx_k_O, sizeof(__pyx_k_O), 0, 0, 1}, /* PyObject cname: __pyx_n_b_O */ - {__pyx_k_Out_of_bounds_on_buffer_access_a, sizeof(__pyx_k_Out_of_bounds_on_buffer_access_a), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Out_of_bounds_on_buffer_access_a */ - {__pyx_k_PickleError, sizeof(__pyx_k_PickleError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_PickleError */ - {__pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Sequence */ - {__pyx_k_Step_may_not_be_zero_axis_d, sizeof(__pyx_k_Step_may_not_be_zero_axis_d), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Step_may_not_be_zero_axis_d */ - {__pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TypeError */ - {__pyx_k_Unable_to_convert_item_to_object, sizeof(__pyx_k_Unable_to_convert_item_to_object), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Unable_to_convert_item_to_object */ - {__pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ValueError */ - {__pyx_k_View_MemoryView, sizeof(__pyx_k_View_MemoryView), 0, 1, 1}, /* PyObject cname: __pyx_n_u_View_MemoryView */ - {__pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__2 */ - {__pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__3 */ - {__pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__4 */ - {__pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__5 */ - {__pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__6 */ - {__pyx_k_abc, sizeof(__pyx_k_abc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_abc */ - {__pyx_k_add_note, sizeof(__pyx_k_add_note), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_add_note */ - {__pyx_k_allocate_buffer, sizeof(__pyx_k_allocate_buffer), 0, 1, 1}, /* PyObject cname: __pyx_n_u_allocate_buffer */ - {__pyx_k_and, sizeof(__pyx_k_and), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_and */ - {__pyx_k_ascontiguousarray, sizeof(__pyx_k_ascontiguousarray), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ascontiguousarray */ - {__pyx_k_astype, sizeof(__pyx_k_astype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_astype */ - {__pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 1, 1}, /* PyObject cname: __pyx_n_u_asyncio_coroutines */ - {__pyx_k_at_0x, sizeof(__pyx_k_at_0x), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_at_0x */ - {__pyx_k_base, sizeof(__pyx_k_base), 0, 1, 1}, /* PyObject cname: __pyx_n_u_base */ - {__pyx_k_bnd_arr, sizeof(__pyx_k_bnd_arr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bnd_arr */ - {__pyx_k_bnds, sizeof(__pyx_k_bnds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bnds */ - {__pyx_k_c, sizeof(__pyx_k_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c */ - {__pyx_k_class, sizeof(__pyx_k_class), 0, 1, 1}, /* PyObject cname: __pyx_n_u_class */ - {__pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_class_getitem */ - {__pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cline_in_traceback */ - {__pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_collections_abc */ - {__pyx_k_contiguous_and_direct, sizeof(__pyx_k_contiguous_and_direct), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_contiguous_and_direct */ - {__pyx_k_contiguous_and_indirect, sizeof(__pyx_k_contiguous_and_indirect), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_contiguous_and_indirect */ - {__pyx_k_count, sizeof(__pyx_k_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_count */ - {__pyx_k_dict, sizeof(__pyx_k_dict), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dict */ - {__pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_disable */ - {__pyx_k_dist, sizeof(__pyx_k_dist), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dist */ - {__pyx_k_dtype, sizeof(__pyx_k_dtype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dtype */ - {__pyx_k_dtype_is_object, sizeof(__pyx_k_dtype_is_object), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dtype_is_object */ - {__pyx_k_dx, sizeof(__pyx_k_dx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dx */ - {__pyx_k_dy, sizeof(__pyx_k_dy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dy */ - {__pyx_k_e, sizeof(__pyx_k_e), 0, 1, 1}, /* PyObject cname: __pyx_n_u_e */ - {__pyx_k_edge, sizeof(__pyx_k_edge), 0, 1, 1}, /* PyObject cname: __pyx_n_u_edge */ - {__pyx_k_empty, sizeof(__pyx_k_empty), 0, 1, 1}, /* PyObject cname: __pyx_n_u_empty */ - {__pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_enable */ - {__pyx_k_encode, sizeof(__pyx_k_encode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_encode */ - {__pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_enumerate */ - {__pyx_k_error, sizeof(__pyx_k_error), 0, 1, 1}, /* PyObject cname: __pyx_n_u_error */ - {__pyx_k_eymax, sizeof(__pyx_k_eymax), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymax */ - {__pyx_k_eymax_view, sizeof(__pyx_k_eymax_view), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymax_view */ - {__pyx_k_eymin, sizeof(__pyx_k_eymin), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymin */ - {__pyx_k_eymin_view, sizeof(__pyx_k_eymin_view), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eymin_view */ - {__pyx_k_flags, sizeof(__pyx_k_flags), 0, 1, 1}, /* PyObject cname: __pyx_n_u_flags */ - {__pyx_k_float64, sizeof(__pyx_k_float64), 0, 1, 1}, /* PyObject cname: __pyx_n_u_float64 */ - {__pyx_k_format, sizeof(__pyx_k_format), 0, 1, 1}, /* PyObject cname: __pyx_n_u_format */ - {__pyx_k_fortran, sizeof(__pyx_k_fortran), 0, 1, 1}, /* PyObject cname: __pyx_n_u_fortran */ - {__pyx_k_ftol, sizeof(__pyx_k_ftol), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ftol */ - {__pyx_k_func, sizeof(__pyx_k_func), 0, 1, 1}, /* PyObject cname: __pyx_n_u_func */ - {__pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_gc */ - {__pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_getstate */ - {__pyx_k_got, sizeof(__pyx_k_got), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_got */ - {__pyx_k_got_differing_extents_in_dimensi, sizeof(__pyx_k_got_differing_extents_in_dimensi), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_got_differing_extents_in_dimensi */ - {__pyx_k_i, sizeof(__pyx_k_i), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i */ - {__pyx_k_i0, sizeof(__pyx_k_i0), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i0 */ - {__pyx_k_i1, sizeof(__pyx_k_i1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i1 */ - {__pyx_k_id, sizeof(__pyx_k_id), 0, 1, 1}, /* PyObject cname: __pyx_n_u_id */ - {__pyx_k_import, sizeof(__pyx_k_import), 0, 1, 1}, /* PyObject cname: __pyx_n_u_import */ - {__pyx_k_index, sizeof(__pyx_k_index), 0, 1, 1}, /* PyObject cname: __pyx_n_u_index */ - {__pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 1, 1}, /* PyObject cname: __pyx_n_u_initializing */ - {__pyx_k_inpoly2_fast, sizeof(__pyx_k_inpoly2_fast), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inpoly2_fast */ - {__pyx_k_inside, sizeof(__pyx_k_inside), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inside */ - {__pyx_k_int32, sizeof(__pyx_k_int32), 0, 1, 1}, /* PyObject cname: __pyx_n_u_int32 */ - {__pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_coroutine */ - {__pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_isenabled */ - {__pyx_k_itemsize, sizeof(__pyx_k_itemsize), 0, 1, 1}, /* PyObject cname: __pyx_n_u_itemsize */ - {__pyx_k_itemsize_0_for_cython_array, sizeof(__pyx_k_itemsize_0_for_cython_array), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_itemsize_0_for_cython_array */ - {__pyx_k_j, sizeof(__pyx_k_j), 0, 1, 1}, /* PyObject cname: __pyx_n_u_j */ - {__pyx_k_main, sizeof(__pyx_k_main), 0, 1, 1}, /* PyObject cname: __pyx_n_u_main */ - {__pyx_k_memview, sizeof(__pyx_k_memview), 0, 1, 1}, /* PyObject cname: __pyx_n_u_memview */ - {__pyx_k_mode, sizeof(__pyx_k_mode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mode */ - {__pyx_k_module, sizeof(__pyx_k_module), 0, 1, 1}, /* PyObject cname: __pyx_n_u_module */ - {__pyx_k_n, sizeof(__pyx_k_n), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n */ - {__pyx_k_n_edge, sizeof(__pyx_k_n_edge), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n_edge */ - {__pyx_k_n_vert, sizeof(__pyx_k_n_vert), 0, 1, 1}, /* PyObject cname: __pyx_n_u_n_vert */ - {__pyx_k_name, sizeof(__pyx_k_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name */ - {__pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name_2 */ - {__pyx_k_ndim, sizeof(__pyx_k_ndim), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ndim */ - {__pyx_k_new, sizeof(__pyx_k_new), 0, 1, 1}, /* PyObject cname: __pyx_n_u_new */ - {__pyx_k_no_default___reduce___due_to_non, sizeof(__pyx_k_no_default___reduce___due_to_non), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_default___reduce___due_to_non */ - {__pyx_k_node, sizeof(__pyx_k_node), 0, 1, 1}, /* PyObject cname: __pyx_n_u_node */ - {__pyx_k_np, sizeof(__pyx_k_np), 0, 1, 1}, /* PyObject cname: __pyx_n_u_np */ - {__pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_numpy */ - {__pyx_k_numpy__core_multiarray_failed_to, sizeof(__pyx_k_numpy__core_multiarray_failed_to), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_numpy__core_multiarray_failed_to */ - {__pyx_k_numpy__core_umath_failed_to_impo, sizeof(__pyx_k_numpy__core_umath_failed_to_impo), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_numpy__core_umath_failed_to_impo */ - {__pyx_k_obj, sizeof(__pyx_k_obj), 0, 1, 1}, /* PyObject cname: __pyx_n_u_obj */ - {__pyx_k_object, sizeof(__pyx_k_object), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_object */ - {__pyx_k_oceanmesh_geometry_point_in_poly, sizeof(__pyx_k_oceanmesh_geometry_point_in_poly), 0, 1, 1}, /* PyObject cname: __pyx_n_u_oceanmesh_geometry_point_in_poly */ - {__pyx_k_oceanmesh_geometry_point_in_poly_2, sizeof(__pyx_k_oceanmesh_geometry_point_in_poly_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_oceanmesh_geometry_point_in_poly_2 */ - {__pyx_k_on_bnd, sizeof(__pyx_k_on_bnd), 0, 1, 1}, /* PyObject cname: __pyx_n_u_on_bnd */ - {__pyx_k_pack, sizeof(__pyx_k_pack), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pack */ - {__pyx_k_pickle, sizeof(__pyx_k_pickle), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pickle */ - {__pyx_k_pop, sizeof(__pyx_k_pop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pop */ - {__pyx_k_projx, sizeof(__pyx_k_projx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_projx */ - {__pyx_k_projy, sizeof(__pyx_k_projy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_projy */ - {__pyx_k_px, sizeof(__pyx_k_px), 0, 1, 1}, /* PyObject cname: __pyx_n_u_px */ - {__pyx_k_py, sizeof(__pyx_k_py), 0, 1, 1}, /* PyObject cname: __pyx_n_u_py */ - {__pyx_k_pyx_checksum, sizeof(__pyx_k_pyx_checksum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_checksum */ - {__pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_state */ - {__pyx_k_pyx_type, sizeof(__pyx_k_pyx_type), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_type */ - {__pyx_k_pyx_unpickle_Enum, sizeof(__pyx_k_pyx_unpickle_Enum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_unpickle_Enum */ - {__pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_vtable */ - {__pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qualname */ - {__pyx_k_range, sizeof(__pyx_k_range), 0, 1, 1}, /* PyObject cname: __pyx_n_u_range */ - {__pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce */ - {__pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_cython */ - {__pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_ex */ - {__pyx_k_register, sizeof(__pyx_k_register), 0, 1, 1}, /* PyObject cname: __pyx_n_u_register */ - {__pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_set_name */ - {__pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate */ - {__pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate_cython */ - {__pyx_k_shape, sizeof(__pyx_k_shape), 0, 1, 1}, /* PyObject cname: __pyx_n_u_shape */ - {__pyx_k_size, sizeof(__pyx_k_size), 0, 1, 1}, /* PyObject cname: __pyx_n_u_size */ - {__pyx_k_spec, sizeof(__pyx_k_spec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_spec */ - {__pyx_k_start, sizeof(__pyx_k_start), 0, 1, 1}, /* PyObject cname: __pyx_n_u_start */ - {__pyx_k_stat, sizeof(__pyx_k_stat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stat */ - {__pyx_k_stat_arr, sizeof(__pyx_k_stat_arr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stat_arr */ - {__pyx_k_step, sizeof(__pyx_k_step), 0, 1, 1}, /* PyObject cname: __pyx_n_u_step */ - {__pyx_k_stop, sizeof(__pyx_k_stop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stop */ - {__pyx_k_strided_and_direct, sizeof(__pyx_k_strided_and_direct), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_strided_and_direct */ - {__pyx_k_strided_and_direct_or_indirect, sizeof(__pyx_k_strided_and_direct_or_indirect), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_strided_and_direct_or_indirect */ - {__pyx_k_strided_and_indirect, sizeof(__pyx_k_strided_and_indirect), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_strided_and_indirect */ - {__pyx_k_struct, sizeof(__pyx_k_struct), 0, 1, 1}, /* PyObject cname: __pyx_n_u_struct */ - {__pyx_k_t, sizeof(__pyx_k_t), 0, 1, 1}, /* PyObject cname: __pyx_n_u_t */ - {__pyx_k_test, sizeof(__pyx_k_test), 0, 1, 1}, /* PyObject cname: __pyx_n_u_test */ - {__pyx_k_uint8, sizeof(__pyx_k_uint8), 0, 1, 1}, /* PyObject cname: __pyx_n_u_uint8 */ - {__pyx_k_unable_to_allocate_array_data, sizeof(__pyx_k_unable_to_allocate_array_data), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unable_to_allocate_array_data */ - {__pyx_k_unable_to_allocate_shape_and_str, sizeof(__pyx_k_unable_to_allocate_shape_and_str), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unable_to_allocate_shape_and_str */ - {__pyx_k_unpack, sizeof(__pyx_k_unpack), 0, 1, 1}, /* PyObject cname: __pyx_n_u_unpack */ - {__pyx_k_update, sizeof(__pyx_k_update), 0, 1, 1}, /* PyObject cname: __pyx_n_u_update */ - {__pyx_k_v, sizeof(__pyx_k_v), 0, 1, 1}, /* PyObject cname: __pyx_n_u_v */ - {__pyx_k_vert, sizeof(__pyx_k_vert), 0, 1, 1}, /* PyObject cname: __pyx_n_u_vert */ - {__pyx_k_x, sizeof(__pyx_k_x), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x */ - {__pyx_k_x0, sizeof(__pyx_k_x0), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x0 */ - {__pyx_k_x1, sizeof(__pyx_k_x1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x1 */ - {__pyx_k_xints, sizeof(__pyx_k_xints), 0, 1, 1}, /* PyObject cname: __pyx_n_u_xints */ - {__pyx_k_y0, sizeof(__pyx_k_y0), 0, 1, 1}, /* PyObject cname: __pyx_n_u_y0 */ - {__pyx_k_y1, sizeof(__pyx_k_y1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_y1 */ - {__pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 1, 1}, /* PyObject cname: __pyx_n_u_zeros */ - {0, 0, 0, 0, 0} -}; -/* InitStrings.proto */ -static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names); - /* #### Code section: cached_builtins ### */ static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); - __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_range); if (!__pyx_builtin_range) __PYX_ERR(0, 69, __pyx_L1_error) __pyx_builtin___import__ = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_import); if (!__pyx_builtin___import__) __PYX_ERR(1, 101, __pyx_L1_error) - __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(1, 139, __pyx_L1_error) - __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 154, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 157, __pyx_L1_error) - __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error) - __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(1, 373, __pyx_L1_error) - __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 408, __pyx_L1_error) - __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_id); if (!__pyx_builtin_id) __PYX_ERR(1, 618, __pyx_L1_error) - __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(1, 914, __pyx_L1_error) - __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(2, 1026, __pyx_L1_error) + __pyx_builtin_Ellipsis = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_Ellipsis); if (!__pyx_builtin_Ellipsis) __PYX_ERR(1, 409, __pyx_L1_error) + __pyx_builtin_id = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_id); if (!__pyx_builtin_id) __PYX_ERR(1, 619, __pyx_L1_error) + + /* Cached unbound methods */ + __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_items.method_name = &__pyx_mstate->__pyx_n_u_items; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; + __pyx_mstate->__pyx_umethod_PyDict_Type_values.type = (PyObject*)&PyDict_Type; + __pyx_mstate->__pyx_umethod_PyDict_Type_values.method_name = &__pyx_mstate->__pyx_n_u_values; return 0; __pyx_L1_error:; return -1; @@ -22954,41 +22455,65 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "View.MemoryView":582 + /* "(tree fragment)":11 + * use_setstate = True + * else: + * use_setstate = ('self.name is not None',) # <<<<<<<<<<<<<< + * if use_setstate: + * return __pyx_unpickle_Enum, (type(self), 0x82a3537, None), state +*/ + __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_kp_u_self_name_is_not_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(1, 11, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); + + /* "View.MemoryView":583 * def suboffsets(self): * if self.view.suboffsets == NULL: * return (-1,) * self.view.ndim # <<<<<<<<<<<<<< * * return tuple([suboffset for suboffset in self.view.suboffsets[:self.view.ndim]]) */ - __pyx_mstate_global->__pyx_tuple[0] = PyTuple_New(1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(1, 582, __pyx_L1_error) - __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]); + __pyx_mstate_global->__pyx_tuple[1] = PyTuple_New(1); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(1, 583, __pyx_L1_error) + __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); __Pyx_INCREF(__pyx_mstate_global->__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_int_neg_1); - if (__Pyx_PyTuple_SET_ITEM(__pyx_mstate_global->__pyx_tuple[0], 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(1, 582, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]); + if (__Pyx_PyTuple_SET_ITEM(__pyx_mstate_global->__pyx_tuple[1], 0, __pyx_mstate_global->__pyx_int_neg_1) != (0)) __PYX_ERR(1, 583, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); - /* "View.MemoryView":679 + /* "View.MemoryView":680 * tup = index if isinstance(index, tuple) else (index,) * * result = [slice(None)] * ndim # <<<<<<<<<<<<<< * have_slices = False * seen_ellipsis = False */ - __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(1, 679, __pyx_L1_error) + __pyx_mstate_global->__pyx_slice[0] = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_slice[0])) __PYX_ERR(1, 680, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_slice[0]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_slice[0]); - - /* "(tree fragment)":4 - * cdef object __pyx_PickleError - * cdef object __pyx_result - * if __pyx_checksum not in (0x82a3537, 0x6ae9995, 0xb068931): # <<<<<<<<<<<<<< - * from pickle import PickleError as __pyx_PickleError - * raise __pyx_PickleError, "Incompatible checksums (0x%x vs (0x82a3537, 0x6ae9995, 0xb068931) = (name))" % __pyx_checksum -*/ - __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(3, __pyx_mstate_global->__pyx_int_136983863, __pyx_mstate_global->__pyx_int_112105877, __pyx_mstate_global->__pyx_int_184977713); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(1, 4, __pyx_L1_error) - __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]); - __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]); + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_tuple; + for (Py_ssize_t i=0; i<2; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_slice; + for (Py_ssize_t i=0; i<1; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -22999,37 +22524,112 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); - __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type; - __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop; - if (__Pyx_InitStrings(__pyx_string_tab, __pyx_mstate->__pyx_string_tab, __pyx_string_tab_encodings) < 0) __PYX_ERR(0, 1, __pyx_L1_error); - __pyx_mstate->__pyx_int_0 = PyLong_FromLong(0); if (unlikely(!__pyx_mstate->__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_mstate->__pyx_int_1 = PyLong_FromLong(1); if (unlikely(!__pyx_mstate->__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_mstate->__pyx_int_112105877 = PyLong_FromLong(112105877L); if (unlikely(!__pyx_mstate->__pyx_int_112105877)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_mstate->__pyx_int_136983863 = PyLong_FromLong(136983863L); if (unlikely(!__pyx_mstate->__pyx_int_136983863)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_mstate->__pyx_int_184977713 = PyLong_FromLong(184977713L); if (unlikely(!__pyx_mstate->__pyx_int_184977713)) __PYX_ERR(0, 1, __pyx_L1_error) - __pyx_mstate->__pyx_int_neg_1 = PyLong_FromLong(-1); if (unlikely(!__pyx_mstate->__pyx_int_neg_1)) __PYX_ERR(0, 1, __pyx_L1_error) + { + const struct { const unsigned int length: 10; } index[] = {{2},{68},{35},{54},{37},{60},{24},{52},{26},{34},{29},{33},{45},{22},{15},{179},{37},{30},{32},{1},{1},{1},{1},{1},{8},{5},{6},{15},{23},{25},{7},{6},{2},{6},{35},{9},{30},{50},{39},{34},{8},{40},{21},{20},{32},{22},{30},{37},{5},{12},{8},{20},{8},{15},{3},{15},{17},{6},{18},{4},{7},{4},{1},{9},{17},{18},{5},{8},{4},{5},{15},{2},{2},{1},{4},{5},{6},{9},{5},{5},{10},{5},{10},{5},{7},{6},{7},{4},{8},{12},{1},{2},{2},{2},{10},{5},{12},{6},{5},{13},{5},{8},{1},{8},{7},{4},{10},{1},{6},{6},{4},{8},{4},{7},{4},{2},{5},{3},{36},{6},{4},{3},{5},{5},{2},{2},{14},{11},{10},{19},{14},{12},{10},{17},{13},{8},{12},{10},{12},{19},{5},{4},{5},{4},{8},{4},{4},{6},{1},{8},{5},{6},{6},{1},{6},{4},{1},{2},{2},{5},{2},{2},{5},{791},{1}}; + #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (1802 bytes) */ +const char* const cstring = "BZh91AY&SYAy\210\017\000\001\010\177\377\377\357\377\376\177\347\377\327\277\363\377\200\277\377\377\360@@@@@@@@@@@@@\000@\000`\006i\302\321\213\351\210\n\005)N\0142EOD\321\246\006\203S\302\233SL\24350\004\3654\321\202=F@\036\246\2322\030\233I\211\351\251\351\264S\364\202P\2014\320&\215M\251\246\223\023\024\323\3244z\207\250\006@\000\000\000\000\032\003A\246\232\034\000\006\200\000d\000\000\001\220\321\240\000\000\000\000\000\000\003L\210&\223$\032(\375(?S#OQ6\240\r\014\214\214\002\036\240\031\006 \003L\2314\315OHp\000\032\000\001\220\000\000\006CF\200\000\000\000\000\000\000\rH\246j\031\240\2152`\001\032h\3014\300\000\004a12\0314b0C\000\001\243 b\237\2017.\377\257\300\273\267\240\002*\277\342\024\010\020\"\020\213\\\203\200a1Y\021qQ\020\025ru\325;X\364\204EAU\005S7\264F\023ef\363\221\320\t?\270\224\200\221\024a/\320\315\334\320;\202p\036\220\312\250\222H\306\254\213P\221\010\260JG\034\303\276\235\2116f$~}\361\342\037\260\177\023\370O\361\277\376\3227\336}$;\267\317\303\025\276\241d\231$r\034O\233r\026\013\272\253w\014\357\t\342;\365X\034\030\364\377\355\356\274W\301\223W~\264\246\"X\207U\313\200\214\262t\3768s\220HpZ\320D\027\256B\034WQ\370g#\301Z^\255R\236\2020r\235\300\200h\251(\305\351\\\227\3171\343\0007v\366\370\344<6\225\3061\003\236\356\355\375d\345#\030\360\203\006\377/\315\252\001Z\206\366f\206\375\034F\335\355\213\236sa\321\0166\303Q\037]=h\214J\201\345-kT\326\213\241\325,\017\032\326\364N(\230\206{\324#0#0\306\226\277\317\360\374\323I\204\312:\212\371\263u^\354?]G\037\031\261~\236y\211\3624\2543\3009\034wwh?\216/\317\272\263\250s]KC2\333xk\200\376k\264\337\273JX\251\301\2167\257g\360\226\215{\216\2253\327\267\010\235Z\1771\354B&\221+LL\315:\221\262\314\374m\352\331\\?\206\250?]:\357 g\323]\030k\000=}\231\353\357H\000\374D\314w]\250u\337\227Q\315\226\207\362V\032g\217-H\200m\207\271\023\251\026)\345\213h\031`8\222\375\336\010\240\205\t\000\344\n\231M\2230\251H\244\2116\235\330)142\277\311\357\014\203\372\326\3205y|\"\303g\235\340\214Xs6\265*\300-\303\203""\235\320\010S-+\254\312Ye\250'\253e\356\264\353W\262\033\202\271\031l\037\254px\026?A\342\214\034E\021\200#\002\016\276\340Y\010jX\241`>\023\363\000p\000gI\246\000YF\362Y\345\357l\337\275\255K_x8u\367\353\274\224 \260W\3733\032<|\3466\254\023\203\266\342\210\205\202\212\251{\210\233\232\362<+\252AP\354V\2542\271\034b0\367\364\251\323\216\341\0241\241\323\241@*1\223\226\016\202b\304s\"\036\000T =\037c\326\277s\313 \347umn>\324\211\322\355\236\221L\324\342\215]\027\023z\250\243\210{\235H\231\305\003\204\202\252\300\266\361\000\220es\275l\332\222\032\366\222\314\361u\300d\323\305\225\366\340A\350\251\231\330>I\240\355\n\227\271\033\033%\rWNBU\t\014y=\343(\253\r\306\270\226\264\335\264\325a\215c\262\262\274*K\3443,6\242MB\263Z\233\307B\354\316^\006\200\362w\262\250\243\033\210b\027O\t\035~\367\027]NA\222\315'7\357\036\372\027p\025\236\007Q\341j`*\202\246\372\211\314?\325\342~g\027\367\247}\347e\222\305*;j\252*\244_0\325y\266\024T1\202\204b\344\343x\312\026\300|l\273\036(\356[\304>\027\244TU\245b\020\013\001\366\217r\361\355\271\363\2665p\217\213\222\034\250\253qr\030\336\356\233\303\030\207:\351\226\301\311YJ\023\217^\317.\001l\021\250\224m)J\201G\300\313\006\3402\232\n\204\"$&L\220\236jY\232\255\202\271\213nQ\\/\242$\024\376c\2740Dd)\214\225G=\304\357\327i\030^\264@\313\251D\2230:B\330\353\324\212\311A\350\303\225\t\264\013\225TU\024j\212\352\250\025\204\251\207\250\360{`\321\263;IixQD\235\366\223\271\311\337\363\357\233\265\266\331\205\345\245\262r;\002\342=V\255\214\324\301\237\336\307\321\034\024B\226Ch\257-s\020\006/Da\365\332\n\242\250\224\323\272O0\245F\214f\370U\272\212\234*4\031\355\315\265\2628\2611^*Om\261~\274!Qr\220Z!o4\274>\261\342#)\321H*(m\005Mb8\300\314\321\240B\353Qa\031\211>Vs\2527\357x\031\303\"\351\330\226u7\004\026\031[\037S\335l\243\317\316\206pE\311\013y\306m\010\275\034\253\007*\251\027\306\313\016F\331*\215:\223.\032\017G\333\025\023-\344\214^\324\022\3660I\251fK\032\347\343\"\214\346:K:\237\216\2415\233Q\343\314\227\025M\341B2\215Q\020/+Ze3l""\224i\255lo\255\005\224\371R\ry\221\264\340\202C*\330\222\024\350\224W(\244LP\341B\373\201p*\224\356[I\210o\306\307\217p\234\213\"\225M\311'\276N\3264\366\315\\\357\22135w$H&\256\321\312v\224\256\030\035)\341\312@\344\255\214G^\313p\r\275\026\200/=\0229\001\260\033z\025\365|\343C@\261\3646\233HH\204EU:}\0259CZ\2737\275z\030\030\357\370\244\343.\224E\025\233\204\210\2464\177\247(\021k*\2110\234#tQ,\3639\002\211d\204\310\253\006\247\307\366\013\363\375\245\311\362\261N0l\210A\372t\031\300'\"\205\203\237\177\206\310#\247{\320\026\014\340pu3\334\021J\0055y\202\213\227\264\217\024\036\321o\264\006\313ch-\243\222\210\005\312\331\237\273\034.=\241\313m\334\252A\347\356w+\330E\340\377\361p\003\231\013\255\264Q\033\343\367\244\251\333\002\202(\326\027\252\220\310\236\214\263\233\234sDT\250&MI\202\233\357J6\216\0312,\374\244\347Z\221hB]\254\345\207\r\024~\224\255@\306$7\365\007\222\240j\033Q\362i\204\243\320(\263\215Wc\3560\364\306\014\313\25725\030\346Y\226\310\257\242\264\363(\260\021\026|*C\224\306#\206\224\024\207\253\244\323\212\251\023(\035)#C+\274\261u\177\361w$S\205\t\004\027\230\200\360"; + PyObject *data = __Pyx_DecompressString(cstring, 1802, 2); + if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) + const char* const bytes = __Pyx_PyBytes_AsString(data); + #if !CYTHON_ASSUME_SAFE_MACROS + if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } + #endif + #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (1630 bytes) */ +const char* const cstring = "x\332\245UMs\333F\022\265\022:\253\224\345D\224\264^\347\253j(\307\313\244*FDI\353\270R\216S\022%'\332\252\330Vde\217SC\240I\215\r\314@\230\001M\344\224#\2178\342\210#\217<\362\310\243\2169\342\310\237\340\237\220\236\001?d+\225\034\266\212\0346\006\335\323\257_\277\036~K\366|\237x<\000\241\270\024\212\204\021\270\340q\321Yl\222\273\036\tb\245I\013\010\027\036\364\300#LxDHM\224\317\321}?n\267!\"]\016\257\210'A\331W\320\013\245\002\242t\304=PM&\210\024~B\334\010\230\006\302H\253\014\322gL\023\256\210+\205\346\235X\306\n\223\220\000\002\031%\016F\231\243\230R\274#\210\226\004\203\275{\366\234\322\303\244\234:M\017~\025q\315Z>L\035JP\355H\006\177\025k\313\"\257\270>#:\t\201\324\247\373:bB\3312\026!\245\033Fp\244J_\342\356\3402a\274$\241t:\014B\235\020u\306\360h\035\207\010\256-#\342&\372L\n\207E\021K\216,\000\031k\"\333\244%c\341)\362\005\353\341)w\275/\217\256\346*\311\217\303PF\032\274#\321e>\307.I\017\2762\304\24336\251\356\326\t\346\251c2SH\375+\322\301\250\231s\t\007\271\266i\036\376d\013\374\305\024\210\020\236H\244\322\266\246iQ\232z<\360y\013\"$\031)4m\305$\266\177\202<;|vo\367\301\256\225E\004/0\275Bt-\327\307\316\241\034LM1\3675&3\364*\207\034\265I\"c\"\000ab[C\364\273\034\240\317@\020\005\332\030\244n{\3014\326M1\034\265Y\237\362\312\273`\242\0373_\201\363\364\r\362\020\362T`\314uA\315\330<\321\020\222\200%\226?\324\363\257\020\311\005\321\247\302*\007\217D5v!Bah\010\314\263l\231\242\234G\365/\277g\236G\205\241\307\024K\220\241\255\236+}\337\300\301\3068\254\345>\274\244e\343T\202}\364\366\366LB\217<\256L^\260\331;.\371\302\264\251c\325c*0\303\010=\rB\333\321X\314%We\210gP*\376+\220\207\337\221\255+\332\022\022[\327f\261\257\t\245\021x\261\013\224\022/\266\205\n)\356a+\273\234\371\370\326\345\202kJE\034\204\211C]\031\201\023`\034\267\347\2206\343~\331/\036\030\341]v\213\003\206S\361\266\307\224\267G\322\005&\002Pg_w@\006\240\243\344\353Pr\241)\0274\224~\322\301\326:a\322S\340\267\035\301\002\230\315\317\023)\340ay\205xopyu\317H}N\351\033\357\347\273\361\274""\277\314\367\245k\357![\231\3074s\376\344m9#\346\214\3515\346\354\2354\217\216\232\264\371\364\311\363\243\037N\237\236\236\034\372>\017\025W\224>Kz\370=\300\261\240O\260_?C\373\004\316c\020.\230\251r\026\003\206\022\231e\240\245H\231Zh\303\"b\312\014\nS\211p\271t\220a\274\032\270\000\325b\nZ\302\243\350\204?\312\305\226\231\221\241tft@\0335\230G\3647\374\342\350\273\320b\356K\027'\003\233\353\031\200\270*\355\231\034v\241\210\277l\225\327\363\022\034\312\016\200\271\263\020<^)\200\215\266s\017Q\204\275N\002\326\263\0135\327!Z\230\310,\366\261\355\263\216j\373\222\351\373\273(DT\305\364\366ik\351S\332\216\205k\300\"L\245M\375\224\363-\336\340\036\032V1\370k\256B.\214,\266i\033\211\340\250v\017P-;\333\006\347\234\214R\365S\351\277\2404`\210\201\342Emp\230\253\020\037\244\027\373\370+\00455!D\034j\243/\334*W\234&\\\341\025.\030!B\253i\244b\256Xg\246X\347\212b\361\203M\010\221\332P\206a$_\364\314\222\204\2750\241\024\325L\3353p_\2528(\237\246\005\033\323rn\255X\204\334}\211\030\017\305\314\257k\377\277\014K\3471\363K\234\213\301\235[\345\210_\332\200\2361;\330X\210(\305\333sZ#Z\323\371\267\366\024\306%{v\222U\273!\023\267#\373\316|\215\326\360\310Pi\211\337(v5\236\243\321\207\322\030\ty\200\025 \003q\2103\004]\374k\211A\031\226{\275\255^\003\373\250U\262\2254\314=\253~[z\275{\355\372\362o\272\277\333\357\246\307)+\226?\354G\277W\357\344\215\374\361\340\337\303w\206\265\242\362\217\377\343\365\244\362Y\366<\277\225\237\017\226\212\2059\251\354\014\267\207\277\214\032\243\037\307\217/6/\366\212\312\366ps\370xT\033=\030\337\277X\273h\230\270\343b\276\274\376\340\332ug\360\363\240;<\036\236\215\332\343\3751+*\367\336\336\300\274v\231T\226\373\327\373\247i-m\024\3137\373\307}\326Wi\355OL\275p\260\346\215\376N\277\225.\025+\267R\226\306\331\336\334\230\\\3311\210\336\377\353,\257\337\273\366\376J\377?\351r\266\224m`\351\267\007\325A\255X\2719Y\256\246\325\302,\223\345\225\376a\372O<\361|\262\362!\306l\246\377\315X\246\362\315\374p\260>h\016\242\341\307HRs\024\215\253\305ju""\262\2021\230o\007\231\276j\356\246\347\177k\232\023\326\323\3752\310\032\010\362\346*f\276\223>\317\326\263&\346\256\025\253\267R7[\313v\263(_\317\233\271\032l\016\016\260\231\237\017\335\321\372h\177\344\216\327\306;\343\326\305R\261\272\236n\247'Y%;\310\337\311\357\344\307\305\306\247xD\224\257\345\333W\036>\301\363\316\363w\361\341\177\203\375\2017\254\rw\206\255\321R\261\361/\244\263\231\235\027\267ky\265\270\375\221\001\264\206\330\232\270}\220Wl\376\273\203\363\311\352\355\354\335l's\361\274]\334\27238\031\276g\001\035\215\217\r\220\373\210\270Ql\030\215!\2577\372\215be=m\244\207Y\265X\331H\367\322\323\254V\334\374`nO*7\372\017\322o\262\032\006\241\371MZ\317\252\350\201\346\375\264\372\364\017v-t\351"; + PyObject *data = __Pyx_DecompressString(cstring, 1630, 1); + if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) + const char* const bytes = __Pyx_PyBytes_AsString(data); + #if !CYTHON_ASSUME_SAFE_MACROS + if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } + #endif + #else /* compression: none (2949 bytes) */ +const char* const bytes = ": All dimensions preceding dimension %d must be indexed and not slicedBuffer view does not expose stridesCan only create a buffer that is contiguous in memory.Cannot assign to read-only memoryviewCannot create writable memory view from read-only memoryviewCannot index with type 'Cannot transpose memoryview with indirect dimensionsDimension %d is not directEmpty shape tuple for cython.arrayIndex out of bounds (axis %d)Indirect dimensions not supportedInvalid mode, expected 'c' or 'fortran', got Invalid shape in axis ')?add_note and at 0xcollections.abcdisableenablegc (got got differing extents in dimension isenableditemsize <= 0 for cython.arrayno default __reduce__ due to non-trivial __cinit__numpy._core.multiarray failed to importnumpy._core.umath failed to import object>oceanmesh/geometry/point_in_polygon_.pyxself.name is not Noneunable to allocate array data.unable to allocate shape and strides.ASCIIC_CONTIGUOUSEllipsis__Pyx_PyDict_NextRefSequenceView.MemoryViewabcallocate_bufferascontiguousarrayastypeasyncio.coroutinesbasebnd_arrbndsc__class____class_getitem__cline_in_tracebackcount__dict__distdtypedtype_is_objectdxdyeedgeemptyencodeenumerateerroreymaxeymax_vieweymineymin_viewflagsfloat64formatfortranftol__func____getstate__ii0i1id__import__indexinpoly2_fastinsideint32_is_coroutineitemsitemsizej__main__memviewmode__module__nn_edgen_vertname__name__ndim__new__nodenpnumpyobjoceanmesh.geometry.point_in_polygon_on_bndpackpopprojxprojypxpy__pyx_checksum__pyx_state__pyx_type__pyx_unpickle_Enum__pyx_vtable____qualname____reduce____reduce_cython____reduce_ex__""register__set_name__setdefault__setstate____setstate_cython__shapesizestartstatstat_arrstepstopstructt__test__uint8unpackupdatevvaluesvertxx0x1xintsy0y1zeros\200\001\3604\000\005\010\200t\2104\210v\220Q\220a\330\010\017\210r\320\021#\2401\240F\250&\260\002\260!\330\004\007\200t\2104\210v\220Q\220a\330\010\017\210r\320\021#\2401\240F\250&\260\002\260!\330\004\007\200t\2104\210v\220Q\220a\330\010\017\210r\320\021#\2401\240F\250&\260\002\260!\340\004\035\230T\240\026\240q\250\001\330\004\035\230T\240\026\240q\250\001\340\0043\2602\260V\2701\270H\300F\310\"\310A\330\0042\260\"\260F\270!\2708\3006\310\022\3101\340\004\035\230Q\330\004\035\230Q\330\004\035\230Q\360\016\000\005.\250R\250v\260Q\260h\270f\300B\300a\330\004-\250R\250v\260Q\260h\270f\300B\300a\330\004#\2401\330\004#\2401\340\004\010\210\005\210U\220!\2201\330\010\r\210Q\210a\210s\220!\330\010\r\210Q\210a\210s\220!\330\010\r\210Q\210a\210t\2201\330\010\r\210Q\210a\210t\2201\330\010\013\2103\210b\220\001\330\014\026\220a\220u\230A\330\014\026\220a\220u\230A\340\014\026\220a\220u\230A\330\014\026\220a\220u\230A\360\016\000\005\t\210\005\210U\220!\2201\330\010\r\210Q\210a\210s\220!\330\010\r\210Q\210a\210s\220!\360\006\000\t\014\2105\220\010\230\001\230\024\230T\240\030\250\021\250!\330\014\r\340\010\021\220\021\330\010\021\220\021\340\010\014\210E\220\025\220a\220q\340\014\017\210s\220\"\220J\230a\230s\240\"\240E\250\023\250C\250r\260\032\2701\270C\270r\300\021\330\020\021\340\014\021\220\021\220!\2203\220a\330\014\021\220\021\220!\2203\220a\330\014\021\220\021\220!\2204\220q\330\014\021\220\021\220!\2204\220q\330\014\021\220\021\220!\2204\220q\330\014\021\220\021\220!\2204\220q\340\014\021\220\023\220B\220a\330\014\021\220\023\220B\220a\360\006\000\r\020\210s\220#\220T\230\023\230C\230s\240!\330\020\026\220c\230\022\2304\230r\240\023\240C\240s\250\"\250D\260\002\260$\260c\270\023\270B\270c\300\022\3003\300b\310\001\330\020\023\2202\220S\230\004\230D\240\002\240#\240Q\330\024\034\230C\230r\240\022\2402\240Q\330""\024\034\230C\230r\240\022\2402\240Q\330\024\033\2304\230q\240\003\2402\240W\250B\250d\260!\2603\260b\270\001\330\024\027\220u\230C\230q\330\030!\240\021\330\030\031\360\006\000\r\022\220\023\220C\220u\230D\240\004\240C\240s\250%\250q\340\020\030\230\003\2303\230c\240\022\2404\240s\250#\250S\260\006\260c\270\023\270I\300Q\330\020\023\2206\230\022\2301\330\024\035\230T\240\021\340\010\013\2101\330\014\023\2201\220E\230\021\330\014\024\220A\220U\230!\330\r\016\330\014\024\220A\220U\230!\340\004\013\2108\2207\230!\2301\330\004\013\2107\220'\230\021\230!\330\004\013\2106\220\021O"; + PyObject *data = NULL; + CYTHON_UNUSED_VAR(__Pyx_DecompressString); + #endif + PyObject **stringtab = __pyx_mstate->__pyx_string_tab; + Py_ssize_t pos = 0; + for (int i = 0; i < 163; i++) { + Py_ssize_t bytes_length = index[i].length; + PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL); + if (likely(string) && i >= 48) PyUnicode_InternInPlace(&string); + if (unlikely(!string)) { + Py_XDECREF(data); + __PYX_ERR(0, 1, __pyx_L1_error) + } + stringtab[i] = string; + pos += bytes_length; + } + for (int i = 163; i < 165; i++) { + Py_ssize_t bytes_length = index[i].length; + PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length); + stringtab[i] = string; + pos += bytes_length; + if (unlikely(!string)) { + Py_XDECREF(data); + __PYX_ERR(0, 1, __pyx_L1_error) + } + } + Py_XDECREF(data); + for (Py_ssize_t i = 0; i < 165; i++) { + if (unlikely(PyObject_Hash(stringtab[i]) == -1)) { + __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = stringtab + 163; + for (Py_ssize_t i=0; i<2; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif + } + { + PyObject **numbertab = __pyx_mstate->__pyx_number_tab + 0; + int8_t const cint_constants_1[] = {0,-1,1}; + int32_t const cint_constants_4[] = {136983863L}; + for (int i = 0; i < 4; i++) { + numbertab[i] = PyLong_FromLong((i < 3 ? cint_constants_1[i - 0] : cint_constants_4[i - 3])); + if (unlikely(!numbertab[i])) __PYX_ERR(0, 1, __pyx_L1_error) + } + } + #if CYTHON_IMMORTAL_CONSTANTS + { + PyObject **table = __pyx_mstate->__pyx_number_tab; + for (Py_ssize_t i=0; i<4; ++i) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); + #else + Py_SET_REFCNT(table[i], _Py_IMMORTAL_INITIAL_REFCNT); + #endif + } + } + #endif return 0; __pyx_L1_error:; return -1; } /* #### Code section: init_codeobjects ### */ -\ - typedef struct { - unsigned int argcount : 3; - unsigned int num_posonly_args : 1; - unsigned int num_kwonly_args : 1; - unsigned int nlocals : 6; - unsigned int flags : 10; - unsigned int first_line : 5; - unsigned int line_table_length : 15; - } __Pyx_PyCode_New_function_description; +typedef struct { + unsigned int argcount : 3; + unsigned int num_posonly_args : 1; + unsigned int num_kwonly_args : 1; + unsigned int nlocals : 6; + unsigned int flags : 10; + unsigned int first_line : 5; +} __Pyx_PyCode_New_function_description; /* NewCodeObj.proto */ static PyObject* __Pyx_PyCode_New( const __Pyx_PyCode_New_function_description descr, PyObject * const *varnames, PyObject *filename, PyObject *funcname, - const char *line_table, + PyObject *line_table, PyObject *tuple_dedup_map ); @@ -23038,9 +22638,9 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { PyObject* tuple_dedup_map = PyDict_New(); if (unlikely(!tuple_dedup_map)) return -1; { - const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 36, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16, 791}; + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 36, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 16}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_vert, __pyx_mstate->__pyx_n_u_node, __pyx_mstate->__pyx_n_u_edge, __pyx_mstate->__pyx_n_u_ftol, __pyx_mstate->__pyx_n_u_n_vert, __pyx_mstate->__pyx_n_u_n_edge, __pyx_mstate->__pyx_n_u_stat_arr, __pyx_mstate->__pyx_n_u_bnd_arr, __pyx_mstate->__pyx_n_u_v, __pyx_mstate->__pyx_n_u_n, __pyx_mstate->__pyx_n_u_e, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_j, __pyx_mstate->__pyx_n_u_i0, __pyx_mstate->__pyx_n_u_i1, __pyx_mstate->__pyx_n_u_x0, __pyx_mstate->__pyx_n_u_y0, __pyx_mstate->__pyx_n_u_x1, __pyx_mstate->__pyx_n_u_y1, __pyx_mstate->__pyx_n_u_eymin, __pyx_mstate->__pyx_n_u_eymax, __pyx_mstate->__pyx_n_u_eymin_view, __pyx_mstate->__pyx_n_u_eymax_view, __pyx_mstate->__pyx_n_u_px, __pyx_mstate->__pyx_n_u_py, __pyx_mstate->__pyx_n_u_dx, __pyx_mstate->__pyx_n_u_dy, __pyx_mstate->__pyx_n_u_t, __pyx_mstate->__pyx_n_u_projx, __pyx_mstate->__pyx_n_u_projy, __pyx_mstate->__pyx_n_u_dist, __pyx_mstate->__pyx_n_u_xints, __pyx_mstate->__pyx_n_u_inside, __pyx_mstate->__pyx_n_u_on_bnd, __pyx_mstate->__pyx_n_u_stat, __pyx_mstate->__pyx_n_u_bnds}; - __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_oceanmesh_geometry_point_in_poly_2, __pyx_mstate->__pyx_n_u_inpoly2_fast, __pyx_k_4_t4vQa_r_1F_t4vQa_r_1F_t4vQa_r, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; + __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_oceanmesh_geometry_point_in_poly_2, __pyx_mstate->__pyx_n_u_inpoly2_fast, __pyx_mstate->__pyx_kp_b_iso88591_4_t4vQa_r_1F_t4vQa_r_1F_t4vQa_r, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad; } Py_DECREF(tuple_dedup_map); return 0; @@ -23053,46 +22653,56 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { static int __Pyx_InitGlobals(void) { /* PythonCompatibility.init */ if (likely(__Pyx_init_co_variables() == 0)); else - -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) /* AssertionsEnabled.init */ if (likely(__Pyx_init_assertions_enabled() == 0)); else - -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) /* NumpyImportArray.init */ /* - * Cython has automatically inserted a call to _import_array since - * you didn't include one when you cimported numpy. To disable this - * add the line - * numpy._import_array - */ -#ifdef NPY_FEATURE_VERSION -#ifndef NO_IMPORT_ARRAY -if (unlikely(_import_array() == -1)) { - PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import " - "(auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; " - "use 'numpy._import_array' to disable if you are certain you don't need it)."); -} -#endif -#endif + * Cython has automatically inserted a call to _import_array since + * you didn't include one when you cimported numpy. To disable this + * add the line + * numpy._import_array + */ + #ifdef NPY_FEATURE_VERSION + #ifndef NO_IMPORT_ARRAY + if (unlikely(_import_array() == -1)) { + PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import " + "(auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; " + "use 'numpy._import_array' to disable if you are certain you don't need it)."); + } + #endif + #endif + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + /* CommonTypesMetaclass.init */ + if (likely(__pyx_CommonTypesMetaclass_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) /* CachedMethodType.init */ #if CYTHON_COMPILING_IN_LIMITED_API -{ - PyObject *typesModule=NULL; - typesModule = PyImport_ImportModule("types"); - if (typesModule) { - __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); - Py_DECREF(typesModule); - } -} // error handling follows -#endif + { + PyObject *typesModule=NULL; + typesModule = PyImport_ImportModule("types"); + if (typesModule) { + __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType"); + Py_DECREF(typesModule); + } + } // error handling follows + #endif + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) -if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) + /* CythonFunctionShared.init */ + if (likely(__pyx_CyFunction_init(__pyx_m) == 0)); else + + if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; @@ -23133,183 +22743,34 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { } #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); - for (i=0; i__pyx_empty_tuple); } - for (i=0; i= 0x030C00A6 - PyObject *current_exception = tstate->current_exception; - if (unlikely(!current_exception)) return 0; - exc_type = (PyObject*) Py_TYPE(current_exception); - if (exc_type == err) return 1; -#else - exc_type = tstate->curexc_type; - if (exc_type == err) return 1; - if (unlikely(!exc_type)) return 0; -#endif - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(exc_type); - #endif - if (unlikely(PyTuple_Check(err))) { - result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); - } else { - result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); - } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(exc_type); - #endif - return result; -} -#endif - -/* PyErrFetchRestore */ -#if CYTHON_FAST_THREAD_STATE -static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject *tmp_value; - assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); - if (value) { - #if CYTHON_COMPILING_IN_CPYTHON - if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) - #endif - PyException_SetTraceback(value, tb); - } - tmp_value = tstate->current_exception; - tstate->current_exception = value; - Py_XDECREF(tmp_value); - Py_XDECREF(type); - Py_XDECREF(tb); -#else - PyObject *tmp_type, *tmp_value, *tmp_tb; - tmp_type = tstate->curexc_type; - tmp_value = tstate->curexc_value; - tmp_tb = tstate->curexc_traceback; - tstate->curexc_type = type; - tstate->curexc_value = value; - tstate->curexc_traceback = tb; - Py_XDECREF(tmp_type); - Py_XDECREF(tmp_value); - Py_XDECREF(tmp_tb); -#endif -} -static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { -#if PY_VERSION_HEX >= 0x030C00A6 - PyObject* exc_value; - exc_value = tstate->current_exception; - tstate->current_exception = 0; - *value = exc_value; - *type = NULL; - *tb = NULL; - if (exc_value) { - *type = (PyObject*) Py_TYPE(exc_value); - Py_INCREF(*type); - #if CYTHON_COMPILING_IN_CPYTHON - *tb = ((PyBaseExceptionObject*) exc_value)->traceback; - Py_XINCREF(*tb); - #else - *tb = PyException_GetTraceback(exc_value); - #endif - } -#else - *type = tstate->curexc_type; - *value = tstate->curexc_value; - *tb = tstate->curexc_traceback; - tstate->curexc_type = 0; - tstate->curexc_value = 0; - tstate->curexc_traceback = 0; -#endif -} -#endif - -/* PyObjectGetAttrStr */ -#if CYTHON_USE_TYPE_SLOTS -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { - PyTypeObject* tp = Py_TYPE(obj); - if (likely(tp->tp_getattro)) - return tp->tp_getattro(obj, attr_name); - return PyObject_GetAttr(obj, attr_name); -} -#endif - -/* PyObjectGetAttrStrNoError */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 -static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { - __Pyx_PyThreadState_declare - __Pyx_PyThreadState_assign - if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) - __Pyx_PyErr_Clear(); -} -#endif -static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { - PyObject *result; -#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 - (void) PyObject_GetOptionalAttr(obj, attr_name, &result); - return result; -#else -#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS - 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; -#endif -} - -/* GetBuiltinName */ -static PyObject *__Pyx_GetBuiltinName(PyObject *name) { - PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); - if (unlikely(!result) && !PyErr_Occurred()) { - PyErr_Format(PyExc_NameError, - "name '%U' is not defined", name); - } - return result; -} - -/* TupleAndListFromArray */ -#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL -static CYTHON_INLINE PyObject * -__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n) -{ - PyObject *res; - Py_ssize_t i; - if (n <= 0) { - return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple); - } - res = PyTuple_New(n); - if (unlikely(res == NULL)) return NULL; - for (i = 0; i < n; i++) { - if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < 0)) { - Py_DECREF(res); - return NULL; - } - Py_INCREF(src[i]); - } - return res; -} -#elif CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { - PyObject *v; - Py_ssize_t i; - for (i = 0; i < length; i++) { - v = dest[i] = src[i]; - Py_INCREF(v); +#elif CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) { + PyObject *v; + Py_ssize_t i; + for (i = 0; i < length; i++) { + v = dest[i] = src[i]; + Py_INCREF(v); } } static CYTHON_INLINE PyObject * @@ -23338,7 +22799,7 @@ __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n) } #endif -/* BytesEquals */ +/* BytesEquals (used by UnicodeEquals) */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\ !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) @@ -23386,7 +22847,7 @@ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int eq #endif } -/* UnicodeEquals */ +/* UnicodeEquals (used by fastcall) */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL return PyObject_RichCompareBool(s1, s2, equals); @@ -23521,120 +22982,7 @@ CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, Py #endif #endif -/* RaiseDoubleKeywords */ -static void __Pyx_RaiseDoubleKeywordsError( - const char* func_name, - PyObject* kw_name) -{ - PyErr_Format(PyExc_TypeError, - "%s() got multiple values for keyword argument '%U'", func_name, kw_name); -} - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject *const *args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = __Pyx_PyThreadState_Current; - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = __Pyx_PyFrame_GetLocalsplus(f); - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; - PyObject *kwdefs; - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) { - return NULL; - } - if ( - co->co_kwonlyargcount == 0 && - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); - kwdefs = PyFunction_GET_KW_DEFAULTS(func); - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, (int)nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif - -/* PyObjectCall */ +/* PyObjectCall (used by PyObjectFastCall) */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; @@ -23654,7 +23002,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg } #endif -/* PyObjectCallMethO */ +/* PyObjectCallMethO (used by PyObjectFastCall) */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; @@ -23674,7 +23022,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject } #endif -/* PyObjectFastCall */ +/* PyObjectFastCall (used by PyObjectCallOneArg) */ #if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) { PyObject *argstuple; @@ -23729,38 +23077,16 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObj return __Pyx_PyObject_CallMethO(func, args[0]); } #endif - #if PY_VERSION_HEX < 0x030800B1 - #if CYTHON_FAST_PYCCALL - if (PyCFunction_Check(func)) { - if (kwargs) { - return _PyCFunction_FastCallDict(func, args, nargs, kwargs); - } else { - return _PyCFunction_FastCallKeywords(func, args, nargs, NULL); - } - } - if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) { - return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL); - } - #endif - #if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs); - } - #endif - #endif if (kwargs == NULL) { - #if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API - vectorcallfunc f = __Pyx_PyVectorcall_Function(func); - if (f) { - return f(func, args, _nargs, NULL); - } - #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL - if (__Pyx_CyFunction_CheckExact(func)) { - __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func); - if (f) return f(func, args, _nargs, NULL); - } - #elif CYTHON_COMPILING_IN_LIMITED_API && CYTHON_VECTORCALL - return PyObject_Vectorcall(func, args, _nargs, NULL); + #if CYTHON_VECTORCALL + #if CYTHON_COMPILING_IN_LIMITED_API + return PyObject_Vectorcall(func, args, _nargs, NULL); + #else + vectorcallfunc f = __Pyx_PyVectorcall_Function(func); + if (f) { + return f(func, args, _nargs, NULL); + } + #endif #endif } if (nargs == 0) { @@ -23773,7 +23099,23 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObj #endif } -/* UnpackUnboundCMethod */ +/* PyObjectCallOneArg (used by CallUnboundCMethod0) */ +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *args[2] = {NULL, arg}; + return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); +} + +/* PyObjectGetAttrStr (used by UnpackUnboundCMethod) */ +#if CYTHON_USE_TYPE_SLOTS +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { + PyTypeObject* tp = Py_TYPE(obj); + if (likely(tp->tp_getattro)) + return tp->tp_getattro(obj, attr_name); + return PyObject_GetAttr(obj, attr_name); +} +#endif + +/* UnpackUnboundCMethod (used by CallUnboundCMethod0) */ #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000 static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) { PyObject *result; @@ -23858,6 +23200,121 @@ static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) { return 0; } +/* CallUnboundCMethod0 */ +#if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { + int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc); + if (likely(was_initialized == 2 && cfunc->func)) { + if (likely(cfunc->flag == METH_NOARGS)) + return __Pyx_CallCFunction(cfunc, self, NULL); + if (likely(cfunc->flag == METH_FASTCALL)) + return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0); + if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS)) + return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL); + if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS))) + return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL); + if (cfunc->flag == METH_VARARGS) + return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple); + return __Pyx__CallUnboundCMethod0(cfunc, self); + } +#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + else if (unlikely(was_initialized == 1)) { + __Pyx_CachedCFunction tmp_cfunc = { +#ifndef __cplusplus + 0 +#endif + }; + tmp_cfunc.type = cfunc->type; + tmp_cfunc.method_name = cfunc->method_name; + return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self); + } +#endif + PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self); + __Pyx_CachedCFunction_SetFinishedInitializing(cfunc); + return result; +} +#endif +static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) { + PyObject *result; + if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL; + result = __Pyx_PyObject_CallOneArg(cfunc->method, self); + return result; +} + +/* py_dict_items (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) { + return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_items, d); +} + +/* py_dict_values (used by OwnedDictNext) */ +static CYTHON_INLINE PyObject* __Pyx_PyDict_Values(PyObject* d) { + return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_values, d); +} + +/* OwnedDictNext (used by ParseKeywordsImpl) */ +#if CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, PyObject **ppos, PyObject **pkey, PyObject **pvalue) { + PyObject *next = NULL; + if (!*ppos) { + if (pvalue) { + PyObject *dictview = pkey ? __Pyx_PyDict_Items(p) : __Pyx_PyDict_Values(p); + if (unlikely(!dictview)) goto bad; + *ppos = PyObject_GetIter(dictview); + Py_DECREF(dictview); + } else { + *ppos = PyObject_GetIter(p); + } + if (unlikely(!*ppos)) goto bad; + } + next = PyIter_Next(*ppos); + if (!next) { + if (PyErr_Occurred()) goto bad; + return 0; + } + if (pkey && pvalue) { + *pkey = __Pyx_PySequence_ITEM(next, 0); + if (unlikely(*pkey)) goto bad; + *pvalue = __Pyx_PySequence_ITEM(next, 1); + if (unlikely(*pvalue)) goto bad; + Py_DECREF(next); + } else if (pkey) { + *pkey = next; + } else { + assert(pvalue); + *pvalue = next; + } + return 1; + bad: + Py_XDECREF(next); +#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 + PyErr_FormatUnraisable("Exception ignored in __Pyx_PyDict_NextRef"); +#else + PyErr_WriteUnraisable(__pyx_mstate_global->__pyx_n_u_Pyx_PyDict_NextRef); +#endif + if (pkey) *pkey = NULL; + if (pvalue) *pvalue = NULL; + return 0; +} +#else // !CYTHON_AVOID_BORROWED_REFS +static int __Pyx_PyDict_NextRef(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) { + int result = PyDict_Next(p, ppos, pkey, pvalue); + if (likely(result == 1)) { + if (pkey) Py_INCREF(*pkey); + if (pvalue) Py_INCREF(*pvalue); + } + return result; +} +#endif + +/* RaiseDoubleKeywords (used by ParseKeywordsImpl) */ +static void __Pyx_RaiseDoubleKeywordsError( + const char* func_name, + PyObject* kw_name) +{ + PyErr_Format(PyExc_TypeError, + "%s() got multiple values for keyword argument '%U'", func_name, kw_name); +} + /* CallUnboundCMethod2 */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) { @@ -23912,7 +23369,7 @@ static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObje } } -/* ParseKeywords */ +/* ParseKeywordsImpl (used by ParseKeywords) */ static int __Pyx_ValidateDuplicatePosArgs( PyObject *kwds, PyObject ** const argnames[], @@ -24068,16 +23525,23 @@ static void __Pyx_RejectUnknownKeyword( PyObject ** const *first_kw_arg, const char *function_name) { + #if CYTHON_AVOID_BORROWED_REFS + PyObject *pos = NULL; + #else Py_ssize_t pos = 0; + #endif PyObject *key = NULL; __Pyx_BEGIN_CRITICAL_SECTION(kwds); - while (PyDict_Next(kwds, &pos, &key, NULL)) { + while ( + #if CYTHON_AVOID_BORROWED_REFS + __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL) + #else + PyDict_Next(kwds, &pos, &key, NULL) + #endif + ) { PyObject** const *name = first_kw_arg; while (*name && (**name != key)) name++; if (!*name) { - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(key); - #endif size_t index_found = 0; int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name); if (cmp != 1) { @@ -24091,12 +23555,15 @@ static void __Pyx_RejectUnknownKeyword( #endif break; } - #if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(key); - #endif } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(key); + #endif } __Pyx_END_CRITICAL_SECTION(); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(pos); + #endif assert(PyErr_Occurred()); } static int __Pyx_ParseKeywordDict( @@ -24268,6 +23735,8 @@ static int __Pyx_ParseKeywordsTuple( #endif return -1; } + +/* ParseKeywords */ static int __Pyx_ParseKeywords( PyObject *kwds, PyObject * const *kwvalues, @@ -24313,7 +23782,7 @@ static void __Pyx_RaiseArgtupleInvalid( (num_expected == 1) ? "" : "s", num_found); } -/* ArgTypeTest */ +/* ArgTypeTestFunc (used by ArgTypeTest) */ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact) { __Pyx_TypeName type_name; @@ -24361,6 +23830,145 @@ static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *nam return 0; } +/* PyErrExceptionMatches (used by PyObjectGetAttrStrNoError) */ +#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); + for (i=0; i= 0x030C00A6 + PyObject *current_exception = tstate->current_exception; + if (unlikely(!current_exception)) return 0; + exc_type = (PyObject*) Py_TYPE(current_exception); + if (exc_type == err) return 1; +#else + exc_type = tstate->curexc_type; + if (exc_type == err) return 1; + if (unlikely(!exc_type)) return 0; +#endif + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(exc_type); + #endif + if (unlikely(PyTuple_Check(err))) { + result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err); + } else { + result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err); + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(exc_type); + #endif + return result; +} +#endif + +/* PyErrFetchRestore (used by PyObjectGetAttrStrNoError) */ +#if CYTHON_FAST_THREAD_STATE +static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject *tmp_value; + assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value))); + if (value) { + #if CYTHON_COMPILING_IN_CPYTHON + if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb)) + #endif + PyException_SetTraceback(value, tb); + } + tmp_value = tstate->current_exception; + tstate->current_exception = value; + Py_XDECREF(tmp_value); + Py_XDECREF(type); + Py_XDECREF(tb); +#else + PyObject *tmp_type, *tmp_value, *tmp_tb; + tmp_type = tstate->curexc_type; + tmp_value = tstate->curexc_value; + tmp_tb = tstate->curexc_traceback; + tstate->curexc_type = type; + tstate->curexc_value = value; + tstate->curexc_traceback = tb; + Py_XDECREF(tmp_type); + Py_XDECREF(tmp_value); + Py_XDECREF(tmp_tb); +#endif +} +static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { +#if PY_VERSION_HEX >= 0x030C00A6 + PyObject* exc_value; + exc_value = tstate->current_exception; + tstate->current_exception = 0; + *value = exc_value; + *type = NULL; + *tb = NULL; + if (exc_value) { + *type = (PyObject*) Py_TYPE(exc_value); + Py_INCREF(*type); + #if CYTHON_COMPILING_IN_CPYTHON + *tb = ((PyBaseExceptionObject*) exc_value)->traceback; + Py_XINCREF(*tb); + #else + *tb = PyException_GetTraceback(exc_value); + #endif + } +#else + *type = tstate->curexc_type; + *value = tstate->curexc_value; + *tb = tstate->curexc_traceback; + tstate->curexc_type = 0; + tstate->curexc_value = 0; + tstate->curexc_traceback = 0; +#endif +} +#endif + +/* PyObjectGetAttrStrNoError (used by GetBuiltinName) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) { + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError))) + __Pyx_PyErr_Clear(); +} +#endif +static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) { + PyObject *result; +#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + (void) PyObject_GetOptionalAttr(obj, attr_name, &result); + return result; +#else +#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS + 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; +#endif +} + +/* GetBuiltinName */ +static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name); + if (unlikely(!result) && !PyErr_Occurred()) { + PyErr_Format(PyExc_NameError, + "name '%U' is not defined", name); + } + return result; +} + /* RaiseException */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; @@ -24493,7 +24101,7 @@ __Pyx_RaiseUnexpectedTypeError(const char *expected, PyObject *obj) return 0; } -/* CIntToDigits */ +/* CIntToDigits (used by CIntToPyUnicode) */ static const char DIGIT_PAIRS_10[2*10*10+1] = { "00010203040506070809" "10111213141516171819" @@ -24521,7 +24129,7 @@ static const char DIGITS_HEX[2*16+1] = { "0123456789ABCDEF" }; -/* BuildPyUnicode */ +/* BuildPyUnicode (used by COrdinalToPyUnicode) */ static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength, int prepend_sign, char padding_char) { PyObject *uval; @@ -24584,15 +24192,16 @@ static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* return uval; } -/* COrdinalToPyUnicode */ +/* COrdinalToPyUnicode (used by CIntToPyUnicode) */ static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) { return value <= 1114111; } static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) { - if (likely(ulength <= 250)) { + Py_ssize_t padding_length = ulength - 1; + if (likely((padding_length <= 250) && (value < 0xD800 || value > 0xDFFF))) { char chars[256]; if (value <= 255) { - memset(chars, padding_char, (size_t) (ulength - 1)); + memset(chars, padding_char, (size_t) padding_length); chars[ulength-1] = (char) value; return PyUnicode_DecodeLatin1(chars, ulength, NULL); } @@ -24616,8 +24225,8 @@ static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulengt value >>= 6; *--cpos = (char) (0xf0 | (value & 0x07)); } - cpos -= ulength; - memset(cpos, padding_char, (size_t) (ulength - 1)); + cpos -= padding_length; + memset(cpos, padding_char, (size_t) padding_length); return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL); } if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) { @@ -24628,7 +24237,7 @@ static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulengt PyObject *uchar, *padding_uchar, *padding, *result; padding_uchar = PyUnicode_FromOrdinal(padding_char); if (unlikely(!padding_uchar)) return NULL; - padding = PySequence_Repeat(padding_uchar, ulength - 1); + padding = PySequence_Repeat(padding_uchar, padding_length); Py_DECREF(padding_uchar); if (unlikely(!padding)) return NULL; uchar = PyUnicode_FromOrdinal(value); @@ -24644,7 +24253,27 @@ static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulengt } /* CIntToPyUnicode */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) { +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char) { +#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(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); +} +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) { char digits[sizeof(int)*3+2]; char *dpos, *end = digits + sizeof(int)*3+2; const char *hex_digits = DIGITS_HEX; @@ -24660,17 +24289,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; - if (format_char == 'c') { - if (unlikely(!(is_unsigned || value == 0 || value > 0) || - !(sizeof(value) <= 2 || value & ~ (int) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { - PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); - return NULL; - } - if (width <= 1) { - return PyUnicode_FromOrdinal((int) value); - } - return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); - } if (format_char == 'X') { hex_digits += 16; format_char = 'x'; @@ -24728,7 +24346,27 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi } /* CIntToPyUnicode */ -static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { +static CYTHON_INLINE PyObject* __Pyx_uchar___Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char) { +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wconversion" +#endif + const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0; +#ifdef __Pyx_HAS_GCC_DIAGNOSTIC +#pragma GCC diagnostic pop +#endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!(is_unsigned || value == 0 || value > 0) || + !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { + PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); + return NULL; + } + if (width <= 1) { + return PyUnicode_FromOrdinal((int) value); + } + return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); +} +static CYTHON_INLINE PyObject* __Pyx____Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) { char digits[sizeof(Py_ssize_t)*3+2]; char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2; const char *hex_digits = DIGITS_HEX; @@ -24744,17 +24382,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, #pragma GCC diagnostic pop #endif const int is_unsigned = neg_one > const_zero; - if (format_char == 'c') { - if (unlikely(!(is_unsigned || value == 0 || value > 0) || - !(sizeof(value) <= 2 || value & ~ (Py_ssize_t) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) { - PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)"); - return NULL; - } - if (width <= 1) { - return PyUnicode_FromOrdinal((int) value); - } - return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char); - } if (format_char == 'X') { hex_digits += 16; format_char = 'x'; @@ -24907,69 +24534,77 @@ static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_SIZE Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyList_GET_SIZE(o); } + if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS)) { + return __Pyx_PyList_GetItemRefFast(o, wrapped_i, unsafe_shared); + } else if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) { - PyObject *r = PyList_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; + return __Pyx_NewRef(PyList_GET_ITEM(o, wrapped_i)); } return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); #else + (void)wraparound; + (void)boundscheck; return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS Py_ssize_t wrapped_i = i; if (wraparound & unlikely(i < 0)) { wrapped_i += PyTuple_GET_SIZE(o); } if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, wrapped_i); - Py_INCREF(r); - return r; + return __Pyx_NewRef(PyTuple_GET_ITEM(o, wrapped_i)); } return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); #else + (void)wraparound; + (void)boundscheck; return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, - CYTHON_NCP_UNUSED int wraparound, - CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); - if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { - return __Pyx_PyList_GetItemRef(o, n); + if ((CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)) { + return __Pyx_PyList_GetItemRefFast(o, n, unsafe_shared); + } else if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) { + return __Pyx_NewRef(PyList_GET_ITEM(o, n)); } - } - else if (PyTuple_CheckExact(o)) { + } else + #if !CYTHON_AVOID_BORROWED_REFS + if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) { - PyObject *r = PyTuple_GET_ITEM(o, n); - Py_INCREF(r); - return r; + return __Pyx_NewRef(PyTuple_GET_ITEM(o, n)); } - } else { + } else + #endif +#endif +#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY + { PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (mm && mm->mp_subscript) { + if (!is_list && mm && mm->mp_subscript) { PyObject *r, *key = PyLong_FromSsize_t(i); if (unlikely(!key)) return NULL; r = mm->mp_subscript(o, key); Py_DECREF(key); return r; } - if (likely(sm && sm->sq_item)) { + if (is_list || likely(sm && sm->sq_item)) { if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { Py_ssize_t l = sm->sq_length(o); if (likely(l >= 0)) { @@ -24988,15 +24623,11 @@ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, return PySequence_GetItem(o, i); } #endif + (void)wraparound; + (void)boundscheck; return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i)); } -/* PyObjectCallOneArg */ -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *args[2] = {NULL, arg}; - return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - /* ObjectGetItem */ #if CYTHON_USE_TYPE_SLOTS static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { @@ -25004,7 +24635,7 @@ static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) { Py_ssize_t key_value; key_value = __Pyx_PyIndex_AsSsize_t(index); if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) { - return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1); + return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1, 1); } if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) { __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index)); @@ -25053,12 +24684,18 @@ static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) { if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) { key = __Pyx_PySequence_ITEM(kwds, 0); } else { +#if CYTHON_AVOID_BORROWED_REFS + PyObject *pos = NULL; +#else Py_ssize_t pos = 0; +#endif #if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments) if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return; #endif - PyDict_Next(kwds, &pos, &key, NULL); - Py_INCREF(key); + __Pyx_PyDict_NextRef(kwds, &pos, &key, NULL); +#if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(pos); +#endif } if (likely(key)) { PyErr_Format(PyExc_TypeError, @@ -25111,7 +24748,7 @@ static CYTHON_INLINE PyObject *__Pyx_GetAttr3(PyObject *o, PyObject *n, PyObject #endif } -/* PyDictVersioning */ +/* PyDictVersioning (used by GetModuleGlobalName) */ #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) { PyObject *dict = Py_TYPE(obj)->tp_dict; @@ -25211,7 +24848,7 @@ static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { return 0; } -/* GetTopmostException */ +/* GetTopmostException (used by SaveResetException) */ #if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate) @@ -25450,19 +25087,121 @@ static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, } #endif -/* Import */ -static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { +/* HasAttr (used by ImportImpl) */ +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 +static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { + PyObject *r; + if (unlikely(!PyUnicode_Check(n))) { + PyErr_SetString(PyExc_TypeError, + "hasattr(): attribute name must be string"); + return -1; + } + r = __Pyx_PyObject_GetAttrStrNoError(o, n); + if (!r) { + return (unlikely(PyErr_Occurred())) ? -1 : 0; + } else { + Py_DECREF(r); + return 1; + } +} +#endif + +/* ImportImpl (used by Import) */ +static int __Pyx__Import_GetModule(PyObject *qualname, PyObject **module) { + PyObject *imported_module = PyImport_GetModule(qualname); + if (unlikely(!imported_module)) { + *module = NULL; + if (PyErr_Occurred()) { + return -1; + } + return 0; + } + *module = imported_module; + return 1; +} +static int __Pyx__Import_Lookup(PyObject *qualname, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject **module) { + PyObject *imported_module; + PyObject *top_level_package_name; + Py_ssize_t i; + int status, module_found; + Py_ssize_t dot_index; + module_found = __Pyx__Import_GetModule(qualname, &imported_module); + if (unlikely(!module_found || module_found == -1)) { + *module = NULL; + return module_found; + } + if (imported_names) { + for (i = 0; i < len_imported_names; i++) { + PyObject *imported_name = imported_names[i]; +#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 + int has_imported_attribute = PyObject_HasAttr(imported_module, imported_name); +#else + int has_imported_attribute = PyObject_HasAttrWithError(imported_module, imported_name); + if (unlikely(has_imported_attribute == -1)) goto error; +#endif + if (!has_imported_attribute) { + goto not_found; + } + } + *module = imported_module; + return 1; + } + dot_index = PyUnicode_FindChar(qualname, '.', 0, PY_SSIZE_T_MAX, 1); + if (dot_index == -1) { + *module = imported_module; + return 1; + } + if (unlikely(dot_index == -2)) goto error; + top_level_package_name = PyUnicode_Substring(qualname, 0, dot_index); + if (unlikely(!top_level_package_name)) goto error; + Py_DECREF(imported_module); + status = __Pyx__Import_GetModule(top_level_package_name, module); + Py_DECREF(top_level_package_name); + return status; +error: + Py_DECREF(imported_module); + *module = NULL; + return -1; +not_found: + Py_DECREF(imported_module); + *module = NULL; + return 0; +} +static PyObject *__Pyx__Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, PyObject *moddict, int level) { PyObject *module = 0; PyObject *empty_dict = 0; - PyObject *empty_list = 0; + PyObject *from_list = 0; + int module_found; + if (!qualname) { + qualname = name; + } + module_found = __Pyx__Import_Lookup(qualname, imported_names, len_imported_names, &module); + if (likely(module_found == 1)) { + return module; + } else if (unlikely(module_found == -1)) { + return NULL; + } empty_dict = PyDict_New(); if (unlikely(!empty_dict)) goto bad; + if (imported_names) { +#if CYTHON_COMPILING_IN_CPYTHON + from_list = __Pyx_PyList_FromArray(imported_names, len_imported_names); + if (unlikely(!from_list)) + goto bad; +#else + from_list = PyList_New(len_imported_names); + if (unlikely(!from_list)) goto bad; + for (Py_ssize_t i=0; i__pyx_d, empty_dict, from_list, 1); + name, moddict, empty_dict, from_list, 1); if (unlikely(!module)) { if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError))) goto bad; @@ -25473,126 +25212,17 @@ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { } if (!module) { module = PyImport_ImportModuleLevelObject( - name, __pyx_mstate_global->__pyx_d, empty_dict, from_list, level); + name, moddict, empty_dict, from_list, level); } bad: + Py_XDECREF(from_list); Py_XDECREF(empty_dict); - Py_XDECREF(empty_list); return module; } -/* ImportDottedModule */ -static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) { - PyObject *partial_name = NULL, *slice = NULL, *sep = NULL; - Py_ssize_t size; - if (unlikely(PyErr_Occurred())) { - PyErr_Clear(); - } -#if CYTHON_ASSUME_SAFE_SIZE - size = PyTuple_GET_SIZE(parts_tuple); -#else - size = PyTuple_Size(parts_tuple); - if (size < 0) goto bad; -#endif - if (likely(size == count)) { - partial_name = name; - } else { - slice = PySequence_GetSlice(parts_tuple, 0, count); - if (unlikely(!slice)) - goto bad; - sep = PyUnicode_FromStringAndSize(".", 1); - if (unlikely(!sep)) - goto bad; - partial_name = PyUnicode_Join(sep, slice); - } - PyErr_Format( - PyExc_ModuleNotFoundError, - "No module named '%U'", partial_name); -bad: - Py_XDECREF(sep); - Py_XDECREF(slice); - Py_XDECREF(partial_name); - return NULL; -} -static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) { - PyObject *imported_module; -#if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ - CYTHON_COMPILING_IN_GRAAL - PyObject *modules = PyImport_GetModuleDict(); - if (unlikely(!modules)) - return NULL; - imported_module = __Pyx_PyDict_GetItemStr(modules, name); - Py_XINCREF(imported_module); -#else - imported_module = PyImport_GetModule(name); -#endif - return imported_module; -} -static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) { - Py_ssize_t i, nparts; -#if CYTHON_ASSUME_SAFE_SIZE - nparts = PyTuple_GET_SIZE(parts_tuple); -#else - nparts = PyTuple_Size(parts_tuple); - if (nparts < 0) return NULL; -#endif - for (i=1; i < nparts && module; i++) { - PyObject *part, *submodule; -#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - part = PyTuple_GET_ITEM(parts_tuple, i); -#else - part = __Pyx_PySequence_ITEM(parts_tuple, i); - if (!part) return NULL; -#endif - submodule = __Pyx_PyObject_GetAttrStrNoError(module, part); -#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(part); -#endif - Py_DECREF(module); - module = submodule; - } - if (unlikely(!module)) { - return __Pyx__ImportDottedModule_Error(name, parts_tuple, i); - } - return module; -} -static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) { - PyObject *imported_module; - PyObject *module = __Pyx_Import(name, NULL, 0); - if (!parts_tuple || unlikely(!module)) - return module; - imported_module = __Pyx__ImportDottedModule_Lookup(name); - if (likely(imported_module)) { - Py_DECREF(module); - return imported_module; - } - PyErr_Clear(); - return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple); -} -static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) { -#if CYTHON_COMPILING_IN_CPYTHON - PyObject *module = __Pyx__ImportDottedModule_Lookup(name); - if (likely(module)) { - PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_mstate_global->__pyx_n_u_spec); - if (likely(spec)) { - PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_mstate_global->__pyx_n_u_initializing); - if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) { - Py_DECREF(spec); - spec = NULL; - } - Py_XDECREF(unsafe); - } - if (likely(!spec)) { - PyErr_Clear(); - return module; - } - Py_DECREF(spec); - Py_DECREF(module); - } else if (PyErr_Occurred()) { - PyErr_Clear(); - } -#endif - return __Pyx__ImportDottedModule(name, parts_tuple); +/* Import */ +static PyObject *__Pyx_Import(PyObject *name, PyObject *const *imported_names, Py_ssize_t len_imported_names, PyObject *qualname, int level) { + return __Pyx__Import(name, imported_names, len_imported_names, qualname, __pyx_mstate_global->__pyx_d, level); } /* FastTypeChecks */ @@ -25683,6 +25313,7 @@ static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObj #endif /* PySequenceMultiply */ +#if CYTHON_USE_TYPE_SLOTS static PyObject* __Pyx_PySequence_Multiply_Generic(PyObject *seq, Py_ssize_t mul) { PyObject *result, *pymul = PyLong_FromSsize_t(mul); if (unlikely(!pymul)) @@ -25692,16 +25323,14 @@ static PyObject* __Pyx_PySequence_Multiply_Generic(PyObject *seq, Py_ssize_t mul return result; } static CYTHON_INLINE PyObject* __Pyx_PySequence_Multiply(PyObject *seq, Py_ssize_t mul) { -#if CYTHON_USE_TYPE_SLOTS PyTypeObject *type = Py_TYPE(seq); if (likely(type->tp_as_sequence && type->tp_as_sequence->sq_repeat)) { return type->tp_as_sequence->sq_repeat(seq, mul); - } else -#endif - { + } else { return __Pyx_PySequence_Multiply_Generic(seq, mul); } } +#endif /* PyObjectFormatAndDecref */ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) { @@ -25754,25 +25383,29 @@ static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) { return r; } static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list, - CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS + int wraparound, int boundscheck, int unsafe_shared) { + CYTHON_MAYBE_UNUSED_VAR(unsafe_shared); +#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o)); - if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { + if ((CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS && !__Pyx_IS_UNIQUELY_REFERENCED(o, unsafe_shared))) { Py_INCREF(v); -#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS - PyList_SetItem(o, n, v); -#else - PyObject* old = PyList_GET_ITEM(o, n); + return PyList_SetItem(o, n, v); + } else if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) { + PyObject* old; + Py_INCREF(v); + old = PyList_GET_ITEM(o, n); PyList_SET_ITEM(o, n, v); Py_DECREF(old); -#endif - return 1; + return 0; } - } else { + } else +#endif +#if CYTHON_USE_TYPE_SLOTS && !CYTHON_COMPILING_IN_PYPY + { PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping; PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence; - if (mm && mm->mp_ass_subscript) { + if (!is_list && mm && mm->mp_ass_subscript) { int r; PyObject *key = PyLong_FromSsize_t(i); if (unlikely(!key)) return -1; @@ -25780,7 +25413,7 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje Py_DECREF(key); return r; } - if (likely(sm && sm->sq_ass_item)) { + if (is_list || likely(sm && sm->sq_ass_item)) { if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) { Py_ssize_t l = sm->sq_length(o); if (likely(l >= 0)) { @@ -25795,11 +25428,12 @@ static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObje } } #else - if (is_list || !PyMapping_Check(o)) - { + if (is_list || !PyMapping_Check(o)) { return PySequence_SetItem(o, i, v); } #endif + (void)wraparound; + (void)boundscheck; return __Pyx_SetItemInt_Generic(o, PyLong_FromSsize_t(i), v); } @@ -25819,65 +25453,7 @@ static CYTHON_INLINE long __Pyx_div_long(long a, long b, int b_is_constant) { return q - adapt_python; } -/* ImportFrom */ -static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { - PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); - if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { - const char* module_name_str = 0; - PyObject* module_name = 0; - PyObject* module_dot = 0; - PyObject* full_name = 0; - PyErr_Clear(); - module_name_str = PyModule_GetName(module); - if (unlikely(!module_name_str)) { goto modbad; } - module_name = PyUnicode_FromString(module_name_str); - if (unlikely(!module_name)) { goto modbad; } - module_dot = PyUnicode_Concat(module_name, __pyx_mstate_global->__pyx_kp_u__2); - if (unlikely(!module_dot)) { goto modbad; } - full_name = PyUnicode_Concat(module_dot, name); - if (unlikely(!full_name)) { goto modbad; } - #if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM < 0x07030400) ||\ - CYTHON_COMPILING_IN_GRAAL - { - PyObject *modules = PyImport_GetModuleDict(); - if (unlikely(!modules)) - goto modbad; - value = PyObject_GetItem(modules, full_name); - } - #else - value = PyImport_GetModule(full_name); - #endif - modbad: - Py_XDECREF(full_name); - Py_XDECREF(module_dot); - Py_XDECREF(module_name); - } - if (unlikely(!value)) { - PyErr_Format(PyExc_ImportError, "cannot import name %S", name); - } - return value; -} - -/* HasAttr */ -#if __PYX_LIMITED_VERSION_HEX < 0x030d0000 -static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) { - PyObject *r; - if (unlikely(!PyUnicode_Check(n))) { - PyErr_SetString(PyExc_TypeError, - "hasattr(): attribute name must be string"); - return -1; - } - r = __Pyx_PyObject_GetAttrStrNoError(o, n); - if (!r) { - return (unlikely(PyErr_Occurred())) ? -1 : 0; - } else { - Py_DECREF(r); - return 1; - } -} -#endif - -/* IsLittleEndian */ +/* IsLittleEndian (used by BufferFormatCheck) */ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) { union { @@ -25888,7 +25464,7 @@ static CYTHON_INLINE int __Pyx_Is_Little_Endian(void) return S.u8[0] == 4; } -/* BufferFormatCheck */ +/* BufferFormatCheck (used by BufferGetAndValidate) */ static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, __Pyx_BufFmt_StackElem* stack, const __Pyx_TypeInfo* type) { @@ -25991,9 +25567,7 @@ static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) { case 'h': case 'H': return sizeof(short); case 'i': case 'I': return sizeof(int); case 'l': case 'L': return sizeof(long); - #ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(PY_LONG_LONG); - #endif case 'f': return sizeof(float) * (is_complex ? 2 : 1); case 'd': return sizeof(double) * (is_complex ? 2 : 1); case 'g': return sizeof(long double) * (is_complex ? 2 : 1); @@ -26011,9 +25585,7 @@ typedef struct { char c; float x; } __Pyx_st_float; typedef struct { char c; double x; } __Pyx_st_double; typedef struct { char c; long double x; } __Pyx_st_longdouble; typedef struct { char c; void *x; } __Pyx_st_void_p; -#ifdef HAVE_LONG_LONG typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong; -#endif static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) { CYTHON_UNUSED_VAR(is_complex); switch (ch) { @@ -26021,9 +25593,7 @@ static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) { case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short); case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int); case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long); -#ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG); -#endif case 'f': return sizeof(__Pyx_st_float) - sizeof(float); case 'd': return sizeof(__Pyx_st_double) - sizeof(double); case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double); @@ -26044,9 +25614,7 @@ typedef struct { float x; char c; } __Pyx_pad_float; typedef struct { double x; char c; } __Pyx_pad_double; typedef struct { long double x; char c; } __Pyx_pad_longdouble; typedef struct { void *x; char c; } __Pyx_pad_void_p; -#ifdef HAVE_LONG_LONG typedef struct { PY_LONG_LONG x; char c; } __Pyx_pad_longlong; -#endif static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, int is_complex) { CYTHON_UNUSED_VAR(is_complex); switch (ch) { @@ -26054,9 +25622,7 @@ static size_t __Pyx_BufFmt_TypeCharToPadding(char ch, int is_complex) { case 'h': case 'H': return sizeof(__Pyx_pad_short) - sizeof(short); case 'i': case 'I': return sizeof(__Pyx_pad_int) - sizeof(int); case 'l': case 'L': return sizeof(__Pyx_pad_long) - sizeof(long); -#ifdef HAVE_LONG_LONG case 'q': case 'Q': return sizeof(__Pyx_pad_longlong) - sizeof(PY_LONG_LONG); -#endif case 'f': return sizeof(__Pyx_pad_float) - sizeof(float); case 'd': return sizeof(__Pyx_pad_double) - sizeof(double); case 'g': return sizeof(__Pyx_pad_longdouble) - sizeof(long double); @@ -26400,4726 +25966,4940 @@ static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const cha /* BufferGetAndValidate */ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { - if (unlikely(info->buf == NULL)) return; - if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; - PyBuffer_Release(info); -} -static void __Pyx_ZeroBuffer(Py_buffer* buf) { - buf->buf = NULL; - buf->obj = NULL; - buf->strides = __Pyx_zeros; - buf->shape = __Pyx_zeros; - buf->suboffsets = __Pyx_minusones; -} -static int __Pyx__GetBufferAndValidate( - Py_buffer* buf, PyObject* obj, const __Pyx_TypeInfo* dtype, int flags, - int nd, int cast, __Pyx_BufFmt_StackElem* stack) -{ - buf->buf = NULL; - if (unlikely(PyObject_GetBuffer(obj, buf, flags) == -1)) { - __Pyx_ZeroBuffer(buf); + if (unlikely(info->buf == NULL)) return; + if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL; + PyBuffer_Release(info); + } + static void __Pyx_ZeroBuffer(Py_buffer* buf) { + buf->buf = NULL; + buf->obj = NULL; + buf->strides = __Pyx_zeros; + buf->shape = __Pyx_zeros; + buf->suboffsets = __Pyx_minusones; + } + static int __Pyx__GetBufferAndValidate( + Py_buffer* buf, PyObject* obj, const __Pyx_TypeInfo* dtype, int flags, + int nd, int cast, __Pyx_BufFmt_StackElem* stack) + { + buf->buf = NULL; + if (unlikely(PyObject_GetBuffer(obj, buf, flags) == -1)) { + __Pyx_ZeroBuffer(buf); + return -1; + } + if (unlikely(buf->ndim != nd)) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + nd, buf->ndim); + goto fail; + } + if (!cast) { + __Pyx_BufFmt_Context ctx; + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; + } + if (unlikely((size_t)buf->itemsize != dtype->size)) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", + buf->itemsize, (buf->itemsize > 1) ? "s" : "", + dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; + return 0; + fail:; + __Pyx_SafeReleaseBuffer(buf); return -1; } - if (unlikely(buf->ndim != nd)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - nd, buf->ndim); - goto fail; - } - if (!cast) { - __Pyx_BufFmt_Context ctx; - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail; - } - if (unlikely((size_t)buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "d byte%s) does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "d byte%s)", - buf->itemsize, (buf->itemsize > 1) ? "s" : "", - dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones; - return 0; -fail:; - __Pyx_SafeReleaseBuffer(buf); - return -1; -} - + /* DictGetItem */ #if !CYTHON_COMPILING_IN_PYPY -static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { - PyObject *value; - if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error - if (unlikely(PyTuple_Check(key))) { - PyObject* args = PyTuple_Pack(1, key); - if (likely(args)) { - PyErr_SetObject(PyExc_KeyError, args); - Py_DECREF(args); - } - } else { - PyErr_SetObject(PyExc_KeyError, key); - } - } - return value; -} -#endif - + static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) { + PyObject *value; + if (unlikely(__Pyx_PyDict_GetItemRef(d, key, &value) == 0)) { // no value, no error + if (unlikely(PyTuple_Check(key))) { + PyObject* args = PyTuple_Pack(1, key); + if (likely(args)) { + PyErr_SetObject(PyExc_KeyError, args); + Py_DECREF(args); + } + } else { + PyErr_SetObject(PyExc_KeyError, key); + } + } + return value; + } + #endif + /* PyObjectVectorCallKwBuilder */ #if CYTHON_VECTORCALL -static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { - (void)__Pyx_PyObject_FastCallDict; - if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; - Py_INCREF(key); - args[n] = value; - return 0; -} -CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { - (void)__Pyx_VectorcallBuilder_AddArgStr; - if (unlikely(!PyUnicode_Check(key))) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - return -1; - } - return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); -} -static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { - PyObject *pyKey = PyUnicode_FromString(key); - if (!pyKey) return -1; - return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); -} -#else // CYTHON_VECTORCALL -CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { - if (unlikely(!PyUnicode_Check(key))) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - return -1; - } - return PyDict_SetItem(builder, key, value); -} -#endif - + static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_PyObject_FastCallDict; + if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1; + Py_INCREF(key); + args[n] = value; + return 0; + } + CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + (void)__Pyx_VectorcallBuilder_AddArgStr; + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n); + } + static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) { + PyObject *pyKey = PyUnicode_FromString(key); + if (!pyKey) return -1; + return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n); + } + #else // CYTHON_VECTORCALL + CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) { + if (unlikely(!PyUnicode_Check(key))) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + return -1; + } + return PyDict_SetItem(builder, key, value); + } + #endif + /* BufferFallbackError */ static void __Pyx_RaiseBufferFallbackError(void) { - PyErr_SetString(PyExc_ValueError, - "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); -} - + PyErr_SetString(PyExc_ValueError, + "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!"); + } + +/* AllocateExtensionType */ + static PyObject *__Pyx_AllocateExtensionType(PyTypeObject *t, int is_final) { + if (is_final || likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) { + allocfunc alloc_func = __Pyx_PyType_GetSlot(t, tp_alloc, allocfunc); + return alloc_func(t, 0); + } else { + newfunc tp_new = __Pyx_PyType_TryGetSlot(&PyBaseObject_Type, tp_new, newfunc); + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + if (!tp_new) { + PyObject *new_str = PyUnicode_FromString("__new__"); + if (likely(new_str)) { + PyObject *o = PyObject_CallMethodObjArgs((PyObject *)&PyBaseObject_Type, new_str, t, NULL); + Py_DECREF(new_str); + return o; + } else + return NULL; + } else + #endif + return tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0); + } + } + /* CallTypeTraverse */ #if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000) -#else -static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 - if (__Pyx_get_runtime_version() < 0x03090000) return 0; - #endif - if (!always_call) { - PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); - unsigned long flags = PyType_GetFlags(base); - if (flags & Py_TPFLAGS_HEAPTYPE) { - return 0; - } - } - Py_VISIT((PyObject*)Py_TYPE(o)); - return 0; -} -#endif - -/* LimitedApiGetTypeDict */ + #else + static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) { + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000 + if (__Pyx_get_runtime_version() < 0x03090000) return 0; + #endif + if (!always_call) { + PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*); + unsigned long flags = PyType_GetFlags(base); + if (flags & Py_TPFLAGS_HEAPTYPE) { + return 0; + } + } + Py_VISIT((PyObject*)Py_TYPE(o)); + return 0; + } + #endif + +/* LimitedApiGetTypeDict (used by SetItemOnTypeDict) */ #if CYTHON_COMPILING_IN_LIMITED_API -static Py_ssize_t __Pyx_GetTypeDictOffset(void) { - PyObject *tp_dictoffset_o; - Py_ssize_t tp_dictoffset; - tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); - if (unlikely(!tp_dictoffset_o)) return -1; - tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); - Py_DECREF(tp_dictoffset_o); - if (unlikely(tp_dictoffset == 0)) { - PyErr_SetString( - PyExc_TypeError, - "'type' doesn't have a dictoffset"); - return -1; - } else if (unlikely(tp_dictoffset < 0)) { - PyErr_SetString( - PyExc_TypeError, - "'type' has an unexpected negative dictoffset. " - "Please report this as Cython bug"); - return -1; - } - return tp_dictoffset; -} -static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { - static Py_ssize_t tp_dictoffset = 0; - if (unlikely(tp_dictoffset == 0)) { - tp_dictoffset = __Pyx_GetTypeDictOffset(); - if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { - tp_dictoffset = 0; // try again next time? - return NULL; - } - } - return *(PyObject**)((char*)tp + tp_dictoffset); -} -#endif - -/* SetItemOnTypeDict */ + static Py_ssize_t __Pyx_GetTypeDictOffset(void) { + PyObject *tp_dictoffset_o; + Py_ssize_t tp_dictoffset; + tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__"); + if (unlikely(!tp_dictoffset_o)) return -1; + tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o); + Py_DECREF(tp_dictoffset_o); + if (unlikely(tp_dictoffset == 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' doesn't have a dictoffset"); + return -1; + } else if (unlikely(tp_dictoffset < 0)) { + PyErr_SetString( + PyExc_TypeError, + "'type' has an unexpected negative dictoffset. " + "Please report this as Cython bug"); + return -1; + } + return tp_dictoffset; + } + static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) { + static Py_ssize_t tp_dictoffset = 0; + if (unlikely(tp_dictoffset == 0)) { + tp_dictoffset = __Pyx_GetTypeDictOffset(); + if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) { + tp_dictoffset = 0; // try again next time? + return NULL; + } + } + return *(PyObject**)((char*)tp + tp_dictoffset); + } + #endif + +/* SetItemOnTypeDict (used by FixUpExtensionType) */ static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) { - int result; - PyObject *tp_dict; -#if CYTHON_COMPILING_IN_LIMITED_API - tp_dict = __Pyx_GetTypeDict(tp); - if (unlikely(!tp_dict)) return -1; -#else - tp_dict = tp->tp_dict; -#endif - result = PyDict_SetItem(tp_dict, k, v); - if (likely(!result)) { - PyType_Modified(tp); - if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { - PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); - if (!setNameResult) return -1; - Py_DECREF(setNameResult); - } - } - return result; -} - + int result; + PyObject *tp_dict; + #if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; + #else + tp_dict = tp->tp_dict; + #endif + result = PyDict_SetItem(tp_dict, k, v); + if (likely(!result)) { + PyType_Modified(tp); + if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) { + PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name, (PyObject *) tp, k, NULL); + if (!setNameResult) return -1; + Py_DECREF(setNameResult); + } + } + return result; + } + /* FixUpExtensionType */ static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) { -#if __PYX_LIMITED_VERSION_HEX > 0x030900B1 - CYTHON_UNUSED_VAR(spec); - CYTHON_UNUSED_VAR(type); - CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); -#else - const PyType_Slot *slot = spec->slots; - int changed = 0; -#if !CYTHON_COMPILING_IN_LIMITED_API - while (slot && slot->slot && slot->slot != Py_tp_members) - slot++; - if (slot && slot->slot == Py_tp_members) { -#if !CYTHON_COMPILING_IN_CPYTHON - const -#endif // !CYTHON_COMPILING_IN_CPYTHON) - PyMemberDef *memb = (PyMemberDef*) slot->pfunc; - while (memb && memb->name) { - if (memb->name[0] == '_' && memb->name[1] == '_') { - if (strcmp(memb->name, "__weaklistoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_weaklistoffset = memb->offset; - changed = 1; - } - else if (strcmp(memb->name, "__dictoffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); - type->tp_dictoffset = memb->offset; - changed = 1; - } -#if CYTHON_METH_FASTCALL - else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { - assert(memb->type == T_PYSSIZET); - assert(memb->flags == READONLY); -#if PY_VERSION_HEX >= 0x030800b4 - type->tp_vectorcall_offset = memb->offset; -#else - type->tp_print = (printfunc) memb->offset; -#endif - changed = 1; - } -#endif // CYTHON_METH_FASTCALL -#if !CYTHON_COMPILING_IN_PYPY - else if (strcmp(memb->name, "__module__") == 0) { - PyObject *descr; - assert(memb->type == T_OBJECT); - assert(memb->flags == 0 || memb->flags == READONLY); - descr = PyDescr_NewMember(type, memb); - if (unlikely(!descr)) - return -1; - int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); - Py_DECREF(descr); - if (unlikely(set_item_result < 0)) { - return -1; - } - changed = 1; - } -#endif // !CYTHON_COMPILING_IN_PYPY - } - memb++; - } - } -#endif // !CYTHON_COMPILING_IN_LIMITED_API -#if !CYTHON_COMPILING_IN_PYPY - slot = spec->slots; - while (slot && slot->slot && slot->slot != Py_tp_getset) - slot++; - if (slot && slot->slot == Py_tp_getset) { - PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; - while (getset && getset->name) { - if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { - PyObject *descr = PyDescr_NewGetSet(type, getset); - if (unlikely(!descr)) - return -1; - #if CYTHON_COMPILING_IN_LIMITED_API - PyObject *pyname = PyUnicode_FromString(getset->name); - if (unlikely(!pyname)) { - Py_DECREF(descr); - return -1; - } - int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); - Py_DECREF(pyname); - #else - CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); - int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); - #endif - Py_DECREF(descr); - if (unlikely(set_item_result < 0)) { - return -1; - } - changed = 1; - } - ++getset; - } - } -#endif // !CYTHON_COMPILING_IN_PYPY - if (changed) - PyType_Modified(type); -#endif // PY_VERSION_HEX > 0x030900B1 - return 0; -} - -/* PyObjectCallNoArg */ + #if __PYX_LIMITED_VERSION_HEX > 0x030900B1 + CYTHON_UNUSED_VAR(spec); + CYTHON_UNUSED_VAR(type); + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + #else + const PyType_Slot *slot = spec->slots; + int changed = 0; + #if !CYTHON_COMPILING_IN_LIMITED_API + while (slot && slot->slot && slot->slot != Py_tp_members) + slot++; + if (slot && slot->slot == Py_tp_members) { + #if !CYTHON_COMPILING_IN_CPYTHON + const + #endif // !CYTHON_COMPILING_IN_CPYTHON) + PyMemberDef *memb = (PyMemberDef*) slot->pfunc; + while (memb && memb->name) { + if (memb->name[0] == '_' && memb->name[1] == '_') { + if (strcmp(memb->name, "__weaklistoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_weaklistoffset = memb->offset; + changed = 1; + } + else if (strcmp(memb->name, "__dictoffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_dictoffset = memb->offset; + changed = 1; + } + #if CYTHON_METH_FASTCALL + else if (strcmp(memb->name, "__vectorcalloffset__") == 0) { + assert(memb->type == T_PYSSIZET); + assert(memb->flags == READONLY); + type->tp_vectorcall_offset = memb->offset; + changed = 1; + } + #endif // CYTHON_METH_FASTCALL + #if !CYTHON_COMPILING_IN_PYPY + else if (strcmp(memb->name, "__module__") == 0) { + PyObject *descr; + assert(memb->type == T_OBJECT); + assert(memb->flags == 0 || memb->flags == READONLY); + descr = PyDescr_NewMember(type, memb); + if (unlikely(!descr)) + return -1; + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + #endif // !CYTHON_COMPILING_IN_PYPY + } + memb++; + } + } + #endif // !CYTHON_COMPILING_IN_LIMITED_API + #if !CYTHON_COMPILING_IN_PYPY + slot = spec->slots; + while (slot && slot->slot && slot->slot != Py_tp_getset) + slot++; + if (slot && slot->slot == Py_tp_getset) { + PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc; + while (getset && getset->name) { + if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) { + PyObject *descr = PyDescr_NewGetSet(type, getset); + if (unlikely(!descr)) + return -1; + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *pyname = PyUnicode_FromString(getset->name); + if (unlikely(!pyname)) { + Py_DECREF(descr); + return -1; + } + int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr); + Py_DECREF(pyname); + #else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr); + #endif + Py_DECREF(descr); + if (unlikely(set_item_result < 0)) { + return -1; + } + changed = 1; + } + ++getset; + } + } + #else + CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict); + #endif // !CYTHON_COMPILING_IN_PYPY + if (changed) + PyType_Modified(type); + #endif // PY_VERSION_HEX > 0x030900B1 + return 0; + } + +/* PyObjectCallNoArg (used by PyObjectCallMethod0) */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { - PyObject *arg[2] = {NULL, NULL}; - return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); -} - -/* PyObjectGetMethod */ + PyObject *arg[2] = {NULL, NULL}; + return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + +/* PyObjectGetMethod (used by PyObjectCallMethod0) */ + #if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) { - PyObject *attr; -#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP - __Pyx_TypeName type_name; - PyTypeObject *tp = Py_TYPE(obj); - PyObject *descr; - descrgetfunc f = NULL; - PyObject **dictptr, *dict; - int meth_found = 0; - assert (*method == NULL); - if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; - } - if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { - return 0; - } - descr = _PyType_Lookup(tp, name); - if (likely(descr != NULL)) { - Py_INCREF(descr); -#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR - if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) -#else - #ifdef __Pyx_CyFunction_USED - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) - #else - if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) - #endif -#endif - { - meth_found = 1; - } else { - f = Py_TYPE(descr)->tp_descr_get; - if (f != NULL && PyDescr_IsData(descr)) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - } - } - dictptr = _PyObject_GetDictPtr(obj); - if (dictptr != NULL && (dict = *dictptr) != NULL) { - Py_INCREF(dict); - attr = __Pyx_PyDict_GetItemStr(dict, name); - if (attr != NULL) { - Py_INCREF(attr); - Py_DECREF(dict); - Py_XDECREF(descr); - goto try_unpack; - } - Py_DECREF(dict); - } - if (meth_found) { - *method = descr; - return 1; - } - if (f != NULL) { - attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); - Py_DECREF(descr); - goto try_unpack; - } - if (likely(descr != NULL)) { - *method = descr; - return 0; - } - type_name = __Pyx_PyType_GetFullyQualifiedName(tp); - PyErr_Format(PyExc_AttributeError, - "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", - type_name, name); - __Pyx_DECREF_TypeName(type_name); - return 0; -#else - attr = __Pyx_PyObject_GetAttrStr(obj, name); - goto try_unpack; -#endif -try_unpack: -#if CYTHON_UNPACK_METHODS - if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { - PyObject *function = PyMethod_GET_FUNCTION(attr); - Py_INCREF(function); - Py_DECREF(attr); - *method = function; - return 1; - } -#endif - *method = attr; - return 0; -} - -/* PyObjectCallMethod0 */ + PyObject *attr; + #if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP + __Pyx_TypeName type_name; + PyTypeObject *tp = Py_TYPE(obj); + PyObject *descr; + descrgetfunc f = NULL; + PyObject **dictptr, *dict; + int meth_found = 0; + assert (*method == NULL); + if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) { + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + } + if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) { + return 0; + } + descr = _PyType_Lookup(tp, name); + if (likely(descr != NULL)) { + Py_INCREF(descr); + #if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR + if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR)) + #else + #ifdef __Pyx_CyFunction_USED + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr))) + #else + if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type))) + #endif + #endif + { + meth_found = 1; + } else { + f = Py_TYPE(descr)->tp_descr_get; + if (f != NULL && PyDescr_IsData(descr)) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + } + } + dictptr = _PyObject_GetDictPtr(obj); + if (dictptr != NULL && (dict = *dictptr) != NULL) { + Py_INCREF(dict); + attr = __Pyx_PyDict_GetItemStr(dict, name); + if (attr != NULL) { + Py_INCREF(attr); + Py_DECREF(dict); + Py_XDECREF(descr); + goto try_unpack; + } + Py_DECREF(dict); + } + if (meth_found) { + *method = descr; + return 1; + } + if (f != NULL) { + attr = f(descr, obj, (PyObject *)Py_TYPE(obj)); + Py_DECREF(descr); + goto try_unpack; + } + if (likely(descr != NULL)) { + *method = descr; + return 0; + } + type_name = __Pyx_PyType_GetFullyQualifiedName(tp); + PyErr_Format(PyExc_AttributeError, + "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'", + type_name, name); + __Pyx_DECREF_TypeName(type_name); + return 0; + #else + attr = __Pyx_PyObject_GetAttrStr(obj, name); + goto try_unpack; + #endif + try_unpack: + #if CYTHON_UNPACK_METHODS + if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) { + PyObject *function = PyMethod_GET_FUNCTION(attr); + Py_INCREF(function); + Py_DECREF(attr); + *method = function; + return 1; + } + #endif + *method = attr; + return 0; + } + #endif + +/* PyObjectCallMethod0 (used by PyType_Ready) */ static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) { -#if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) - PyObject *args[1] = {obj}; - (void) __Pyx_PyObject_GetMethod; - (void) __Pyx_PyObject_CallOneArg; - (void) __Pyx_PyObject_CallNoArg; - return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); -#else - PyObject *method = NULL, *result = NULL; - int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); - if (likely(is_method)) { - result = __Pyx_PyObject_CallOneArg(method, obj); - Py_DECREF(method); - return result; - } - if (unlikely(!method)) goto bad; - result = __Pyx_PyObject_CallNoArg(method); - Py_DECREF(method); -bad: - return result; -#endif -} - -/* ValidateBasesTuple */ + #if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[1] = {obj}; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_CallNoArg; + return PyObject_VectorcallMethod(method_name, args, 1 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); + #else + PyObject *method = NULL, *result = NULL; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_CallOneArg(method, obj); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) goto bad; + result = __Pyx_PyObject_CallNoArg(method); + Py_DECREF(method); + bad: + return result; + #endif + } + +/* ValidateBasesTuple (used by PyType_Ready) */ #if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS -static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { - Py_ssize_t i, n; -#if CYTHON_ASSUME_SAFE_SIZE - n = PyTuple_GET_SIZE(bases); -#else - n = PyTuple_Size(bases); - if (unlikely(n < 0)) return -1; -#endif - for (i = 1; i < n; i++) - { - PyTypeObject *b; -#if CYTHON_AVOID_BORROWED_REFS - PyObject *b0 = PySequence_GetItem(bases, i); - if (!b0) return -1; -#elif CYTHON_ASSUME_SAFE_MACROS - PyObject *b0 = PyTuple_GET_ITEM(bases, i); -#else - PyObject *b0 = PyTuple_GetItem(bases, i); - if (!b0) return -1; -#endif - b = (PyTypeObject*) b0; - if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) - { - __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); - PyErr_Format(PyExc_TypeError, - "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); - __Pyx_DECREF_TypeName(b_name); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } - if (dictoffset == 0) - { - Py_ssize_t b_dictoffset = 0; -#if CYTHON_USE_TYPE_SLOTS - b_dictoffset = b->tp_dictoffset; -#else - PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); - if (!py_b_dictoffset) goto dictoffset_return; - b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); - Py_DECREF(py_b_dictoffset); - if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; -#endif - if (b_dictoffset) { - { - __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); - PyErr_Format(PyExc_TypeError, - "extension type '%.200s' has no __dict__ slot, " - "but base type '" __Pyx_FMT_TYPENAME "' has: " - "either add 'cdef dict __dict__' to the extension type " - "or add '__slots__ = [...]' to the base type", - type_name, b_name); - __Pyx_DECREF_TypeName(b_name); - } -#if !CYTHON_USE_TYPE_SLOTS - dictoffset_return: -#endif -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - return -1; - } - } -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(b0); -#endif - } - return 0; -} -#endif - + static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) { + Py_ssize_t i, n; + #if CYTHON_ASSUME_SAFE_SIZE + n = PyTuple_GET_SIZE(bases); + #else + n = PyTuple_Size(bases); + if (unlikely(n < 0)) return -1; + #endif + for (i = 1; i < n; i++) + { + PyTypeObject *b; + #if CYTHON_AVOID_BORROWED_REFS + PyObject *b0 = PySequence_GetItem(bases, i); + if (!b0) return -1; + #elif CYTHON_ASSUME_SAFE_MACROS + PyObject *b0 = PyTuple_GET_ITEM(bases, i); + #else + PyObject *b0 = PyTuple_GetItem(bases, i); + if (!b0) return -1; + #endif + b = (PyTypeObject*) b0; + if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE)) + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name); + __Pyx_DECREF_TypeName(b_name); + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); + #endif + return -1; + } + if (dictoffset == 0) + { + Py_ssize_t b_dictoffset = 0; + #if CYTHON_USE_TYPE_SLOTS + b_dictoffset = b->tp_dictoffset; + #else + PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__"); + if (!py_b_dictoffset) goto dictoffset_return; + b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset); + Py_DECREF(py_b_dictoffset); + if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return; + #endif + if (b_dictoffset) { + { + __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b); + PyErr_Format(PyExc_TypeError, + "extension type '%.200s' has no __dict__ slot, " + "but base type '" __Pyx_FMT_TYPENAME "' has: " + "either add 'cdef dict __dict__' to the extension type " + "or add '__slots__ = [...]' to the base type", + type_name, b_name); + __Pyx_DECREF_TypeName(b_name); + } + #if !CYTHON_USE_TYPE_SLOTS + dictoffset_return: + #endif + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); + #endif + return -1; + } + } + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(b0); + #endif + } + return 0; + } + #endif + /* PyType_Ready */ CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) { - while (t) { - PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); - if (bases) { - return 1; - } - t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); - } - return 0; -} -static int __Pyx_PyType_Ready(PyTypeObject *t) { -#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) - (void)__Pyx_PyObject_CallMethod0; -#if CYTHON_USE_TYPE_SPECS - (void)__Pyx_validate_bases_tuple; -#endif - return PyType_Ready(t); -#else - int r; - if (!__Pyx_PyType_HasMultipleInheritance(t)) { - return PyType_Ready(t); - } - PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); - if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) - return -1; -#if !defined(PYSTON_MAJOR_VERSION) - { - int gc_was_enabled; - #if PY_VERSION_HEX >= 0x030A00b1 - gc_was_enabled = PyGC_Disable(); - (void)__Pyx_PyObject_CallMethod0; - #else - PyObject *ret, *py_status; - PyObject *gc = NULL; - #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ - !CYTHON_COMPILING_IN_GRAAL - gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); - #endif - if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); - if (unlikely(!gc)) return -1; - py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); - if (unlikely(!py_status)) { - Py_DECREF(gc); - return -1; - } - gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); - Py_DECREF(py_status); - if (gc_was_enabled > 0) { - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); - if (unlikely(!ret)) { - Py_DECREF(gc); - return -1; - } - Py_DECREF(ret); - } else if (unlikely(gc_was_enabled == -1)) { - Py_DECREF(gc); - return -1; - } - #endif - t->tp_flags |= Py_TPFLAGS_HEAPTYPE; -#if PY_VERSION_HEX >= 0x030A0000 - t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; -#endif -#else - (void)__Pyx_PyObject_CallMethod0; -#endif - r = PyType_Ready(t); -#if !defined(PYSTON_MAJOR_VERSION) - t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; - #if PY_VERSION_HEX >= 0x030A00b1 - if (gc_was_enabled) - PyGC_Enable(); - #else - if (gc_was_enabled) { - PyObject *tp, *v, *tb; - PyErr_Fetch(&tp, &v, &tb); - ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); - if (likely(ret || r == -1)) { - Py_XDECREF(ret); - PyErr_Restore(tp, v, tb); - } else { - Py_XDECREF(tp); - Py_XDECREF(v); - Py_XDECREF(tb); - r = -1; - } - } - Py_DECREF(gc); - #endif - } -#endif - return r; -#endif -} - + while (t) { + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases) { + return 1; + } + t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*); + } + return 0; + } + static int __Pyx_PyType_Ready(PyTypeObject *t) { + #if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION) + (void)__Pyx_PyObject_CallMethod0; + #if CYTHON_USE_TYPE_SPECS + (void)__Pyx_validate_bases_tuple; + #endif + return PyType_Ready(t); + #else + int r; + if (!__Pyx_PyType_HasMultipleInheritance(t)) { + return PyType_Ready(t); + } + PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*); + if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1)) + return -1; + #if !defined(PYSTON_MAJOR_VERSION) + { + int gc_was_enabled; + #if PY_VERSION_HEX >= 0x030A00b1 + gc_was_enabled = PyGC_Disable(); + (void)__Pyx_PyObject_CallMethod0; + #else + PyObject *ret, *py_status; + PyObject *gc = NULL; + #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\ + !CYTHON_COMPILING_IN_GRAAL + gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc); + #endif + if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc); + if (unlikely(!gc)) return -1; + py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled); + if (unlikely(!py_status)) { + Py_DECREF(gc); + return -1; + } + gc_was_enabled = __Pyx_PyObject_IsTrue(py_status); + Py_DECREF(py_status); + if (gc_was_enabled > 0) { + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable); + if (unlikely(!ret)) { + Py_DECREF(gc); + return -1; + } + Py_DECREF(ret); + } else if (unlikely(gc_was_enabled == -1)) { + Py_DECREF(gc); + return -1; + } + #endif + t->tp_flags |= Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A0000 + t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE; + #endif + #else + (void)__Pyx_PyObject_CallMethod0; + #endif + r = PyType_Ready(t); + #if !defined(PYSTON_MAJOR_VERSION) + t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE; + #if PY_VERSION_HEX >= 0x030A00b1 + if (gc_was_enabled) + PyGC_Enable(); + #else + if (gc_was_enabled) { + PyObject *tp, *v, *tb; + PyErr_Fetch(&tp, &v, &tb); + ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable); + if (likely(ret || r == -1)) { + Py_XDECREF(ret); + PyErr_Restore(tp, v, tb); + } else { + Py_XDECREF(tp); + Py_XDECREF(v); + Py_XDECREF(tb); + r = -1; + } + } + Py_DECREF(gc); + #endif + } + #endif + return r; + #endif + } + /* SetVTable */ static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) { - PyObject *ob = PyCapsule_New(vtable, 0, 0); - if (unlikely(!ob)) - goto bad; -#if CYTHON_COMPILING_IN_LIMITED_API - if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) -#else - if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) -#endif - goto bad; - Py_DECREF(ob); - return 0; -bad: - Py_XDECREF(ob); - return -1; -} - -/* GetVTable */ + PyObject *ob = PyCapsule_New(vtable, 0, 0); + if (unlikely(!ob)) + goto bad; + #if CYTHON_COMPILING_IN_LIMITED_API + if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) + #else + if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0)) + #endif + goto bad; + Py_DECREF(ob); + return 0; + bad: + Py_XDECREF(ob); + return -1; + } + +/* GetVTable (used by MergeVTables) */ static void* __Pyx_GetVtable(PyTypeObject *type) { - void* ptr; -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); -#else - PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); -#endif - if (!ob) - goto bad; - ptr = PyCapsule_GetPointer(ob, 0); - if (!ptr && !PyErr_Occurred()) - PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); - Py_DECREF(ob); - return ptr; -bad: - Py_XDECREF(ob); - return NULL; -} - + void* ptr; + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable); + #else + PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable); + #endif + if (!ob) + goto bad; + ptr = PyCapsule_GetPointer(ob, 0); + if (!ptr && !PyErr_Occurred()) + PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type"); + Py_DECREF(ob); + return ptr; + bad: + Py_XDECREF(ob); + return NULL; + } + /* MergeVTables */ static int __Pyx_MergeVtables(PyTypeObject *type) { - int i=0; - Py_ssize_t size; - void** base_vtables; - __Pyx_TypeName tp_base_name = NULL; - __Pyx_TypeName base_name = NULL; - void* unknown = (void*)-1; - PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); - int base_depth = 0; - { - PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - while (base) { - base_depth += 1; - base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); - } - } - base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); - base_vtables[0] = unknown; -#if CYTHON_COMPILING_IN_LIMITED_API - size = PyTuple_Size(bases); - if (size < 0) goto other_failure; -#else - size = PyTuple_GET_SIZE(bases); -#endif - for (i = 1; i < size; i++) { - PyObject *basei; - void* base_vtable; -#if CYTHON_AVOID_BORROWED_REFS - basei = PySequence_GetItem(bases, i); - if (unlikely(!basei)) goto other_failure; -#elif !CYTHON_ASSUME_SAFE_MACROS - basei = PyTuple_GetItem(bases, i); - if (unlikely(!basei)) goto other_failure; -#else - basei = PyTuple_GET_ITEM(bases, i); -#endif - base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(basei); -#endif - if (base_vtable != NULL) { - int j; - PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - for (j = 0; j < base_depth; j++) { - if (base_vtables[j] == unknown) { - base_vtables[j] = __Pyx_GetVtable(base); - base_vtables[j + 1] = unknown; - } - if (base_vtables[j] == base_vtable) { - break; - } else if (base_vtables[j] == NULL) { - goto bad; - } - base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); - } - } - } - PyErr_Clear(); - PyMem_Free(base_vtables); - return 0; -bad: - { - PyTypeObject* basei = NULL; - PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); - tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); -#if CYTHON_AVOID_BORROWED_REFS - basei = (PyTypeObject*)PySequence_GetItem(bases, i); - if (unlikely(!basei)) goto really_bad; -#elif !CYTHON_ASSUME_SAFE_MACROS - basei = (PyTypeObject*)PyTuple_GetItem(bases, i); - if (unlikely(!basei)) goto really_bad; -#else - basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); -#endif - base_name = __Pyx_PyType_GetFullyQualifiedName(basei); -#if CYTHON_AVOID_BORROWED_REFS - Py_DECREF(basei); -#endif - } - PyErr_Format(PyExc_TypeError, - "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); -#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS -really_bad: // bad has failed! -#endif - __Pyx_DECREF_TypeName(tp_base_name); - __Pyx_DECREF_TypeName(base_name); -#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS -other_failure: -#endif - PyMem_Free(base_vtables); - return -1; -} - -/* DelItemOnTypeDict */ + int i=0; + Py_ssize_t size; + void** base_vtables; + __Pyx_TypeName tp_base_name = NULL; + __Pyx_TypeName base_name = NULL; + void* unknown = (void*)-1; + PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*); + int base_depth = 0; + { + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + while (base) { + base_depth += 1; + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1)); + base_vtables[0] = unknown; + #if CYTHON_COMPILING_IN_LIMITED_API + size = PyTuple_Size(bases); + if (size < 0) goto other_failure; + #else + size = PyTuple_GET_SIZE(bases); + #endif + for (i = 1; i < size; i++) { + PyObject *basei; + void* base_vtable; + #if CYTHON_AVOID_BORROWED_REFS + basei = PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; + #elif !CYTHON_ASSUME_SAFE_MACROS + basei = PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto other_failure; + #else + basei = PyTuple_GET_ITEM(bases, i); + #endif + base_vtable = __Pyx_GetVtable((PyTypeObject*)basei); + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); + #endif + if (base_vtable != NULL) { + int j; + PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + for (j = 0; j < base_depth; j++) { + if (base_vtables[j] == unknown) { + base_vtables[j] = __Pyx_GetVtable(base); + base_vtables[j + 1] = unknown; + } + if (base_vtables[j] == base_vtable) { + break; + } else if (base_vtables[j] == NULL) { + goto bad; + } + base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*); + } + } + } + PyErr_Clear(); + PyMem_Free(base_vtables); + return 0; + bad: + { + PyTypeObject* basei = NULL; + PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*); + tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base); + #if CYTHON_AVOID_BORROWED_REFS + basei = (PyTypeObject*)PySequence_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; + #elif !CYTHON_ASSUME_SAFE_MACROS + basei = (PyTypeObject*)PyTuple_GetItem(bases, i); + if (unlikely(!basei)) goto really_bad; + #else + basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i); + #endif + base_name = __Pyx_PyType_GetFullyQualifiedName(basei); + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(basei); + #endif + } + PyErr_Format(PyExc_TypeError, + "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name); + #if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS + really_bad: // bad has failed! + #endif + __Pyx_DECREF_TypeName(tp_base_name); + __Pyx_DECREF_TypeName(base_name); + #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS + other_failure: + #endif + PyMem_Free(base_vtables); + return -1; + } + +/* DelItemOnTypeDict (used by SetupReduce) */ static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) { - int result; - PyObject *tp_dict; -#if CYTHON_COMPILING_IN_LIMITED_API - tp_dict = __Pyx_GetTypeDict(tp); - if (unlikely(!tp_dict)) return -1; -#else - tp_dict = tp->tp_dict; -#endif - result = PyDict_DelItem(tp_dict, k); - if (likely(!result)) PyType_Modified(tp); - return result; -} - + int result; + PyObject *tp_dict; + #if CYTHON_COMPILING_IN_LIMITED_API + tp_dict = __Pyx_GetTypeDict(tp); + if (unlikely(!tp_dict)) return -1; + #else + tp_dict = tp->tp_dict; + #endif + result = PyDict_DelItem(tp_dict, k); + if (likely(!result)) PyType_Modified(tp); + return result; + } + /* SetupReduce */ static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) { - int ret; - PyObject *name_attr; - name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_2); - if (likely(name_attr)) { - ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); - } else { - ret = -1; - } - if (unlikely(ret < 0)) { - PyErr_Clear(); - ret = 0; - } - Py_XDECREF(name_attr); - return ret; -} -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_mstate_global->__pyx_n_u_getstate); -#else - getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); - if (!getstate && PyErr_Occurred()) { - goto __PYX_BAD; + int ret; + PyObject *name_attr; + name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_2); + if (likely(name_attr)) { + ret = PyObject_RichCompareBool(name_attr, name, Py_EQ); + } else { + ret = -1; } -#endif - if (getstate) { -#if CYTHON_USE_PYTYPE_LOOKUP - object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); -#else - object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -#else - object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; -#endif - reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; - if (reduce_ex == object_reduce_ex) { -#if CYTHON_USE_PYTYPE_LOOKUP - object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; -#else - object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; -#endif - reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; - if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { - reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); - if (likely(reduce_cython)) { - ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (reduce == object_reduce || PyErr_Occurred()) { - goto __PYX_BAD; - } - setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); - if (!setstate) PyErr_Clear(); - if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { - setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); - if (likely(setstate_cython)) { - ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; - } else if (!setstate || PyErr_Occurred()) { - goto __PYX_BAD; - } - } - PyType_Modified((PyTypeObject*)type_obj); - } + if (unlikely(ret < 0)) { + PyErr_Clear(); + ret = 0; } - goto __PYX_GOOD; -__PYX_BAD: - if (!PyErr_Occurred()) { - __Pyx_TypeName type_obj_name = - __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); - PyErr_Format(PyExc_RuntimeError, - "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); - __Pyx_DECREF_TypeName(type_obj_name); - } - ret = -1; -__PYX_GOOD: -#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); - Py_XDECREF(reduce_cython); - Py_XDECREF(setstate); - Py_XDECREF(setstate_cython); + Py_XDECREF(name_attr); return ret; -} - + } + 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_mstate_global->__pyx_n_u_getstate); + #else + getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate); + if (!getstate && PyErr_Occurred()) { + goto __PYX_BAD; + } + #endif + if (getstate) { + #if CYTHON_USE_PYTYPE_LOOKUP + object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate); + #else + object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_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_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; + #else + object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD; + #endif + reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD; + if (reduce_ex == object_reduce_ex) { + #if CYTHON_USE_PYTYPE_LOOKUP + object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; + #else + object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD; + #endif + reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD; + if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) { + reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); + if (likely(reduce_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (reduce == object_reduce || PyErr_Occurred()) { + goto __PYX_BAD; + } + setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate); + if (!setstate) PyErr_Clear(); + if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) { + setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); + if (likely(setstate_cython)) { + ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD; + } else if (!setstate || PyErr_Occurred()) { + goto __PYX_BAD; + } + } + PyType_Modified((PyTypeObject*)type_obj); + } + } + goto __PYX_GOOD; + __PYX_BAD: + if (!PyErr_Occurred()) { + __Pyx_TypeName type_obj_name = + __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj); + PyErr_Format(PyExc_RuntimeError, + "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name); + __Pyx_DECREF_TypeName(type_obj_name); + } + ret = -1; + __PYX_GOOD: + #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); + Py_XDECREF(reduce_cython); + Py_XDECREF(setstate); + Py_XDECREF(setstate_cython); + return ret; + } + /* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType_3_1_4 -#define __PYX_HAVE_RT_ImportType_3_1_4 -static PyTypeObject *__Pyx_ImportType_3_1_4(PyObject *module, const char *module_name, const char *class_name, - size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_4 check_size) -{ - PyObject *result = 0; - Py_ssize_t basicsize; - Py_ssize_t itemsize; -#ifdef Py_LIMITED_API - PyObject *py_basicsize; - PyObject *py_itemsize; -#endif - result = PyObject_GetAttrString(module, class_name); - if (!result) - goto bad; - if (!PyType_Check(result)) { - PyErr_Format(PyExc_TypeError, - "%.200s.%.200s is not a type object", - module_name, class_name); - goto bad; - } -#ifndef Py_LIMITED_API - basicsize = ((PyTypeObject *)result)->tp_basicsize; - itemsize = ((PyTypeObject *)result)->tp_itemsize; -#else - if (size == 0) { - return (PyTypeObject *)result; - } - py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); - if (!py_basicsize) - goto bad; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = 0; - if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; - py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); - if (!py_itemsize) - goto bad; - itemsize = PyLong_AsSsize_t(py_itemsize); - Py_DECREF(py_itemsize); - py_itemsize = 0; - if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) - goto bad; -#endif - if (itemsize) { - if (size % alignment) { - alignment = size % alignment; + #ifndef __PYX_HAVE_RT_ImportType_3_2_3 + #define __PYX_HAVE_RT_ImportType_3_2_3 + static PyTypeObject *__Pyx_ImportType_3_2_3(PyObject *module, const char *module_name, const char *class_name, + size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_2_3 check_size) + { + PyObject *result = 0; + Py_ssize_t basicsize; + Py_ssize_t itemsize; + #if defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) + PyObject *py_basicsize; + PyObject *py_itemsize; + #endif + result = PyObject_GetAttrString(module, class_name); + if (!result) + goto bad; + if (!PyType_Check(result)) { + PyErr_Format(PyExc_TypeError, + "%.200s.%.200s is not a type object", + module_name, class_name); + goto bad; + } + #if !( defined(Py_LIMITED_API) || (defined(CYTHON_COMPILING_IN_LIMITED_API) && CYTHON_COMPILING_IN_LIMITED_API) ) + basicsize = ((PyTypeObject *)result)->tp_basicsize; + itemsize = ((PyTypeObject *)result)->tp_itemsize; + #else + if (size == 0) { + return (PyTypeObject *)result; + } + py_basicsize = PyObject_GetAttrString(result, "__basicsize__"); + if (!py_basicsize) + goto bad; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = 0; + if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + py_itemsize = PyObject_GetAttrString(result, "__itemsize__"); + if (!py_itemsize) + goto bad; + itemsize = PyLong_AsSsize_t(py_itemsize); + Py_DECREF(py_itemsize); + py_itemsize = 0; + if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred()) + goto bad; + #endif + if (itemsize) { + if (size % alignment) { + alignment = size % alignment; + } + if (itemsize < (Py_ssize_t)alignment) + itemsize = (Py_ssize_t)alignment; + } + if ((size_t)(basicsize + itemsize) < size) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize+itemsize); + goto bad; + } + if (check_size == __Pyx_ImportType_CheckSize_Error_3_2_3 && + ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { + PyErr_Format(PyExc_ValueError, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd-%zd from PyObject", + module_name, class_name, size, basicsize, basicsize+itemsize); + goto bad; + } + else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_2_3 && (size_t)basicsize > size) { + if (PyErr_WarnFormat(NULL, 0, + "%.200s.%.200s size changed, may indicate binary incompatibility. " + "Expected %zd from C header, got %zd from PyObject", + module_name, class_name, size, basicsize) < 0) { + goto bad; + } + } + return (PyTypeObject *)result; + bad: + Py_XDECREF(result); + return NULL; + } + #endif + +/* dict_setdefault (used by FetchCommonType) */ + static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value) { + PyObject* value; + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + PyObject *args[] = {d, key, default_value}; + value = PyObject_VectorcallMethod(__pyx_mstate_global->__pyx_n_u_setdefault, args, 3 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); + #elif CYTHON_COMPILING_IN_LIMITED_API + value = PyObject_CallMethodObjArgs(d, __pyx_mstate_global->__pyx_n_u_setdefault, key, default_value, NULL); + #elif PY_VERSION_HEX >= 0x030d0000 + PyDict_SetDefaultRef(d, key, default_value, &value); + #else + value = PyDict_SetDefault(d, key, default_value); + if (unlikely(!value)) return NULL; + Py_INCREF(value); + #endif + return value; + } + +/* AddModuleRef (used by FetchSharedCythonModule) */ + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + static PyObject *__Pyx_PyImport_AddModuleObjectRef(PyObject *name) { + PyObject *module_dict = PyImport_GetModuleDict(); + PyObject *m; + if (PyMapping_GetOptionalItem(module_dict, name, &m) < 0) { + return NULL; + } + if (m != NULL && PyModule_Check(m)) { + return m; + } + Py_XDECREF(m); + m = PyModule_NewObject(name); + if (m == NULL) + return NULL; + if (PyDict_CheckExact(module_dict)) { + PyObject *new_m; + (void)PyDict_SetDefaultRef(module_dict, name, m, &new_m); + Py_DECREF(m); + return new_m; + } else { + if (PyObject_SetItem(module_dict, name, m) != 0) { + Py_DECREF(m); + return NULL; + } + return m; } - if (itemsize < (Py_ssize_t)alignment) - itemsize = (Py_ssize_t)alignment; - } - if ((size_t)(basicsize + itemsize) < size) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize+itemsize); - goto bad; } - if (check_size == __Pyx_ImportType_CheckSize_Error_3_1_4 && - ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) { - PyErr_Format(PyExc_ValueError, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd-%zd from PyObject", - module_name, class_name, size, basicsize, basicsize+itemsize); - goto bad; + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *py_name = PyUnicode_FromString(name); + if (!py_name) return NULL; + PyObject *module = __Pyx_PyImport_AddModuleObjectRef(py_name); + Py_DECREF(py_name); + return module; } - else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_1_4 && (size_t)basicsize > size) { - if (PyErr_WarnFormat(NULL, 0, - "%.200s.%.200s size changed, may indicate binary incompatibility. " - "Expected %zd from C header, got %zd from PyObject", - module_name, class_name, size, basicsize) < 0) { - goto bad; - } + #elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000 + #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name) + #else + static PyObject *__Pyx_PyImport_AddModuleRef(const char *name) { + PyObject *module = PyImport_AddModule(name); + Py_XINCREF(module); + return module; } - return (PyTypeObject *)result; -bad: - Py_XDECREF(result); - return NULL; -} -#endif - -/* FetchSharedCythonModule */ + #endif + +/* FetchSharedCythonModule (used by FetchCommonType) */ static PyObject *__Pyx_FetchSharedCythonABIModule(void) { - return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); -} - -/* dict_setdefault */ - static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, - int is_safe_type) { - PyObject* value; - CYTHON_MAYBE_UNUSED_VAR(is_safe_type); -#if CYTHON_COMPILING_IN_LIMITED_API - value = PyObject_CallMethod(d, "setdefault", "OO", key, default_value); -#elif PY_VERSION_HEX >= 0x030d0000 - PyDict_SetDefaultRef(d, key, default_value, &value); -#else - value = PyDict_SetDefault(d, key, default_value); - if (unlikely(!value)) return NULL; - Py_INCREF(value); -#endif - return value; -} - -/* FetchCommonType */ + return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME); + } + +/* FetchCommonType (used by CommonTypesMetaclass) */ #if __PYX_LIMITED_VERSION_HEX < 0x030C0000 -static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { - PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); - if (result && metaclass) { - PyObject *old_tp = (PyObject*)Py_TYPE(result); - Py_INCREF((PyObject*)metaclass); -#if __PYX_LIMITED_VERSION_HEX >= 0x03090000 - Py_SET_TYPE(result, metaclass); -#else - result->ob_type = metaclass; -#endif - Py_DECREF(old_tp); - } - return result; -} -#else -#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) -#endif -static int __Pyx_VerifyCachedType(PyObject *cached_type, - const char *name, - Py_ssize_t expected_basicsize) { - Py_ssize_t basicsize; - if (!PyType_Check(cached_type)) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s is not a type object", name); - return -1; - } - if (expected_basicsize == 0) { - return 0; // size is inherited, nothing useful to check - } -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_basicsize; - py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); - if (unlikely(!py_basicsize)) return -1; - basicsize = PyLong_AsSsize_t(py_basicsize); - Py_DECREF(py_basicsize); - py_basicsize = NULL; - if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; -#else - basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; -#endif - if (basicsize != expected_basicsize) { - PyErr_Format(PyExc_TypeError, - "Shared Cython type %.200s has the wrong size, try recompiling", - name); - return -1; - } - return 0; -} -static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { - PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; - int get_item_ref_result; - const char* object_name = strrchr(spec->name, '.'); - object_name = object_name ? object_name+1 : spec->name; - py_object_name = PyUnicode_FromString(object_name); - if (!py_object_name) return NULL; - abi_module = __Pyx_FetchSharedCythonABIModule(); - if (!abi_module) goto done; - abi_module_dict = PyModule_GetDict(abi_module); - if (!abi_module_dict) goto done; - get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); - if (get_item_ref_result == 1) { - if (__Pyx_VerifyCachedType( - cached_type, - object_name, - spec->basicsize) < 0) { - goto bad; - } - goto done; - } else if (unlikely(get_item_ref_result == -1)) { - goto bad; - } - CYTHON_UNUSED_VAR(module); - cached_type = __Pyx_PyType_FromMetaclass(metaclass, abi_module, spec, bases); - if (unlikely(!cached_type)) goto bad; - if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; - new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type, 1); - if (unlikely(new_cached_type != cached_type)) { - if (unlikely(!new_cached_type)) goto bad; - Py_DECREF(cached_type); - cached_type = new_cached_type; - if (__Pyx_VerifyCachedType( + static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases); + if (result && metaclass) { + PyObject *old_tp = (PyObject*)Py_TYPE(result); + Py_INCREF((PyObject*)metaclass); + #if __PYX_LIMITED_VERSION_HEX >= 0x03090000 + Py_SET_TYPE(result, metaclass); + #else + result->ob_type = metaclass; + #endif + Py_DECREF(old_tp); + } + return result; + } + #else + #define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b) + #endif + static int __Pyx_VerifyCachedType(PyObject *cached_type, + const char *name, + Py_ssize_t expected_basicsize) { + Py_ssize_t basicsize; + if (!PyType_Check(cached_type)) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s is not a type object", name); + return -1; + } + if (expected_basicsize == 0) { + return 0; // size is inherited, nothing useful to check + } + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_basicsize; + py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__"); + if (unlikely(!py_basicsize)) return -1; + basicsize = PyLong_AsSsize_t(py_basicsize); + Py_DECREF(py_basicsize); + py_basicsize = NULL; + if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1; + #else + basicsize = ((PyTypeObject*) cached_type)->tp_basicsize; + #endif + if (basicsize != expected_basicsize) { + PyErr_Format(PyExc_TypeError, + "Shared Cython type %.200s has the wrong size, try recompiling", + name); + return -1; + } + return 0; + } + static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) { + PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name; + int get_item_ref_result; + const char* object_name = strrchr(spec->name, '.'); + object_name = object_name ? object_name+1 : spec->name; + py_object_name = PyUnicode_FromString(object_name); + if (!py_object_name) return NULL; + abi_module = __Pyx_FetchSharedCythonABIModule(); + if (!abi_module) goto done; + abi_module_dict = PyModule_GetDict(abi_module); + if (!abi_module_dict) goto done; + get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type); + if (get_item_ref_result == 1) { + if (__Pyx_VerifyCachedType( cached_type, object_name, spec->basicsize) < 0) { - goto bad; - } - goto done; - } else { - Py_DECREF(new_cached_type); - } -done: - Py_XDECREF(abi_module); - Py_DECREF(py_object_name); - assert(cached_type == NULL || PyType_Check(cached_type)); - return (PyTypeObject *) cached_type; -bad: - Py_XDECREF(cached_type); - cached_type = NULL; - goto done; -} - -/* CommonTypesMetaclass */ + goto bad; + } + goto done; + } else if (unlikely(get_item_ref_result == -1)) { + goto bad; + } + cached_type = __Pyx_PyType_FromMetaclass( + metaclass, + CYTHON_USE_MODULE_STATE ? module : abi_module, + spec, bases); + if (unlikely(!cached_type)) goto bad; + if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad; + new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type); + if (unlikely(new_cached_type != cached_type)) { + if (unlikely(!new_cached_type)) goto bad; + Py_DECREF(cached_type); + cached_type = new_cached_type; + if (__Pyx_VerifyCachedType( + cached_type, + object_name, + spec->basicsize) < 0) { + goto bad; + } + goto done; + } else { + Py_DECREF(new_cached_type); + } + done: + Py_XDECREF(abi_module); + Py_DECREF(py_object_name); + assert(cached_type == NULL || PyType_Check(cached_type)); + return (PyTypeObject *) cached_type; + bad: + Py_XDECREF(cached_type); + cached_type = NULL; + goto done; + } + +/* CommonTypesMetaclass (used by CythonFunctionShared) */ static PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) { - return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); -} -static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { - {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, - {0, 0, 0, 0, 0} -}; -static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { - {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, - {0, 0} -}; -static PyType_Spec __pyx_CommonTypesMetaclass_spec = { - __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", - 0, - 0, -#if PY_VERSION_HEX >= 0x030A0000 - Py_TPFLAGS_IMMUTABLETYPE | - Py_TPFLAGS_DISALLOW_INSTANTIATION | -#endif - Py_TPFLAGS_DEFAULT, - __pyx_CommonTypesMetaclass_slots -}; -static int __pyx_CommonTypesMetaclass_init(PyObject *module) { - __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); - PyObject *bases = PyTuple_Pack(1, &PyType_Type); - if (unlikely(!bases)) { - return -1; - } - mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); - Py_DECREF(bases); - if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { - return -1; - } - return 0; -} - -/* PyMethodNew */ + return PyUnicode_FromString(__PYX_ABI_MODULE_NAME); + } + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + static PyObject* __pyx_CommonTypesMetaclass_call(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *args, CYTHON_UNUSED PyObject *kwds) { + PyErr_SetString(PyExc_TypeError, "Cannot instantiate Cython internal types"); + return NULL; + } + static int __pyx_CommonTypesMetaclass_setattr(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED PyObject *attr, CYTHON_UNUSED PyObject *value) { + PyErr_SetString(PyExc_TypeError, "Cython internal types are immutable"); + return -1; + } + #endif + static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = { + {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL}, + {0, 0, 0, 0, 0} + }; + static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = { + {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset}, + #if __PYX_LIMITED_VERSION_HEX < 0x030A0000 + {Py_tp_call, (void*)__pyx_CommonTypesMetaclass_call}, + {Py_tp_new, (void*)__pyx_CommonTypesMetaclass_call}, + {Py_tp_setattro, (void*)__pyx_CommonTypesMetaclass_setattr}, + #endif + {0, 0} + }; + static PyType_Spec __pyx_CommonTypesMetaclass_spec = { + __PYX_TYPE_MODULE_PREFIX "_common_types_metatype", + 0, + 0, + Py_TPFLAGS_IMMUTABLETYPE | + Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT, + __pyx_CommonTypesMetaclass_slots + }; + static int __pyx_CommonTypesMetaclass_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + PyObject *bases = PyTuple_Pack(1, &PyType_Type); + if (unlikely(!bases)) { + return -1; + } + mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases); + Py_DECREF(bases); + if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) { + return -1; + } + return 0; + } + +/* PyMethodNew (used by CythonFunctionShared) */ #if CYTHON_COMPILING_IN_LIMITED_API -static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - PyObject *result; - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 - { - PyObject *args[] = {func, self}; - result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); - } - #else - result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); - #endif - return result; -} -#else -static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { - CYTHON_UNUSED_VAR(typ); - if (!self) - return __Pyx_NewRef(func); - return PyMethod_New(func, self); -} -#endif - -/* PyVectorcallFastCallDict */ - #if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) -static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) -{ - PyObject *res = NULL; - PyObject *kwnames; - PyObject **newargs; - PyObject **kwvalues; - Py_ssize_t i, pos; - size_t j; - PyObject *key, *value; - unsigned long keys_are_strings; - #if !CYTHON_ASSUME_SAFE_SIZE - Py_ssize_t nkw = PyDict_Size(kw); - if (unlikely(nkw == -1)) return NULL; - #else - Py_ssize_t nkw = PyDict_GET_SIZE(kw); - #endif - newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); - if (unlikely(newargs == NULL)) { - PyErr_NoMemory(); - return NULL; - } - for (j = 0; j < nargs; j++) newargs[j] = args[j]; - kwnames = PyTuple_New(nkw); - if (unlikely(kwnames == NULL)) { - PyMem_Free(newargs); - return NULL; - } - kwvalues = newargs + nargs; - pos = i = 0; - keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; - while (PyDict_Next(kw, &pos, &key, &value)) { - keys_are_strings &= - #if CYTHON_COMPILING_IN_LIMITED_API - PyType_GetFlags(Py_TYPE(key)); - #else - Py_TYPE(key)->tp_flags; - #endif - Py_INCREF(key); - Py_INCREF(value); - #if !CYTHON_ASSUME_SAFE_MACROS - if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; - #else - PyTuple_SET_ITEM(kwnames, i, key); - #endif - kwvalues[i] = value; - i++; - } - if (unlikely(!keys_are_strings)) { - PyErr_SetString(PyExc_TypeError, "keywords must be strings"); - goto cleanup; - } - res = vc(func, newargs, nargs, kwnames); -cleanup: - Py_DECREF(kwnames); - for (i = 0; i < nkw; i++) - Py_DECREF(kwvalues[i]); - PyMem_Free(newargs); - return res; -} -static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) -{ - Py_ssize_t kw_size = - likely(kw == NULL) ? - 0 : -#if !CYTHON_ASSUME_SAFE_SIZE - PyDict_Size(kw); -#else - PyDict_GET_SIZE(kw); -#endif - if (kw_size == 0) { - return vc(func, args, nargs, NULL); - } -#if !CYTHON_ASSUME_SAFE_SIZE - else if (unlikely(kw_size == -1)) { - return NULL; - } -#endif - return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); -} -#endif - -/* CythonFunctionShared */ + static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + PyObject *result; + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000 + { + PyObject *args[] = {func, self}; + result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL); + } + #else + result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL); + #endif + return result; + } + #else + static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) { + CYTHON_UNUSED_VAR(typ); + if (!self) + return __Pyx_NewRef(func); + return PyMethod_New(func, self); + } + #endif + +/* PyVectorcallFastCallDict (used by CythonFunctionShared) */ + #if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL + static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) + { + PyObject *res = NULL; + PyObject *kwnames; + PyObject **newargs; + PyObject **kwvalues; + Py_ssize_t i; + #if CYTHON_AVOID_BORROWED_REFS + PyObject *pos; + #else + Py_ssize_t pos; + #endif + size_t j; + PyObject *key, *value; + unsigned long keys_are_strings; + #if !CYTHON_ASSUME_SAFE_SIZE + Py_ssize_t nkw = PyDict_Size(kw); + if (unlikely(nkw == -1)) return NULL; + #else + Py_ssize_t nkw = PyDict_GET_SIZE(kw); + #endif + newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0])); + if (unlikely(newargs == NULL)) { + PyErr_NoMemory(); + return NULL; + } + for (j = 0; j < nargs; j++) newargs[j] = args[j]; + kwnames = PyTuple_New(nkw); + if (unlikely(kwnames == NULL)) { + PyMem_Free(newargs); + return NULL; + } + kwvalues = newargs + nargs; + pos = 0; + i = 0; + keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS; + while (__Pyx_PyDict_NextRef(kw, &pos, &key, &value)) { + keys_are_strings &= + #if CYTHON_COMPILING_IN_LIMITED_API + PyType_GetFlags(Py_TYPE(key)); + #else + Py_TYPE(key)->tp_flags; + #endif + #if !CYTHON_ASSUME_SAFE_MACROS + if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup; + #else + PyTuple_SET_ITEM(kwnames, i, key); + #endif + kwvalues[i] = value; + i++; + } + if (unlikely(!keys_are_strings)) { + PyErr_SetString(PyExc_TypeError, "keywords must be strings"); + goto cleanup; + } + res = vc(func, newargs, nargs, kwnames); + cleanup: + #if CYTHON_AVOID_BORROWED_REFS + Py_DECREF(pos); + #endif + Py_DECREF(kwnames); + for (i = 0; i < nkw; i++) + Py_DECREF(kwvalues[i]); + PyMem_Free(newargs); + return res; + } + static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw) + { + Py_ssize_t kw_size = + likely(kw == NULL) ? + 0 : + #if !CYTHON_ASSUME_SAFE_SIZE + PyDict_Size(kw); + #else + PyDict_GET_SIZE(kw); + #endif + if (kw_size == 0) { + return vc(func, args, nargs, NULL); + } + #if !CYTHON_ASSUME_SAFE_SIZE + else if (unlikely(kw_size == -1)) { + return NULL; + } + #endif + return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw); + } + #endif + +/* CythonFunctionShared (used by CythonFunction) */ #if CYTHON_COMPILING_IN_LIMITED_API -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { - if (__Pyx_CyFunction_Check(func)) { - return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; - } else if (PyCFunction_Check(func)) { - return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; - } - return 0; -} -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { - if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { - int result; - PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); - if (unlikely(!newFunc)) { - PyErr_Clear(); // It's only an optimization, so don't throw an error - return 0; - } - result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); - Py_DECREF(newFunc); - return result; - } - return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); -} -#else -static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { - if (PyMethod_Check(func)) { - func = PyMethod_GET_FUNCTION(func); - } - return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; -} -#endif -static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - __Pyx_Py_XDECREF_SET( - __Pyx_CyFunction_GetClassObj(f), - ((classobj) ? __Pyx_NewRef(classobj) : NULL)); -#else - __Pyx_Py_XDECREF_SET( - ((PyCMethodObject *) (f))->mm_class, - (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); -#endif -} -static PyObject * -__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_doc == NULL)) { -#if CYTHON_COMPILING_IN_LIMITED_API - op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); - if (unlikely(!op->func_doc)) return NULL; -#else - if (((PyCFunctionObject*)op)->m_ml->ml_doc) { - op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); - if (unlikely(op->func_doc == NULL)) - return NULL; - } else { - Py_INCREF(Py_None); - return Py_None; - } -#endif - } - Py_INCREF(op->func_doc); - return op->func_doc; -} -static PyObject * -__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { - PyObject *result; - CYTHON_UNUSED_VAR(closure); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_doc_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static int -__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (value == NULL) { - value = Py_None; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_doc, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_name == NULL)) { -#if CYTHON_COMPILING_IN_LIMITED_API - op->func_name = PyObject_GetAttrString(op->func, "__name__"); -#else - op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); -#endif - if (unlikely(op->func_name == NULL)) - return NULL; - } - Py_INCREF(op->func_name); - return op->func_name; -} -static PyObject * -__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) -{ - PyObject *result = NULL; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_name_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static int -__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL || !PyUnicode_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__name__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_name, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - PyObject *result; - __Pyx_BEGIN_CRITICAL_SECTION(op); - Py_INCREF(op->func_qualname); - result = op->func_qualname; - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static int -__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL || !PyUnicode_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__qualname__ must be set to a string object"); - return -1; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_qualname, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_dict_locked(__pyx_CyFunctionObject *op) -{ - if (unlikely(op->func_dict == NULL)) { - op->func_dict = PyDict_New(); - if (unlikely(op->func_dict == NULL)) - return NULL; - } - Py_INCREF(op->func_dict); - return op->func_dict; -} -static PyObject * -__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - PyObject *result; - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_dict_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static int -__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context) -{ - CYTHON_UNUSED_VAR(context); - if (unlikely(value == NULL)) { - PyErr_SetString(PyExc_TypeError, - "function's dictionary may not be deleted"); - return -1; - } - if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "setting function's dictionary to a non-dict"); - return -1; - } - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_dict, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(context); - Py_INCREF(op->func_globals); - return op->func_globals; -} -static PyObject * -__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) -{ - CYTHON_UNUSED_VAR(op); - CYTHON_UNUSED_VAR(context); - Py_INCREF(Py_None); - return Py_None; -} -static PyObject * -__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) -{ - PyObject* result = (op->func_code) ? op->func_code : Py_None; - CYTHON_UNUSED_VAR(context); - Py_INCREF(result); - return result; -} -static int -__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { - int result = 0; - PyObject *res = op->defaults_getter((PyObject *) op); - if (unlikely(!res)) - return -1; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - op->defaults_tuple = PyTuple_GET_ITEM(res, 0); - Py_INCREF(op->defaults_tuple); - op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); - Py_INCREF(op->defaults_kwdict); - #else - op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); - if (unlikely(!op->defaults_tuple)) result = -1; - else { - op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); - if (unlikely(!op->defaults_kwdict)) result = -1; - } - #endif - Py_DECREF(res); - return result; -} -static int -__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__defaults__ must be set to a tuple object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_tuple; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_tuple; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static PyObject * -__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result = NULL; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_defaults_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static int -__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value) { - value = Py_None; - } else if (unlikely(value != Py_None && !PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__kwdefaults__ must be set to a dict object"); - return -1; - } - PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " - "currently affect the values used in function calls", 1); - Py_INCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { - PyObject* result = op->defaults_kwdict; - if (unlikely(!result)) { - if (op->defaults_getter) { - if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; - result = op->defaults_kwdict; - } else { - result = Py_None; - } - } - Py_INCREF(result); - return result; -} -static PyObject * -__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { - PyObject* result; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_kwdefaults_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static int -__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - if (!value || value == Py_None) { - value = NULL; - } else if (unlikely(!PyDict_Check(value))) { - PyErr_SetString(PyExc_TypeError, - "__annotations__ must be set to a dict object"); - return -1; - } - Py_XINCREF(value); - __Pyx_BEGIN_CRITICAL_SECTION(op); - __Pyx_Py_XDECREF_SET(op->func_annotations, value); - __Pyx_END_CRITICAL_SECTION(); - return 0; -} -static PyObject * -__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { - PyObject* result = op->func_annotations; - if (unlikely(!result)) { - result = PyDict_New(); - if (unlikely(!result)) return NULL; - op->func_annotations = result; - } - Py_INCREF(result); - return result; -} -static PyObject * -__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { - PyObject *result; - CYTHON_UNUSED_VAR(context); - __Pyx_BEGIN_CRITICAL_SECTION(op); - result = __Pyx_CyFunction_get_annotations_locked(op); - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static PyObject * -__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { - int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; - if (is_coroutine) { - PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; - fromlist = PyList_New(1); - if (unlikely(!fromlist)) return NULL; - Py_INCREF(marker); -#if CYTHON_ASSUME_SAFE_MACROS - PyList_SET_ITEM(fromlist, 0, marker); -#else - if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { - Py_DECREF(marker); - Py_DECREF(fromlist); - return NULL; - } -#endif - module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); - Py_DECREF(fromlist); - if (unlikely(!module)) goto ignore; - is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); - Py_DECREF(module); - if (likely(is_coroutine_value)) { - return is_coroutine_value; - } -ignore: - PyErr_Clear(); - } - return __Pyx_PyBool_FromLong(is_coroutine); -} -static PyObject * -__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { - PyObject *result; - CYTHON_UNUSED_VAR(context); - if (op->func_is_coroutine) { - return __Pyx_NewRef(op->func_is_coroutine); - } - result = __Pyx_CyFunction_get_is_coroutine_value(op); - if (unlikely(!result)) - return NULL; - __Pyx_BEGIN_CRITICAL_SECTION(op); - if (op->func_is_coroutine) { - Py_DECREF(result); - result = __Pyx_NewRef(op->func_is_coroutine); - } else { - op->func_is_coroutine = __Pyx_NewRef(result); - } - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); - if (!py_name) return; - PyErr_Format(PyExc_TypeError, - "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", - py_name, message, size); - Py_DECREF(py_name); -#else - const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; - PyErr_Format(PyExc_TypeError, - "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", - name, message, size); -#endif -} -static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); - if (!py_name) return; - PyErr_Format(PyExc_TypeError, - "%.200S() %s", - py_name, message); - Py_DECREF(py_name); -#else - const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; - PyErr_Format(PyExc_TypeError, - "%.200s() %s", - name, message); -#endif -} -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject * -__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_GetAttrString(op->func, "__module__"); -} -static int -__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { - CYTHON_UNUSED_VAR(context); - return PyObject_SetAttrString(op->func, "__module__", value); -} -#endif -static PyGetSetDef __pyx_CyFunction_getsets[] = { - {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, - {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, - {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, - {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0}, - {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, - {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, - {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, - {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, - {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, - {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, - {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, -#if CYTHON_COMPILING_IN_LIMITED_API - {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, -#endif - {0, 0, 0, 0, 0} -}; -static PyMemberDef __pyx_CyFunction_members[] = { -#if !CYTHON_COMPILING_IN_LIMITED_API - {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, -#endif - {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, -#if CYTHON_METH_FASTCALL -#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API - {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, -#else - {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, -#endif -#if CYTHON_COMPILING_IN_LIMITED_API - {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, -#else - {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, -#endif -#endif - {0, 0, 0, 0, 0} -}; -static PyObject * -__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) -{ - PyObject *result = NULL; - CYTHON_UNUSED_VAR(args); - __Pyx_BEGIN_CRITICAL_SECTION(m); - Py_INCREF(m->func_qualname); - result = m->func_qualname; - __Pyx_END_CRITICAL_SECTION(); - return result; -} -static PyMethodDef __pyx_CyFunction_methods[] = { - {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, - {0, 0, 0, 0} -}; -#if CYTHON_COMPILING_IN_LIMITED_API -#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) -#else -#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) -#endif -static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, - PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { -#if !CYTHON_COMPILING_IN_LIMITED_API - PyCFunctionObject *cf = (PyCFunctionObject*) op; -#endif - if (unlikely(op == NULL)) - return NULL; -#if CYTHON_COMPILING_IN_LIMITED_API - op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); - if (unlikely(!op->func)) return NULL; -#endif - op->flags = flags; - __Pyx_CyFunction_weakreflist(op) = NULL; -#if !CYTHON_COMPILING_IN_LIMITED_API - cf->m_ml = ml; - cf->m_self = (PyObject *) op; -#endif - Py_XINCREF(closure); - op->func_closure = closure; -#if !CYTHON_COMPILING_IN_LIMITED_API - Py_XINCREF(module); - cf->m_module = module; -#endif - op->func_dict = NULL; - op->func_name = NULL; - Py_INCREF(qualname); - op->func_qualname = qualname; - op->func_doc = NULL; -#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API - op->func_classobj = NULL; -#else - ((PyCMethodObject*)op)->mm_class = NULL; -#endif - op->func_globals = globals; - Py_INCREF(op->func_globals); - Py_XINCREF(code); - op->func_code = code; - op->defaults = NULL; - op->defaults_tuple = NULL; - op->defaults_kwdict = NULL; - op->defaults_getter = NULL; - op->func_annotations = NULL; - op->func_is_coroutine = NULL; -#if CYTHON_METH_FASTCALL - switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { - case METH_NOARGS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; - break; - case METH_O: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; - break; - case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; - break; - case METH_FASTCALL | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; - break; - case METH_VARARGS | METH_KEYWORDS: - __Pyx_CyFunction_func_vectorcall(op) = NULL; - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - Py_DECREF(op); - return NULL; - } -#endif - return (PyObject *) op; -} -static int -__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) -{ - Py_CLEAR(m->func_closure); -#if CYTHON_COMPILING_IN_LIMITED_API - Py_CLEAR(m->func); -#else - Py_CLEAR(((PyCFunctionObject*)m)->m_module); -#endif - Py_CLEAR(m->func_dict); - Py_CLEAR(m->func_name); - Py_CLEAR(m->func_qualname); - Py_CLEAR(m->func_doc); - Py_CLEAR(m->func_globals); - Py_CLEAR(m->func_code); -#if !CYTHON_COMPILING_IN_LIMITED_API -#if PY_VERSION_HEX < 0x030900B1 - Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); -#else - { - PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; - ((PyCMethodObject *) (m))->mm_class = NULL; - Py_XDECREF(cls); - } -#endif -#endif - Py_CLEAR(m->defaults_tuple); - Py_CLEAR(m->defaults_kwdict); - Py_CLEAR(m->func_annotations); - Py_CLEAR(m->func_is_coroutine); - Py_CLEAR(m->defaults); - return 0; -} -static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - if (__Pyx_CyFunction_weakreflist(m) != NULL) - PyObject_ClearWeakRefs((PyObject *) m); - __Pyx_CyFunction_clear(m); - __Pyx_PyHeapTypeObject_GC_Del(m); -} -static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) -{ - PyObject_GC_UnTrack(m); - __Pyx__CyFunction_dealloc(m); -} -static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) -{ - { - int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); - if (e) return e; - } - Py_VISIT(m->func_closure); -#if CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(m->func); -#else - Py_VISIT(((PyCFunctionObject*)m)->m_module); -#endif - Py_VISIT(m->func_dict); - __Pyx_VISIT_CONST(m->func_name); - __Pyx_VISIT_CONST(m->func_qualname); - Py_VISIT(m->func_doc); - Py_VISIT(m->func_globals); - __Pyx_VISIT_CONST(m->func_code); -#if !CYTHON_COMPILING_IN_LIMITED_API - Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); -#endif - Py_VISIT(m->defaults_tuple); - Py_VISIT(m->defaults_kwdict); - Py_VISIT(m->func_is_coroutine); - Py_VISIT(m->defaults); - return 0; -} -static PyObject* -__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) -{ - PyObject *repr; - __Pyx_BEGIN_CRITICAL_SECTION(op); - repr = PyUnicode_FromFormat("", - op->func_qualname, (void *)op); - __Pyx_END_CRITICAL_SECTION(); - return repr; -} -static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { -#if CYTHON_COMPILING_IN_LIMITED_API - PyObject *f = ((__pyx_CyFunctionObject*)func)->func; - PyCFunction meth; - int flags; - meth = PyCFunction_GetFunction(f); - if (unlikely(!meth)) return NULL; - flags = PyCFunction_GetFlags(f); - if (unlikely(flags < 0)) return NULL; -#else - PyCFunctionObject* f = (PyCFunctionObject*)func; - PyCFunction meth = f->m_ml->ml_meth; - int flags = f->m_ml->ml_flags; -#endif - Py_ssize_t size; - switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { - case METH_VARARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) - return (*meth)(self, arg); - break; - case METH_VARARGS | METH_KEYWORDS: - return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); - case METH_NOARGS: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -#if CYTHON_ASSUME_SAFE_SIZE - size = PyTuple_GET_SIZE(arg); -#else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; -#endif - if (likely(size == 0)) - return (*meth)(self, NULL); - __Pyx_CyFunction_raise_argument_count_error( - (__pyx_CyFunctionObject*)func, - "takes no arguments", size); - return NULL; - } - break; - case METH_O: - if (likely(kw == NULL || PyDict_Size(kw) == 0)) { -#if CYTHON_ASSUME_SAFE_SIZE - size = PyTuple_GET_SIZE(arg); -#else - size = PyTuple_Size(arg); - if (unlikely(size < 0)) return NULL; -#endif - if (likely(size == 1)) { - PyObject *result, *arg0; - #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS - arg0 = PyTuple_GET_ITEM(arg, 0); - #else - arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; - #endif - result = (*meth)(self, arg0); - #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) - Py_DECREF(arg0); - #endif - return result; - } - __Pyx_CyFunction_raise_argument_count_error( - (__pyx_CyFunctionObject*)func, - "takes exactly one argument", size); - return NULL; - } - break; - default: - PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); - return NULL; - } - __Pyx_CyFunction_raise_type_error( - (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); - return NULL; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *self, *result; -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)func)->m_self; -#endif - result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); - return result; -} -static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { - PyObject *result; - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; -#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) - __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); - if (vc) { -#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE - return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); -#else - (void) &__Pyx_PyVectorcall_FastCallDict; - return PyVectorcall_Call(func, args, kw); -#endif - } -#endif - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - Py_ssize_t argc; - PyObject *new_args; - PyObject *self; -#if CYTHON_ASSUME_SAFE_SIZE - argc = PyTuple_GET_SIZE(args); -#else - argc = PyTuple_Size(args); - if (unlikely(argc < 0)) return NULL; -#endif - new_args = PyTuple_GetSlice(args, 1, argc); - if (unlikely(!new_args)) - return NULL; - self = PyTuple_GetItem(args, 0); - if (unlikely(!self)) { - Py_DECREF(new_args); - PyErr_Format(PyExc_TypeError, - "unbound method %.200S() needs an argument", - cyfunc->func_qualname); - return NULL; - } - result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); - Py_DECREF(new_args); - } else { - result = __Pyx_CyFunction_Call(func, args, kw); - } - return result; -} -#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL) -static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) -{ - int ret = 0; - if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { - if (unlikely(nargs < 1)) { - __Pyx_CyFunction_raise_type_error( - cyfunc, "needs an argument"); - return -1; - } - ret = 1; - } - if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { - __Pyx_CyFunction_raise_type_error( - cyfunc, "takes no keyword arguments"); - return -1; - } - return ret; -} -static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; -#if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; -#else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; -#endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)cyfunc)->m_self; -#endif - break; - default: - return NULL; - } - if (unlikely(nargs != 0)) { - __Pyx_CyFunction_raise_argument_count_error( - cyfunc, "takes no arguments", nargs); - return NULL; - } - return meth(self, NULL); -} -static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; -#if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; -#else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; -#endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)cyfunc)->m_self; -#endif - break; - default: - return NULL; - } - if (unlikely(nargs != 1)) { - __Pyx_CyFunction_raise_argument_count_error( - cyfunc, "takes exactly one argument", nargs); - return NULL; - } - return meth(self, args[0]); -} -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; -#if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; -#else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; -#endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)cyfunc)->m_self; -#endif - break; - default: - return NULL; - } - return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); -} -static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) -{ - __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; - PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); -#if CYTHON_BACKPORT_VECTORCALL - Py_ssize_t nargs = (Py_ssize_t)nargsf; -#else - Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); -#endif - PyObject *self; -#if CYTHON_COMPILING_IN_LIMITED_API - PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); - if (unlikely(!meth)) return NULL; -#else - PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; -#endif - switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { - case 1: - self = args[0]; - args += 1; - nargs -= 1; - break; - case 0: -#if CYTHON_COMPILING_IN_LIMITED_API - self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); - if (unlikely(!self) && PyErr_Occurred()) return NULL; -#else - self = ((PyCFunctionObject*)cyfunc)->m_self; -#endif - break; - default: - return NULL; - } - return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, (size_t)nargs, kwnames); -} -#endif -static PyType_Slot __pyx_CyFunctionType_slots[] = { - {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, - {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, - {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, - {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, - {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, - {Py_tp_methods, (void *)__pyx_CyFunction_methods}, - {Py_tp_members, (void *)__pyx_CyFunction_members}, - {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, - {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, - {0, 0}, -}; -static PyType_Spec __pyx_CyFunctionType_spec = { - __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", - sizeof(__pyx_CyFunctionObject), - 0, -#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR - Py_TPFLAGS_METHOD_DESCRIPTOR | -#endif -#if CYTHON_METH_FASTCALL -#if defined(Py_TPFLAGS_HAVE_VECTORCALL) - Py_TPFLAGS_HAVE_VECTORCALL | -#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) - _Py_TPFLAGS_HAVE_VECTORCALL | -#endif -#endif // CYTHON_METH_FASTCALL -#if PY_VERSION_HEX >= 0x030A0000 - Py_TPFLAGS_IMMUTABLETYPE | -#endif - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, - __pyx_CyFunctionType_slots -}; -static int __pyx_CyFunction_init(PyObject *module) { - __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); - mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( - mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); - if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { - return -1; - } - return 0; -} -static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); - if (unlikely(!m->defaults)) - return NULL; - return m->defaults; -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_tuple = tuple; - Py_INCREF(tuple); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->defaults_kwdict = dict; - Py_INCREF(dict); -} -static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { - __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; - m->func_annotations = dict; - Py_INCREF(dict); -} - + static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) { + if (__Pyx_CyFunction_Check(func)) { + return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc; + } else if (PyCFunction_Check(func)) { + return PyCFunction_GetFunction(func) == (PyCFunction) cfunc; + } + return 0; + } + static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) { + int result; + PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func); + if (unlikely(!newFunc)) { + PyErr_Clear(); // It's only an optimization, so don't throw an error + return 0; + } + result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc); + Py_DECREF(newFunc); + return result; + } + return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc); + } + #else + static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) { + if (PyMethod_Check(func)) { + func = PyMethod_GET_FUNCTION(func); + } + return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc; + } + #endif + static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) { + #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + __Pyx_Py_XDECREF_SET( + __Pyx_CyFunction_GetClassObj(f), + ((classobj) ? __Pyx_NewRef(classobj) : NULL)); + #else + __Pyx_Py_XDECREF_SET( + ((PyCMethodObject *) (f))->mm_class, + (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL)); + #endif + } + static PyObject * + __Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op) + { + if (unlikely(op->func_doc == NULL)) { + #if CYTHON_COMPILING_IN_LIMITED_API + op->func_doc = PyObject_GetAttrString(op->func, "__doc__"); + if (unlikely(!op->func_doc)) return NULL; + #else + if (((PyCFunctionObject*)op)->m_ml->ml_doc) { + op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc); + if (unlikely(op->func_doc == NULL)) + return NULL; + } else { + Py_INCREF(Py_None); + return Py_None; + } + #endif + } + Py_INCREF(op->func_doc); + return op->func_doc; + } + static PyObject * + __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) { + PyObject *result; + CYTHON_UNUSED_VAR(closure); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_doc_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static int + __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context) + { + CYTHON_UNUSED_VAR(context); + if (value == NULL) { + value = Py_None; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_doc, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; + } + static PyObject * + __Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op) + { + if (unlikely(op->func_name == NULL)) { + #if CYTHON_COMPILING_IN_LIMITED_API + op->func_name = PyObject_GetAttrString(op->func, "__name__"); + #else + op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name); + #endif + if (unlikely(op->func_name == NULL)) + return NULL; + } + Py_INCREF(op->func_name); + return op->func_name; + } + static PyObject * + __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context) + { + PyObject *result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_name_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static int + __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context) + { + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__name__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_name, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; + } + static PyObject * + __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context) + { + CYTHON_UNUSED_VAR(context); + PyObject *result; + __Pyx_BEGIN_CRITICAL_SECTION(op); + Py_INCREF(op->func_qualname); + result = op->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static int + __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context) + { + CYTHON_UNUSED_VAR(context); + if (unlikely(value == NULL || !PyUnicode_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__qualname__ must be set to a string object"); + return -1; + } + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_qualname, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; + } + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + static PyObject * + __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context) + { + CYTHON_UNUSED_VAR(context); + if (unlikely(op->func_dict == NULL)) { + op->func_dict = PyDict_New(); + if (unlikely(op->func_dict == NULL)) + return NULL; + } + Py_INCREF(op->func_dict); + return op->func_dict; + } + #endif + static PyObject * + __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context) + { + CYTHON_UNUSED_VAR(context); + Py_INCREF(op->func_globals); + return op->func_globals; + } + static PyObject * + __Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context) + { + CYTHON_UNUSED_VAR(op); + CYTHON_UNUSED_VAR(context); + Py_INCREF(Py_None); + return Py_None; + } + static PyObject * + __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context) + { + PyObject* result = (op->func_code) ? op->func_code : Py_None; + CYTHON_UNUSED_VAR(context); + Py_INCREF(result); + return result; + } + static int + __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) { + int result = 0; + PyObject *res = op->defaults_getter((PyObject *) op); + if (unlikely(!res)) + return -1; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + op->defaults_tuple = PyTuple_GET_ITEM(res, 0); + Py_INCREF(op->defaults_tuple); + op->defaults_kwdict = PyTuple_GET_ITEM(res, 1); + Py_INCREF(op->defaults_kwdict); + #else + op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0); + if (unlikely(!op->defaults_tuple)) result = -1; + else { + op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1); + if (unlikely(!op->defaults_kwdict)) result = -1; + } + #endif + Py_DECREF(res); + return result; + } + static int + __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyTuple_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__defaults__ must be set to a tuple object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_tuple, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; + } + static PyObject * + __Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_tuple; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_tuple; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; + } + static PyObject * + __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result = NULL; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_defaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static int + __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value) { + value = Py_None; + } else if (unlikely(value != Py_None && !PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__kwdefaults__ must be set to a dict object"); + return -1; + } + PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not " + "currently affect the values used in function calls", 1); + Py_INCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; + } + static PyObject * + __Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->defaults_kwdict; + if (unlikely(!result)) { + if (op->defaults_getter) { + if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL; + result = op->defaults_kwdict; + } else { + result = Py_None; + } + } + Py_INCREF(result); + return result; + } + static PyObject * + __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) { + PyObject* result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_kwdefaults_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static int + __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + if (!value || value == Py_None) { + value = NULL; + } else if (unlikely(!PyDict_Check(value))) { + PyErr_SetString(PyExc_TypeError, + "__annotations__ must be set to a dict object"); + return -1; + } + Py_XINCREF(value); + __Pyx_BEGIN_CRITICAL_SECTION(op); + __Pyx_Py_XDECREF_SET(op->func_annotations, value); + __Pyx_END_CRITICAL_SECTION(); + return 0; + } + static PyObject * + __Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) { + PyObject* result = op->func_annotations; + if (unlikely(!result)) { + result = PyDict_New(); + if (unlikely(!result)) return NULL; + op->func_annotations = result; + } + Py_INCREF(result); + return result; + } + static PyObject * + __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + __Pyx_BEGIN_CRITICAL_SECTION(op); + result = __Pyx_CyFunction_get_annotations_locked(op); + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static PyObject * + __Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) { + int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE; + if (is_coroutine) { + PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine; + fromlist = PyList_New(1); + if (unlikely(!fromlist)) return NULL; + Py_INCREF(marker); + #if CYTHON_ASSUME_SAFE_MACROS + PyList_SET_ITEM(fromlist, 0, marker); + #else + if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) { + Py_DECREF(marker); + Py_DECREF(fromlist); + return NULL; + } + #endif + module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + if (unlikely(!module)) goto ignore; + is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker); + Py_DECREF(module); + if (likely(is_coroutine_value)) { + return is_coroutine_value; + } + ignore: + PyErr_Clear(); + } + return __Pyx_PyBool_FromLong(is_coroutine); + } + static PyObject * + __Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) { + PyObject *result; + CYTHON_UNUSED_VAR(context); + if (op->func_is_coroutine) { + return __Pyx_NewRef(op->func_is_coroutine); + } + result = __Pyx_CyFunction_get_is_coroutine_value(op); + if (unlikely(!result)) + return NULL; + __Pyx_BEGIN_CRITICAL_SECTION(op); + if (op->func_is_coroutine) { + Py_DECREF(result); + result = __Pyx_NewRef(op->func_is_coroutine); + } else { + op->func_is_coroutine = __Pyx_NewRef(result); + } + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) { + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + py_name, message, size); + Py_DECREF(py_name); + #else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)", + name, message, size); + #endif + } + static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) { + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL); + if (!py_name) return; + PyErr_Format(PyExc_TypeError, + "%.200S() %s", + py_name, message); + Py_DECREF(py_name); + #else + const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name; + PyErr_Format(PyExc_TypeError, + "%.200s() %s", + name, message); + #endif + } + #if CYTHON_COMPILING_IN_LIMITED_API + static PyObject * + __Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_GetAttrString(op->func, "__module__"); + } + static int + __Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) { + CYTHON_UNUSED_VAR(context); + return PyObject_SetAttrString(op->func, "__module__", value); + } + #endif + static PyGetSetDef __pyx_CyFunction_getsets[] = { + {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0}, + {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0}, + {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0}, + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, + {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)PyObject_GenericSetDict, 0, 0}, + #else + {"func_dict", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, + {"__dict__", (getter)PyObject_GenericGetDict, (setter)PyObject_GenericSetDict, 0, 0}, + #endif + {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0}, + {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0}, + {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0}, + {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0}, + {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0}, + {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0}, + {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0}, + #if CYTHON_COMPILING_IN_LIMITED_API + {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0}, + #endif + {0, 0, 0, 0, 0} + }; + static PyMemberDef __pyx_CyFunction_members[] = { + #if !CYTHON_COMPILING_IN_LIMITED_API + {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0}, + #endif + #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0}, + #endif + #if CYTHON_METH_FASTCALL + #if CYTHON_COMPILING_IN_LIMITED_API + {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0}, + #else + {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0}, + #endif + #if CYTHON_COMPILING_IN_LIMITED_API + {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0}, + #else + {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0}, + #endif + #endif + {0, 0, 0, 0, 0} + }; + static PyObject * + __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args) + { + PyObject *result = NULL; + CYTHON_UNUSED_VAR(args); + __Pyx_BEGIN_CRITICAL_SECTION(m); + Py_INCREF(m->func_qualname); + result = m->func_qualname; + __Pyx_END_CRITICAL_SECTION(); + return result; + } + static PyMethodDef __pyx_CyFunction_methods[] = { + {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0}, + {0, 0, 0, 0} + }; + #if CYTHON_COMPILING_IN_LIMITED_API + #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist) + #else + #define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist) + #endif + static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname, + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + #if !CYTHON_COMPILING_IN_LIMITED_API + PyCFunctionObject *cf = (PyCFunctionObject*) op; + #endif + if (unlikely(op == NULL)) + return NULL; + #if CYTHON_COMPILING_IN_LIMITED_API + op->func = PyCFunction_NewEx(ml, (PyObject*)op, module); + if (unlikely(!op->func)) return NULL; + #endif + op->flags = flags; + __Pyx_CyFunction_weakreflist(op) = NULL; + #if !CYTHON_COMPILING_IN_LIMITED_API + cf->m_ml = ml; + cf->m_self = (PyObject *) op; + #endif + Py_XINCREF(closure); + op->func_closure = closure; + #if !CYTHON_COMPILING_IN_LIMITED_API + Py_XINCREF(module); + cf->m_module = module; + #endif + #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + op->func_dict = NULL; + #endif + op->func_name = NULL; + Py_INCREF(qualname); + op->func_qualname = qualname; + op->func_doc = NULL; + #if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API + op->func_classobj = NULL; + #else + ((PyCMethodObject*)op)->mm_class = NULL; + #endif + op->func_globals = globals; + Py_INCREF(op->func_globals); + Py_XINCREF(code); + op->func_code = code; + op->defaults = NULL; + op->defaults_tuple = NULL; + op->defaults_kwdict = NULL; + op->defaults_getter = NULL; + op->func_annotations = NULL; + op->func_is_coroutine = NULL; + #if CYTHON_METH_FASTCALL + switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) { + case METH_NOARGS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS; + break; + case METH_O: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O; + break; + case METH_METHOD | METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD; + break; + case METH_FASTCALL | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS; + break; + case METH_VARARGS | METH_KEYWORDS: + __Pyx_CyFunction_func_vectorcall(op) = NULL; + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + Py_DECREF(op); + return NULL; + } + #endif + return (PyObject *) op; + } + static int + __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m) + { + Py_CLEAR(m->func_closure); + #if CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func); + #else + Py_CLEAR(((PyCFunctionObject*)m)->m_module); + #endif + #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + Py_CLEAR(m->func_dict); + #elif PY_VERSION_HEX < 0x030d0000 + _PyObject_ClearManagedDict((PyObject*)m); + #else + PyObject_ClearManagedDict((PyObject*)m); + #endif + Py_CLEAR(m->func_name); + Py_CLEAR(m->func_qualname); + Py_CLEAR(m->func_doc); + Py_CLEAR(m->func_globals); + Py_CLEAR(m->func_code); + #if !CYTHON_COMPILING_IN_LIMITED_API + #if PY_VERSION_HEX < 0x030900B1 + Py_CLEAR(__Pyx_CyFunction_GetClassObj(m)); + #else + { + PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class; + ((PyCMethodObject *) (m))->mm_class = NULL; + Py_XDECREF(cls); + } + #endif + #endif + Py_CLEAR(m->defaults_tuple); + Py_CLEAR(m->defaults_kwdict); + Py_CLEAR(m->func_annotations); + Py_CLEAR(m->func_is_coroutine); + Py_CLEAR(m->defaults); + return 0; + } + static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m) + { + if (__Pyx_CyFunction_weakreflist(m) != NULL) + PyObject_ClearWeakRefs((PyObject *) m); + __Pyx_CyFunction_clear(m); + __Pyx_PyHeapTypeObject_GC_Del(m); + } + static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m) + { + PyObject_GC_UnTrack(m); + __Pyx__CyFunction_dealloc(m); + } + static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg) + { + { + int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg); + if (e) return e; + } + Py_VISIT(m->func_closure); + #if CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func); + #else + Py_VISIT(((PyCFunctionObject*)m)->m_module); + #endif + #if PY_VERSION_HEX < 0x030C0000 || CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(m->func_dict); + #else + { + int e = + #if PY_VERSION_HEX < 0x030d0000 + _PyObject_VisitManagedDict + #else + PyObject_VisitManagedDict + #endif + ((PyObject*)m, visit, arg); + if (e != 0) return e; + } + #endif + __Pyx_VISIT_CONST(m->func_name); + __Pyx_VISIT_CONST(m->func_qualname); + Py_VISIT(m->func_doc); + Py_VISIT(m->func_globals); + __Pyx_VISIT_CONST(m->func_code); + #if !CYTHON_COMPILING_IN_LIMITED_API + Py_VISIT(__Pyx_CyFunction_GetClassObj(m)); + #endif + Py_VISIT(m->defaults_tuple); + Py_VISIT(m->defaults_kwdict); + Py_VISIT(m->func_is_coroutine); + Py_VISIT(m->defaults); + return 0; + } + static PyObject* + __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op) + { + PyObject *repr; + __Pyx_BEGIN_CRITICAL_SECTION(op); + repr = PyUnicode_FromFormat("", + op->func_qualname, (void *)op); + __Pyx_END_CRITICAL_SECTION(); + return repr; + } + static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) { + #if CYTHON_COMPILING_IN_LIMITED_API + PyObject *f = ((__pyx_CyFunctionObject*)func)->func; + PyCFunction meth; + int flags; + meth = PyCFunction_GetFunction(f); + if (unlikely(!meth)) return NULL; + flags = PyCFunction_GetFlags(f); + if (unlikely(flags < 0)) return NULL; + #else + PyCFunctionObject* f = (PyCFunctionObject*)func; + PyCFunction meth = f->m_ml->ml_meth; + int flags = f->m_ml->ml_flags; + #endif + Py_ssize_t size; + switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) { + case METH_VARARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) + return (*meth)(self, arg); + break; + case METH_VARARGS | METH_KEYWORDS: + return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw); + case METH_NOARGS: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + #if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); + #else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; + #endif + if (likely(size == 0)) + return (*meth)(self, NULL); + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes no arguments", size); + return NULL; + } + break; + case METH_O: + if (likely(kw == NULL || PyDict_Size(kw) == 0)) { + #if CYTHON_ASSUME_SAFE_SIZE + size = PyTuple_GET_SIZE(arg); + #else + size = PyTuple_Size(arg); + if (unlikely(size < 0)) return NULL; + #endif + if (likely(size == 1)) { + PyObject *result, *arg0; + #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS + arg0 = PyTuple_GET_ITEM(arg, 0); + #else + arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL; + #endif + result = (*meth)(self, arg0); + #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS) + Py_DECREF(arg0); + #endif + return result; + } + __Pyx_CyFunction_raise_argument_count_error( + (__pyx_CyFunctionObject*)func, + "takes exactly one argument", size); + return NULL; + } + break; + default: + PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction"); + return NULL; + } + __Pyx_CyFunction_raise_type_error( + (__pyx_CyFunctionObject*)func, "takes no keyword arguments"); + return NULL; + } + static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *self, *result; + #if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; + #else + self = ((PyCFunctionObject*)func)->m_self; + #endif + result = __Pyx_CyFunction_CallMethod(func, self, arg, kw); + return result; + } + static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) { + PyObject *result; + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func; + #if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL + __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc); + if (vc) { + #if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE + return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw); + #else + (void) &__Pyx_PyVectorcall_FastCallDict; + return PyVectorcall_Call(func, args, kw); + #endif + } + #endif + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + Py_ssize_t argc; + PyObject *new_args; + PyObject *self; + #if CYTHON_ASSUME_SAFE_SIZE + argc = PyTuple_GET_SIZE(args); + #else + argc = PyTuple_Size(args); + if (unlikely(argc < 0)) return NULL; + #endif + new_args = PyTuple_GetSlice(args, 1, argc); + if (unlikely(!new_args)) + return NULL; + self = PyTuple_GetItem(args, 0); + if (unlikely(!self)) { + Py_DECREF(new_args); + PyErr_Format(PyExc_TypeError, + "unbound method %.200S() needs an argument", + cyfunc->func_qualname); + return NULL; + } + result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw); + Py_DECREF(new_args); + } else { + result = __Pyx_CyFunction_Call(func, args, kw); + } + return result; + } + #if CYTHON_METH_FASTCALL && CYTHON_VECTORCALL + static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames) + { + int ret = 0; + if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) { + if (unlikely(nargs < 1)) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "needs an argument"); + return -1; + } + ret = 1; + } + if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) { + __Pyx_CyFunction_raise_type_error( + cyfunc, "takes no keyword arguments"); + return -1; + } + return ret; + } + static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) + { + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; + #if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; + #else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; + #endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + #if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; + #else + self = ((PyCFunctionObject*)cyfunc)->m_self; + #endif + break; + default: + return NULL; + } + if (unlikely(nargs != 0)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes no arguments", nargs); + return NULL; + } + return meth(self, NULL); + } + static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) + { + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; + #if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; + #else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; + #endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + #if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; + #else + self = ((PyCFunctionObject*)cyfunc)->m_self; + #endif + break; + default: + return NULL; + } + if (unlikely(nargs != 1)) { + __Pyx_CyFunction_raise_argument_count_error( + cyfunc, "takes exactly one argument", nargs); + return NULL; + } + return meth(self, args[0]); + } + static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) + { + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; + #if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; + #else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; + #endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + #if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; + #else + self = ((PyCFunctionObject*)cyfunc)->m_self; + #endif + break; + default: + return NULL; + } + return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames); + } + static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames) + { + __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func; + PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc); + Py_ssize_t nargs = PyVectorcall_NARGS(nargsf); + PyObject *self; + #if CYTHON_COMPILING_IN_LIMITED_API + PyCFunction meth = PyCFunction_GetFunction(cyfunc->func); + if (unlikely(!meth)) return NULL; + #else + PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth; + #endif + switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) { + case 1: + self = args[0]; + args += 1; + nargs -= 1; + break; + case 0: + #if CYTHON_COMPILING_IN_LIMITED_API + self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func); + if (unlikely(!self) && PyErr_Occurred()) return NULL; + #else + self = ((PyCFunctionObject*)cyfunc)->m_self; + #endif + break; + default: + return NULL; + } + #if PY_VERSION_HEX < 0x030e00A6 + size_t nargs_value = (size_t) nargs; + #else + Py_ssize_t nargs_value = nargs; + #endif + return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, nargs_value, kwnames); + } + #endif + static PyType_Slot __pyx_CyFunctionType_slots[] = { + {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc}, + {Py_tp_repr, (void *)__Pyx_CyFunction_repr}, + {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod}, + {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse}, + {Py_tp_clear, (void *)__Pyx_CyFunction_clear}, + {Py_tp_methods, (void *)__pyx_CyFunction_methods}, + {Py_tp_members, (void *)__pyx_CyFunction_members}, + {Py_tp_getset, (void *)__pyx_CyFunction_getsets}, + {Py_tp_descr_get, (void *)__Pyx_PyMethod_New}, + {0, 0}, + }; + static PyType_Spec __pyx_CyFunctionType_spec = { + __PYX_TYPE_MODULE_PREFIX "cython_function_or_method", + sizeof(__pyx_CyFunctionObject), + 0, + #ifdef Py_TPFLAGS_METHOD_DESCRIPTOR + Py_TPFLAGS_METHOD_DESCRIPTOR | + #endif + #if CYTHON_METH_FASTCALL + #if defined(Py_TPFLAGS_HAVE_VECTORCALL) + Py_TPFLAGS_HAVE_VECTORCALL | + #elif defined(_Py_TPFLAGS_HAVE_VECTORCALL) + _Py_TPFLAGS_HAVE_VECTORCALL | + #endif + #endif // CYTHON_METH_FASTCALL + #if PY_VERSION_HEX >= 0x030C0000 && !CYTHON_COMPILING_IN_LIMITED_API + Py_TPFLAGS_MANAGED_DICT | + #endif + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE, + __pyx_CyFunctionType_slots + }; + static int __pyx_CyFunction_init(PyObject *module) { + __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module); + mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec( + mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL); + if (unlikely(mstate->__pyx_CyFunctionType == NULL)) { + return -1; + } + return 0; + } + static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type); + if (unlikely(!m->defaults)) + return NULL; + return m->defaults; + } + static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_tuple = tuple; + Py_INCREF(tuple); + } + static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->defaults_kwdict = dict; + Py_INCREF(dict); + } + static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) { + __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func; + m->func_annotations = dict; + 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_mstate_global->__pyx_CyFunctionType), - ml, flags, qualname, closure, module, globals, code - ); - if (likely(op)) { - PyObject_GC_Track(op); - } - return op; -} - -/* CLineInTraceback */ + PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) { + PyObject *op = __Pyx_CyFunction_Init( + PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType), + ml, flags, qualname, closure, module, globals, code + ); + if (likely(op)) { + PyObject_GC_Track(op); + } + return op; + } + +/* CLineInTraceback (used by AddTraceback) */ #if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME -static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { - PyObject *use_cline; - PyObject *ptype, *pvalue, *ptraceback; -#if CYTHON_COMPILING_IN_CPYTHON - PyObject **cython_runtime_dict; -#endif - CYTHON_MAYBE_UNUSED_VAR(tstate); - if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { - return c_line; - } - __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); -#if CYTHON_COMPILING_IN_CPYTHON - cython_runtime_dict = _PyObject_GetDictPtr(__pyx_mstate_global->__pyx_cython_runtime); - if (likely(cython_runtime_dict)) { - __Pyx_BEGIN_CRITICAL_SECTION(*cython_runtime_dict); - __PYX_PY_DICT_LOOKUP_IF_MODIFIED( - use_cline, *cython_runtime_dict, - __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback)) - Py_XINCREF(use_cline); - __Pyx_END_CRITICAL_SECTION(); - } else -#endif - { - PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback); - if (use_cline_obj) { - use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; - Py_INCREF(use_cline); - Py_DECREF(use_cline_obj); - } else { - PyErr_Clear(); - use_cline = NULL; + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + #define __Pyx_PyProbablyModule_GetDict(o) __Pyx_XNewRef(PyModule_GetDict(o)) + #elif !CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + #define __Pyx_PyProbablyModule_GetDict(o) PyObject_GenericGetDict(o, NULL); + #else + PyObject* __Pyx_PyProbablyModule_GetDict(PyObject *o) { + PyObject **dict_ptr = _PyObject_GetDictPtr(o); + return dict_ptr ? __Pyx_XNewRef(*dict_ptr) : NULL; + } + #endif + static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) { + PyObject *use_cline = NULL; + PyObject *ptype, *pvalue, *ptraceback; + PyObject *cython_runtime_dict; + CYTHON_MAYBE_UNUSED_VAR(tstate); + if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) { + return c_line; } - } - if (!use_cline) { - c_line = 0; - (void) PyObject_SetAttr(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False); - } - else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { - c_line = 0; - } - Py_XDECREF(use_cline); - __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); - return c_line; -} -#endif - -/* CodeObjectCache */ + __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback); + cython_runtime_dict = __Pyx_PyProbablyModule_GetDict(__pyx_mstate_global->__pyx_cython_runtime); + if (likely(cython_runtime_dict)) { + __PYX_PY_DICT_LOOKUP_IF_MODIFIED( + use_cline, cython_runtime_dict, + __Pyx_PyDict_SetDefault(cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False)) + } + if (use_cline == NULL || use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) { + c_line = 0; + } + Py_XDECREF(use_cline); + Py_XDECREF(cython_runtime_dict); + __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback); + return c_line; + } + #endif + +/* CodeObjectCache (used by AddTraceback) */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { - int start = 0, mid = 0, end = count - 1; - if (end >= 0 && code_line > entries[end].code_line) { - return count; - } - while (start < end) { - mid = start + (end - start) / 2; - if (code_line < entries[mid].code_line) { - end = mid; - } else if (code_line > entries[mid].code_line) { - start = mid + 1; - } else { - return mid; - } - } - if (code_line <= entries[mid].code_line) { - return mid; - } else { - return mid + 1; - } -} -static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { - __Pyx_CachedCodeObjectType* code_object; - int pos; - if (unlikely(!code_line) || unlikely(!code_cache->entries)) { - return NULL; - } - pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); - if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { - return NULL; - } - code_object = code_cache->entries[pos].code_object; - Py_INCREF(code_object); - return code_object; -} -static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS - (void)__pyx__find_code_object; - return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. -#else - struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); - if (old_count < 0) { - __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); - return NULL; - } -#endif - __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); -#endif - return result; -#endif -} -static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) -{ - int pos, i; - __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; - if (unlikely(!code_line)) { - return; - } - if (unlikely(!entries)) { - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); - if (likely(entries)) { - code_cache->entries = entries; - code_cache->max_count = 64; - code_cache->count = 1; - entries[0].code_line = code_line; - entries[0].code_object = code_object; - Py_INCREF(code_object); - } - return; - } - pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); - if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { - __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; - entries[pos].code_object = code_object; - Py_INCREF(code_object); - Py_DECREF(tmp); - return; - } - if (code_cache->count == code_cache->max_count) { - int new_max = code_cache->max_count + 64; - entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( - code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); - if (unlikely(!entries)) { - return; - } - code_cache->entries = entries; - code_cache->max_count = new_max; - } - for (i=code_cache->count; i>pos; i--) { - entries[i] = entries[i-1]; - } - entries[pos].code_line = code_line; - entries[pos].code_object = code_object; - code_cache->count++; - Py_INCREF(code_object); -} -static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS - (void)__pyx__insert_code_object; - return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. -#else - struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_nonatomic_int_type expected = 0; - if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { - return; - } -#endif - __pyx__insert_code_object(code_cache, code_line, code_object); -#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING - __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); -#endif -#endif -} - + int start = 0, mid = 0, end = count - 1; + if (end >= 0 && code_line > entries[end].code_line) { + return count; + } + while (start < end) { + mid = start + (end - start) / 2; + if (code_line < entries[mid].code_line) { + end = mid; + } else if (code_line > entries[mid].code_line) { + start = mid + 1; + } else { + return mid; + } + } + if (code_line <= entries[mid].code_line) { + return mid; + } else { + return mid + 1; + } + } + static __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) { + __Pyx_CachedCodeObjectType* code_object; + int pos; + if (unlikely(!code_line) || unlikely(!code_cache->entries)) { + return NULL; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) { + return NULL; + } + code_object = code_cache->entries[pos].code_object; + Py_INCREF(code_object); + return code_object; + } + static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__find_code_object; + return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss. + #else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count); + if (old_count < 0) { + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); + return NULL; + } + #endif + __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line); + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_decr_acq_rel(&code_cache->accessor_count); + #endif + return result; + #endif + } + static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object) + { + int pos, i; + __Pyx_CodeObjectCacheEntry* entries = code_cache->entries; + if (unlikely(!code_line)) { + return; + } + if (unlikely(!entries)) { + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); + if (likely(entries)) { + code_cache->entries = entries; + code_cache->max_count = 64; + code_cache->count = 1; + entries[0].code_line = code_line; + entries[0].code_object = code_object; + Py_INCREF(code_object); + } + return; + } + pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line); + if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) { + __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object; + entries[pos].code_object = code_object; + Py_INCREF(code_object); + Py_DECREF(tmp); + return; + } + if (code_cache->count == code_cache->max_count) { + int new_max = code_cache->max_count + 64; + entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( + code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry)); + if (unlikely(!entries)) { + return; + } + code_cache->entries = entries; + code_cache->max_count = new_max; + } + for (i=code_cache->count; i>pos; i--) { + entries[i] = entries[i-1]; + } + entries[pos].code_line = code_line; + entries[pos].code_object = code_object; + code_cache->count++; + Py_INCREF(code_object); + } + static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) { + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS + (void)__pyx__insert_code_object; + return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail. + #else + struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache; + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_nonatomic_int_type expected = 0; + if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) { + return; + } + #endif + __pyx__insert_code_object(code_cache, code_line, code_object); + #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING + __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN); + #endif + #endif + } + /* AddTraceback */ #include "compile.h" -#include "frameobject.h" -#include "traceback.h" -#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) - #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE 1 + #include "frameobject.h" + #include "traceback.h" + #if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION) + #ifndef Py_BUILD_CORE + #define Py_BUILD_CORE 1 + #endif + #include "internal/pycore_frame.h" #endif - #include "internal/pycore_frame.h" -#endif -#if CYTHON_COMPILING_IN_LIMITED_API -static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, - PyObject *firstlineno, PyObject *name) { - PyObject *replace = NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; - if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; - replace = PyObject_GetAttrString(code, "replace"); - if (likely(replace)) { - PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); - Py_DECREF(replace); - return result; - } - PyErr_Clear(); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; - PyObject *replace = NULL, *getframe = NULL, *frame = NULL; - PyObject *exc_type, *exc_value, *exc_traceback; - int success = 0; - if (c_line) { - (void) __pyx_cfilenm; - (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); - } - PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); - code_object = __pyx_find_code_object(c_line ? -c_line : py_line); - if (!code_object) { - code_object = Py_CompileString("_getframe()", filename, Py_eval_input); - if (unlikely(!code_object)) goto bad; - py_py_line = PyLong_FromLong(py_line); - if (unlikely(!py_py_line)) goto bad; - py_funcname = PyUnicode_FromString(funcname); - if (unlikely(!py_funcname)) goto bad; - dict = PyDict_New(); - if (unlikely(!dict)) goto bad; - { - PyObject *old_code_object = code_object; - code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); - Py_DECREF(old_code_object); - } - if (unlikely(!code_object)) goto bad; - __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); - } else { - dict = PyDict_New(); - } - getframe = PySys_GetObject("_getframe"); - if (unlikely(!getframe)) goto bad; - if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; - frame = PyEval_EvalCode(code_object, dict, dict); - if (unlikely(!frame) || frame == Py_None) goto bad; - success = 1; + #if CYTHON_COMPILING_IN_LIMITED_API + static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict, + PyObject *firstlineno, PyObject *name) { + PyObject *replace = NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL; + if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL; + replace = PyObject_GetAttrString(code, "replace"); + if (likely(replace)) { + PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict); + Py_DECREF(replace); + return result; + } + PyErr_Clear(); + return NULL; + } + static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL; + PyObject *replace = NULL, *getframe = NULL, *frame = NULL; + PyObject *exc_type, *exc_value, *exc_traceback; + int success = 0; + if (c_line) { + c_line = __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line); + } + PyErr_Fetch(&exc_type, &exc_value, &exc_traceback); + code_object = __pyx_find_code_object(c_line ? -c_line : py_line); + if (!code_object) { + code_object = Py_CompileString("_getframe()", filename, Py_eval_input); + if (unlikely(!code_object)) goto bad; + py_py_line = PyLong_FromLong(py_line); + if (unlikely(!py_py_line)) goto bad; + if (c_line) { + py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); + } else { + py_funcname = PyUnicode_FromString(funcname); + } + if (unlikely(!py_funcname)) goto bad; + dict = PyDict_New(); + if (unlikely(!dict)) goto bad; + { + PyObject *old_code_object = code_object; + code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname); + Py_DECREF(old_code_object); + } + if (unlikely(!code_object)) goto bad; + __pyx_insert_code_object(c_line ? -c_line : py_line, code_object); + } else { + dict = PyDict_New(); + } + getframe = PySys_GetObject("_getframe"); + if (unlikely(!getframe)) goto bad; + if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad; + frame = PyEval_EvalCode(code_object, dict, dict); + if (unlikely(!frame) || frame == Py_None) goto bad; + success = 1; + bad: + PyErr_Restore(exc_type, exc_value, exc_traceback); + Py_XDECREF(code_object); + Py_XDECREF(py_py_line); + Py_XDECREF(py_funcname); + Py_XDECREF(dict); + Py_XDECREF(replace); + if (success) { + PyTraceBack_Here( + (struct _frame*)frame); + } + Py_XDECREF(frame); + } + #else + static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( + const char *funcname, int c_line, + int py_line, const char *filename) { + PyCodeObject *py_code = NULL; + PyObject *py_funcname = NULL; + if (c_line) { + 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; + } + py_code = PyCode_NewEmpty(filename, funcname, py_line); + Py_XDECREF(py_funcname); + return py_code; bad: - PyErr_Restore(exc_type, exc_value, exc_traceback); - Py_XDECREF(code_object); - Py_XDECREF(py_py_line); - Py_XDECREF(py_funcname); - Py_XDECREF(dict); - Py_XDECREF(replace); - if (success) { - PyTraceBack_Here( - (struct _frame*)frame); - } - Py_XDECREF(frame); -} -#else -static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( - const char *funcname, int c_line, - int py_line, const char *filename) { - PyCodeObject *py_code = NULL; - PyObject *py_funcname = NULL; - if (c_line) { - 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; - } - py_code = PyCode_NewEmpty(filename, funcname, py_line); - Py_XDECREF(py_funcname); - return py_code; -bad: - Py_XDECREF(py_funcname); - return NULL; -} -static void __Pyx_AddTraceback(const char *funcname, int c_line, - int py_line, const char *filename) { - 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) { - /* 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( - tstate, /*PyThreadState *tstate,*/ - py_code, /*PyCodeObject *code,*/ - __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ - 0 /*PyObject *locals*/ - ); - if (!py_frame) goto bad; - __Pyx_PyFrame_SetLineNumber(py_frame, py_line); - PyTraceBack_Here(py_frame); -bad: - Py_XDECREF(py_code); - Py_XDECREF(py_frame); -} -#endif - + Py_XDECREF(py_funcname); + return NULL; + } + static void __Pyx_AddTraceback(const char *funcname, int c_line, + int py_line, const char *filename) { + 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) { + /* 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( + tstate, /*PyThreadState *tstate,*/ + py_code, /*PyCodeObject *code,*/ + __pyx_mstate_global->__pyx_d, /*PyObject *globals,*/ + 0 /*PyObject *locals*/ + ); + if (!py_frame) goto bad; + __Pyx_PyFrame_SetLineNumber(py_frame, py_line); + PyTraceBack_Here(py_frame); + bad: + Py_XDECREF(py_code); + Py_XDECREF(py_frame); + } + #endif + +/* MemviewRefcount */ + #include + #ifndef _Py_NO_RETURN + #define _Py_NO_RETURN + #endif + _Py_NO_RETURN + static void __pyx_fatalerror(const char *fmt, ...) { + va_list vargs; + char msg[200]; + #if PY_VERSION_HEX >= 0x030A0000 || defined(HAVE_STDARG_PROTOTYPES) + va_start(vargs, fmt); + #else + va_start(vargs); + #endif + vsnprintf(msg, 200, fmt, vargs); + va_end(vargs); + Py_FatalError(msg); + } + static CYTHON_INLINE int + __pyx_add_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, + PyThread_type_lock lock) + { + int result; + PyThread_acquire_lock(lock, 1); + result = (*acquisition_count)++; + PyThread_release_lock(lock); + return result; + } + static CYTHON_INLINE int + __pyx_sub_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, + PyThread_type_lock lock) + { + int result; + PyThread_acquire_lock(lock, 1); + result = (*acquisition_count)--; + PyThread_release_lock(lock); + return result; + } + static CYTHON_INLINE void + __Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) + { + __pyx_nonatomic_int_type old_acquisition_count; + struct __pyx_memoryview_obj *memview = memslice->memview; + if (unlikely(!memview || (PyObject *) memview == Py_None)) { + return; + } + old_acquisition_count = __pyx_add_acquisition_count(memview); + if (unlikely(old_acquisition_count <= 0)) { + if (likely(old_acquisition_count == 0)) { + if (have_gil) { + Py_INCREF((PyObject *) memview); + } else { + PyGILState_STATE _gilstate = PyGILState_Ensure(); + Py_INCREF((PyObject *) memview); + PyGILState_Release(_gilstate); + } + } else { + __pyx_fatalerror("Acquisition count is %d (line %d)", + old_acquisition_count+1, lineno); + } + } + } + static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *memslice, + int have_gil, int lineno) { + __pyx_nonatomic_int_type old_acquisition_count; + struct __pyx_memoryview_obj *memview = memslice->memview; + if (unlikely(!memview || (PyObject *) memview == Py_None)) { + memslice->memview = NULL; + return; + } + old_acquisition_count = __pyx_sub_acquisition_count(memview); + memslice->data = NULL; + if (likely(old_acquisition_count > 1)) { + memslice->memview = NULL; + } else if (likely(old_acquisition_count == 1)) { + if (have_gil) { + Py_CLEAR(memslice->memview); + } else { + PyGILState_STATE _gilstate = PyGILState_Ensure(); + Py_CLEAR(memslice->memview); + PyGILState_Release(_gilstate); + } + } else { + __pyx_fatalerror("Acquisition count is %d (line %d)", + old_acquisition_count-1, lineno); + } + } + /* MemviewSliceIsContig */ static int -__pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) -{ - int i, index, step, start; - Py_ssize_t itemsize = mvs.memview->view.itemsize; - if (order == 'F') { - step = 1; - start = 0; - } else { - step = -1; - start = ndim - 1; - } - for (i = 0; i < ndim; i++) { - index = start + step * i; - if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) - return 0; - itemsize *= mvs.shape[index]; - } - return 1; -} - + __pyx_memviewslice_is_contig(const __Pyx_memviewslice mvs, char order, int ndim) + { + int i, index, step, start; + Py_ssize_t itemsize = mvs.memview->view.itemsize; + if (order == 'F') { + step = 1; + start = 0; + } else { + step = -1; + start = ndim - 1; + } + for (i = 0; i < ndim; i++) { + index = start + step * i; + if (mvs.suboffsets[index] >= 0 || mvs.strides[index] != itemsize) + return 0; + itemsize *= mvs.shape[index]; + } + return 1; + } + /* OverlappingSlices */ static void -__pyx_get_array_memory_extents(__Pyx_memviewslice *slice, - void **out_start, void **out_end, - int ndim, size_t itemsize) -{ - char *start, *end; - int i; - start = end = slice->data; - for (i = 0; i < ndim; i++) { - Py_ssize_t stride = slice->strides[i]; - Py_ssize_t extent = slice->shape[i]; - if (extent == 0) { - *out_start = *out_end = start; - return; - } else { - if (stride > 0) - end += stride * (extent - 1); - else - start += stride * (extent - 1); - } - } - *out_start = start; - *out_end = end + itemsize; -} -static int -__pyx_slices_overlap(__Pyx_memviewslice *slice1, - __Pyx_memviewslice *slice2, - int ndim, size_t itemsize) -{ - void *start1, *end1, *start2, *end2; - __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); - __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); - return (start1 < end2) && (start2 < end1); -} - -/* TypeInfoCompare */ + __pyx_get_array_memory_extents(__Pyx_memviewslice *slice, + void **out_start, void **out_end, + int ndim, size_t itemsize) + { + char *start, *end; + int i; + start = end = slice->data; + for (i = 0; i < ndim; i++) { + Py_ssize_t stride = slice->strides[i]; + Py_ssize_t extent = slice->shape[i]; + if (extent == 0) { + *out_start = *out_end = start; + return; + } else { + if (stride > 0) + end += stride * (extent - 1); + else + start += stride * (extent - 1); + } + } + *out_start = start; + *out_end = end + itemsize; + } + static int + __pyx_slices_overlap(__Pyx_memviewslice *slice1, + __Pyx_memviewslice *slice2, + int ndim, size_t itemsize) + { + void *start1, *end1, *start2, *end2; + __pyx_get_array_memory_extents(slice1, &start1, &end1, ndim, itemsize); + __pyx_get_array_memory_extents(slice2, &start2, &end2, ndim, itemsize); + return (start1 < end2) && (start2 < end1); + } + +/* MemviewSliceInit */ + static int + __Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, + int ndim, + __Pyx_memviewslice *memviewslice, + int memview_is_new_reference) + { + __Pyx_RefNannyDeclarations + int i, retval=-1; + Py_buffer *buf = &memview->view; + __Pyx_RefNannySetupContext("init_memviewslice", 0); + if (unlikely(memviewslice->memview || memviewslice->data)) { + PyErr_SetString(PyExc_ValueError, + "memviewslice is already initialized!"); + goto fail; + } + if (buf->strides) { + for (i = 0; i < ndim; i++) { + memviewslice->strides[i] = buf->strides[i]; + } + } else { + Py_ssize_t stride = buf->itemsize; + for (i = ndim - 1; i >= 0; i--) { + memviewslice->strides[i] = stride; + stride *= buf->shape[i]; + } + } + for (i = 0; i < ndim; i++) { + memviewslice->shape[i] = buf->shape[i]; + if (buf->suboffsets) { + memviewslice->suboffsets[i] = buf->suboffsets[i]; + } else { + memviewslice->suboffsets[i] = -1; + } + } + memviewslice->memview = memview; + memviewslice->data = (char *)buf->buf; + if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { + Py_INCREF((PyObject*)memview); + } + retval = 0; + goto no_fail; + fail: + memviewslice->memview = 0; + memviewslice->data = 0; + retval = -1; + no_fail: + __Pyx_RefNannyFinishContext(); + return retval; + } + +/* TypeInfoCompare (used by MemviewSliceValidateAndInit) */ static int -__pyx_typeinfo_cmp(const __Pyx_TypeInfo *a, const __Pyx_TypeInfo *b) -{ - int i; - if (!a || !b) - return 0; - if (a == b) - return 1; - if (a->size != b->size || a->typegroup != b->typegroup || - a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { - if (a->typegroup == 'H' || b->typegroup == 'H') { - return a->size == b->size; - } else { - return 0; - } - } - if (a->ndim) { - for (i = 0; i < a->ndim; i++) - if (a->arraysize[i] != b->arraysize[i]) - return 0; - } - if (a->typegroup == 'S') { - if (a->flags != b->flags) - return 0; - if (a->fields || b->fields) { - if (!(a->fields && b->fields)) - return 0; - for (i = 0; a->fields[i].type && b->fields[i].type; i++) { - const __Pyx_StructField *field_a = a->fields + i; - const __Pyx_StructField *field_b = b->fields + i; - if (field_a->offset != field_b->offset || - !__pyx_typeinfo_cmp(field_a->type, field_b->type)) - return 0; - } - return !a->fields[i].type && !b->fields[i].type; - } - } - return 1; -} - -/* MemviewSliceValidateAndInit */ + __pyx_typeinfo_cmp(const __Pyx_TypeInfo *a, const __Pyx_TypeInfo *b) + { + int i; + if (!a || !b) + return 0; + if (a == b) + return 1; + if (a->size != b->size || a->typegroup != b->typegroup || + a->is_unsigned != b->is_unsigned || a->ndim != b->ndim) { + if (a->typegroup == 'H' || b->typegroup == 'H') { + return a->size == b->size; + } else { + return 0; + } + } + if (a->ndim) { + for (i = 0; i < a->ndim; i++) + if (a->arraysize[i] != b->arraysize[i]) + return 0; + } + if (a->typegroup == 'S') { + if (a->flags != b->flags) + return 0; + if (a->fields || b->fields) { + if (!(a->fields && b->fields)) + return 0; + for (i = 0; a->fields[i].type && b->fields[i].type; i++) { + const __Pyx_StructField *field_a = a->fields + i; + const __Pyx_StructField *field_b = b->fields + i; + if (field_a->offset != field_b->offset || + !__pyx_typeinfo_cmp(field_a->type, field_b->type)) + return 0; + } + return !a->fields[i].type && !b->fields[i].type; + } + } + return 1; + } + +/* MemviewSliceValidateAndInit (used by ObjectToMemviewSlice) */ static int -__pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) -{ - if (buf->shape[dim] <= 1) - return 1; - if (buf->strides) { - if (spec & __Pyx_MEMVIEW_CONTIG) { - if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { - if (unlikely(buf->strides[dim] != sizeof(void *))) { - PyErr_Format(PyExc_ValueError, - "Buffer is not indirectly contiguous " - "in dimension %d.", dim); - goto fail; - } - } else if (unlikely(buf->strides[dim] != buf->itemsize)) { - PyErr_SetString(PyExc_ValueError, - "Buffer and memoryview are not contiguous " - "in the same dimension."); - goto fail; - } - } - if (spec & __Pyx_MEMVIEW_FOLLOW) { - Py_ssize_t stride = buf->strides[dim]; - if (stride < 0) - stride = -stride; - if (unlikely(stride < buf->itemsize)) { - PyErr_SetString(PyExc_ValueError, - "Buffer and memoryview are not contiguous " - "in the same dimension."); - goto fail; - } - } - } else { - if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { - PyErr_Format(PyExc_ValueError, - "C-contiguous buffer is not contiguous in " - "dimension %d", dim); - goto fail; - } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { - PyErr_Format(PyExc_ValueError, - "C-contiguous buffer is not indirect in " - "dimension %d", dim); - goto fail; - } else if (unlikely(buf->suboffsets)) { - PyErr_SetString(PyExc_ValueError, - "Buffer exposes suboffsets but no strides"); - goto fail; - } - } - return 1; -fail: - return 0; -} -static int -__pyx_check_suboffsets(Py_buffer *buf, int dim, int ndim, int spec) -{ - CYTHON_UNUSED_VAR(ndim); - if (spec & __Pyx_MEMVIEW_DIRECT) { - if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { - PyErr_Format(PyExc_ValueError, - "Buffer not compatible with direct access " - "in dimension %d.", dim); - goto fail; - } - } - if (spec & __Pyx_MEMVIEW_PTR) { - if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { - PyErr_Format(PyExc_ValueError, - "Buffer is not indirectly accessible " - "in dimension %d.", dim); - goto fail; - } - } - return 1; -fail: - return 0; -} -static int -__pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) -{ - int i; - if (c_or_f_flag & __Pyx_IS_F_CONTIG) { - Py_ssize_t stride = 1; - for (i = 0; i < ndim; i++) { - if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { - PyErr_SetString(PyExc_ValueError, - "Buffer not fortran contiguous."); - goto fail; - } - stride = stride * buf->shape[i]; - } - } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { - Py_ssize_t stride = 1; - for (i = ndim - 1; i >- 1; i--) { - if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { - PyErr_SetString(PyExc_ValueError, - "Buffer not C contiguous."); - goto fail; - } - stride = stride * buf->shape[i]; - } - } - return 1; -fail: - return 0; -} -static int __Pyx_ValidateAndInit_memviewslice( - int *axes_specs, - int c_or_f_flag, - int buf_flags, - int ndim, - const __Pyx_TypeInfo *dtype, - __Pyx_BufFmt_StackElem stack[], - __Pyx_memviewslice *memviewslice, - PyObject *original_obj) -{ - struct __pyx_memoryview_obj *memview, *new_memview; - __Pyx_RefNannyDeclarations - Py_buffer *buf; - int i, spec = 0, retval = -1; - __Pyx_BufFmt_Context ctx; - int from_memoryview = __pyx_memoryview_check(original_obj); - __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); - if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) - original_obj)->typeinfo)) { - memview = (struct __pyx_memoryview_obj *) original_obj; - new_memview = NULL; - } else { - memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( - original_obj, buf_flags, 0, dtype); - new_memview = memview; - if (unlikely(!memview)) - goto fail; - } - buf = &memview->view; - if (unlikely(buf->ndim != ndim)) { - PyErr_Format(PyExc_ValueError, - "Buffer has wrong number of dimensions (expected %d, got %d)", - ndim, buf->ndim); - goto fail; - } - if (new_memview) { - __Pyx_BufFmt_Init(&ctx, stack, dtype); - if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; - } - if (unlikely((unsigned) buf->itemsize != dtype->size)) { - PyErr_Format(PyExc_ValueError, - "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " - "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", - buf->itemsize, - (buf->itemsize > 1) ? "s" : "", - dtype->name, - dtype->size, - (dtype->size > 1) ? "s" : ""); - goto fail; - } - if (buf->len > 0) { - for (i = 0; i < ndim; i++) { - spec = axes_specs[i]; - if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) - goto fail; - if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) - goto fail; - } - if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) - goto fail; - } - if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, - new_memview != NULL) == -1)) { - goto fail; - } - retval = 0; - goto no_fail; -fail: - Py_XDECREF((PyObject*)new_memview); - retval = -1; -no_fail: - __Pyx_RefNannyFinishContext(); - return retval; -} - + __pyx_check_strides(Py_buffer *buf, int dim, int ndim, int spec) + { + if (buf->shape[dim] <= 1) + return 1; + if (buf->strides) { + if (spec & __Pyx_MEMVIEW_CONTIG) { + if (spec & (__Pyx_MEMVIEW_PTR|__Pyx_MEMVIEW_FULL)) { + if (unlikely(buf->strides[dim] != sizeof(void *))) { + PyErr_Format(PyExc_ValueError, + "Buffer is not indirectly contiguous " + "in dimension %d.", dim); + goto fail; + } + } else if (unlikely(buf->strides[dim] != buf->itemsize)) { + PyErr_SetString(PyExc_ValueError, + "Buffer and memoryview are not contiguous " + "in the same dimension."); + goto fail; + } + } + if (spec & __Pyx_MEMVIEW_FOLLOW) { + Py_ssize_t stride = buf->strides[dim]; + if (stride < 0) + stride = -stride; + if (unlikely(stride < buf->itemsize)) { + PyErr_SetString(PyExc_ValueError, + "Buffer and memoryview are not contiguous " + "in the same dimension."); + goto fail; + } + } + } else { + if (unlikely(spec & __Pyx_MEMVIEW_CONTIG && dim != ndim - 1)) { + PyErr_Format(PyExc_ValueError, + "C-contiguous buffer is not contiguous in " + "dimension %d", dim); + goto fail; + } else if (unlikely(spec & (__Pyx_MEMVIEW_PTR))) { + PyErr_Format(PyExc_ValueError, + "C-contiguous buffer is not indirect in " + "dimension %d", dim); + goto fail; + } else if (unlikely(buf->suboffsets)) { + PyErr_SetString(PyExc_ValueError, + "Buffer exposes suboffsets but no strides"); + goto fail; + } + } + return 1; + fail: + return 0; + } + static int + __pyx_check_suboffsets(Py_buffer *buf, int dim, int ndim, int spec) + { + CYTHON_UNUSED_VAR(ndim); + if (spec & __Pyx_MEMVIEW_DIRECT) { + if (unlikely(buf->suboffsets && buf->suboffsets[dim] >= 0)) { + PyErr_Format(PyExc_ValueError, + "Buffer not compatible with direct access " + "in dimension %d.", dim); + goto fail; + } + } + if (spec & __Pyx_MEMVIEW_PTR) { + if (unlikely(!buf->suboffsets || (buf->suboffsets[dim] < 0))) { + PyErr_Format(PyExc_ValueError, + "Buffer is not indirectly accessible " + "in dimension %d.", dim); + goto fail; + } + } + return 1; + fail: + return 0; + } + static int + __pyx_verify_contig(Py_buffer *buf, int ndim, int c_or_f_flag) + { + int i; + if (c_or_f_flag & __Pyx_IS_F_CONTIG) { + Py_ssize_t stride = 1; + for (i = 0; i < ndim; i++) { + if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { + PyErr_SetString(PyExc_ValueError, + "Buffer not fortran contiguous."); + goto fail; + } + stride = stride * buf->shape[i]; + } + } else if (c_or_f_flag & __Pyx_IS_C_CONTIG) { + Py_ssize_t stride = 1; + for (i = ndim - 1; i >- 1; i--) { + if (unlikely(stride * buf->itemsize != buf->strides[i] && buf->shape[i] > 1)) { + PyErr_SetString(PyExc_ValueError, + "Buffer not C contiguous."); + goto fail; + } + stride = stride * buf->shape[i]; + } + } + return 1; + fail: + return 0; + } + static int __Pyx_ValidateAndInit_memviewslice( + int *axes_specs, + int c_or_f_flag, + int buf_flags, + int ndim, + const __Pyx_TypeInfo *dtype, + __Pyx_BufFmt_StackElem stack[], + __Pyx_memviewslice *memviewslice, + PyObject *original_obj) + { + struct __pyx_memoryview_obj *memview, *new_memview; + __Pyx_RefNannyDeclarations + Py_buffer *buf; + int i, spec = 0, retval = -1; + __Pyx_BufFmt_Context ctx; + int from_memoryview = __pyx_memoryview_check(original_obj); + __Pyx_RefNannySetupContext("ValidateAndInit_memviewslice", 0); + if (from_memoryview && __pyx_typeinfo_cmp(dtype, ((struct __pyx_memoryview_obj *) + original_obj)->typeinfo)) { + memview = (struct __pyx_memoryview_obj *) original_obj; + new_memview = NULL; + } else { + memview = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( + original_obj, buf_flags, 0, dtype); + new_memview = memview; + if (unlikely(!memview)) + goto fail; + } + buf = &memview->view; + if (unlikely(buf->ndim != ndim)) { + PyErr_Format(PyExc_ValueError, + "Buffer has wrong number of dimensions (expected %d, got %d)", + ndim, buf->ndim); + goto fail; + } + if (new_memview) { + __Pyx_BufFmt_Init(&ctx, stack, dtype); + if (unlikely(!__Pyx_BufFmt_CheckString(&ctx, buf->format))) goto fail; + } + if (unlikely((unsigned) buf->itemsize != dtype->size)) { + PyErr_Format(PyExc_ValueError, + "Item size of buffer (%" CYTHON_FORMAT_SSIZE_T "u byte%s) " + "does not match size of '%s' (%" CYTHON_FORMAT_SSIZE_T "u byte%s)", + buf->itemsize, + (buf->itemsize > 1) ? "s" : "", + dtype->name, + dtype->size, + (dtype->size > 1) ? "s" : ""); + goto fail; + } + if (buf->len > 0) { + for (i = 0; i < ndim; i++) { + spec = axes_specs[i]; + if (unlikely(!__pyx_check_strides(buf, i, ndim, spec))) + goto fail; + if (unlikely(!__pyx_check_suboffsets(buf, i, ndim, spec))) + goto fail; + } + if (unlikely(buf->strides && !__pyx_verify_contig(buf, ndim, c_or_f_flag))) + goto fail; + } + if (unlikely(__Pyx_init_memviewslice(memview, ndim, memviewslice, + new_memview != NULL) == -1)) { + goto fail; + } + retval = 0; + goto no_fail; + fail: + Py_XDECREF((PyObject*)new_memview); + retval = -1; + no_fail: + __Pyx_RefNannyFinishContext(); + return retval; + } + /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; -__pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; -} - + __Pyx_memviewslice result = __Pyx_MEMSLICE_INIT; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, + &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; + __pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; + } + /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_d_dc_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__ITYPE_t(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, - &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__ITYPE_t, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; -__pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; -} - + __Pyx_memviewslice result = __Pyx_MEMSLICE_INIT; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_FOLLOW), (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 2, + &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__ITYPE_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; + __pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; + } + /* ObjectToMemviewSlice */ static CYTHON_INLINE __Pyx_memviewslice __Pyx_PyObject_to_MemoryviewSlice_dc_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t(PyObject *obj, int writable_flag) { - __Pyx_memviewslice result = { 0, 0, { 0 }, { 0 }, { 0 } }; - __Pyx_BufFmt_StackElem stack[1]; - int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; - int retcode; - if (obj == Py_None) { - result.memview = (struct __pyx_memoryview_obj *) Py_None; - return result; - } - retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, - (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 1, - &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, - &result, obj); - if (unlikely(retcode == -1)) - goto __pyx_fail; - return result; -__pyx_fail: - result.memview = NULL; - result.data = NULL; - return result; -} - + __Pyx_memviewslice result = __Pyx_MEMSLICE_INIT; + __Pyx_BufFmt_StackElem stack[1]; + int axes_specs[] = { (__Pyx_MEMVIEW_DIRECT | __Pyx_MEMVIEW_CONTIG) }; + int retcode; + if (obj == Py_None) { + result.memview = (struct __pyx_memoryview_obj *) Py_None; + return result; + } + retcode = __Pyx_ValidateAndInit_memviewslice(axes_specs, __Pyx_IS_C_CONTIG, + (PyBUF_C_CONTIGUOUS | PyBUF_FORMAT) | writable_flag, 1, + &__Pyx_TypeInfo_nn___pyx_t_9oceanmesh_8geometry_17point_in_polygon__DTYPE_t, stack, + &result, obj); + if (unlikely(retcode == -1)) + goto __pyx_fail; + return result; + __pyx_fail: + result.memview = NULL; + result.data = NULL; + return result; + } + /* Declarations */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return ::std::complex< float >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - return x + y*(__pyx_t_float_complex)_Complex_I; - } - #endif -#else - static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { - __pyx_t_float_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - -/* Arithmetic */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) -#else - static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsf(b.real) >= fabsf(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - float r = b.imag / b.real; - float s = (float)(1.0) / (b.real + b.imag * r); - return __pyx_t_float_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - float r = b.real / b.imag; - float s = (float)(1.0) / (b.imag + b.real * r); - return __pyx_t_float_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return ::std::complex< float >(x, y); + } #else - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - if (b.imag == 0) { - return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - float denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_float_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { + return x + y*(__pyx_t_float_complex)_Complex_I; + } #endif - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { - __pyx_t_float_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + #else + static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { __pyx_t_float_complex z; - z.real = a.real; - z.imag = -a.imag; + z.real = x; + z.imag = y; return z; - } - #if 1 - static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtf(z.real*z.real + z.imag*z.imag); - #else - return hypotf(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { - __pyx_t_float_complex z; - float r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - float denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_float(a, a); - case 3: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, a); - case 4: - z = __Pyx_c_prod_float(a, a); - return __Pyx_c_prod_float(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = powf(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2f(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_float(a); - theta = atan2f(a.imag, a.real); - } - lnr = logf(r); - z_r = expf(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosf(z_theta); - z.imag = z_r * sinf(z_theta); - return z; - } - #endif -#endif - -/* Declarations */ - #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return ::std::complex< double >(x, y); - } - #else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - return x + y*(__pyx_t_double_complex)_Complex_I; - } + } #endif -#else - static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { - __pyx_t_double_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - + /* Arithmetic */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) -#else - static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabs(b.real) >= fabs(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - double r = b.imag / b.real; - double s = (double)(1.0) / (b.real + b.imag * r); - return __pyx_t_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - double r = b.real / b.imag; - double s = (double)(1.0) / (b.imag + b.real * r); - return __pyx_t_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } - #else - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - if (b.imag == 0) { - return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } - #endif - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { - __pyx_t_double_complex z; - z.real = a.real; - z.imag = -a.imag; - return z; - } - #if 1 - static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrt(z.real*z.real + z.imag*z.imag); - #else - return hypot(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { - __pyx_t_double_complex z; - double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_double(a, a); - case 3: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, a); - case 4: - z = __Pyx_c_prod_double(a, a); - return __Pyx_c_prod_double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = pow(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_double(a); - theta = atan2(a.imag, a.real); - } - lnr = log(r); - z_r = exp(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cos(z_theta); - z.imag = z_r * sin(z_theta); - return z; - } - #endif -#endif - + #else + static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sum_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_diff_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prod_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsf(b.real) >= fabsf(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + float r = b.imag / b.real; + float s = (float)(1.0) / (b.real + b.imag * r); + return __pyx_t_float_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + float r = b.real / b.imag; + float s = (float)(1.0) / (b.imag + b.real * r); + return __pyx_t_float_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quot_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + if (b.imag == 0) { + return __pyx_t_float_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + float denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_float_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_neg_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_float(__pyx_t_float_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conj_float(__pyx_t_float_complex a) { + __pyx_t_float_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE float __Pyx_c_abs_float(__pyx_t_float_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtf(z.real*z.real + z.imag*z.imag); + #else + return hypotf(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_pow_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { + __pyx_t_float_complex z; + float r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + float denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_float(a, a); + case 3: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, a); + case 4: + z = __Pyx_c_prod_float(a, a); + return __Pyx_c_prod_float(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if ((b.imag == 0) && (a.real >= 0)) { + z.real = powf(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2f(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_float(a); + theta = atan2f(a.imag, a.real); + } + lnr = logf(r); + z_r = expf(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosf(z_theta); + z.imag = z_r * sinf(z_theta); + return z; + } + #endif + #endif + /* Declarations */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) - #ifdef __cplusplus - static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { - return ::std::complex< long double >(x, y); - } + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return ::std::complex< double >(x, y); + } + #else + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + return x + y*(__pyx_t_double_complex)_Complex_I; + } + #endif #else - static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { - return x + y*(__pyx_t_long_double_complex)_Complex_I; - } + static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { + __pyx_t_double_complex z; + z.real = x; + z.imag = y; + return z; + } #endif -#else - static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { - __pyx_t_long_double_complex z; - z.real = x; - z.imag = y; - return z; - } -#endif - + /* Arithmetic */ #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) -#else - static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - return (a.real == b.real) && (a.imag == b.imag); - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - z.real = a.real + b.real; - z.imag = a.imag + b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - z.real = a.real - b.real; - z.imag = a.imag - b.imag; - return z; - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - z.real = a.real * b.real - a.imag * b.imag; - z.imag = a.real * b.imag + a.imag * b.real; - return z; - } - #if 1 - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - if (b.imag == 0) { - return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else if (fabsl(b.real) >= fabsl(b.imag)) { - if (b.real == 0 && b.imag == 0) { - return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag); - } else { - long double r = b.imag / b.real; - long double s = (long double)(1.0) / (b.real + b.imag * r); - return __pyx_t_long_double_complex_from_parts( - (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); - } - } else { - long double r = b.real / b.imag; - long double s = (long double)(1.0) / (b.imag + b.real * r); - return __pyx_t_long_double_complex_from_parts( - (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); - } - } + #else + static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabs(b.real) >= fabs(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + double r = b.imag / b.real; + double s = (double)(1.0) / (b.real + b.imag * r); + return __pyx_t_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + double r = b.real / b.imag; + double s = (double)(1.0) / (b.imag + b.real * r); + return __pyx_t_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + if (b.imag == 0) { + return __pyx_t_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_double(__pyx_t_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj_double(__pyx_t_double_complex a) { + __pyx_t_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE double __Pyx_c_abs_double(__pyx_t_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrt(z.real*z.real + z.imag*z.imag); + #else + return hypot(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { + __pyx_t_double_complex z; + double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_double(a, a); + case 3: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, a); + case 4: + z = __Pyx_c_prod_double(a, a); + return __Pyx_c_prod_double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if ((b.imag == 0) && (a.real >= 0)) { + z.real = pow(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_double(a); + theta = atan2(a.imag, a.real); + } + lnr = log(r); + z_r = exp(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cos(z_theta); + z.imag = z_r * sin(z_theta); + return z; + } + #endif + #endif + +/* Declarations */ + #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) + #ifdef __cplusplus + static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { + return ::std::complex< long double >(x, y); + } #else - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - if (b.imag == 0) { - return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); - } else { - long double denom = b.real * b.real + b.imag * b.imag; - return __pyx_t_long_double_complex_from_parts( - (a.real * b.real + a.imag * b.imag) / denom, - (a.imag * b.real - a.real * b.imag) / denom); - } - } + static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { + return x + y*(__pyx_t_long_double_complex)_Complex_I; + } #endif - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) { - __pyx_t_long_double_complex z; - z.real = -a.real; - z.imag = -a.imag; - return z; - } - static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) { - return (a.real == 0) && (a.imag == 0); - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) { + #else + static CYTHON_INLINE __pyx_t_long_double_complex __pyx_t_long_double_complex_from_parts(long double x, long double y) { __pyx_t_long_double_complex z; - z.real = a.real; - z.imag = -a.imag; + z.real = x; + z.imag = y; return z; - } - #if 1 - static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) { - #if !defined(HAVE_HYPOT) || defined(_MSC_VER) - return sqrtl(z.real*z.real + z.imag*z.imag); - #else - return hypotl(z.real, z.imag); - #endif - } - static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { - __pyx_t_long_double_complex z; - long double r, lnr, theta, z_r, z_theta; - if (b.imag == 0 && b.real == (int)b.real) { - if (b.real < 0) { - long double denom = a.real * a.real + a.imag * a.imag; - a.real = a.real / denom; - a.imag = -a.imag / denom; - b.real = -b.real; - } - switch ((int)b.real) { - case 0: - z.real = 1; - z.imag = 0; - return z; - case 1: - return a; - case 2: - return __Pyx_c_prod_long__double(a, a); - case 3: - z = __Pyx_c_prod_long__double(a, a); - return __Pyx_c_prod_long__double(z, a); - case 4: - z = __Pyx_c_prod_long__double(a, a); - return __Pyx_c_prod_long__double(z, z); - } - } - if (a.imag == 0) { - if (a.real == 0) { - return a; - } else if ((b.imag == 0) && (a.real >= 0)) { - z.real = powl(a.real, b.real); - z.imag = 0; - return z; - } else if (a.real > 0) { - r = a.real; - theta = 0; - } else { - r = -a.real; - theta = atan2l(0.0, -1.0); - } - } else { - r = __Pyx_c_abs_long__double(a); - theta = atan2l(a.imag, a.real); - } - lnr = logl(r); - z_r = expl(lnr * b.real - theta * b.imag); - z_theta = theta * b.real + lnr * b.imag; - z.real = z_r * cosl(z_theta); - z.imag = z_r * sinl(z_theta); - return z; - } - #endif -#endif - -/* MemviewSliceCopyTemplate */ + } + #endif + +/* Arithmetic */ + #if CYTHON_CCOMPLEX && (1) && (!0 || __cplusplus) + #else + static CYTHON_INLINE int __Pyx_c_eq_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + return (a.real == b.real) && (a.imag == b.imag); + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_sum_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + z.real = a.real + b.real; + z.imag = a.imag + b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_diff_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + z.real = a.real - b.real; + z.imag = a.imag - b.imag; + return z; + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_prod_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + z.real = a.real * b.real - a.imag * b.imag; + z.imag = a.real * b.imag + a.imag * b.real; + return z; + } + #if 1 + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + if (b.imag == 0) { + return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else if (fabsl(b.real) >= fabsl(b.imag)) { + if (b.real == 0 && b.imag == 0) { + return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.imag); + } else { + long double r = b.imag / b.real; + long double s = (long double)(1.0) / (b.real + b.imag * r); + return __pyx_t_long_double_complex_from_parts( + (a.real + a.imag * r) * s, (a.imag - a.real * r) * s); + } + } else { + long double r = b.real / b.imag; + long double s = (long double)(1.0) / (b.imag + b.real * r); + return __pyx_t_long_double_complex_from_parts( + (a.real * r + a.imag) * s, (a.imag * r - a.real) * s); + } + } + #else + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_quot_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + if (b.imag == 0) { + return __pyx_t_long_double_complex_from_parts(a.real / b.real, a.imag / b.real); + } else { + long double denom = b.real * b.real + b.imag * b.imag; + return __pyx_t_long_double_complex_from_parts( + (a.real * b.real + a.imag * b.imag) / denom, + (a.imag * b.real - a.real * b.imag) / denom); + } + } + #endif + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_neg_long__double(__pyx_t_long_double_complex a) { + __pyx_t_long_double_complex z; + z.real = -a.real; + z.imag = -a.imag; + return z; + } + static CYTHON_INLINE int __Pyx_c_is_zero_long__double(__pyx_t_long_double_complex a) { + return (a.real == 0) && (a.imag == 0); + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_conj_long__double(__pyx_t_long_double_complex a) { + __pyx_t_long_double_complex z; + z.real = a.real; + z.imag = -a.imag; + return z; + } + #if 1 + static CYTHON_INLINE long double __Pyx_c_abs_long__double(__pyx_t_long_double_complex z) { + #if !defined(HAVE_HYPOT) || defined(_MSC_VER) + return sqrtl(z.real*z.real + z.imag*z.imag); + #else + return hypotl(z.real, z.imag); + #endif + } + static CYTHON_INLINE __pyx_t_long_double_complex __Pyx_c_pow_long__double(__pyx_t_long_double_complex a, __pyx_t_long_double_complex b) { + __pyx_t_long_double_complex z; + long double r, lnr, theta, z_r, z_theta; + if (b.imag == 0 && b.real == (int)b.real) { + if (b.real < 0) { + long double denom = a.real * a.real + a.imag * a.imag; + a.real = a.real / denom; + a.imag = -a.imag / denom; + b.real = -b.real; + } + switch ((int)b.real) { + case 0: + z.real = 1; + z.imag = 0; + return z; + case 1: + return a; + case 2: + return __Pyx_c_prod_long__double(a, a); + case 3: + z = __Pyx_c_prod_long__double(a, a); + return __Pyx_c_prod_long__double(z, a); + case 4: + z = __Pyx_c_prod_long__double(a, a); + return __Pyx_c_prod_long__double(z, z); + } + } + if (a.imag == 0) { + if (a.real == 0) { + return a; + } else if ((b.imag == 0) && (a.real >= 0)) { + z.real = powl(a.real, b.real); + z.imag = 0; + return z; + } else if (a.real > 0) { + r = a.real; + theta = 0; + } else { + r = -a.real; + theta = atan2l(0.0, -1.0); + } + } else { + r = __Pyx_c_abs_long__double(a); + theta = atan2l(a.imag, a.real); + } + lnr = logl(r); + z_r = expl(lnr * b.real - theta * b.imag); + z_theta = theta * b.real + lnr * b.imag; + z.real = z_r * cosl(z_theta); + z.imag = z_r * sinl(z_theta); + return z; + } + #endif + #endif + +/* MemviewSliceCopy */ static __Pyx_memviewslice -__pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, - const char *mode, int ndim, - size_t sizeof_dtype, int contig_flag, - int dtype_is_object) -{ - __Pyx_RefNannyDeclarations - int i; - __Pyx_memviewslice new_mvs = { 0, 0, { 0 }, { 0 }, { 0 } }; - struct __pyx_memoryview_obj *from_memview = from_mvs->memview; - Py_buffer *buf = &from_memview->view; - PyObject *shape_tuple = NULL; - PyObject *temp_int = NULL; - struct __pyx_array_obj *array_obj = NULL; - struct __pyx_memoryview_obj *memview_obj = NULL; - __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); - for (i = 0; i < ndim; i++) { - if (unlikely(from_mvs->suboffsets[i] >= 0)) { - PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " - "indirect dimensions (axis %d)", i); - goto fail; - } - } - shape_tuple = PyTuple_New(ndim); - if (unlikely(!shape_tuple)) { - goto fail; - } - __Pyx_GOTREF(shape_tuple); - for(i = 0; i < ndim; i++) { - temp_int = PyLong_FromSsize_t(from_mvs->shape[i]); - if(unlikely(!temp_int)) { - goto fail; - } else { -#if CYTHON_ASSUME_SAFE_MACROS - PyTuple_SET_ITEM(shape_tuple, i, temp_int); -#else - if (PyTuple_SetItem(shape_tuple, i, temp_int) < 0) { - goto fail; - } -#endif - temp_int = NULL; - } - } - array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, mode, NULL); - if (unlikely(!array_obj)) { - goto fail; - } - __Pyx_GOTREF(array_obj); - memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( - (PyObject *) array_obj, contig_flag, - dtype_is_object, - from_mvs->memview->typeinfo); - if (unlikely(!memview_obj)) - goto fail; - if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) - goto fail; - if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, - dtype_is_object) < 0)) - goto fail; - goto no_fail; -fail: - __Pyx_XDECREF((PyObject *) new_mvs.memview); - new_mvs.memview = NULL; - new_mvs.data = NULL; -no_fail: - __Pyx_XDECREF(shape_tuple); - __Pyx_XDECREF(temp_int); - __Pyx_XDECREF((PyObject *) array_obj); - __Pyx_RefNannyFinishContext(); - return new_mvs; -} - -/* MemviewSliceInit */ - static int -__Pyx_init_memviewslice(struct __pyx_memoryview_obj *memview, - int ndim, - __Pyx_memviewslice *memviewslice, - int memview_is_new_reference) -{ - __Pyx_RefNannyDeclarations - int i, retval=-1; - Py_buffer *buf = &memview->view; - __Pyx_RefNannySetupContext("init_memviewslice", 0); - if (unlikely(memviewslice->memview || memviewslice->data)) { - PyErr_SetString(PyExc_ValueError, - "memviewslice is already initialized!"); - goto fail; - } - if (buf->strides) { - for (i = 0; i < ndim; i++) { - memviewslice->strides[i] = buf->strides[i]; - } - } else { - Py_ssize_t stride = buf->itemsize; - for (i = ndim - 1; i >= 0; i--) { - memviewslice->strides[i] = stride; - stride *= buf->shape[i]; - } - } - for (i = 0; i < ndim; i++) { - memviewslice->shape[i] = buf->shape[i]; - if (buf->suboffsets) { - memviewslice->suboffsets[i] = buf->suboffsets[i]; - } else { - memviewslice->suboffsets[i] = -1; - } - } - memviewslice->memview = memview; - memviewslice->data = (char *)buf->buf; - if (__pyx_add_acquisition_count(memview) == 0 && !memview_is_new_reference) { - Py_INCREF((PyObject*)memview); - } - retval = 0; - goto no_fail; -fail: - memviewslice->memview = 0; - memviewslice->data = 0; - retval = -1; -no_fail: - __Pyx_RefNannyFinishContext(); - return retval; -} -#ifndef Py_NO_RETURN -#define Py_NO_RETURN -#endif -static void __pyx_fatalerror(const char *fmt, ...) Py_NO_RETURN { - va_list vargs; - char msg[200]; -#if PY_VERSION_HEX >= 0x030A0000 || defined(HAVE_STDARG_PROTOTYPES) - va_start(vargs, fmt); -#else - va_start(vargs); -#endif - vsnprintf(msg, 200, fmt, vargs); - va_end(vargs); - Py_FatalError(msg); -} -static CYTHON_INLINE int -__pyx_add_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, - PyThread_type_lock lock) -{ - int result; - PyThread_acquire_lock(lock, 1); - result = (*acquisition_count)++; - PyThread_release_lock(lock); - return result; -} -static CYTHON_INLINE int -__pyx_sub_acquisition_count_locked(__pyx_atomic_int_type *acquisition_count, - PyThread_type_lock lock) -{ - int result; - PyThread_acquire_lock(lock, 1); - result = (*acquisition_count)--; - PyThread_release_lock(lock); - return result; -} -static CYTHON_INLINE void -__Pyx_INC_MEMVIEW(__Pyx_memviewslice *memslice, int have_gil, int lineno) -{ - __pyx_nonatomic_int_type old_acquisition_count; - struct __pyx_memoryview_obj *memview = memslice->memview; - if (unlikely(!memview || (PyObject *) memview == Py_None)) { - return; - } - old_acquisition_count = __pyx_add_acquisition_count(memview); - if (unlikely(old_acquisition_count <= 0)) { - if (likely(old_acquisition_count == 0)) { - if (have_gil) { - Py_INCREF((PyObject *) memview); - } else { - PyGILState_STATE _gilstate = PyGILState_Ensure(); - Py_INCREF((PyObject *) memview); - PyGILState_Release(_gilstate); - } - } else { - __pyx_fatalerror("Acquisition count is %d (line %d)", - old_acquisition_count+1, lineno); - } - } -} -static CYTHON_INLINE void __Pyx_XCLEAR_MEMVIEW(__Pyx_memviewslice *memslice, - int have_gil, int lineno) { - __pyx_nonatomic_int_type old_acquisition_count; - struct __pyx_memoryview_obj *memview = memslice->memview; - if (unlikely(!memview || (PyObject *) memview == Py_None)) { - memslice->memview = NULL; - return; - } - old_acquisition_count = __pyx_sub_acquisition_count(memview); - memslice->data = NULL; - if (likely(old_acquisition_count > 1)) { - memslice->memview = NULL; - } else if (likely(old_acquisition_count == 1)) { - if (have_gil) { - Py_CLEAR(memslice->memview); - } else { - PyGILState_STATE _gilstate = PyGILState_Ensure(); - Py_CLEAR(memslice->memview); - PyGILState_Release(_gilstate); - } - } else { - __pyx_fatalerror("Acquisition count is %d (line %d)", - old_acquisition_count-1, lineno); - } -} - -/* CIntFromPyVerify */ + __pyx_memoryview_copy_new_contig(const __Pyx_memviewslice *from_mvs, + const char *mode, int ndim, + size_t sizeof_dtype, int contig_flag, + int dtype_is_object) + { + __Pyx_RefNannyDeclarations + int i; + __Pyx_memviewslice new_mvs = __Pyx_MEMSLICE_INIT; + struct __pyx_memoryview_obj *from_memview = from_mvs->memview; + Py_buffer *buf = &from_memview->view; + PyObject *shape_tuple = NULL; + PyObject *temp_int = NULL; + struct __pyx_array_obj *array_obj = NULL; + struct __pyx_memoryview_obj *memview_obj = NULL; + __Pyx_RefNannySetupContext("__pyx_memoryview_copy_new_contig", 0); + for (i = 0; i < ndim; i++) { + if (unlikely(from_mvs->suboffsets[i] >= 0)) { + PyErr_Format(PyExc_ValueError, "Cannot copy memoryview slice with " + "indirect dimensions (axis %d)", i); + goto fail; + } + } + shape_tuple = PyTuple_New(ndim); + if (unlikely(!shape_tuple)) { + goto fail; + } + __Pyx_GOTREF(shape_tuple); + for(i = 0; i < ndim; i++) { + temp_int = PyLong_FromSsize_t(from_mvs->shape[i]); + if(unlikely(!temp_int)) { + goto fail; + } else { + #if CYTHON_ASSUME_SAFE_MACROS + PyTuple_SET_ITEM(shape_tuple, i, temp_int); + #else + if (PyTuple_SetItem(shape_tuple, i, temp_int) < 0) { + goto fail; + } + #endif + temp_int = NULL; + } + } + array_obj = __pyx_array_new(shape_tuple, sizeof_dtype, buf->format, mode, NULL); + if (unlikely(!array_obj)) { + goto fail; + } + __Pyx_GOTREF(array_obj); + memview_obj = (struct __pyx_memoryview_obj *) __pyx_memoryview_new( + (PyObject *) array_obj, contig_flag, + dtype_is_object, + from_mvs->memview->typeinfo); + if (unlikely(!memview_obj)) + goto fail; + if (unlikely(__Pyx_init_memviewslice(memview_obj, ndim, &new_mvs, 1) < 0)) + goto fail; + if (unlikely(__pyx_memoryview_copy_contents(*from_mvs, new_mvs, ndim, ndim, + dtype_is_object) < 0)) + goto fail; + goto no_fail; + fail: + __Pyx_XDECREF((PyObject *) new_mvs.memview); + new_mvs.memview = NULL; + new_mvs.data = NULL; + no_fail: + __Pyx_XDECREF(shape_tuple); + __Pyx_XDECREF(temp_int); + __Pyx_XDECREF((PyObject *) array_obj); + __Pyx_RefNannyFinishContext(); + return new_mvs; + } + +/* PyObjectCall2Args (used by PyObjectCallMethod1) */ + static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) { + PyObject *args[3] = {NULL, arg1, arg2}; + return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET); + } + +/* PyObjectCallMethod1 (used by UpdateUnpickledDict) */ + #if !(CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000))) + static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) { + PyObject *result = __Pyx_PyObject_CallOneArg(method, arg); + Py_DECREF(method); + return result; + } + #endif + static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { + #if CYTHON_VECTORCALL && (__PYX_LIMITED_VERSION_HEX >= 0x030C0000 || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x03090000)) + PyObject *args[2] = {obj, arg}; + (void) __Pyx_PyObject_CallOneArg; + (void) __Pyx_PyObject_Call2Args; + return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL); + #else + PyObject *method = NULL, *result; + int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method); + if (likely(is_method)) { + result = __Pyx_PyObject_Call2Args(method, obj, arg); + Py_DECREF(method); + return result; + } + if (unlikely(!method)) return NULL; + return __Pyx__PyObject_CallMethod1(method, arg); + #endif + } + +/* UpdateUnpickledDict */ + static int __Pyx__UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { + PyObject *state_dict = __Pyx_PySequence_ITEM(state, index); + if (unlikely(!state_dict)) { + return -1; + } + int non_empty = PyObject_IsTrue(state_dict); + if (non_empty == 0) { + Py_DECREF(state_dict); + return 0; + } else if (unlikely(non_empty == -1)) { + return -1; + } + PyObject *dict; + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000 + dict = PyObject_GetAttrString(obj, "__dict__"); + #else + dict = PyObject_GenericGetDict(obj, NULL); + #endif + if (unlikely(!dict)) { + Py_DECREF(state_dict); + return -1; + } + int result; + if (likely(PyDict_CheckExact(dict))) { + result = PyDict_Update(dict, state_dict); + } else { + PyObject *obj_result = __Pyx_PyObject_CallMethod1(dict, __pyx_mstate_global->__pyx_n_u_update, state_dict); + if (likely(obj_result)) { + Py_DECREF(obj_result); + result = 0; + } else { + result = -1; + } + } + Py_DECREF(state_dict); + Py_DECREF(dict); + return result; + } + static int __Pyx_UpdateUnpickledDict(PyObject *obj, PyObject *state, Py_ssize_t index) { + Py_ssize_t state_size = __Pyx_PyTuple_GET_SIZE(state); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(state_size == -1)) return -1; + #endif + if (state_size <= index) { + return 0; + } + return __Pyx__UpdateUnpickledDict(obj, state, index); + } + +/* CheckUnpickleChecksum */ + static void __Pyx_RaiseUnpickleChecksumError(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { + PyObject *pickle_module = PyImport_ImportModule("pickle"); + if (unlikely(!pickle_module)) return; + PyObject *pickle_error = PyObject_GetAttrString(pickle_module, "PickleError"); + Py_DECREF(pickle_module); + if (unlikely(!pickle_error)) return; + if (checksum2 == checksum1) { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x) = (%s))", + checksum, checksum1, members); + } else if (checksum3 == checksum2) { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x) = (%s))", + checksum, checksum1, checksum2, members); + } else { + PyErr_Format(pickle_error, "Incompatible checksums (0x%x vs (0x%x, 0x%x, 0x%x) = (%s))", + checksum, checksum1, checksum2, checksum3, members); + } + Py_DECREF(pickle_error); + } + static int __Pyx_CheckUnpickleChecksum(long checksum, long checksum1, long checksum2, long checksum3, const char *members) { + int found = 0; + found |= checksum1 == checksum; + found |= checksum2 == checksum; + found |= checksum3 == checksum; + if (likely(found)) + return 0; + __Pyx_RaiseUnpickleChecksumError(checksum, checksum1, checksum2, checksum3, members); + return -1; + } + +/* CIntFromPyVerify (used by CIntFromPy) */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) -#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ - __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) -#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ - {\ - func_type value = func_value;\ - if (sizeof(target_type) < sizeof(func_type)) {\ - if (unlikely(value != (func_type) (target_type) value)) {\ - func_type zero = 0;\ - if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ - return (target_type) -1;\ - if (is_unsigned && unlikely(value < zero))\ - goto raise_neg_overflow;\ - else\ - goto raise_overflow;\ - }\ - }\ - return (target_type) value;\ - } - + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) + #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ + __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) + #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ + {\ + func_type value = func_value;\ + if (sizeof(target_type) < sizeof(func_type)) {\ + if (unlikely(value != (func_type) (target_type) value)) {\ + func_type zero = 0;\ + if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ + return (target_type) -1;\ + if (is_unsigned && unlikely(value < zero))\ + goto raise_neg_overflow;\ + else\ + goto raise_overflow;\ + }\ + }\ + return (target_type) value;\ + } + /* 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; -} - + #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)) + } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } 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)) + } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + 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; + } + /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) { -#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 (unlikely(!PyLong_Check(x))) { - long val; - PyObject *tmp = __Pyx_PyNumber_Long(x); - if (!tmp) return (long) -1; - val = __Pyx_PyLong_As_long(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(long, __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(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { - return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { - return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, 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(long) >= 4 * PyLong_SHIFT)) { - return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)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 (long) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(long) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(long, __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(long) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { - return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(long) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - long 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 (long) -1; - assert(PyLong_CheckExact(v)); - } - { - int result = PyObject_RichCompareBool(v, Py_False, Py_LT); - if (unlikely(result < 0)) { - Py_DECREF(v); - return (long) -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 (long) -1; - } else { - stepval = v; - } - v = NULL; - val = (long) 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(long) * 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 |= ((long) 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(long) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((long) idigit) << bits; - } - if (!is_unsigned) { - if (unlikely(val & (((long) 1) << (sizeof(long) * 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 (long) -1; - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to long"); - return (long) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to long"); - return (long) -1; -} - + #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 (unlikely(!PyLong_Check(x))) { + long val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (long) -1; + val = __Pyx_PyLong_As_long(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(long, __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(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) { + return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) { + return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, 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(long) >= 4 * PyLong_SHIFT)) { + return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)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 (long) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } + #endif + if ((sizeof(long) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(long, __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(long) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(long, 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(long) - 1 > 4 * PyLong_SHIFT)) { + return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); + } + } + break; + } + } + #endif + if ((sizeof(long) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) + } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + long 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 (long) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (long) -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 (long) -1; + } else { + stepval = v; + } + v = NULL; + val = (long) 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(long) * 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 |= ((long) 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(long) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((long) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((long) 1) << (sizeof(long) * 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 (long) -1; + return val; + } + raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to long"); + return (long) -1; + raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to long"); + return (long) -1; + } + /* 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 - } -} - + #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 !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); + } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + 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 + } + } + /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) { -#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)) { - return PyLong_FromLong((long) value); - } else if (sizeof(long) <= sizeof(unsigned long)) { - return PyLong_FromUnsignedLong((unsigned long) value); -#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY - } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { - return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); -#endif - } - } else { - if (sizeof(long) <= sizeof(long)) { - return PyLong_FromLong((long) value); -#ifdef HAVE_LONG_LONG - } else if (sizeof(long) <= 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(long), - 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(long)); - 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 - } -} - + #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)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(unsigned long)) { + return PyLong_FromUnsignedLong((unsigned long) value); + #if !CYTHON_COMPILING_IN_PYPY + } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { + return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); + #endif + } + } else { + if (sizeof(long) <= sizeof(long)) { + return PyLong_FromLong((long) value); + } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { + return PyLong_FromLongLong((PY_LONG_LONG) value); + } + } + { + 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(long), + 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(long)); + 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 char __Pyx_PyLong_As_char(PyObject *x) { -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wconversion" -#endif - const char neg_one = (char) -1, const_zero = (char) 0; -#ifdef __Pyx_HAS_GCC_DIAGNOSTIC -#pragma GCC diagnostic pop -#endif - const int is_unsigned = neg_one > const_zero; - if (unlikely(!PyLong_Check(x))) { - char val; - PyObject *tmp = __Pyx_PyNumber_Long(x); - if (!tmp) return (char) -1; - val = __Pyx_PyLong_As_char(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(char, __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(char) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) { - return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 3: - if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) { - return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); - } - } - break; - case 4: - if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, 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(char) >= 4 * PyLong_SHIFT)) { - return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)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 (char) -1; - if (unlikely(result == 1)) - goto raise_neg_overflow; - } -#endif - if ((sizeof(char) <= sizeof(unsigned long))) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) -#endif - } - } else { -#if CYTHON_USE_PYLONG_INTERNALS - if (__Pyx_PyLong_IsCompact(x)) { - __PYX_VERIFY_RETURN_INT(char, __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(char) - 1 > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 2: - if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -3: - if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 3: - if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) - } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case -4: - if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { - return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - case 4: - if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { - if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { - __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { - return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); - } - } - break; - } - } -#endif - if ((sizeof(char) <= sizeof(long))) { - __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) -#ifdef HAVE_LONG_LONG - } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) { - __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) -#endif - } - } - { - char 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 (char) -1; - assert(PyLong_CheckExact(v)); - } - { - int result = PyObject_RichCompareBool(v, Py_False, Py_LT); - if (unlikely(result < 0)) { - Py_DECREF(v); - return (char) -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 (char) -1; - } else { - stepval = v; - } - v = NULL; - val = (char) 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(char) * 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 |= ((char) 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(char) * 8) - bits - (is_unsigned ? 0 : 1); - if (unlikely(idigit >= (1L << remaining_bits))) - goto raise_overflow; - val |= ((char) idigit) << bits; - } - if (!is_unsigned) { - if (unlikely(val & (((char) 1) << (sizeof(char) * 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 (char) -1; - return val; - } -raise_overflow: - PyErr_SetString(PyExc_OverflowError, - "value too large to convert to char"); - return (char) -1; -raise_neg_overflow: - PyErr_SetString(PyExc_OverflowError, - "can't convert negative value to char"); - return (char) -1; -} - -/* FormatTypeName */ - #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 -static __Pyx_TypeName -__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) -{ - PyObject *module = NULL, *name = NULL, *result = NULL; - #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 - name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, - __pyx_mstate_global->__pyx_n_u_qualname); - #else - name = PyType_GetQualName(tp); - #endif - if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; - module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, - __pyx_mstate_global->__pyx_n_u_module); - if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; - if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { - result = name; - name = NULL; - goto done; - } - result = PyUnicode_FromFormat("%U.%U", module, name); - if (unlikely(result == NULL)) goto bad; - done: - Py_XDECREF(name); - Py_XDECREF(module); - return result; - bad: - PyErr_Clear(); - if (name) { - result = name; - name = NULL; - } else { - result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__6); - } - goto done; -} -#endif - + #ifdef __Pyx_HAS_GCC_DIAGNOSTIC + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wconversion" + #endif + const char neg_one = (char) -1, const_zero = (char) 0; + #ifdef __Pyx_HAS_GCC_DIAGNOSTIC + #pragma GCC diagnostic pop + #endif + const int is_unsigned = neg_one > const_zero; + if (unlikely(!PyLong_Check(x))) { + char val; + PyObject *tmp = __Pyx_PyNumber_Long(x); + if (!tmp) return (char) -1; + val = __Pyx_PyLong_As_char(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(char, __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(char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 2 * PyLong_SHIFT)) { + return (char) (((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 3: + if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) >= 3 * PyLong_SHIFT)) { + return (char) (((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0])); + } + } + break; + case 4: + if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, 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(char) >= 4 * PyLong_SHIFT)) { + return (char) (((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)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 (char) -1; + if (unlikely(result == 1)) + goto raise_neg_overflow; + } + #endif + if ((sizeof(char) <= sizeof(unsigned long))) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned long, PyLong_AsUnsignedLong(x)) + } else if ((sizeof(char) <= sizeof(unsigned PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(char, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) + } + } else { + #if CYTHON_USE_PYLONG_INTERNALS + if (__Pyx_PyLong_IsCompact(x)) { + __PYX_VERIFY_RETURN_INT(char, __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(char) - 1 > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 2: + if ((8 * sizeof(char) > 1 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + return (char) ((((((char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -3: + if ((8 * sizeof(char) - 1 > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 3: + if ((8 * sizeof(char) > 2 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) + } else if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + return (char) ((((((((char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case -4: + if ((8 * sizeof(char) - 1 > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { + return (char) (((char)-1)*(((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + case 4: + if ((8 * sizeof(char) > 3 * PyLong_SHIFT)) { + if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) { + __PYX_VERIFY_RETURN_INT(char, 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(char) - 1 > 4 * PyLong_SHIFT)) { + return (char) ((((((((((char)digits[3]) << PyLong_SHIFT) | (char)digits[2]) << PyLong_SHIFT) | (char)digits[1]) << PyLong_SHIFT) | (char)digits[0]))); + } + } + break; + } + } + #endif + if ((sizeof(char) <= sizeof(long))) { + __PYX_VERIFY_RETURN_INT_EXC(char, long, PyLong_AsLong(x)) + } else if ((sizeof(char) <= sizeof(PY_LONG_LONG))) { + __PYX_VERIFY_RETURN_INT_EXC(char, PY_LONG_LONG, PyLong_AsLongLong(x)) + } + } + { + char 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 (char) -1; + assert(PyLong_CheckExact(v)); + } + { + int result = PyObject_RichCompareBool(v, Py_False, Py_LT); + if (unlikely(result < 0)) { + Py_DECREF(v); + return (char) -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 (char) -1; + } else { + stepval = v; + } + v = NULL; + val = (char) 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(char) * 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 |= ((char) 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(char) * 8) - bits - (is_unsigned ? 0 : 1); + if (unlikely(idigit >= (1L << remaining_bits))) + goto raise_overflow; + val |= ((char) idigit) << bits; + } + if (!is_unsigned) { + if (unlikely(val & (((char) 1) << (sizeof(char) * 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 (char) -1; + return val; + } + raise_overflow: + PyErr_SetString(PyExc_OverflowError, + "value too large to convert to char"); + return (char) -1; + raise_neg_overflow: + PyErr_SetString(PyExc_OverflowError, + "can't convert negative value to char"); + return (char) -1; + } + +/* FormatTypeName */ + #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000 + static __Pyx_TypeName + __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp) + { + PyObject *module = NULL, *name = NULL, *result = NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + name = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_qualname); + #else + name = PyType_GetQualName(tp); + #endif + if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad; + module = __Pyx_PyObject_GetAttrStr((PyObject *)tp, + __pyx_mstate_global->__pyx_n_u_module); + if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad; + if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) { + result = name; + name = NULL; + goto done; + } + result = PyUnicode_FromFormat("%U.%U", module, name); + if (unlikely(result == NULL)) goto bad; + done: + Py_XDECREF(name); + Py_XDECREF(module); + return result; + bad: + PyErr_Clear(); + if (name) { + result = name; + name = NULL; + } else { + result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__6); + } + goto done; + } + #endif + /* GetRuntimeVersion */ + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + void __Pyx_init_runtime_version(void) { + if (__Pyx_cached_runtime_version == 0) { + const char* rt_version = Py_GetVersion(); + unsigned long version = 0; + unsigned long factor = 0x01000000UL; + unsigned int digit = 0; + int i = 0; + while (factor) { + while ('0' <= rt_version[i] && rt_version[i] <= '9') { + digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); + ++i; + } + version += factor * digit; + if (rt_version[i] != '.') + break; + digit = 0; + factor >>= 8; + ++i; + } + __Pyx_cached_runtime_version = version; + } + } + #endif static unsigned long __Pyx_get_runtime_version(void) { -#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 - return Py_Version & ~0xFFUL; -#else - static unsigned long __Pyx_cached_runtime_version = 0; - if (__Pyx_cached_runtime_version == 0) { - const char* rt_version = Py_GetVersion(); - unsigned long version = 0; - unsigned long factor = 0x01000000UL; - unsigned int digit = 0; - int i = 0; - while (factor) { - while ('0' <= rt_version[i] && rt_version[i] <= '9') { - digit = digit * 10 + (unsigned int) (rt_version[i] - '0'); - ++i; - } - version += factor * digit; - if (rt_version[i] != '.') - break; - digit = 0; - factor >>= 8; - ++i; - } - __Pyx_cached_runtime_version = version; - } - return __Pyx_cached_runtime_version; -#endif -} - + #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + return Py_Version & ~0xFFUL; + #else + return __Pyx_cached_runtime_version; + #endif + } + /* CheckBinaryVersion */ static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) { - const unsigned long MAJOR_MINOR = 0xFFFF0000UL; - if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) - return 0; - if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) - return 1; - { - char message[200]; - PyOS_snprintf(message, sizeof(message), - "compile time Python version %d.%d " - "of module '%.100s' " - "%s " - "runtime version %d.%d", - (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), - __Pyx_MODULE_NAME, - (allow_newer) ? "was newer than" : "does not match", - (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) - ); - return PyErr_WarnEx(NULL, message, 1); - } -} - + const unsigned long MAJOR_MINOR = 0xFFFF0000UL; + if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR)) + return 0; + if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR))) + return 1; + { + char message[200]; + PyOS_snprintf(message, sizeof(message), + "compile time Python version %d.%d " + "of module '%.100s' " + "%s " + "runtime version %d.%d", + (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF), + __Pyx_MODULE_NAME, + (allow_newer) ? "was newer than" : "does not match", + (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF) + ); + return PyErr_WarnEx(NULL, message, 1); + } + } + /* NewCodeObj */ #if CYTHON_COMPILING_IN_LIMITED_API - static PyObject* __Pyx__PyCode_New(int a, int p, 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 *exception_table = NULL; - PyObject *types_module=NULL, *code_type=NULL, *result=NULL; - #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 - PyObject *version_info; - PyObject *py_minor_version = NULL; - #endif - long minor_version = 0; - PyObject *type, *value, *traceback; - PyErr_Fetch(&type, &value, &traceback); - #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 - minor_version = 11; - #else - if (!(version_info = PySys_GetObject("version_info"))) goto end; - if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; - minor_version = PyLong_AsLong(py_minor_version); - Py_DECREF(py_minor_version); - if (minor_version == -1 && PyErr_Occurred()) goto end; - #endif - if (!(types_module = PyImport_ImportModule("types"))) goto end; - if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; - if (minor_version <= 7) { - (void)p; - result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else if (minor_version <= 10) { - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, - c, n, v, fn, name, fline, lnos, fv, cell); - } else { - if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; - result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, - c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); - } - end: - Py_XDECREF(code_type); - Py_XDECREF(exception_table); - Py_XDECREF(types_module); - if (type) { - PyErr_Restore(type, value, traceback); - } - return result; - } -#elif PY_VERSION_HEX >= 0x030B0000 - static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f, + static PyObject* __Pyx__PyCode_New(int a, int p, 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) { - PyCodeObject *result; - result = - #if PY_VERSION_HEX >= 0x030C0000 - PyUnstable_Code_NewWithPosOnlyArgs + PyObject *exception_table = NULL; + PyObject *types_module=NULL, *code_type=NULL, *result=NULL; + #if __PYX_LIMITED_VERSION_HEX < 0x030b0000 + PyObject *version_info; + PyObject *py_minor_version = NULL; + #endif + long minor_version = 0; + PyObject *type, *value, *traceback; + PyErr_Fetch(&type, &value, &traceback); + #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000 + minor_version = 11; + #else + if (!(version_info = PySys_GetObject("version_info"))) goto end; + if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end; + minor_version = PyLong_AsLong(py_minor_version); + Py_DECREF(py_minor_version); + if (minor_version == -1 && PyErr_Occurred()) goto end; + #endif + if (!(types_module = PyImport_ImportModule("types"))) goto end; + if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end; + if (minor_version <= 7) { + (void)p; + result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else if (minor_version <= 10) { + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, fline, lnos, fv, cell); + } else { + if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end; + result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code, + c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell); + } + end: + Py_XDECREF(code_type); + Py_XDECREF(exception_table); + Py_XDECREF(types_module); + if (type) { + PyErr_Restore(type, value, traceback); + } + return result; + } + #elif PY_VERSION_HEX >= 0x030B0000 + static PyCodeObject* __Pyx__PyCode_New(int a, int p, 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) { + PyCodeObject *result; + result = + #if PY_VERSION_HEX >= 0x030C0000 + PyUnstable_Code_NewWithPosOnlyArgs + #else + PyCode_NewWithPosOnlyArgs + #endif + (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); + #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1 + if (likely(result)) + result->_co_firsttraceable = 0; + #endif + return result; + } + #elif !CYTHON_COMPILING_IN_PYPY + #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ + PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) + #else + #define __Pyx__PyCode_New(a, p, 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) + #endif + static PyObject* __Pyx_PyCode_New( + const __Pyx_PyCode_New_function_description descr, + PyObject * const *varnames, + PyObject *filename, + PyObject *funcname, + PyObject *line_table, + PyObject *tuple_dedup_map + ) { + PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL; + Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; + PyObject *varnames_tuple = PyTuple_New(var_count); + if (unlikely(!varnames_tuple)) return NULL; + for (Py_ssize_t i=0; i < var_count; i++) { + Py_INCREF(varnames[i]); + if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; + } + #if CYTHON_COMPILING_IN_LIMITED_API + varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); + if (!varnames_tuple_dedup) { + if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; + varnames_tuple_dedup = varnames_tuple; + } #else - PyCode_NewWithPosOnlyArgs + varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); + if (unlikely(!varnames_tuple_dedup)) goto done; #endif - (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes); - #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030c00A1 - if (likely(result)) - result->_co_firsttraceable = 0; - #endif - return result; + #if CYTHON_AVOID_BORROWED_REFS + Py_INCREF(varnames_tuple_dedup); + #endif + if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL && !CYTHON_COMPILING_IN_GRAAL) { + Py_ssize_t line_table_length = __Pyx_PyBytes_GET_SIZE(line_table); + #if !CYTHON_ASSUME_SAFE_SIZE + if (unlikely(line_table_length == -1)) goto done; + #endif + Py_ssize_t code_len = (line_table_length * 2 + 4) & ~3LL; + code_bytes = PyBytes_FromStringAndSize(NULL, code_len); + if (unlikely(!code_bytes)) goto done; + char* c_code_bytes = PyBytes_AsString(code_bytes); + if (unlikely(!c_code_bytes)) goto done; + memset(c_code_bytes, 0, (size_t) code_len); + } + code_obj = (PyObject*) __Pyx__PyCode_New( + (int) descr.argcount, + (int) descr.num_posonly_args, + (int) descr.num_kwonly_args, + (int) descr.nlocals, + 0, + (int) descr.flags, + code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + varnames_tuple_dedup, + __pyx_mstate_global->__pyx_empty_tuple, + __pyx_mstate_global->__pyx_empty_tuple, + filename, + funcname, + (int) descr.first_line, + (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table) ? line_table : __pyx_mstate_global->__pyx_empty_bytes + ); + done: + Py_XDECREF(code_bytes); + #if CYTHON_AVOID_BORROWED_REFS + Py_XDECREF(varnames_tuple_dedup); + #endif + Py_DECREF(varnames_tuple); + return code_obj; + } + +/* DecompressString */ + static PyObject *__Pyx_DecompressString(const char *s, Py_ssize_t length, int algo) { + PyObject *module, *decompress, *compressed_bytes, *decompressed; + const char* module_name = algo == 3 ? "compression.zstd" : algo == 2 ? "bz2" : "zlib"; + PyObject *methodname = PyUnicode_FromString("decompress"); + if (unlikely(!methodname)) return NULL; + #if __PYX_LIMITED_VERSION_HEX >= 0x030e0000 + if (algo == 3) { + PyObject *fromlist = Py_BuildValue("[O]", methodname); + if (unlikely(!fromlist)) return NULL; + module = PyImport_ImportModuleLevel("compression.zstd", NULL, NULL, fromlist, 0); + Py_DECREF(fromlist); + } else + #endif + module = PyImport_ImportModule(module_name); + if (unlikely(!module)) goto import_failed; + decompress = PyObject_GetAttr(module, methodname); + if (unlikely(!decompress)) goto import_failed; + { + #ifdef __cplusplus + char *memview_bytes = const_cast(s); + #else + #if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wcast-qual" + #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wcast-qual" + #endif + char *memview_bytes = (char*) s; + #if defined(__clang__) + #pragma clang diagnostic pop + #elif !defined(__INTEL_COMPILER) && defined(__GNUC__) + #pragma GCC diagnostic pop + #endif + #endif + #if CYTHON_COMPILING_IN_LIMITED_API && !defined(PyBUF_READ) + int memview_flags = 0x100; + #else + int memview_flags = PyBUF_READ; + #endif + compressed_bytes = PyMemoryView_FromMemory(memview_bytes, length, memview_flags); + } + if (unlikely(!compressed_bytes)) { + Py_DECREF(decompress); + goto bad; + } + decompressed = PyObject_CallFunctionObjArgs(decompress, compressed_bytes, NULL); + Py_DECREF(compressed_bytes); + Py_DECREF(decompress); + Py_DECREF(module); + Py_DECREF(methodname); + return decompressed; + import_failed: + PyErr_Format(PyExc_ImportError, + "Failed to import '%.20s.decompress' - cannot initialise module strings. " + "String compression was configured with the C macro 'CYTHON_COMPRESS_STRINGS=%d'.", + module_name, algo); + bad: + Py_XDECREF(module); + Py_DECREF(methodname); + return NULL; } -#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY - #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ - PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) -#else - #define __Pyx__PyCode_New(a, p, 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) -#endif -static PyObject* __Pyx_PyCode_New( - const __Pyx_PyCode_New_function_description descr, - PyObject * const *varnames, - PyObject *filename, - PyObject *funcname, - const char *line_table, - PyObject *tuple_dedup_map -) { - PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL, *line_table_bytes = NULL; - Py_ssize_t var_count = (Py_ssize_t) descr.nlocals; - PyObject *varnames_tuple = PyTuple_New(var_count); - if (unlikely(!varnames_tuple)) return NULL; - for (Py_ssize_t i=0; i < var_count; i++) { - Py_INCREF(varnames[i]); - if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done; - } - #if CYTHON_COMPILING_IN_LIMITED_API - varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple); - if (!varnames_tuple_dedup) { - if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done; - varnames_tuple_dedup = varnames_tuple; - } - #else - varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple); - if (unlikely(!varnames_tuple_dedup)) goto done; - #endif - #if CYTHON_AVOID_BORROWED_REFS - Py_INCREF(varnames_tuple_dedup); - #endif - if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL - && !CYTHON_COMPILING_IN_GRAAL) { - line_table_bytes = PyBytes_FromStringAndSize(line_table, descr.line_table_length); - if (unlikely(!line_table_bytes)) goto done; - Py_ssize_t code_len = (descr.line_table_length * 2 + 4) & ~3; - code_bytes = PyBytes_FromStringAndSize(NULL, code_len); - if (unlikely(!code_bytes)) goto done; - char* c_code_bytes = PyBytes_AsString(code_bytes); - if (unlikely(!c_code_bytes)) goto done; - memset(c_code_bytes, 0, (size_t) code_len); - } - code_obj = (PyObject*) __Pyx__PyCode_New( - (int) descr.argcount, - (int) descr.num_posonly_args, - (int) descr.num_kwonly_args, - (int) descr.nlocals, - 0, - (int) descr.flags, - code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes, - __pyx_mstate_global->__pyx_empty_tuple, - __pyx_mstate_global->__pyx_empty_tuple, - varnames_tuple_dedup, - __pyx_mstate_global->__pyx_empty_tuple, - __pyx_mstate_global->__pyx_empty_tuple, - filename, - funcname, - (int) descr.first_line, - (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table_bytes) ? line_table_bytes : __pyx_mstate_global->__pyx_empty_bytes - ); -done: - Py_XDECREF(code_bytes); - Py_XDECREF(line_table_bytes); - #if CYTHON_AVOID_BORROWED_REFS - Py_XDECREF(varnames_tuple_dedup); - #endif - Py_DECREF(varnames_tuple); - return code_obj; -} - -/* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names) { - while (t->s) { - PyObject *str; - if (t->is_unicode) { - if (t->intern) { - str = PyUnicode_InternFromString(t->s); - } else if (t->encoding) { - str = PyUnicode_Decode(t->s, t->n - 1, encoding_names[t->encoding], NULL); - } else { - str = PyUnicode_FromStringAndSize(t->s, t->n - 1); - } - } else { - str = PyBytes_FromStringAndSize(t->s, t->n - 1); - } - if (!str) - return -1; - *target = str; - if (PyObject_Hash(str) == -1) - return -1; - ++t; - ++target; - } - return 0; -} - + #include static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) { size_t len = strlen(s); @@ -31339,7 +31119,7 @@ static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) { return __Pyx_NewRef(Py_None); } static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) { - return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False); + return __Pyx_NewRef(b ? Py_True: Py_False); } static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { return PyLong_FromSize_t(ival); @@ -31348,319 +31128,319 @@ static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) { /* MultiPhaseInitModuleState */ #if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE -#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE -#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) - #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 -#else - #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 -#endif -#endif -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS -#error "Module state with PEP489 requires atomics. Currently that's one of\ - C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" -#endif -#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE -#define __Pyx_ModuleStateLookup_Lock() -#define __Pyx_ModuleStateLookup_Unlock() -#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 -static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; -#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) -#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) -#elif defined(__cplusplus) && __cplusplus >= 201103L -#include -static std::mutex __Pyx_ModuleStateLookup_mutex; -#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() -#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() -#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) -#include -static mtx_t __Pyx_ModuleStateLookup_mutex; -static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; -static void __Pyx_ModuleStateLookup_initialize_mutex(void) { - mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); -} -#define __Pyx_ModuleStateLookup_Lock()\ - call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ - mtx_lock(&__Pyx_ModuleStateLookup_mutex) -#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) -#elif defined(HAVE_PTHREAD_H) -#include -static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; -#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) -#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) -#elif defined(_WIN32) -#include // synchapi.h on its own doesn't work -static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; -#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) -#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) -#else -#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ - Requires C standard >= C11, or C++ standard >= C++11,\ - or pthreads, or the Windows 32 API, or Python >= 3.13." -#endif -typedef struct { - int64_t id; - PyObject *module; -} __Pyx_InterpreterIdAndModule; -typedef struct { - char interpreter_id_as_index; - Py_ssize_t count; - Py_ssize_t allocated; - __Pyx_InterpreterIdAndModule table[1]; -} __Pyx_ModuleStateLookupData; -#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE -static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; -#endif -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE -static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; -#else -static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; -#endif -static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( - __Pyx_InterpreterIdAndModule* table, - Py_ssize_t count, - int64_t interpreterId) { - __Pyx_InterpreterIdAndModule* begin = table; - __Pyx_InterpreterIdAndModule* end = begin + count; - if (begin->id == interpreterId) { - return begin; - } - while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { - __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; - if (halfway->id == interpreterId) { - return halfway; - } - if (halfway->id < interpreterId) { - begin = halfway; - } else { - end = halfway; - } - } - for (; begin < end; ++begin) { - if (begin->id >= interpreterId) return begin; - } - return begin; -} -static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { - int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); - if (interpreter_id == -1) return NULL; -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); - { - __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); - if (likely(data)) { - __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); - if (likely(data == new_data)) { - goto read_finished; - } - } - __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); - __Pyx_ModuleStateLookup_Lock(); - __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); - data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); - __Pyx_ModuleStateLookup_Unlock(); - } - read_finished:; -#else - __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; -#endif - __Pyx_InterpreterIdAndModule* found = NULL; - if (unlikely(!data)) goto end; - if (data->interpreter_id_as_index) { - if (interpreter_id < data->count) { - found = data->table+interpreter_id; - } - } else { - found = __Pyx_State_FindModuleStateLookupTableLowerBound( - data->table, data->count, interpreter_id); - } - end: - { - PyObject *result=NULL; - if (found && found->id == interpreter_id) { - result = found->module; - } -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); -#endif - return result; - } -} -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE -static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { - while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); -} -#else -#define __Pyx_ModuleStateLookup_wait_until_no_readers() -#endif -static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { - Py_ssize_t to_allocate = (*old_data)->allocated; - while (to_allocate <= interpreter_id) { - if (to_allocate == 0) to_allocate = 1; - else to_allocate *= 2; - } - __Pyx_ModuleStateLookupData *new_data = *old_data; - if (to_allocate != (*old_data)->allocated) { - new_data = (__Pyx_ModuleStateLookupData *)realloc( - *old_data, - sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); - if (!new_data) { - PyErr_NoMemory(); - return -1; - } - for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { - new_data->table[i].id = i; - new_data->table[i].module = NULL; - } - new_data->allocated = to_allocate; - } - new_data->table[interpreter_id].module = module; - if (new_data->count < interpreter_id+1) { - new_data->count = interpreter_id+1; - } - *old_data = new_data; - return 0; -} -static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { - __Pyx_InterpreterIdAndModule *read = data->table; - __Pyx_InterpreterIdAndModule *write = data->table; - __Pyx_InterpreterIdAndModule *end = read + data->count; - for (; readmodule) { - write->id = read->id; - write->module = read->module; - ++write; - } - } - data->count = write - data->table; - for (; writeid = 0; - write->module = NULL; - } - data->interpreter_id_as_index = 0; -} -static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { - int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); - if (interpreter_id == -1) return -1; - int result = 0; - __Pyx_ModuleStateLookup_Lock(); -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); -#else - __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; -#endif - __Pyx_ModuleStateLookupData *new_data = old_data; - if (!new_data) { - new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); - if (!new_data) { - result = -1; - PyErr_NoMemory(); - goto end; - } - new_data->allocated = 1; - new_data->interpreter_id_as_index = 1; - } - __Pyx_ModuleStateLookup_wait_until_no_readers(); - if (new_data->interpreter_id_as_index) { - if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { - result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); - goto end; - } - __Pyx_State_ConvertFromInterpIdAsIndex(new_data); - } - { - Py_ssize_t insert_at = 0; - { - __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( - new_data->table, new_data->count, interpreter_id); - assert(lower_bound); - insert_at = lower_bound - new_data->table; - if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { - lower_bound->module = module; - goto end; // already in table, nothing more to do - } - } - if (new_data->count+1 >= new_data->allocated) { - Py_ssize_t to_allocate = (new_data->count+1)*2; - new_data = - (__Pyx_ModuleStateLookupData*)realloc( - new_data, - sizeof(__Pyx_ModuleStateLookupData) + - (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); - if (!new_data) { - result = -1; - new_data = old_data; - PyErr_NoMemory(); - goto end; - } - new_data->allocated = to_allocate; - } - ++new_data->count; - int64_t last_id = interpreter_id; - PyObject *last_module = module; - for (Py_ssize_t i=insert_at; icount; ++i) { - int64_t current_id = new_data->table[i].id; - new_data->table[i].id = last_id; - last_id = current_id; - PyObject *current_module = new_data->table[i].module; - new_data->table[i].module = last_module; - last_module = current_module; - } - } - end: -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); -#else - __Pyx_ModuleStateLookup_data = new_data; -#endif - __Pyx_ModuleStateLookup_Unlock(); - return result; -} -static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { - int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); - if (interpreter_id == -1) return -1; - __Pyx_ModuleStateLookup_Lock(); -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); -#else - __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; -#endif - if (data->interpreter_id_as_index) { - if (interpreter_id < data->count) { - data->table[interpreter_id].module = NULL; - } - goto done; - } - { - __Pyx_ModuleStateLookup_wait_until_no_readers(); - __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( - data->table, data->count, interpreter_id); - if (!lower_bound) goto done; - if (lower_bound->id != interpreter_id) goto done; - __Pyx_InterpreterIdAndModule *end = data->table+data->count; - for (;lower_boundid = (lower_bound+1)->id; - lower_bound->module = (lower_bound+1)->module; - } - } - --data->count; - if (data->count == 0) { - free(data); - data = NULL; - } - done: -#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE - __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); -#else - __Pyx_ModuleStateLookup_data = data; -#endif - __Pyx_ModuleStateLookup_Unlock(); - return 0; -} -#endif - + #ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + #if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000) + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1 + #else + #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0 + #endif + #endif + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS + #error "Module state with PEP489 requires atomics. Currently that's one of\ + C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics" + #endif + #if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + #define __Pyx_ModuleStateLookup_Lock() + #define __Pyx_ModuleStateLookup_Unlock() + #elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000 + static PyMutex __Pyx_ModuleStateLookup_mutex = {0}; + #define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex) + #define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex) + #elif defined(__cplusplus) && __cplusplus >= 201103L + #include + static std::mutex __Pyx_ModuleStateLookup_mutex; + #define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock() + #define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock() + #elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__) + #include + static mtx_t __Pyx_ModuleStateLookup_mutex; + static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT; + static void __Pyx_ModuleStateLookup_initialize_mutex(void) { + mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain); + } + #define __Pyx_ModuleStateLookup_Lock()\ + call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\ + mtx_lock(&__Pyx_ModuleStateLookup_mutex) + #define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex) + #elif defined(HAVE_PTHREAD_H) + #include + static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER; + #define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex) + #define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex) + #elif defined(_WIN32) + #include // synchapi.h on its own doesn't work + static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT; + #define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) + #define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex) + #else + #error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\ + Requires C standard >= C11, or C++ standard >= C++11,\ + or pthreads, or the Windows 32 API, or Python >= 3.13." + #endif + typedef struct { + int64_t id; + PyObject *module; + } __Pyx_InterpreterIdAndModule; + typedef struct { + char interpreter_id_as_index; + Py_ssize_t count; + Py_ssize_t allocated; + __Pyx_InterpreterIdAndModule table[1]; + } __Pyx_ModuleStateLookupData; + #define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32 + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0; + #endif + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0; + #else + static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL; + #endif + static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound( + __Pyx_InterpreterIdAndModule* table, + Py_ssize_t count, + int64_t interpreterId) { + __Pyx_InterpreterIdAndModule* begin = table; + __Pyx_InterpreterIdAndModule* end = begin + count; + if (begin->id == interpreterId) { + return begin; + } + while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2; + if (halfway->id == interpreterId) { + return halfway; + } + if (halfway->id < interpreterId) { + begin = halfway; + } else { + end = halfway; + } + } + for (; begin < end; ++begin) { + if (begin->id >= interpreterId) return begin; + } + return begin; + } + static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return NULL; + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + { + __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + if (likely(data)) { + __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data); + if (likely(data == new_data)) { + goto read_finished; + } + } + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + __Pyx_ModuleStateLookup_Lock(); + __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter); + data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data); + __Pyx_ModuleStateLookup_Unlock(); + } + read_finished:; + #else + __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data; + #endif + __Pyx_InterpreterIdAndModule* found = NULL; + if (unlikely(!data)) goto end; + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + found = data->table+interpreter_id; + } + } else { + found = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + } + end: + { + PyObject *result=NULL; + if (found && found->id == interpreter_id) { + result = found->module; + } + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter); + #endif + return result; + } + } + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) { + while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0); + } + #else + #define __Pyx_ModuleStateLookup_wait_until_no_readers() + #endif + static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) { + Py_ssize_t to_allocate = (*old_data)->allocated; + while (to_allocate <= interpreter_id) { + if (to_allocate == 0) to_allocate = 1; + else to_allocate *= 2; + } + __Pyx_ModuleStateLookupData *new_data = *old_data; + if (to_allocate != (*old_data)->allocated) { + new_data = (__Pyx_ModuleStateLookupData *)realloc( + *old_data, + sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + PyErr_NoMemory(); + return -1; + } + for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) { + new_data->table[i].id = i; + new_data->table[i].module = NULL; + } + new_data->allocated = to_allocate; + } + new_data->table[interpreter_id].module = module; + if (new_data->count < interpreter_id+1) { + new_data->count = interpreter_id+1; + } + *old_data = new_data; + return 0; + } + static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) { + __Pyx_InterpreterIdAndModule *read = data->table; + __Pyx_InterpreterIdAndModule *write = data->table; + __Pyx_InterpreterIdAndModule *end = read + data->count; + for (; readmodule) { + write->id = read->id; + write->module = read->module; + ++write; + } + } + data->count = write - data->table; + for (; writeid = 0; + write->module = NULL; + } + data->interpreter_id_as_index = 0; + } + static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + int result = 0; + __Pyx_ModuleStateLookup_Lock(); + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); + #else + __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data; + #endif + __Pyx_ModuleStateLookupData *new_data = old_data; + if (!new_data) { + new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData)); + if (!new_data) { + result = -1; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = 1; + new_data->interpreter_id_as_index = 1; + } + __Pyx_ModuleStateLookup_wait_until_no_readers(); + if (new_data->interpreter_id_as_index) { + if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) { + result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id); + goto end; + } + __Pyx_State_ConvertFromInterpIdAsIndex(new_data); + } + { + Py_ssize_t insert_at = 0; + { + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + new_data->table, new_data->count, interpreter_id); + assert(lower_bound); + insert_at = lower_bound - new_data->table; + if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) { + lower_bound->module = module; + goto end; // already in table, nothing more to do + } + } + if (new_data->count+1 >= new_data->allocated) { + Py_ssize_t to_allocate = (new_data->count+1)*2; + new_data = + (__Pyx_ModuleStateLookupData*)realloc( + new_data, + sizeof(__Pyx_ModuleStateLookupData) + + (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule)); + if (!new_data) { + result = -1; + new_data = old_data; + PyErr_NoMemory(); + goto end; + } + new_data->allocated = to_allocate; + } + ++new_data->count; + int64_t last_id = interpreter_id; + PyObject *last_module = module; + for (Py_ssize_t i=insert_at; icount; ++i) { + int64_t current_id = new_data->table[i].id; + new_data->table[i].id = last_id; + last_id = current_id; + PyObject *current_module = new_data->table[i].module; + new_data->table[i].module = last_module; + last_module = current_module; + } + } + end: + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data); + #else + __Pyx_ModuleStateLookup_data = new_data; + #endif + __Pyx_ModuleStateLookup_Unlock(); + return result; + } + static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) { + int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get()); + if (interpreter_id == -1) return -1; + __Pyx_ModuleStateLookup_Lock(); + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *) + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0); + #else + __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data; + #endif + if (data->interpreter_id_as_index) { + if (interpreter_id < data->count) { + data->table[interpreter_id].module = NULL; + } + goto done; + } + { + __Pyx_ModuleStateLookup_wait_until_no_readers(); + __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound( + data->table, data->count, interpreter_id); + if (!lower_bound) goto done; + if (lower_bound->id != interpreter_id) goto done; + __Pyx_InterpreterIdAndModule *end = data->table+data->count; + for (;lower_boundid = (lower_bound+1)->id; + lower_bound->module = (lower_bound+1)->module; + } + } + --data->count; + if (data->count == 0) { + free(data); + data = NULL; + } + done: + #if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE + __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data); + #else + __Pyx_ModuleStateLookup_data = data; + #endif + __Pyx_ModuleStateLookup_Unlock(); + return 0; + } + #endif + /* #### Code section: utility_code_pragmas_end ### */ #ifdef _MSC_VER #pragma warning( pop ) diff --git a/tox.ini b/tox.ini index 39cf7df..d41e7ae 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,8 @@ -# usage: -# tox --> default, runs pytest - [tox] -envlist = py312 +envlist = py310, py311, py312, py313 isolated_build = True [testenv] -basepython = python3.12 deps = pytest extras = all @@ -19,10 +15,22 @@ setenv = commands = pytest {posargs} -v +[testenv:py310] +basepython = python3.10 + +[testenv:py311] +basepython = /opt/homebrew/bin/python3.11 + +[testenv:py312] +basepython = python3.12 + +[testenv:py313] +basepython = python3.13 + [testenv:.pkg] basepython = python3.12 passenv = CONDA_PREFIX OCEANMESH_PREFIX setenv = - OCEANMESH_PREFIX = {env:CONDA_PREFIX} + OCEANMESH_PREFIX = {env:CONDA_PREFIX} \ No newline at end of file From 3c1f22e16ad71da15321d53044652c42891d7464 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 10:14:06 -0500 Subject: [PATCH 05/18] revert tox --- tox.ini | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/tox.ini b/tox.ini index d41e7ae..d35ac83 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,9 @@ [tox] -envlist = py310, py311, py312, py313 +envlist = py312 isolated_build = True [testenv] +basepython = python3.12 deps = pytest extras = all @@ -15,18 +16,6 @@ setenv = commands = pytest {posargs} -v -[testenv:py310] -basepython = python3.10 - -[testenv:py311] -basepython = /opt/homebrew/bin/python3.11 - -[testenv:py312] -basepython = python3.12 - -[testenv:py313] -basepython = python3.13 - [testenv:.pkg] basepython = python3.12 passenv = From a6f720395a8ac8953fac5328e687a98a5e1a15c3 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 10:25:36 -0500 Subject: [PATCH 06/18] cibuild permission fix --- .github/workflows/ci.yml | 3 ++- .github/workflows/publish-testpypi.yml | 3 ++- .github/workflows/publish.yml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a15ed3..79dc13e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,6 +65,7 @@ jobs: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" + CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 @@ -74,7 +75,7 @@ jobs: cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_MACOS: | set -eux - micromamba create -y -p /opt/om -c conda-forge \ + micromamba create -y -p "$HOME/om" -c conda-forge \ cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_WINDOWS: | micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen diff --git a/.github/workflows/publish-testpypi.yml b/.github/workflows/publish-testpypi.yml index 726884e..5111ad5 100644 --- a/.github/workflows/publish-testpypi.yml +++ b/.github/workflows/publish-testpypi.yml @@ -62,6 +62,7 @@ jobs: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" + CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 @@ -71,7 +72,7 @@ jobs: cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_MACOS: | set -eux - micromamba create -y -p /opt/om -c conda-forge \ + micromamba create -y -p "$HOME/om" -c conda-forge \ cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_WINDOWS: | micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f9158de..2e60337 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -82,6 +82,7 @@ jobs: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" + CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 @@ -91,7 +92,7 @@ jobs: cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_MACOS: | set -eux - micromamba create -y -p /opt/om -c conda-forge \ + micromamba create -y -p "$HOME/om" -c conda-forge \ cgal boost-cpp gmp mpfr eigen CIBW_BEFORE_ALL_WINDOWS: | micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen From b8ffaebce7ee8f9ce0be5cb2c7820771b6bc7324 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 10:47:42 -0500 Subject: [PATCH 07/18] Enforce compiled inpoly kernel in CI tox runs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a tox gate to fail when the compiled point_in_polygon kernel is unavailable if OCEANMESH_REQUIRE_INPOLY_ACCEL=1 is set (prints interpreter + compiled status first). Set OCEANMESH_REQUIRE_INPOLY_ACCEL=1 and OCEANMESH_INPOLY_ACCEL_DEBUG=1 for the Ubuntu tox_tests matrix job so CI won’t silently fall back to the slow Python implementation. --- .github/workflows/ci.yml | 40 ++++ oceanmesh/geometry/point_in_polygon_.c | 316 +++++++++++++------------ tox.ini | 11 +- 3 files changed, 208 insertions(+), 159 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79dc13e..b461208 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,46 @@ on: - "test-v*" jobs: + tox_tests: + name: Tox tests (ubuntu, py${{ matrix.py }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - py: "310" + python-version: "3.10" + toxenv: "py310" + - py: "311" + python-version: "3.11" + toxenv: "py311" + - py: "312" + python-version: "3.12" + toxenv: "py312" + - py: "313" + python-version: "3.13" + toxenv: "py313" + + steps: + - uses: actions/checkout@v4 + env: + OCEANMESH_REQUIRE_INPOLY_ACCEL: "1" + OCEANMESH_INPOLY_ACCEL_DEBUG: "1" + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install tox + run: | + python -m pip install --upgrade pip + python -m pip install tox + + - name: Run tests + run: | + tox -e ${{ matrix.toxenv }} -- -q + build_wheels: name: Build wheels (${{ matrix.os }}) runs-on: ${{ matrix.os }} diff --git a/oceanmesh/geometry/point_in_polygon_.c b/oceanmesh/geometry/point_in_polygon_.c index d0933f0..2c9eb77 100644 --- a/oceanmesh/geometry/point_in_polygon_.c +++ b/oceanmesh/geometry/point_in_polygon_.c @@ -4,17 +4,17 @@ { "distutils": { "depends": [ - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayobject.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayscalars.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarrayobject.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarraytypes.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/ufuncobject.h" ], "extra_compile_args": [ "-O3" ], "include_dirs": [ - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.12/site-packages/numpy/_core/include" + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include" ], "name": "oceanmesh.geometry.point_in_polygon_", "sources": [ @@ -1395,8 +1395,8 @@ static const char *__pyx_filename; static const char* const __pyx_f[] = { "oceanmesh/geometry/point_in_polygon_.pyx", "", - ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", - ".tox/.pkg/lib/python3.12/site-packages/Cython/Includes/cpython/type.pxd", + ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd", + ".tox/.pkg/lib/python3.14/site-packages/Cython/Includes/cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ /* Atomics.proto (used by UnpackUnboundCMethod) */ @@ -1648,7 +1648,7 @@ typedef struct { /* #### Code section: numeric_typedefs ### */ -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":744 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1657,7 +1657,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":745 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1666,7 +1666,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":746 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1675,7 +1675,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":747 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":747 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1684,7 +1684,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":749 * ctypedef npy_int64 int64_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1693,7 +1693,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":750 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1702,7 +1702,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":751 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1711,7 +1711,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":752 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":752 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1720,7 +1720,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":754 * ctypedef npy_uint64 uint64_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1729,7 +1729,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":755 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":755 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1738,7 +1738,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":762 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1747,7 +1747,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":763 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1756,7 +1756,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":765 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1765,7 +1765,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":766 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1774,7 +1774,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":768 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1783,7 +1783,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":769 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1792,7 +1792,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":770 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -17074,7 +17074,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17085,7 +17085,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":245 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":245 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -17095,7 +17095,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D __pyx_r = PyDataType_ELSIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17108,7 +17108,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17119,7 +17119,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":249 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -17129,7 +17129,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17142,7 +17142,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17156,7 +17156,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("fields", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":255 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -17169,7 +17169,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc __pyx_r = ((PyObject *)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17184,7 +17184,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17198,7 +17198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("names", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":259 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -17211,7 +17211,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr __pyx_r = ((PyObject*)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17226,7 +17226,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17237,7 +17237,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":266 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":266 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -17247,7 +17247,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra __pyx_r = PyDataType_SUBARRAY(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17260,7 +17260,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17271,7 +17271,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":271 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -17281,7 +17281,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr __pyx_r = PyDataType_FLAGS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17294,7 +17294,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17305,7 +17305,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":283 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -17315,7 +17315,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17328,7 +17328,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17339,7 +17339,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":288 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":288 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -17349,7 +17349,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17362,7 +17362,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17373,7 +17373,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":293 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":293 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -17383,7 +17383,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17396,7 +17396,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17407,7 +17407,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":298 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":298 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -17417,7 +17417,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17430,7 +17430,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17441,7 +17441,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":303 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":303 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -17451,7 +17451,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17464,7 +17464,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17475,7 +17475,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":309 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":309 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -17485,7 +17485,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17498,7 +17498,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17509,7 +17509,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":327 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -17519,7 +17519,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject __pyx_r = PyArray_BASE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17532,7 +17532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17546,7 +17546,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("descr", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":333 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -17559,7 +17559,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray __pyx_r = ((PyArray_Descr *)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17574,7 +17574,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17585,7 +17585,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":339 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -17595,7 +17595,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx __pyx_r = PyArray_NDIM(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17608,7 +17608,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17619,7 +17619,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":347 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -17629,7 +17629,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec __pyx_r = PyArray_DIMS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17642,7 +17642,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17653,7 +17653,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":354 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":354 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -17663,7 +17663,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO __pyx_r = PyArray_STRIDES(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17676,7 +17676,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17687,7 +17687,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":360 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":360 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -17697,7 +17697,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * __pyx_r = PyArray_SIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17710,7 +17710,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17721,7 +17721,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":369 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -17731,7 +17731,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p __pyx_r = PyArray_BYTES(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17744,7 +17744,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17761,7 +17761,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":778 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17775,7 +17775,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17794,7 +17794,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17811,7 +17811,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":781 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":781 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -17825,7 +17825,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17844,7 +17844,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17861,7 +17861,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":784 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -17875,7 +17875,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17894,7 +17894,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17911,7 +17911,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":787 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -17925,7 +17925,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17944,7 +17944,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17961,7 +17961,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":790 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":790 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -17975,7 +17975,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17994,7 +17994,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18009,7 +18009,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18019,7 +18019,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); if (__pyx_t_1) { - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":794 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -18032,7 +18032,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_t_2); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18041,7 +18041,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":796 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -18055,7 +18055,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18070,7 +18070,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18084,7 +18084,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":996 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -18093,7 +18093,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":997 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":997 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -18102,7 +18102,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 997, __pyx_L1_error) - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18117,7 +18117,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_L0:; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18132,7 +18132,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1000 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -18141,7 +18141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18151,7 +18151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = (__pyx_v_base == NULL); if (__pyx_t_1) { - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1002 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -18162,7 +18162,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18171,7 +18171,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1003 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1003 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -18183,7 +18183,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18198,7 +18198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18224,7 +18224,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18240,7 +18240,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1009 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< @@ -18249,7 +18249,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1009, __pyx_L3_error) - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18263,7 +18263,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1010 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -18278,7 +18278,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1011 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -18300,7 +18300,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18316,7 +18316,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18340,7 +18340,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18366,7 +18366,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18382,7 +18382,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1015 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18391,7 +18391,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1015, __pyx_L3_error) - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18405,7 +18405,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1016 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18420,7 +18420,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1017 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18442,7 +18442,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18458,7 +18458,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18482,7 +18482,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18508,7 +18508,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18524,7 +18524,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1021 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18533,7 +18533,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1021, __pyx_L3_error) - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18547,7 +18547,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1022 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18562,7 +18562,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1023 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18584,7 +18584,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18600,7 +18600,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18624,7 +18624,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18635,7 +18635,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1038 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -18645,7 +18645,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18658,7 +18658,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18669,7 +18669,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1053 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -18679,7 +18679,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18692,7 +18692,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18703,7 +18703,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1063 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1063 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18713,7 +18713,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18726,7 +18726,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18737,7 +18737,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1070 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18747,7 +18747,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18760,7 +18760,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 +/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18771,7 +18771,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1077 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -18781,7 +18781,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 + /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -22526,7 +22526,15 @@ static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); { const struct { const unsigned int length: 10; } index[] = {{2},{68},{35},{54},{37},{60},{24},{52},{26},{34},{29},{33},{45},{22},{15},{179},{37},{30},{32},{1},{1},{1},{1},{1},{8},{5},{6},{15},{23},{25},{7},{6},{2},{6},{35},{9},{30},{50},{39},{34},{8},{40},{21},{20},{32},{22},{30},{37},{5},{12},{8},{20},{8},{15},{3},{15},{17},{6},{18},{4},{7},{4},{1},{9},{17},{18},{5},{8},{4},{5},{15},{2},{2},{1},{4},{5},{6},{9},{5},{5},{10},{5},{10},{5},{7},{6},{7},{4},{8},{12},{1},{2},{2},{2},{10},{5},{12},{6},{5},{13},{5},{8},{1},{8},{7},{4},{10},{1},{6},{6},{4},{8},{4},{7},{4},{2},{5},{3},{36},{6},{4},{3},{5},{5},{2},{2},{14},{11},{10},{19},{14},{12},{10},{17},{13},{8},{12},{10},{12},{19},{5},{4},{5},{4},{8},{4},{4},{6},{1},{8},{5},{6},{6},{1},{6},{4},{1},{2},{2},{5},{2},{2},{5},{791},{1}}; - #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (1802 bytes) */ + #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (1644 bytes) */ +const char* const cstring = "(\265/\375`\205\n\0253\000ZQ`\020E\000\257\266\r\374?*\241\337\227\255Q\t\225P\t\225\320\257~\365\253\222\3168\322X\311\211\366J\271\357\377N\221\353\332p\210\303\250\305<\006\026O%\000\332\232\007\243$>\213!\n62\t\204y>\360\305\351\261\006\334\000\342\000\356\0007n\334EL\024-}\355gvk\317\350\245Qx\006\235\200DF\260\214\210\367i\227\371\317\354\227\315\274\206\374\261\213\t\021(\243x\301\343\211\036\352\211\325/x\3056\233\245+\252\376\031o\333\026Y\320\226\233\025\242\256w\343+b8\376\306\242n\346<\255\213I\337\321\2301\026=\333\366G\337&I\307\3567\215\305\256\274\325w\346\367D\337\272\217\244\2674Q\303\031\363\354\232o3\215H\235\236#\376xGV\353iu\031k\256\305k\243\336x\217\354_L\243\266\361'\351\2578\243\377\364Lc\227]\034\357\014i\2576\277\216\256\361\306\271v\\#\215\333R\314\216a[\305f:>\276\261\336\031\253s^\257\215~\305\327[\213uB\034][\235z\336\242\276\330\352\353\232\2551\313R\342\206zJzM\313\351\365=\3431\230\223x\316]\344S\273\302u#\244\324Vo6\313Xbd^d>\210J\270\274\204dH$\n\305\244X\332\232?k\364\237\024g\331\334\327V\024\277\330\305\265y-,s\315u\233%/\036u\031\336\344\265\362\257\305\033\206.\277k\330G\030H\332\265;\235\342\016\244\237\332\326lf'\026\255fy\306TZ\335\246\355+\345\333ki6m\311\346\027\271\370\356\032\245t\272\253g)\343g{b^#\276#\221\003Jt\025VWm\377\372snk\205HG\256m\275\266\003\n\275\246\225e\230r#\361g\364\307W\326:=X\360t\260.\254\371\333\370\331K\370\257\014\316\256\002\337\330M-n\3761\332)\235\027\277X\256\263\331\342%\353\221?=\361]\307\353\244\327s\253\356\001-(\020\024\tF\230R\003R\323\242\002\221\372\244L\240HP%\030\253\360\3424\003.\000K|\0210V\0050\302\016*\000\212\302\251\005\374\200!\034\026\331\224 #\234\036\214W2\201L\277\"c\000\000P\213\213\025\372\323\215t\232\373p#\034\247}g\263T\252\333\276\373\344\257\335\332\377\351\316\370\365\226\337\265\224\331_\333\021\347\331\3343\245\313\"=KA\355v\267\266u\n\352$\272I\331m\334\326q(p\3366\274m\226\265]\032\227R^yo\266\245\324\374\332\251I\211\202\244\344\257\365j\265\236\230$\271V""\312j?v\304Z\371\232\336\215I\231\341\307@&?q\206\351\321\314\260k%7\265.gw\257\330}T\335\273\312U\251\255\254\257\251\255R\376\335\230\246\240\363r\372>\222RJ\252e\275\227\353yi\277\3667\266\260\245\267\323S\317/\034\317\244\363q>\217\247\241\363i\360NL\007\020h\204\235O\306K\361<6!\347c\361>^\307&\374\2548\036\341\307\004F%\"\200\2129\205\200\350W\362\t\370>6V3\247\t\030\333\013q4\370\0109`\347#\234\331\036\003\217\360\"u\241JP\035T=\251\234N\010\000g\036\220\200\034\241\017\202G\010\003\206\200\001\300\225\017\343\213\361H\274\216\215\360\242\346R\225\2508T4\245\222\352HQ\224\204\225\023\310I\203!\260\003\314\037\350\343\370\250\267`#\354\204\276\216\257\204\027\262\241\241\342u\314x\240\222\315\212\263\021rT9\025r\200\312\247\320\251\343\304\002\202\200\372\233_\010\017$\301f5\243\300c1m2V!\307\343d\25446a\347\3049}x|\027_\206\227\301\2641\000\200@\013\003\253\224o{\323[\260\t/\274\313Tb:\360\035O\233\246\t\306\244\221\021~\274\216'c\032`\312\020\301\010\247JE\205\245H(\030T\351D\342d\r\000\200\240E\010\363\251\341\2501Q\235\244:\251\201\020\250a%ThdDDD\222$Ic1\010\002R\022r\253\007r\342,V\316\330\210\2226\365\250,\373\006\220\027\301\031\247_\302=\315\331\316\224\327p\030\361Rn\354\321\023\307\301\"\255\377\2703ev\313h\330N\276!$\363N\234\242G\231\223\014D\330d\327f\343\034\311\217>\020\334e\362\344\330\023\374nD\217\224\241\363\355\234\005\305hT\220\317a\315\032.\313\263\203\037B\004{&\365E,%\220%\265\231j=\256\220\357E\021\257\247\032\020\340ioq\234\031i\002V@\211\346Y\204\223\023\202\230pw\354V\017l\244W=*\237\315\343\323~cT\204d\366\253@\277\006\205\337B\177\032\013\226\275\377\307\022\262(\240x\243]$\261\376\253\370\3364\344(x\031\r\331\016\223\212v1\025I}\355\031\030\360\330JV\251\3057^\"\023\222\346\003\263\004\014}m\301M|hL}\000r\020/(\2374\215\340\024%Eh\3554\341\376swa\253\266\212\265)W.'\027CkD~\t\214\003F\234\270<\310i\307\212\247-!\247g\345\371\017^\251<\243\313\355_\274fT"; + PyObject *data = __Pyx_DecompressString(cstring, 1644, 3); + if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) + const char* const bytes = __Pyx_PyBytes_AsString(data); + #if !CYTHON_ASSUME_SAFE_MACROS + if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } + #endif + #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (1802 bytes) */ const char* const cstring = "BZh91AY&SYAy\210\017\000\001\010\177\377\377\357\377\376\177\347\377\327\277\363\377\200\277\377\377\360@@@@@@@@@@@@@\000@\000`\006i\302\321\213\351\210\n\005)N\0142EOD\321\246\006\203S\302\233SL\24350\004\3654\321\202=F@\036\246\2322\030\233I\211\351\251\351\264S\364\202P\2014\320&\215M\251\246\223\023\024\323\3244z\207\250\006@\000\000\000\000\032\003A\246\232\034\000\006\200\000d\000\000\001\220\321\240\000\000\000\000\000\000\003L\210&\223$\032(\375(?S#OQ6\240\r\014\214\214\002\036\240\031\006 \003L\2314\315OHp\000\032\000\001\220\000\000\006CF\200\000\000\000\000\000\000\rH\246j\031\240\2152`\001\032h\3014\300\000\004a12\0314b0C\000\001\243 b\237\2017.\377\257\300\273\267\240\002*\277\342\024\010\020\"\020\213\\\203\200a1Y\021qQ\020\025ru\325;X\364\204EAU\005S7\264F\023ef\363\221\320\t?\270\224\200\221\024a/\320\315\334\320;\202p\036\220\312\250\222H\306\254\213P\221\010\260JG\034\303\276\235\2116f$~}\361\342\037\260\177\023\370O\361\277\376\3227\336}$;\267\317\303\025\276\241d\231$r\034O\233r\026\013\272\253w\014\357\t\342;\365X\034\030\364\377\355\356\274W\301\223W~\264\246\"X\207U\313\200\214\262t\3768s\220HpZ\320D\027\256B\034WQ\370g#\301Z^\255R\236\2020r\235\300\200h\251(\305\351\\\227\3171\343\0007v\366\370\344<6\225\3061\003\236\356\355\375d\345#\030\360\203\006\377/\315\252\001Z\206\366f\206\375\034F\335\355\213\236sa\321\0166\303Q\037]=h\214J\201\345-kT\326\213\241\325,\017\032\326\364N(\230\206{\324#0#0\306\226\277\317\360\374\323I\204\312:\212\371\263u^\354?]G\037\031\261~\236y\211\3624\2543\3009\034wwh?\216/\317\272\263\250s]KC2\333xk\200\376k\264\337\273JX\251\301\2167\257g\360\226\215{\216\2253\327\267\010\235Z\1771\354B&\221+LL\315:\221\262\314\374m\352\331\\?\206\250?]:\357 g\323]\030k\000=}\231\353\357H\000\374D\314w]\250u\337\227Q\315\226\207\362V\032g\217-H\200m\207\271\023\251\026)\345\213h\031`8\222\375\336\010\240\205\t\000\344\n\231M\2230\251H\244\2116\235\330)142\277\311\357\014\203\372\326\3205y|\"\303g\235\340\214Xs6\265*\300-\303\203""\235\320\010S-+\254\312Ye\250'\253e\356\264\353W\262\033\202\271\031l\037\254px\026?A\342\214\034E\021\200#\002\016\276\340Y\010jX\241`>\023\363\000p\000gI\246\000YF\362Y\345\357l\337\275\255K_x8u\367\353\274\224 \260W\3733\032<|\3466\254\023\203\266\342\210\205\202\212\251{\210\233\232\362<+\252AP\354V\2542\271\034b0\367\364\251\323\216\341\0241\241\323\241@*1\223\226\016\202b\304s\"\036\000T =\037c\326\277s\313 \347umn>\324\211\322\355\236\221L\324\342\215]\027\023z\250\243\210{\235H\231\305\003\204\202\252\300\266\361\000\220es\275l\332\222\032\366\222\314\361u\300d\323\305\225\366\340A\350\251\231\330>I\240\355\n\227\271\033\033%\rWNBU\t\014y=\343(\253\r\306\270\226\264\335\264\325a\215c\262\262\274*K\3443,6\242MB\263Z\233\307B\354\316^\006\200\362w\262\250\243\033\210b\027O\t\035~\367\027]NA\222\315'7\357\036\372\027p\025\236\007Q\341j`*\202\246\372\211\314?\325\342~g\027\367\247}\347e\222\305*;j\252*\244_0\325y\266\024T1\202\204b\344\343x\312\026\300|l\273\036(\356[\304>\027\244TU\245b\020\013\001\366\217r\361\355\271\363\2665p\217\213\222\034\250\253qr\030\336\356\233\303\030\207:\351\226\301\311YJ\023\217^\317.\001l\021\250\224m)J\201G\300\313\006\3402\232\n\204\"$&L\220\236jY\232\255\202\271\213nQ\\/\242$\024\376c\2740Dd)\214\225G=\304\357\327i\030^\264@\313\251D\2230:B\330\353\324\212\311A\350\303\225\t\264\013\225TU\024j\212\352\250\025\204\251\207\250\360{`\321\263;IixQD\235\366\223\271\311\337\363\357\233\265\266\331\205\345\245\262r;\002\342=V\255\214\324\301\237\336\307\321\034\024B\226Ch\257-s\020\006/Da\365\332\n\242\250\224\323\272O0\245F\214f\370U\272\212\234*4\031\355\315\265\2628\2611^*Om\261~\274!Qr\220Z!o4\274>\261\342#)\321H*(m\005Mb8\300\314\321\240B\353Qa\031\211>Vs\2527\357x\031\303\"\351\330\226u7\004\026\031[\037S\335l\243\317\316\206pE\311\013y\306m\010\275\034\253\007*\251\027\306\313\016F\331*\215:\223.\032\017G\333\025\023-\344\214^\324\022\3660I\251fK\032\347\343\"\214\346:K:\237\216\2415\233Q\343\314\227\025M\341B2\215Q\020/+Ze3l""\224i\255lo\255\005\224\371R\ry\221\264\340\202C*\330\222\024\350\224W(\244LP\341B\373\201p*\224\356[I\210o\306\307\217p\234\213\"\225M\311'\276N\3264\366\315\\\357\22135w$H&\256\321\312v\224\256\030\035)\341\312@\344\255\214G^\313p\r\275\026\200/=\0229\001\260\033z\025\365|\343C@\261\3646\233HH\204EU:}\0259CZ\2737\275z\030\030\357\370\244\343.\224E\025\233\204\210\2464\177\247(\021k*\2110\234#tQ,\3639\002\211d\204\310\253\006\247\307\366\013\363\375\245\311\362\261N0l\210A\372t\031\300'\"\205\203\237\177\206\310#\247{\320\026\014\340pu3\334\021J\0055y\202\213\227\264\217\024\036\321o\264\006\313ch-\243\222\210\005\312\331\237\273\034.=\241\313m\334\252A\347\356w+\330E\340\377\361p\003\231\013\255\264Q\033\343\367\244\251\333\002\202(\326\027\252\220\310\236\214\263\233\234sDT\250&MI\202\233\357J6\216\0312,\374\244\347Z\221hB]\254\345\207\r\024~\224\255@\306$7\365\007\222\240j\033Q\362i\204\243\320(\263\215Wc\3560\364\306\014\313\25725\030\346Y\226\310\257\242\264\363(\260\021\026|*C\224\306#\206\224\024\207\253\244\323\212\251\023(\035)#C+\274\261u\177\361w$S\205\t\004\027\230\200\360"; PyObject *data = __Pyx_DecompressString(cstring, 1802, 2); if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) diff --git a/tox.ini b/tox.ini index d35ac83..b1edbd7 100644 --- a/tox.ini +++ b/tox.ini @@ -1,9 +1,8 @@ [tox] -envlist = py312 +envlist = py{310,311,312,313} isolated_build = True [testenv] -basepython = python3.12 deps = pytest extras = all @@ -12,14 +11,16 @@ passenv = OCEANMESH_PREFIX setenv = MPLBACKEND = agg - OCEANMESH_PREFIX = {env:CONDA_PREFIX} + OCEANMESH_PREFIX = {env:CONDA_PREFIX:} commands = + python -c "import sys; print('tox python:', sys.version)" + python -c "import os; import oceanmesh.geometry.point_in_polygon as p; ok=bool(getattr(p,'_COMPILED_KERNEL_AVAILABLE', False)); print('inpoly compiled:', ok); req=os.environ.get('OCEANMESH_REQUIRE_INPOLY_ACCEL','0').strip().lower() not in {'0','false','no','off',''}; \ + (not req or ok) or (_ for _ in ()).throw(SystemExit('OCEANMESH_REQUIRE_INPOLY_ACCEL=1 but compiled inpoly kernel is unavailable'))" pytest {posargs} -v [testenv:.pkg] -basepython = python3.12 passenv = CONDA_PREFIX OCEANMESH_PREFIX setenv = - OCEANMESH_PREFIX = {env:CONDA_PREFIX} \ No newline at end of file + OCEANMESH_PREFIX = {env:CONDA_PREFIX:} \ No newline at end of file From 030203cbdcc3e653180508e47481ee62c1d95783 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 11:08:08 -0500 Subject: [PATCH 08/18] remove outdated testing.yml in favor of ci.yml --- .github/workflows/ci.yml | 8 ++-- .github/workflows/testing.yml | 79 ----------------------------------- 2 files changed, 4 insertions(+), 83 deletions(-) delete mode 100644 .github/workflows/testing.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b461208..7eb7b8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,9 @@ jobs: tox_tests: name: Tox tests (ubuntu, py${{ matrix.py }}) runs-on: ubuntu-latest + env: + OCEANMESH_REQUIRE_INPOLY_ACCEL: "1" + OCEANMESH_INPOLY_ACCEL_DEBUG: "1" strategy: fail-fast: false matrix: @@ -32,9 +35,6 @@ jobs: steps: - uses: actions/checkout@v4 - env: - OCEANMESH_REQUIRE_INPOLY_ACCEL: "1" - OCEANMESH_INPOLY_ACCEL_DEBUG: "1" - name: Set up Python uses: actions/setup-python@v5 @@ -48,7 +48,7 @@ jobs: - name: Run tests run: | - tox -e ${{ matrix.toxenv }} -- -q + tox -e "${{ matrix.toxenv }}" -- -q build_wheels: name: Build wheels (${{ matrix.os }}) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml deleted file mode 100644 index 4eec5de..0000000 --- a/.github/workflows/testing.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: ci - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/setup-python@v2 - with: - python-version: "3.12" - - uses: actions/checkout@v2 - - name: Lint with flake8 - run: | - pip install flake8 - flake8 . - - name: Lint with black - run: | - pip install black - black --check . - build: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ['3.10','3.11','3.12','3.13'] - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Update - run: | - sudo apt update - - name: Install CGAL 5 - run: | - sudo apt install -y libcgal-dev - - name: Install other dependencies - run: | - sudo apt install -y libopenmpi3 libopenmpi-dev openmpi-bin - sudo apt install -y libhdf5-dev - - name: Install Python build dependencies - run: | - python -m pip install --upgrade pip - python -m pip install Cython numpy - - name: Verify Cython inpoly kernel is available - env: - OCEANMESH_INPOLY_ACCEL: "1" - run: | - python -m pip install -e . - python - << 'PY' - import os, importlib - from oceanmesh.geometry import point_in_polygon as pip - - # Ensure we use the default acceleration behaviour - os.environ.pop("OCEANMESH_INPOLY_METHOD", None) - os.environ["OCEANMESH_INPOLY_ACCEL"] = "1" - pip = importlib.reload(pip) - - if not getattr(pip, "_COMPILED_KERNEL_AVAILABLE", False): - raise SystemExit("Cython inpoly2 kernel not available in CI environment") - - print("_COMPILED_KERNEL_AVAILABLE =", pip._COMPILED_KERNEL_AVAILABLE) - from oceanmesh.geometry.point_in_polygon_ import inpoly2_fast - print("inpoly2_fast:", inpoly2_fast) - PY - - name: Test with tox - env: - OCEANMESH_INPOLY_ACCEL: "1" - OCEANMESH_INPOLY_METHOD: "" - run: | - python -m pip install tox - tox - - uses: codecov/codecov-action@v1 From 9d24a672f9d64bf17f4d38fdb0ad0d677beb00f3 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 11:13:50 -0500 Subject: [PATCH 09/18] only run tests on pull request and tagging events --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7eb7b8d..5d05e15 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: pull_request: push: branches: - - "**" + - master tags-ignore: - "v*" - "test-v*" From c2029a7d53f57b4690ec33765af13e77ed571860 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 11:27:19 -0500 Subject: [PATCH 10/18] CI: install Ubuntu build deps for tox (mpfr/gmp/cgal/mpi/hdf5 --- .github/workflows/ci.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d05e15..07befc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,18 @@ jobs: with: python-version: ${{ matrix.python-version }} + - name: Install system build deps + run: | + sudo apt-get update + sudo apt-get install -y \ + libgmp-dev \ + libmpfr-dev \ + libcgal-dev \ + libopenmpi3 \ + libopenmpi-dev \ + openmpi-bin \ + libhdf5-dev + - name: Install tox run: | python -m pip install --upgrade pip From 6ddab7c14a5e6fd10058a8f3304daf9cea32b7e0 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 16:31:13 -0500 Subject: [PATCH 11/18] force failure if inpoly can't compile --- .github/workflows/ci.yml | 2 + oceanmesh/geometry/point_in_polygon_.c | 316 ++++++++++++------------- tox.ini | 4 + 3 files changed, 160 insertions(+), 162 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07befc0..ea79bd1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,6 +16,8 @@ jobs: env: OCEANMESH_REQUIRE_INPOLY_ACCEL: "1" OCEANMESH_INPOLY_ACCEL_DEBUG: "1" + OCEANMESH_INPOLY_ACCEL: "1" + OCEANMESH_INPOLY_METHOD: "" strategy: fail-fast: false matrix: diff --git a/oceanmesh/geometry/point_in_polygon_.c b/oceanmesh/geometry/point_in_polygon_.c index 2c9eb77..e3f5979 100644 --- a/oceanmesh/geometry/point_in_polygon_.c +++ b/oceanmesh/geometry/point_in_polygon_.c @@ -4,17 +4,17 @@ { "distutils": { "depends": [ - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayobject.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/arrayscalars.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarrayobject.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/ndarraytypes.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include/numpy/ufuncobject.h" + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" ], "extra_compile_args": [ "-O3" ], "include_dirs": [ - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg/lib/python3.14/site-packages/numpy/_core/include" + "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include" ], "name": "oceanmesh.geometry.point_in_polygon_", "sources": [ @@ -1395,8 +1395,8 @@ static const char *__pyx_filename; static const char* const __pyx_f[] = { "oceanmesh/geometry/point_in_polygon_.pyx", "", - ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd", - ".tox/.pkg/lib/python3.14/site-packages/Cython/Includes/cpython/type.pxd", + ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", + ".tox/.pkg-cpython312/lib/python3.12/site-packages/Cython/Includes/cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ /* Atomics.proto (used by UnpackUnboundCMethod) */ @@ -1648,7 +1648,7 @@ typedef struct { /* #### Code section: numeric_typedefs ### */ -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":744 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1657,7 +1657,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":745 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1666,7 +1666,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":746 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1675,7 +1675,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":747 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":747 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1684,7 +1684,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":749 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 * ctypedef npy_int64 int64_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1693,7 +1693,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":750 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1702,7 +1702,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":751 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1711,7 +1711,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":752 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":752 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1720,7 +1720,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":754 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 * ctypedef npy_uint64 uint64_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1729,7 +1729,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":755 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":755 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1738,7 +1738,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":762 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1747,7 +1747,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":763 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1756,7 +1756,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":765 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1765,7 +1765,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":766 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1774,7 +1774,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":768 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1783,7 +1783,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":769 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1792,7 +1792,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":770 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -17074,7 +17074,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":243 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17085,7 +17085,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":245 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":245 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -17095,7 +17095,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D __pyx_r = PyDataType_ELSIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":243 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17108,7 +17108,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":247 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17119,7 +17119,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":249 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -17129,7 +17129,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":247 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17142,7 +17142,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":253 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17156,7 +17156,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("fields", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":255 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -17169,7 +17169,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc __pyx_r = ((PyObject *)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":253 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17184,7 +17184,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":257 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17198,7 +17198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("names", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":259 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -17211,7 +17211,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr __pyx_r = ((PyObject*)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":257 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17226,7 +17226,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":264 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17237,7 +17237,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":266 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":266 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -17247,7 +17247,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra __pyx_r = PyDataType_SUBARRAY(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":264 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17260,7 +17260,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":268 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17271,7 +17271,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":271 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -17281,7 +17281,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr __pyx_r = PyDataType_FLAGS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":268 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17294,7 +17294,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":280 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17305,7 +17305,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":283 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -17315,7 +17315,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":280 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17328,7 +17328,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":285 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17339,7 +17339,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":288 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":288 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -17349,7 +17349,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":285 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17362,7 +17362,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":290 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17373,7 +17373,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":293 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":293 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -17383,7 +17383,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":290 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17396,7 +17396,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":295 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17407,7 +17407,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":298 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":298 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -17417,7 +17417,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":295 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17430,7 +17430,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":300 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17441,7 +17441,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":303 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":303 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -17451,7 +17451,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":300 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17464,7 +17464,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":305 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17475,7 +17475,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":309 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":309 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -17485,7 +17485,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":305 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17498,7 +17498,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":323 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17509,7 +17509,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":327 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -17519,7 +17519,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject __pyx_r = PyArray_BASE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":323 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17532,7 +17532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":329 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17546,7 +17546,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("descr", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":333 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -17559,7 +17559,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray __pyx_r = ((PyArray_Descr *)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":329 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17574,7 +17574,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":335 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17585,7 +17585,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":339 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -17595,7 +17595,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx __pyx_r = PyArray_NDIM(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":335 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17608,7 +17608,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":341 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17619,7 +17619,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":347 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -17629,7 +17629,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec __pyx_r = PyArray_DIMS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":341 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17642,7 +17642,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":349 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17653,7 +17653,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":354 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":354 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -17663,7 +17663,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO __pyx_r = PyArray_STRIDES(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":349 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17676,7 +17676,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":356 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17687,7 +17687,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":360 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":360 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -17697,7 +17697,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * __pyx_r = PyArray_SIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":356 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17710,7 +17710,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":362 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17721,7 +17721,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":369 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -17731,7 +17731,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p __pyx_r = PyArray_BYTES(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":362 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17744,7 +17744,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":777 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17761,7 +17761,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":778 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17775,7 +17775,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":777 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17794,7 +17794,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":780 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17811,7 +17811,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":781 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":781 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -17825,7 +17825,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":780 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17844,7 +17844,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":783 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17861,7 +17861,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":784 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -17875,7 +17875,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":783 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17894,7 +17894,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":786 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17911,7 +17911,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":787 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -17925,7 +17925,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":786 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17944,7 +17944,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":789 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17961,7 +17961,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":790 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":790 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -17975,7 +17975,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":789 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17994,7 +17994,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":792 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18009,7 +18009,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":793 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18019,7 +18019,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); if (__pyx_t_1) { - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":794 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -18032,7 +18032,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_t_2); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":793 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18041,7 +18041,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":796 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -18055,7 +18055,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":792 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18070,7 +18070,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":995 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18084,7 +18084,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":996 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -18093,7 +18093,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":997 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":997 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -18102,7 +18102,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 997, __pyx_L1_error) - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":995 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18117,7 +18117,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_L0:; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":999 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18132,7 +18132,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1000 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -18141,7 +18141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1001 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18151,7 +18151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = (__pyx_v_base == NULL); if (__pyx_t_1) { - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1002 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -18162,7 +18162,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1001 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18171,7 +18171,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1003 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1003 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -18183,7 +18183,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":999 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18198,7 +18198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18224,7 +18224,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18240,7 +18240,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1009 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< @@ -18249,7 +18249,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1009, __pyx_L3_error) - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18263,7 +18263,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1010 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -18278,7 +18278,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1011 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -18300,7 +18300,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1008 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18316,7 +18316,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1007 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18340,7 +18340,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18366,7 +18366,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18382,7 +18382,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1015 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18391,7 +18391,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1015, __pyx_L3_error) - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18405,7 +18405,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1016 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18420,7 +18420,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1017 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18442,7 +18442,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1014 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18458,7 +18458,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1013 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18482,7 +18482,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18508,7 +18508,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18524,7 +18524,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1021 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18533,7 +18533,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1021, __pyx_L3_error) - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18547,7 +18547,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1022 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18562,7 +18562,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1023 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18584,7 +18584,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1020 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18600,7 +18600,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1019 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18624,7 +18624,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1026 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18635,7 +18635,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1038 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -18645,7 +18645,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1026 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18658,7 +18658,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1041 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18669,7 +18669,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1053 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -18679,7 +18679,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1041 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18692,7 +18692,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1056 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18703,7 +18703,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1063 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1063 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18713,7 +18713,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1056 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18726,7 +18726,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1066 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18737,7 +18737,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1070 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18747,7 +18747,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1066 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18760,7 +18760,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1073 +/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18771,7 +18771,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1077 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -18781,7 +18781,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* ".tox/.pkg/lib/python3.14/site-packages/numpy/__init__.cython-30.pxd":1073 + /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -22526,15 +22526,7 @@ static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); { const struct { const unsigned int length: 10; } index[] = {{2},{68},{35},{54},{37},{60},{24},{52},{26},{34},{29},{33},{45},{22},{15},{179},{37},{30},{32},{1},{1},{1},{1},{1},{8},{5},{6},{15},{23},{25},{7},{6},{2},{6},{35},{9},{30},{50},{39},{34},{8},{40},{21},{20},{32},{22},{30},{37},{5},{12},{8},{20},{8},{15},{3},{15},{17},{6},{18},{4},{7},{4},{1},{9},{17},{18},{5},{8},{4},{5},{15},{2},{2},{1},{4},{5},{6},{9},{5},{5},{10},{5},{10},{5},{7},{6},{7},{4},{8},{12},{1},{2},{2},{2},{10},{5},{12},{6},{5},{13},{5},{8},{1},{8},{7},{4},{10},{1},{6},{6},{4},{8},{4},{7},{4},{2},{5},{3},{36},{6},{4},{3},{5},{5},{2},{2},{14},{11},{10},{19},{14},{12},{10},{17},{13},{8},{12},{10},{12},{19},{5},{4},{5},{4},{8},{4},{4},{6},{1},{8},{5},{6},{6},{1},{6},{4},{1},{2},{2},{5},{2},{2},{5},{791},{1}}; - #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >= 0x030e0000 /* compression: zstd (1644 bytes) */ -const char* const cstring = "(\265/\375`\205\n\0253\000ZQ`\020E\000\257\266\r\374?*\241\337\227\255Q\t\225P\t\225\320\257~\365\253\222\3168\322X\311\211\366J\271\357\377N\221\353\332p\210\303\250\305<\006\026O%\000\332\232\007\243$>\213!\n62\t\204y>\360\305\351\261\006\334\000\342\000\356\0007n\334EL\024-}\355gvk\317\350\245Qx\006\235\200DF\260\214\210\367i\227\371\317\354\227\315\274\206\374\261\213\t\021(\243x\301\343\211\036\352\211\325/x\3056\233\245+\252\376\031o\333\026Y\320\226\233\025\242\256w\343+b8\376\306\242n\346<\255\213I\337\321\2301\026=\333\366G\337&I\307\3567\215\305\256\274\325w\346\367D\337\272\217\244\2674Q\303\031\363\354\232o3\215H\235\236#\376xGV\353iu\031k\256\305k\243\336x\217\354_L\243\266\361'\351\2578\243\377\364Lc\227]\034\357\014i\2576\277\216\256\361\306\271v\\#\215\333R\314\216a[\305f:>\276\261\336\031\253s^\257\215~\305\327[\213uB\034][\235z\336\242\276\330\352\353\232\2551\313R\342\206zJzM\313\351\365=\3431\230\223x\316]\344S\273\302u#\244\324Vo6\313Xbd^d>\210J\270\274\204dH$\n\305\244X\332\232?k\364\237\024g\331\334\327V\024\277\330\305\265y-,s\315u\233%/\036u\031\336\344\265\362\257\305\033\206.\277k\330G\030H\332\265;\235\342\016\244\237\332\326lf'\026\255fy\306TZ\335\246\355+\345\333ki6m\311\346\027\271\370\356\032\245t\272\253g)\343g{b^#\276#\221\003Jt\025VWm\377\372snk\205HG\256m\275\266\003\n\275\246\225e\230r#\361g\364\307W\326:=X\360t\260.\254\371\333\370\331K\370\257\014\316\256\002\337\330M-n\3761\332)\235\027\277X\256\263\331\342%\353\221?=\361]\307\353\244\327s\253\356\001-(\020\024\tF\230R\003R\323\242\002\221\372\244L\240HP%\030\253\360\3424\003.\000K|\0210V\0050\302\016*\000\212\302\251\005\374\200!\034\026\331\224 #\234\036\214W2\201L\277\"c\000\000P\213\213\025\372\323\215t\232\373p#\034\247}g\263T\252\333\276\373\344\257\335\332\377\351\316\370\365\226\337\265\224\331_\333\021\347\331\3343\245\313\"=KA\355v\267\266u\n\352$\272I\331m\334\326q(p\3366\274m\226\265]\032\227R^yo\266\245\324\374\332\251I\211\202\244\344\257\365j\265\236\230$\271V""\312j?v\304Z\371\232\336\215I\231\341\307@&?q\206\351\321\314\260k%7\265.gw\257\330}T\335\273\312U\251\255\254\257\251\255R\376\335\230\246\240\363r\372>\222RJ\252e\275\227\353yi\277\3667\266\260\245\267\323S\317/\034\317\244\363q>\217\247\241\363i\360NL\007\020h\204\235O\306K\361<6!\347c\361>^\307&\374\2548\036\341\307\004F%\"\200\2129\205\200\350W\362\t\370>6V3\247\t\030\333\013q4\370\0109`\347#\234\331\036\003\217\360\"u\241JP\035T=\251\234N\010\000g\036\220\200\034\241\017\202G\010\003\206\200\001\300\225\017\343\213\361H\274\216\215\360\242\346R\225\2508T4\245\222\352HQ\224\204\225\023\310I\203!\260\003\314\037\350\343\370\250\267`#\354\204\276\216\257\204\027\262\241\241\342u\314x\240\222\315\212\263\021rT9\025r\200\312\247\320\251\343\304\002\202\200\372\233_\010\017$\301f5\243\300c1m2V!\307\343d\25446a\347\3049}x|\027_\206\227\301\2641\000\200@\013\003\253\224o{\323[\260\t/\274\313Tb:\360\035O\233\246\t\306\244\221\021~\274\216'c\032`\312\020\301\010\247JE\205\245H(\030T\351D\342d\r\000\200\240E\010\363\251\341\2501Q\235\244:\251\201\020\250a%ThdDDD\222$Ic1\010\002R\022r\253\007r\342,V\316\330\210\2226\365\250,\373\006\220\027\301\031\247_\302=\315\331\316\224\327p\030\361Rn\354\321\023\307\301\"\255\377\2703ev\313h\330N\276!$\363N\234\242G\231\223\014D\330d\327f\343\034\311\217>\020\334e\362\344\330\023\374nD\217\224\241\363\355\234\005\305hT\220\317a\315\032.\313\263\203\037B\004{&\365E,%\220%\265\231j=\256\220\357E\021\257\247\032\020\340ioq\234\031i\002V@\211\346Y\204\223\023\202\230pw\354V\017l\244W=*\237\315\343\323~cT\204d\366\253@\277\006\205\337B\177\032\013\226\275\377\307\022\262(\240x\243]$\261\376\253\370\3364\344(x\031\r\331\016\223\212v1\025I}\355\031\030\360\330JV\251\3057^\"\023\222\346\003\263\004\014}m\301M|hL}\000r\020/(\2374\215\340\024%Eh\3554\341\376swa\253\266\212\265)W.'\027CkD~\t\214\003F\234\270<\310i\307\212\247-!\247g\345\371\017^\251<\243\313\355_\274fT"; - PyObject *data = __Pyx_DecompressString(cstring, 1644, 3); - if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) - const char* const bytes = __Pyx_PyBytes_AsString(data); - #if !CYTHON_ASSUME_SAFE_MACROS - if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } - #endif - #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (1802 bytes) */ + #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (1802 bytes) */ const char* const cstring = "BZh91AY&SYAy\210\017\000\001\010\177\377\377\357\377\376\177\347\377\327\277\363\377\200\277\377\377\360@@@@@@@@@@@@@\000@\000`\006i\302\321\213\351\210\n\005)N\0142EOD\321\246\006\203S\302\233SL\24350\004\3654\321\202=F@\036\246\2322\030\233I\211\351\251\351\264S\364\202P\2014\320&\215M\251\246\223\023\024\323\3244z\207\250\006@\000\000\000\000\032\003A\246\232\034\000\006\200\000d\000\000\001\220\321\240\000\000\000\000\000\000\003L\210&\223$\032(\375(?S#OQ6\240\r\014\214\214\002\036\240\031\006 \003L\2314\315OHp\000\032\000\001\220\000\000\006CF\200\000\000\000\000\000\000\rH\246j\031\240\2152`\001\032h\3014\300\000\004a12\0314b0C\000\001\243 b\237\2017.\377\257\300\273\267\240\002*\277\342\024\010\020\"\020\213\\\203\200a1Y\021qQ\020\025ru\325;X\364\204EAU\005S7\264F\023ef\363\221\320\t?\270\224\200\221\024a/\320\315\334\320;\202p\036\220\312\250\222H\306\254\213P\221\010\260JG\034\303\276\235\2116f$~}\361\342\037\260\177\023\370O\361\277\376\3227\336}$;\267\317\303\025\276\241d\231$r\034O\233r\026\013\272\253w\014\357\t\342;\365X\034\030\364\377\355\356\274W\301\223W~\264\246\"X\207U\313\200\214\262t\3768s\220HpZ\320D\027\256B\034WQ\370g#\301Z^\255R\236\2020r\235\300\200h\251(\305\351\\\227\3171\343\0007v\366\370\344<6\225\3061\003\236\356\355\375d\345#\030\360\203\006\377/\315\252\001Z\206\366f\206\375\034F\335\355\213\236sa\321\0166\303Q\037]=h\214J\201\345-kT\326\213\241\325,\017\032\326\364N(\230\206{\324#0#0\306\226\277\317\360\374\323I\204\312:\212\371\263u^\354?]G\037\031\261~\236y\211\3624\2543\3009\034wwh?\216/\317\272\263\250s]KC2\333xk\200\376k\264\337\273JX\251\301\2167\257g\360\226\215{\216\2253\327\267\010\235Z\1771\354B&\221+LL\315:\221\262\314\374m\352\331\\?\206\250?]:\357 g\323]\030k\000=}\231\353\357H\000\374D\314w]\250u\337\227Q\315\226\207\362V\032g\217-H\200m\207\271\023\251\026)\345\213h\031`8\222\375\336\010\240\205\t\000\344\n\231M\2230\251H\244\2116\235\330)142\277\311\357\014\203\372\326\3205y|\"\303g\235\340\214Xs6\265*\300-\303\203""\235\320\010S-+\254\312Ye\250'\253e\356\264\353W\262\033\202\271\031l\037\254px\026?A\342\214\034E\021\200#\002\016\276\340Y\010jX\241`>\023\363\000p\000gI\246\000YF\362Y\345\357l\337\275\255K_x8u\367\353\274\224 \260W\3733\032<|\3466\254\023\203\266\342\210\205\202\212\251{\210\233\232\362<+\252AP\354V\2542\271\034b0\367\364\251\323\216\341\0241\241\323\241@*1\223\226\016\202b\304s\"\036\000T =\037c\326\277s\313 \347umn>\324\211\322\355\236\221L\324\342\215]\027\023z\250\243\210{\235H\231\305\003\204\202\252\300\266\361\000\220es\275l\332\222\032\366\222\314\361u\300d\323\305\225\366\340A\350\251\231\330>I\240\355\n\227\271\033\033%\rWNBU\t\014y=\343(\253\r\306\270\226\264\335\264\325a\215c\262\262\274*K\3443,6\242MB\263Z\233\307B\354\316^\006\200\362w\262\250\243\033\210b\027O\t\035~\367\027]NA\222\315'7\357\036\372\027p\025\236\007Q\341j`*\202\246\372\211\314?\325\342~g\027\367\247}\347e\222\305*;j\252*\244_0\325y\266\024T1\202\204b\344\343x\312\026\300|l\273\036(\356[\304>\027\244TU\245b\020\013\001\366\217r\361\355\271\363\2665p\217\213\222\034\250\253qr\030\336\356\233\303\030\207:\351\226\301\311YJ\023\217^\317.\001l\021\250\224m)J\201G\300\313\006\3402\232\n\204\"$&L\220\236jY\232\255\202\271\213nQ\\/\242$\024\376c\2740Dd)\214\225G=\304\357\327i\030^\264@\313\251D\2230:B\330\353\324\212\311A\350\303\225\t\264\013\225TU\024j\212\352\250\025\204\251\207\250\360{`\321\263;IixQD\235\366\223\271\311\337\363\357\233\265\266\331\205\345\245\262r;\002\342=V\255\214\324\301\237\336\307\321\034\024B\226Ch\257-s\020\006/Da\365\332\n\242\250\224\323\272O0\245F\214f\370U\272\212\234*4\031\355\315\265\2628\2611^*Om\261~\274!Qr\220Z!o4\274>\261\342#)\321H*(m\005Mb8\300\314\321\240B\353Qa\031\211>Vs\2527\357x\031\303\"\351\330\226u7\004\026\031[\037S\335l\243\317\316\206pE\311\013y\306m\010\275\034\253\007*\251\027\306\313\016F\331*\215:\223.\032\017G\333\025\023-\344\214^\324\022\3660I\251fK\032\347\343\"\214\346:K:\237\216\2415\233Q\343\314\227\025M\341B2\215Q\020/+Ze3l""\224i\255lo\255\005\224\371R\ry\221\264\340\202C*\330\222\024\350\224W(\244LP\341B\373\201p*\224\356[I\210o\306\307\217p\234\213\"\225M\311'\276N\3264\366\315\\\357\22135w$H&\256\321\312v\224\256\030\035)\341\312@\344\255\214G^\313p\r\275\026\200/=\0229\001\260\033z\025\365|\343C@\261\3646\233HH\204EU:}\0259CZ\2737\275z\030\030\357\370\244\343.\224E\025\233\204\210\2464\177\247(\021k*\2110\234#tQ,\3639\002\211d\204\310\253\006\247\307\366\013\363\375\245\311\362\261N0l\210A\372t\031\300'\"\205\203\237\177\206\310#\247{\320\026\014\340pu3\334\021J\0055y\202\213\227\264\217\024\036\321o\264\006\313ch-\243\222\210\005\312\331\237\273\034.=\241\313m\334\252A\347\356w+\330E\340\377\361p\003\231\013\255\264Q\033\343\367\244\251\333\002\202(\326\027\252\220\310\236\214\263\233\234sDT\250&MI\202\233\357J6\216\0312,\374\244\347Z\221hB]\254\345\207\r\024~\224\255@\306$7\365\007\222\240j\033Q\362i\204\243\320(\263\215Wc\3560\364\306\014\313\25725\030\346Y\226\310\257\242\264\363(\260\021\026|*C\224\306#\206\224\024\207\253\244\323\212\251\023(\035)#C+\274\261u\177\361w$S\205\t\004\027\230\200\360"; PyObject *data = __Pyx_DecompressString(cstring, 1802, 2); if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) diff --git a/tox.ini b/tox.ini index b1edbd7..bf9bf9a 100644 --- a/tox.ini +++ b/tox.ini @@ -9,6 +9,10 @@ extras = all passenv = CONDA_PREFIX OCEANMESH_PREFIX + OCEANMESH_REQUIRE_INPOLY_ACCEL + OCEANMESH_INPOLY_ACCEL_DEBUG + OCEANMESH_INPOLY_ACCEL + OCEANMESH_INPOLY_METHOD setenv = MPLBACKEND = agg OCEANMESH_PREFIX = {env:CONDA_PREFIX:} From 43ae626d90c928fb167b97452cb3ec3363191692 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 17:41:21 -0500 Subject: [PATCH 12/18] adding cython python dep install --- .github/workflows/ci.yml | 27 ++- oceanmesh/geometry/point_in_polygon_.c | 306 ++++++++++++------------- 2 files changed, 179 insertions(+), 154 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ea79bd1..b7c0d81 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,9 +55,34 @@ jobs: openmpi-bin \ libhdf5-dev - - name: Install tox + - name: Install Python build dependencies run: | python -m pip install --upgrade pip + python -m pip install Cython numpy + + - name: Verify Cython inpoly kernel is available + env: + OCEANMESH_INPOLY_ACCEL: "1" + run: | + python -m pip install -e . + python - << 'PY' + import os, importlib + from oceanmesh.geometry import point_in_polygon as pip + + os.environ.pop("OCEANMESH_INPOLY_METHOD", None) + os.environ["OCEANMESH_INPOLY_ACCEL"] = "1" + pip = importlib.reload(pip) + + if not getattr(pip, "_COMPILED_KERNEL_AVAILABLE", False): + raise SystemExit("Cython inpoly2 kernel not available in CI environment") + + print("_COMPILED_KERNEL_AVAILABLE =", pip._COMPILED_KERNEL_AVAILABLE) + from oceanmesh.geometry.point_in_polygon_ import inpoly2_fast + print("inpoly2_fast:", inpoly2_fast) + PY + + - name: Install tox + run: | python -m pip install tox - name: Run tests diff --git a/oceanmesh/geometry/point_in_polygon_.c b/oceanmesh/geometry/point_in_polygon_.c index e3f5979..6ed86b7 100644 --- a/oceanmesh/geometry/point_in_polygon_.c +++ b/oceanmesh/geometry/point_in_polygon_.c @@ -4,17 +4,17 @@ { "distutils": { "depends": [ - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" + "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayobject.h", + "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/_core/include/numpy/arrayscalars.h", + "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarrayobject.h", + "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/_core/include/numpy/ndarraytypes.h", + "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/_core/include/numpy/ufuncobject.h" ], "extra_compile_args": [ "-O3" ], "include_dirs": [ - "/Users/keithroberts/codes/oceanmesh/.tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/_core/include" + "/private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/_core/include" ], "name": "oceanmesh.geometry.point_in_polygon_", "sources": [ @@ -1395,8 +1395,8 @@ static const char *__pyx_filename; static const char* const __pyx_f[] = { "oceanmesh/geometry/point_in_polygon_.pyx", "", - ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", - ".tox/.pkg-cpython312/lib/python3.12/site-packages/Cython/Includes/cpython/type.pxd", + "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd", + "cpython/type.pxd", }; /* #### Code section: utility_code_proto_before_types ### */ /* Atomics.proto (used by UnpackUnboundCMethod) */ @@ -1648,7 +1648,7 @@ typedef struct { /* #### Code section: numeric_typedefs ### */ -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":744 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -1657,7 +1657,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":745 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -1666,7 +1666,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":746 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -1675,7 +1675,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":747 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":747 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -1684,7 +1684,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":749 * ctypedef npy_int64 int64_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -1693,7 +1693,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":750 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -1702,7 +1702,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":751 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -1711,7 +1711,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":752 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":752 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -1720,7 +1720,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":754 * ctypedef npy_uint64 uint64_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -1729,7 +1729,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":755 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":755 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -1738,7 +1738,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":762 * ctypedef double complex complex128_t * * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -1747,7 +1747,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":763 * * ctypedef npy_longlong longlong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -1756,7 +1756,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":765 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -1765,7 +1765,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":766 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -1774,7 +1774,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":768 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -1783,7 +1783,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":769 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -1792,7 +1792,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":770 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -17074,7 +17074,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17085,7 +17085,7 @@ static PyObject *__pyx_unpickle_Enum__set_state(struct __pyx_MemviewEnum_obj *__ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":245 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":245 * @property * cdef inline npy_intp itemsize(self) noexcept nogil: * return PyDataType_ELSIZE(self) # <<<<<<<<<<<<<< @@ -17095,7 +17095,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D __pyx_r = PyDataType_ELSIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":243 * cdef int type_num * * @property # <<<<<<<<<<<<<< @@ -17108,7 +17108,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17119,7 +17119,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_8itemsize_itemsize(PyArray_D static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray_Descr *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":249 * @property * cdef inline npy_intp alignment(self) noexcept nogil: * return PyDataType_ALIGNMENT(self) # <<<<<<<<<<<<<< @@ -17129,7 +17129,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray __pyx_r = PyDataType_ALIGNMENT(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":247 * return PyDataType_ELSIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17142,7 +17142,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_5dtype_9alignment_alignment(PyArray return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17156,7 +17156,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("fields", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":255 * @property * cdef inline object fields(self): * return PyDataType_FIELDS(self) # <<<<<<<<<<<<<< @@ -17169,7 +17169,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc __pyx_r = ((PyObject *)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":253 * # Use fields/names with care as they may be NULL. You must check * # for this using PyDataType_HASFIELDS. * @property # <<<<<<<<<<<<<< @@ -17184,7 +17184,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_6fields_fields(PyArray_Desc return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17198,7 +17198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr PyObject *__pyx_t_1; __Pyx_RefNannySetupContext("names", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":259 * @property * cdef inline tuple names(self): * return PyDataType_NAMES(self) # <<<<<<<<<<<<<< @@ -17211,7 +17211,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr __pyx_r = ((PyObject*)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":257 * return PyDataType_FIELDS(self) * * @property # <<<<<<<<<<<<<< @@ -17226,7 +17226,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17237,7 +17237,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_5dtype_5names_names(PyArray_Descr static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarray(PyArray_Descr *__pyx_v_self) { PyArray_ArrayDescr *__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":266 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":266 * @property * cdef inline PyArray_ArrayDescr* subarray(self) noexcept nogil: * return PyDataType_SUBARRAY(self) # <<<<<<<<<<<<<< @@ -17247,7 +17247,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra __pyx_r = PyDataType_SUBARRAY(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":264 * # valid (the pointer can be NULL). Most users should access * # this field via the inline helper method PyDataType_SHAPE. * @property # <<<<<<<<<<<<<< @@ -17260,7 +17260,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17271,7 +17271,7 @@ static CYTHON_INLINE PyArray_ArrayDescr *__pyx_f_5numpy_5dtype_8subarray_subarra static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr *__pyx_v_self) { npy_uint64 __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":271 * cdef inline npy_uint64 flags(self) noexcept nogil: * """The data types flags.""" * return PyDataType_FLAGS(self) # <<<<<<<<<<<<<< @@ -17281,7 +17281,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr __pyx_r = PyDataType_FLAGS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":268 * return PyDataType_SUBARRAY(self) * * @property # <<<<<<<<<<<<<< @@ -17294,7 +17294,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17305,7 +17305,7 @@ static CYTHON_INLINE npy_uint64 __pyx_f_5numpy_5dtype_5flags_flags(PyArray_Descr static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":283 * cdef inline int numiter(self) noexcept nogil: * """The number of arrays that need to be broadcast to the same shape.""" * return PyArray_MultiIter_NUMITER(self) # <<<<<<<<<<<<<< @@ -17315,7 +17315,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti __pyx_r = PyArray_MultiIter_NUMITER(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":280 * ctypedef class numpy.broadcast [object PyArrayMultiIterObject, check_size ignore]: * * @property # <<<<<<<<<<<<<< @@ -17328,7 +17328,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17339,7 +17339,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_7numiter_numiter(PyArrayMulti static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":288 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":288 * cdef inline npy_intp size(self) noexcept nogil: * """The total broadcasted size.""" * return PyArray_MultiIter_SIZE(self) # <<<<<<<<<<<<<< @@ -17349,7 +17349,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI __pyx_r = PyArray_MultiIter_SIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":285 * return PyArray_MultiIter_NUMITER(self) * * @property # <<<<<<<<<<<<<< @@ -17362,7 +17362,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17373,7 +17373,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_4size_size(PyArrayMultiI static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMultiIterObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":293 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":293 * cdef inline npy_intp index(self) noexcept nogil: * """The current (1-d) index into the broadcasted result.""" * return PyArray_MultiIter_INDEX(self) # <<<<<<<<<<<<<< @@ -17383,7 +17383,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult __pyx_r = PyArray_MultiIter_INDEX(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":290 * return PyArray_MultiIter_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17396,7 +17396,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17407,7 +17407,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_9broadcast_5index_index(PyArrayMult static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":298 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":298 * cdef inline int nd(self) noexcept nogil: * """The number of dimensions in the broadcasted result.""" * return PyArray_MultiIter_NDIM(self) # <<<<<<<<<<<<<< @@ -17417,7 +17417,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject __pyx_r = PyArray_MultiIter_NDIM(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":295 * return PyArray_MultiIter_INDEX(self) * * @property # <<<<<<<<<<<<<< @@ -17430,7 +17430,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17441,7 +17441,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_9broadcast_2nd_nd(PyArrayMultiIterObject static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions(PyArrayMultiIterObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":303 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":303 * cdef inline npy_intp* dimensions(self) noexcept nogil: * """The shape of the broadcasted result.""" * return PyArray_MultiIter_DIMS(self) # <<<<<<<<<<<<<< @@ -17451,7 +17451,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions __pyx_r = PyArray_MultiIter_DIMS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":300 * return PyArray_MultiIter_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17464,7 +17464,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17475,7 +17475,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_9broadcast_10dimensions_dimensions static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiIterObject *__pyx_v_self) { void **__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":309 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":309 * """An array of iterator objects that holds the iterators for the arrays to be broadcast together. * On return, the iterators are adjusted for broadcasting.""" * return PyArray_MultiIter_ITERS(self) # <<<<<<<<<<<<<< @@ -17485,7 +17485,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI __pyx_r = PyArray_MultiIter_ITERS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":305 * return PyArray_MultiIter_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17498,7 +17498,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17509,7 +17509,7 @@ static CYTHON_INLINE void **__pyx_f_5numpy_9broadcast_5iters_iters(PyArrayMultiI static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject *__pyx_v_self) { PyObject *__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":327 * """Returns a borrowed reference to the object owning the data/memory. * """ * return PyArray_BASE(self) # <<<<<<<<<<<<<< @@ -17519,7 +17519,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject __pyx_r = PyArray_BASE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":323 * # Instead, we use properties that map to the corresponding C-API functions. * * @property # <<<<<<<<<<<<<< @@ -17532,7 +17532,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_7ndarray_4base_base(PyArrayObject return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17546,7 +17546,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray PyArray_Descr *__pyx_t_1; __Pyx_RefNannySetupContext("descr", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":333 * """Returns an owned reference to the dtype of the array. * """ * return PyArray_DESCR(self) # <<<<<<<<<<<<<< @@ -17559,7 +17559,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray __pyx_r = ((PyArray_Descr *)__pyx_t_1); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":329 * return PyArray_BASE(self) * * @property # <<<<<<<<<<<<<< @@ -17574,7 +17574,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17585,7 +17585,7 @@ static CYTHON_INLINE PyArray_Descr *__pyx_f_5numpy_7ndarray_5descr_descr(PyArray static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx_v_self) { int __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":339 * """Returns the number of dimensions in the array. * """ * return PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -17595,7 +17595,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx __pyx_r = PyArray_NDIM(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":335 * return PyArray_DESCR(self) * * @property # <<<<<<<<<<<<<< @@ -17608,7 +17608,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17619,7 +17619,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_7ndarray_4ndim_ndim(PyArrayObject *__pyx static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":347 * Can return NULL for 0-dimensional arrays. * """ * return PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -17629,7 +17629,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec __pyx_r = PyArray_DIMS(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":341 * return PyArray_NDIM(self) * * @property # <<<<<<<<<<<<<< @@ -17642,7 +17642,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17653,7 +17653,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_5shape_shape(PyArrayObjec static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayObject *__pyx_v_self) { npy_intp *__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":354 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":354 * The number of elements matches the number of dimensions of the array (ndim). * """ * return PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -17663,7 +17663,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO __pyx_r = PyArray_STRIDES(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":349 * return PyArray_DIMS(self) * * @property # <<<<<<<<<<<<<< @@ -17676,7 +17676,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17687,7 +17687,7 @@ static CYTHON_INLINE npy_intp *__pyx_f_5numpy_7ndarray_7strides_strides(PyArrayO static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject *__pyx_v_self) { npy_intp __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":360 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":360 * """Returns the total size (in number of elements) of the array. * """ * return PyArray_SIZE(self) # <<<<<<<<<<<<<< @@ -17697,7 +17697,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * __pyx_r = PyArray_SIZE(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":356 * return PyArray_STRIDES(self) * * @property # <<<<<<<<<<<<<< @@ -17710,7 +17710,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17721,7 +17721,7 @@ static CYTHON_INLINE npy_intp __pyx_f_5numpy_7ndarray_4size_size(PyArrayObject * static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__pyx_v_self) { char *__pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":369 * of `PyArray_DATA()` instead, which returns a 'void*'. * """ * return PyArray_BYTES(self) # <<<<<<<<<<<<<< @@ -17731,7 +17731,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p __pyx_r = PyArray_BYTES(__pyx_v_self); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":362 * return PyArray_SIZE(self) * * @property # <<<<<<<<<<<<<< @@ -17744,7 +17744,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy_7ndarray_4data_data(PyArrayObject *__p return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17761,7 +17761,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":778 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -17775,7 +17775,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":777 * ctypedef long double complex clongdouble_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -17794,7 +17794,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17811,7 +17811,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":781 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":781 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -17825,7 +17825,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":780 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -17844,7 +17844,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17861,7 +17861,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":784 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -17875,7 +17875,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":783 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -17894,7 +17894,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17911,7 +17911,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":787 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -17925,7 +17925,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":786 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -17944,7 +17944,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17961,7 +17961,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ int __pyx_clineno = 0; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":790 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":790 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -17975,7 +17975,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":789 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -17994,7 +17994,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18009,7 +18009,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ PyObject *__pyx_t_2; __Pyx_RefNannySetupContext("PyDataType_SHAPE", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18019,7 +18019,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_t_1 = PyDataType_HASSUBARRAY(__pyx_v_d); if (__pyx_t_1) { - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":794 * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): * return d.subarray.shape # <<<<<<<<<<<<<< @@ -18032,7 +18032,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ __pyx_r = ((PyObject*)__pyx_t_2); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":793 * * cdef inline tuple PyDataType_SHAPE(dtype d): * if PyDataType_HASSUBARRAY(d): # <<<<<<<<<<<<<< @@ -18041,7 +18041,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ */ } - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":796 * return d.subarray.shape * else: * return () # <<<<<<<<<<<<<< @@ -18055,7 +18055,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ goto __pyx_L0; } - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":792 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline tuple PyDataType_SHAPE(dtype d): # <<<<<<<<<<<<<< @@ -18070,7 +18070,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyDataType_SHAPE(PyArray_Descr *__ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18084,7 +18084,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a const char *__pyx_filename = NULL; int __pyx_clineno = 0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":996 * * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! # <<<<<<<<<<<<<< @@ -18093,7 +18093,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_INCREF(__pyx_v_base); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":997 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":997 * cdef inline void set_array_base(ndarray arr, object base) except *: * Py_INCREF(base) # important to do this before stealing the reference below! * PyArray_SetBaseObject(arr, base) # <<<<<<<<<<<<<< @@ -18102,7 +18102,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_t_1 = PyArray_SetBaseObject(__pyx_v_arr, __pyx_v_base); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 997, __pyx_L1_error) - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":995 * int _import_umath() except -1 * * cdef inline void set_array_base(ndarray arr, object base) except *: # <<<<<<<<<<<<<< @@ -18117,7 +18117,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_L0:; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18132,7 +18132,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1000 * * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) # <<<<<<<<<<<<<< @@ -18141,7 +18141,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ __pyx_v_base = PyArray_BASE(__pyx_v_arr); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18151,7 +18151,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = (__pyx_v_base == NULL); if (__pyx_t_1) { - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1002 * base = PyArray_BASE(arr) * if base is NULL: * return None # <<<<<<<<<<<<<< @@ -18162,7 +18162,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1001 * cdef inline object get_array_base(ndarray arr): * base = PyArray_BASE(arr) * if base is NULL: # <<<<<<<<<<<<<< @@ -18171,7 +18171,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1003 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1003 * if base is NULL: * return None * return base # <<<<<<<<<<<<<< @@ -18183,7 +18183,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = ((PyObject *)__pyx_v_base); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":999 * PyArray_SetBaseObject(arr, base) * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -18198,7 +18198,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18224,7 +18224,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_array", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18240,7 +18240,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1009 * cdef inline int import_array() except -1: * try: * __pyx_import_array() # <<<<<<<<<<<<<< @@ -18249,7 +18249,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1009, __pyx_L3_error) - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18263,7 +18263,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1010 * try: * __pyx_import_array() * except Exception: # <<<<<<<<<<<<<< @@ -18278,7 +18278,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1011 * __pyx_import_array() * except Exception: * raise ImportError("numpy._core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -18300,7 +18300,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1008 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -18316,7 +18316,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1007 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -18340,7 +18340,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18366,7 +18366,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_umath", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18382,7 +18382,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1015 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18391,7 +18391,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1015, __pyx_L3_error) - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18405,7 +18405,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1016 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18420,7 +18420,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1017 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18442,7 +18442,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1014 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -18458,7 +18458,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1013 * raise ImportError("numpy._core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -18482,7 +18482,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18508,7 +18508,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { int __pyx_clineno = 0; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18524,7 +18524,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1021 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -18533,7 +18533,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(2, 1021, __pyx_L3_error) - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18547,7 +18547,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L8_try_end; __pyx_L3_error:; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1022 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -18562,7 +18562,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_6); __Pyx_XGOTREF(__pyx_t_7); - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1023 * _import_umath() * except Exception: * raise ImportError("numpy._core.umath failed to import") # <<<<<<<<<<<<<< @@ -18584,7 +18584,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { } goto __pyx_L5_except_error; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1020 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -18600,7 +18600,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __pyx_L8_try_end:; } - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1019 * raise ImportError("numpy._core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -18624,7 +18624,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18635,7 +18635,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1038 * bool * """ * return PyObject_TypeCheck(obj, &PyTimedeltaArrType_Type) # <<<<<<<<<<<<<< @@ -18645,7 +18645,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyTimedeltaArrType_Type)); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1026 * * * cdef inline bint is_timedelta64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18658,7 +18658,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18669,7 +18669,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_timedelta64_object(PyObject *__pyx_v_ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_obj) { int __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1053 * bool * """ * return PyObject_TypeCheck(obj, &PyDatetimeArrType_Type) # <<<<<<<<<<<<<< @@ -18679,7 +18679,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o __pyx_r = PyObject_TypeCheck(__pyx_v_obj, (&PyDatetimeArrType_Type)); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1041 * * * cdef inline bint is_datetime64_object(object obj) noexcept: # <<<<<<<<<<<<<< @@ -18692,7 +18692,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18703,7 +18703,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_is_datetime64_object(PyObject *__pyx_v_o static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject *__pyx_v_obj) { npy_datetime __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1063 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1063 * also needed. That can be found using `get_datetime64_unit`. * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18713,7 +18713,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * __pyx_r = ((PyDatetimeScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1056 * * * cdef inline npy_datetime get_datetime64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18726,7 +18726,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18737,7 +18737,7 @@ static CYTHON_INLINE npy_datetime __pyx_f_5numpy_get_datetime64_value(PyObject * static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject *__pyx_v_obj) { npy_timedelta __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1070 * returns the int64 value underlying scalar numpy timedelta64 object * """ * return (obj).obval # <<<<<<<<<<<<<< @@ -18747,7 +18747,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject __pyx_r = ((PyTimedeltaScalarObject *)__pyx_v_obj)->obval; goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1066 * * * cdef inline npy_timedelta get_timedelta64_value(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18760,7 +18760,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject return __pyx_r; } -/* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 +/* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< @@ -18771,7 +18771,7 @@ static CYTHON_INLINE npy_timedelta __pyx_f_5numpy_get_timedelta64_value(PyObject static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObject *__pyx_v_obj) { NPY_DATETIMEUNIT __pyx_r; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1077 * returns the unit part of the dtype for a numpy datetime64 object. * """ * return (obj).obmeta.base # <<<<<<<<<<<<<< @@ -18781,7 +18781,7 @@ static CYTHON_INLINE NPY_DATETIMEUNIT __pyx_f_5numpy_get_datetime64_unit(PyObjec __pyx_r = ((NPY_DATETIMEUNIT)((PyDatetimeScalarObject *)__pyx_v_obj)->obmeta.base); goto __pyx_L0; - /* ".tox/.pkg-cpython312/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 + /* "../../../../private/var/folders/r2/r_0zd0zn4ns8dc1_f421l03h0000gn/T/build-env-xpakl00k/lib/python3.12/site-packages/numpy/__init__.cython-30.pxd":1073 * * * cdef inline NPY_DATETIMEUNIT get_datetime64_unit(object obj) noexcept nogil: # <<<<<<<<<<<<<< From e9efba8e92bff69de3c40fe756cdce78458026da Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 17:56:53 -0500 Subject: [PATCH 13/18] fixing linux CI builds --- .github/workflows/ci.yml | 1 + .github/workflows/publish-testpypi.yml | 1 + .github/workflows/publish.yml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7c0d81..951681d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -143,6 +143,7 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" CIBW_BEFORE_ALL_LINUX: | diff --git a/.github/workflows/publish-testpypi.yml b/.github/workflows/publish-testpypi.yml index 5111ad5..a6cd582 100644 --- a/.github/workflows/publish-testpypi.yml +++ b/.github/workflows/publish-testpypi.yml @@ -61,6 +61,7 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" CIBW_BEFORE_ALL_LINUX: | diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 2e60337..97b4d21 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -81,6 +81,7 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" CIBW_BEFORE_ALL_LINUX: | From fdd0d62b41c7a6bb10b3b09b4644f4d0d9006df5 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 18:04:01 -0500 Subject: [PATCH 14/18] debugging linux build --- .github/workflows/ci.yml | 3 ++- .github/workflows/publish-testpypi.yml | 3 ++- .github/workflows/publish.yml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 951681d..bd1217e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -143,9 +143,10 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_34_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" + CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel -v show {wheel} && auditwheel repair -w {dest_dir} {wheel}" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 diff --git a/.github/workflows/publish-testpypi.yml b/.github/workflows/publish-testpypi.yml index a6cd582..4711d5f 100644 --- a/.github/workflows/publish-testpypi.yml +++ b/.github/workflows/publish-testpypi.yml @@ -61,9 +61,10 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_34_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" + CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel -v show {wheel} && auditwheel repair -w {dest_dir} {wheel}" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 97b4d21..68c5883 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -81,9 +81,10 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_34_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" + CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel -v show {wheel} && auditwheel repair -w {dest_dir} {wheel}" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 From 747851658f3745a4adef7d23d74d4b365e7cb6c2 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 18:31:37 -0500 Subject: [PATCH 15/18] Fix Linux wheels manylinux_2_28 by building GMP/MPFR from source --- .github/workflows/publish.yml | 24 +++++-- tools/build_deps_linux.sh | 72 ++++++++++++++++++++ tools/verify_manylinux_wheels.py | 111 +++++++++++++++++++++++++++++++ 3 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 tools/build_deps_linux.sh create mode 100644 tools/verify_manylinux_wheels.py diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 68c5883..9570c78 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -81,17 +81,20 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_34_x86_64:2025.04.19-1 + CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" - CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel -v show {wheel} && auditwheel repair -w {dest_dir} {wheel}" + CIBW_ENVIRONMENT_LINUX: "OCEANMESH_PREFIX=/opt/om CPATH=/opt/om/include:/opt/omhdr/include LIBRARY_PATH=/opt/om/lib LD_LIBRARY_PATH=/opt/om/lib CMAKE_PREFIX_PATH=/opt/om" + CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel repair -w {dest_dir} {wheel}" CIBW_BEFORE_ALL_LINUX: | set -eux curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 tar -xjf micromamba.tar.bz2 bin/micromamba mv bin/micromamba /usr/local/bin/micromamba - micromamba create -y -p /opt/om -c conda-forge \ - cgal boost-cpp gmp mpfr eigen + bash tools/build_deps_linux.sh /opt/om + # Keep micromamba for headers-only deps (CGAL/Boost/Eigen). Do NOT use conda-provided GMP/MPFR on Linux. + micromamba create -y -p /opt/omhdr -c conda-forge \ + cgal boost-cpp eigen CIBW_BEFORE_ALL_MACOS: | set -eux micromamba create -y -p "$HOME/om" -c conda-forge \ @@ -105,6 +108,19 @@ jobs: run: | python -m cibuildwheel --output-dir dist + - name: Verify Linux wheel is manylinux-compatible + if: matrix.os == 'ubuntu-latest' + shell: bash + env: + MAX_GLIBC: "2.28" + run: | + set -euxo pipefail + python -m pip install --upgrade pip + python -m pip install auditwheel==6.* + sudo apt-get update + sudo apt-get install -y patchelf + python tools/verify_manylinux_wheels.py dist --max-glibc "${MAX_GLIBC}" + - name: Upload wheel artifacts uses: actions/upload-artifact@v4 with: diff --git a/tools/build_deps_linux.sh b/tools/build_deps_linux.sh new file mode 100644 index 0000000..8436ca9 --- /dev/null +++ b/tools/build_deps_linux.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +set -euxo pipefail + +PREFIX="${1:-/opt/om}" + +GMP_VERSION="6.3.0" +MPFR_VERSION="4.2.1" + +GMP_URL="https://ftp.gnu.org/gnu/gmp/gmp-${GMP_VERSION}.tar.xz" +MPFR_URL="https://ftp.gnu.org/gnu/mpfr/mpfr-${MPFR_VERSION}.tar.xz" + +install_build_prereqs() { + if command -v yum >/dev/null 2>&1; then + yum -y install m4 + elif command -v dnf >/dev/null 2>&1; then + dnf -y install m4 + else + echo "Neither yum nor dnf found; cannot install build prerequisites" >&2 + exit 2 + fi +} + +build_one() { + local name="$1" + local version="$2" + local url="$3" + + local workdir + workdir="/tmp/build-${name}" + rm -rf "$workdir" + mkdir -p "$workdir" + pushd "$workdir" >/dev/null + + curl -fsSL "$url" -o "${name}-${version}.tar.xz" + tar -xf "${name}-${version}.tar.xz" + + pushd "${name}-${version}" >/dev/null + + if [ "$name" = "gmp" ]; then + ./configure \ + --prefix="$PREFIX" \ + --enable-shared \ + --disable-static \ + --enable-cxx \ + --with-pic + elif [ "$name" = "mpfr" ]; then + ./configure \ + --prefix="$PREFIX" \ + --with-gmp="$PREFIX" \ + --enable-shared \ + --disable-static \ + --with-pic + else + echo "Unknown dep: $name" >&2 + exit 2 + fi + + make -j"$(nproc)" + make install + + popd >/dev/null + popd >/dev/null +} + +mkdir -p "$PREFIX" +install_build_prereqs + +build_one gmp "$GMP_VERSION" "$GMP_URL" +build_one mpfr "$MPFR_VERSION" "$MPFR_URL" + +echo "Built deps installed into: $PREFIX" +ls -la "$PREFIX/lib" | head diff --git a/tools/verify_manylinux_wheels.py b/tools/verify_manylinux_wheels.py new file mode 100644 index 0000000..4996476 --- /dev/null +++ b/tools/verify_manylinux_wheels.py @@ -0,0 +1,111 @@ +from __future__ import annotations + +import argparse +import re +import subprocess +import sys +import zipfile +from pathlib import Path + + +def _parse_glibc_symbols(auditwheel_verbose_output: str) -> tuple[int, int] | None: + matches = re.findall(r"GLIBC_(\d+)\.(\d+)", auditwheel_verbose_output) + if not matches: + return None + versions = [(int(major), int(minor)) for major, minor in matches] + return max(versions) + + +def _run_auditwheel_show_verbose(wheel_path: Path) -> str: + return subprocess.check_output( + [sys.executable, "-m", "auditwheel", "show", "-v", str(wheel_path)], + text=True, + stderr=subprocess.STDOUT, + ) + + +def _wheel_contains_shared_lib(wheel_path: Path, needle: str) -> bool: + # auditwheel typically vendors libs under something like: + # .libs/libgmp-....so + # so we just search for the substring in zip members. + with zipfile.ZipFile(wheel_path, "r") as zf: + for name in zf.namelist(): + # Bundled libs are commonly version-suffixed (e.g. .so.10, .so.6). + if needle in name and ".so" in name: + return True + return False + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument( + "dist_dir", + type=Path, + help="Directory containing built wheels (e.g. dist/)", + ) + parser.add_argument( + "--max-glibc", + default="2.28", + help="Maximum allowed GLIBC symbol version (default: 2.28)", + ) + args = parser.parse_args() + + max_glibc_parts = args.max_glibc.split(".") + if len(max_glibc_parts) != 2: + raise SystemExit("--max-glibc must look like '2.28'") + + max_allowed = (int(max_glibc_parts[0]), int(max_glibc_parts[1])) + + wheels = sorted(args.dist_dir.glob("*.whl")) + linux_wheels = [ + w + for w in wheels + if "linux" in w.name and "x86_64" in w.name and "musllinux" not in w.name + ] + + if not linux_wheels: + raise SystemExit(f"No Linux x86_64 wheels found in {args.dist_dir}") + + failed = False + + for wheel in linux_wheels: + print(f"\n=== Checking wheel: {wheel.name} ===") + + if "manylinux" not in wheel.name: + print("ERROR: wheel filename does not include a manylinux tag") + failed = True + + if "linux_x86_64" in wheel.name and "manylinux" not in wheel.name: + print("ERROR: wheel appears to be plain linux_x86_64 (not manylinux)") + failed = True + + out = _run_auditwheel_show_verbose(wheel) + print(out) + + max_seen = _parse_glibc_symbols(out) + if max_seen is not None and max_seen > max_allowed: + print( + f"ERROR: wheel references too-new GLIBC symbols: " + f"max seen GLIBC_{max_seen[0]}.{max_seen[1]} > allowed GLIBC_{max_allowed[0]}.{max_allowed[1]}" + ) + failed = True + + # Ensure auditwheel actually bundled GMP/MPFR into the wheel + has_gmp = _wheel_contains_shared_lib(wheel, "libgmp") + has_mpfr = _wheel_contains_shared_lib(wheel, "libmpfr") + + if not has_gmp: + print("ERROR: bundled libgmp*.so not found inside wheel") + failed = True + if not has_mpfr: + print("ERROR: bundled libmpfr*.so not found inside wheel") + failed = True + + if has_gmp and has_mpfr: + print("OK: wheel contains bundled libgmp + libmpfr") + + return 1 if failed else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From f9a3933436d1cb74e42826aec0541adca441e251 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 19:31:53 -0500 Subject: [PATCH 16/18] only build mac-os latest for now --- .github/workflows/ci.yml | 4 +-- .github/workflows/publish-testpypi.yml | 4 +-- .github/workflows/publish.yml | 34 ++------------------------ 3 files changed, 6 insertions(+), 36 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd1217e..db90f55 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,7 +95,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-latest] steps: - uses: actions/checkout@v4 @@ -199,7 +199,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-latest] steps: - name: Set up Python diff --git a/.github/workflows/publish-testpypi.yml b/.github/workflows/publish-testpypi.yml index 4711d5f..6493b32 100644 --- a/.github/workflows/publish-testpypi.yml +++ b/.github/workflows/publish-testpypi.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-latest] steps: - uses: actions/checkout@v4 @@ -98,7 +98,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-latest] steps: - name: Set up Python diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 9570c78..eb5f0ff 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -33,7 +33,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-latest] steps: - uses: actions/checkout@v4 @@ -81,46 +81,16 @@ jobs: env: # Use a local prefix so setup.py can find include/lib without relying on system installs. # cibuildwheel will run these on the build machine (and inside manylinux containers on Linux). - CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.04.19-1 - CIBW_ENVIRONMENT: "OCEANMESH_PREFIX=/opt/om" CIBW_ENVIRONMENT_MACOS: "OCEANMESH_PREFIX=$HOME/om" - CIBW_ENVIRONMENT_LINUX: "OCEANMESH_PREFIX=/opt/om CPATH=/opt/om/include:/opt/omhdr/include LIBRARY_PATH=/opt/om/lib LD_LIBRARY_PATH=/opt/om/lib CMAKE_PREFIX_PATH=/opt/om" - CIBW_REPAIR_WHEEL_COMMAND_LINUX: "auditwheel repair -w {dest_dir} {wheel}" - CIBW_BEFORE_ALL_LINUX: | - set -eux - curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest -o micromamba.tar.bz2 - tar -xjf micromamba.tar.bz2 bin/micromamba - mv bin/micromamba /usr/local/bin/micromamba - bash tools/build_deps_linux.sh /opt/om - # Keep micromamba for headers-only deps (CGAL/Boost/Eigen). Do NOT use conda-provided GMP/MPFR on Linux. - micromamba create -y -p /opt/omhdr -c conda-forge \ - cgal boost-cpp eigen CIBW_BEFORE_ALL_MACOS: | set -eux micromamba create -y -p "$HOME/om" -c conda-forge \ cgal boost-cpp gmp mpfr eigen - CIBW_BEFORE_ALL_WINDOWS: | - micromamba create -y -p C:\\om -c conda-forge cgal boost-cpp gmp mpfr eigen - CIBW_ENVIRONMENT_WINDOWS: "OCEANMESH_PREFIX=C:\\om" # Repair wheels to bundle shared libs. CIBW_REPAIR_WHEEL_COMMAND_MACOS: "python -m pip install delocate && delocate-wheel -w {dest_dir} -v {wheel}" - CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "python -m pip install delvewheel && delvewheel repair -w {dest_dir} {wheel}" run: | python -m cibuildwheel --output-dir dist - - name: Verify Linux wheel is manylinux-compatible - if: matrix.os == 'ubuntu-latest' - shell: bash - env: - MAX_GLIBC: "2.28" - run: | - set -euxo pipefail - python -m pip install --upgrade pip - python -m pip install auditwheel==6.* - sudo apt-get update - sudo apt-get install -y patchelf - python tools/verify_manylinux_wheels.py dist --max-glibc "${MAX_GLIBC}" - - name: Upload wheel artifacts uses: actions/upload-artifact@v4 with: @@ -130,7 +100,7 @@ jobs: build_sdist: name: Build sdist needs: [guard_tag_on_default_branch] - runs-on: ubuntu-latest + runs-on: macos-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 From faae9b09ea3303a767724a00fa94d1012047fa88 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 19:50:31 -0500 Subject: [PATCH 17/18] adding missing image and clarifying install --- README.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 91 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 252a894..19dc757 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,8 @@ After that, install or update OceanMesh with pip (recommended for most users): pip install -U oceanmesh ``` +Prebuilt wheels are available for Apple Silicon (M1+) via `pip`. + On some clusters/HPC in order to install CGAL, you may need to load/install [gmp](https://gmplib.org/) and [mpfr](https://www.mpfr.org/). For example: ```bash @@ -496,7 +498,93 @@ plt.show() ### 6.2 Global and Multiscale Meshing -Global meshes are defined in WGS84 but meshed in a stereographic projection. Regional refinement can be added as additional domains. +Global meshes are defined in EPSG:4326 but meshed in a stereographic projection. Regional refinement can be added as additional domains. + +#### Global mesh generation (two-step: EPSG:4326 sizing → stereographic meshing) + +Global mesh generation is done in two steps: + +1. Define the shoreline and sizing functions in EPSG:4326. +2. Generate the mesh in a stereographic projection using a stereographic coastline. + +The repository includes example global shoreline shapefiles under `tests/global/`: + +- `tests/global/global_latlon.shp`: shoreline in EPSG:4326 (lon/lat) +- `tests/global/global_stereo.shp`: shoreline already transformed for stereographic meshing + +Note: `global_stereo.shp` can be produced using `global_tag()` in pyPoseidon: +https://github.com/ec-jrc/pyPoseidon/blob/9cfd3bbf5598c810004def83b1f43dc5149addd0/pyposeidon/boundary.py#L452 + + + +```python +import numpy as np +import oceanmesh as om +from oceanmesh.region import to_lat_lon +import matplotlib.pyplot as plt + + +def crosses_dateline(lon1, lon2): + return abs(lon1 - lon2) > 180 + + +def filter_triangles(points_lonlat, cells): + """Drop triangles that cross the dateline to avoid plot artifacts.""" + filtered = [] + for cell in cells: + p1, p2, p3 = ( + points_lonlat[cell[0]], + points_lonlat[cell[1]], + points_lonlat[cell[2]], + ) + if not ( + crosses_dateline(p1[0], p2[0]) + or crosses_dateline(p2[0], p3[0]) + or crosses_dateline(p3[0], p1[0]) + ): + filtered.append(cell) + return filtered + + +# WGS84 shoreline and stereographic shoreline +fname_wgs84 = "tests/global/global_latlon.shp" +fname_stereo = "tests/global/global_stereo.shp" + +extent = om.Region(extent=(-180.0, 180.0, -89.0, 90.0), crs=4326) + +# 1) Define sizing functions in WGS84 +min_edge_length = 0.5 +shoreline = om.Shoreline(fname_wgs84, extent.bbox, min_edge_length) +edge_length = om.distance_sizing_function(shoreline, rate=0.11) + +# 2) Mesh in stereographic projection using a stereographic shoreline +shoreline_stereo = om.Shoreline(fname_stereo, extent.bbox, min_edge_length, stereo=True) +domain = om.signed_distance_function(shoreline_stereo) + +points, cells = om.generate_mesh(domain, edge_length, stereo=True, max_iter=100) + +# Clean up and smooth +points, cells = om.make_mesh_boundaries_traversable(points, cells) +points, cells = om.delete_faces_connected_to_one_face(points, cells) +points, cells = om.laplacian2(points, cells, max_iter=100) + +# Convert back to lon/lat for plotting +lon, lat = to_lat_lon(points[:, 0], points[:, 1]) +tri_cells = filter_triangles(np.array([lon, lat]).T, cells) + +fig, ax, pc = edge_length.plot( + holding=True, + plot_colorbar=True, + cbarlabel="Resolution in °", + cmap="magma", +) +ax.triplot(lon, lat, tri_cells, color="w", linewidth=0.25) +plt.tight_layout() +plt.show() +``` + +![Global](docs/images/global_mesh_v1.png) + @@ -547,22 +635,9 @@ points, cells = om.generate_multiscale_mesh( ``` ![Global Regional Multiscale](docs/images/test_global_regional_multiscale.png) -*The image shows the global mesh with a refined Australia region.* - - +*The image shows the global mesh with a refined Australia region. -```python -# Global mesh generation only (stereographic meshing) -import oceanmesh as om -from oceanmesh.region import to_lat_lon -fname = "tests/global/global_latlon.shp" -fname2 = "tests/global/global_stereo.shp" -region = om.Region(extent=(-180.00, 180.00, -89.00, 90.00), crs=4326) -shore = om.Shoreline(fname, region.bbox, 0.5) -edge = om.distance_sizing_function(shore, rate=0.11) -domain = om.signed_distance_function(om.Shoreline(fname2, region.bbox, 0.5, stereo=True)) -points, cells = om.generate_mesh(domain, edge, stereo=True, max_iter=100) -``` +See the tests in the `tests/` folder for more inspiration; work is ongoing on this package. [Back to top](#table-of-contents) From 88faf91205b9234cd3f32adeadcbb86a18c46801 Mon Sep 17 00:00:00 2001 From: Keith Roberts Date: Sat, 3 Jan 2026 19:51:44 -0500 Subject: [PATCH 18/18] adding image --- docs/images/global_mesh_v1.png | Bin 0 -> 1762296 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/images/global_mesh_v1.png diff --git a/docs/images/global_mesh_v1.png b/docs/images/global_mesh_v1.png new file mode 100644 index 0000000000000000000000000000000000000000..63fc288ee1a9c87d6b99739c8f81988412f64bdb GIT binary patch literal 1762296 zcmdqIWl&sA7cNQy0TP@L+#$H@pb72}9D;iwxI4k!Velb%aCe!&1PBaaf(Hp27+``k zxSVXWaIbk0em4yCM zBskaVBqI6E@gPGa6PjR$-7_K^S$u2fAsdOE7-LK&ODb91)^H-?>2IH9h?O_@_sxG- z^w#!V1TL(cT|taJ1J>#)YHxfk_O2E5{uHoYPUz;rB_H7d_%CI#2{B~;eG%Y>&9c7z zcP_?>Vk`z(1U>fudc~>9M&SHM72jSn3`YOEDE4MX+Pdt2)a#+5?9TA7TCpR#n3=o& zqo|B2F|p}?6s6~R{+#DOhmjNY|A+2czuAA;#TEdv2@0a>Hz!DHRtgdS*I2(Hk_ew> zj$xRXn5-9WzMv(wB41x1PyQD)pavjIKH0|i@^tin^K;{4YeWsnsB8e^^ z#C(}_a--@H-?tg9wQu*gN~t$`q`y{HzCn4xcfaC!+yH|W3y3FakIMI4uZ=6pn3y8}tMglz^V=fSUy+sxW}z;Zd(ll>qHCxbM1XY$b+EZ(P$hH zv`QMue)p5$o^bW?;SwDU6u8fRcj5LZ@=sM3*VR)WWdAj57&5{7r=ZI|tgv&XuqZNf z|0ih2-LMe+;;V10#{-xBN8_mqME|)g`%1`DN3#Q9XX^p0LxFEDz23x5eTeGpKX7T{ z!Z8MJ$kE*phW;H5{W}heXZ+8#Zj_?QegU|D(iL(mf*BcpeR~}Hrtkbb4DJ_-1wNqy zhp*k#uMJt;4O^^t!$FX>$J;PEnAGJ;_8LdRzh{yjdlPTCNW$;u(dCc3mR(Y`t97h5 zamA0<#iOYYyQxpnR<9@hHs=g2hGXB{S>0WwK3-*mUjCP@)>pE7dHZUxBK|rUf3kLL zfD04EJ@?(Y)}v79UQXy9YS#Y?9$93c2TBG1 zVWJyUl0Hq34dwbTFk+NKczWcq;US(wdG}ZUKT#%bhW@`|+B;SL{}mEZuL3i1=wWn7 zW0F5vI!XVDgSDjprF|5PRgf_KyIpIsfQQ@)lAxr?3QUFn14R6KFjsJc5 z@?XA8-1eXDyC75l!vC|$9$N@jZGQZKIC_ExkO=9YAr*Cj8u<(w?;A)Fs$y$%>Aq2L zp)mt3kj5?LBe#e7H6@C-akQ3qkTJq5L81FEdrNIh2N`}*!1JmL>W{iZS%!nPwN6KT zYR)MCd26>vw=osEAK7JT$2Tf}pBu2npTBQ4;2z_Kdqv?EkyL>;e#z084bOJ;IBMCK zgp!R5bsL%U%--1dM{h%qx(SDUhXd@|eas)>?d}hZCOxY|A^sTfo4_F>Z7kz@X#x8u zfL_pmHb1h}fNWrX|0|^26#Quhk!zka_`atxP-=D=q;P)?>L`*1N840;)fB&RFmRC& zb9=r#v2a;kH7p*uT2s%uj6qtr-`Atnk-y-A^(1^Yc&m18LA^f`vG#kjAVYr#x|ZS@ z5D;J<*0|6yHM>yTXu)c6>gxLbvSqfI^_}EQrH_AosOO-TS>xWd*B}{CcrLuM=kqNo zvd0qf_=UP2?`x@>zI)0tlX@@xY6?p4YQqK zEd+*0C-=})-u*B)2%QfF_Rs7ewI-g|Yw?C%9W~8>{O-j}kzSnO*mKdQtAX)=SJv*qSQf!a28?oMZ% zm7VMWXwBj1CTSF*nq+9XpJC&|U~>J(UwzHt?d=TYHdhaqA@HH=?SPa;@09AB88G|| zEnsYmQA4oYF@X!3R!PyqrBpdST_;)0@I&X1aYM&gS_L~QuclK&u)A3OVUkzK$aL)G zdp>OJ0J^ArvZuJ}*{`5AXMy*+^D_LY6}LvxsY@3DAl|yLhWnC^H&1LCb#Es)pq}Z5 z9rZ9?^N(jzQ*bpxjFK_qhn{$zJVJ}?QXCuR9#dda1;=s-`GMar*V$8dJufE#+rH49N;*iP9)s}NBG7XyfS%z-q{3e#O-&?lIPA??- z64F%8ifRs2WBu(7-KoeWLRdAbNfH8Y*V(^K7KqnnEFDHzjrox3m)&7KDQwq%`r6L&t1)7BXOR4qO9^QA-K(Thtc8oWvSPdYr(NLvigVclFE8vY zc%$o-I$CT%(og%&9&OfBkU+>(33)>{4m*(?So%_B&bK{6|9OUQPY-W<)>otY<^Hyz zp9LA78nTVGPQ*q0(J6tA<(I4zdw+8DjmZ8zeGTFy`oNn5*NlfK?MUf!p{INm8s{n^ ziQo2}wT*&a){!lP?GPV><+l;jKi|C=a^&dA@)i{vIH5J0Hu}_NrVU{Z*#iBvs&;we zBc)wEY;BYqLS(O=1T0>tH${iMHS(0wi+1Rz!wkU9brEdmy~dk^X}v*r1u1m>5oMa=~S8MRu7+FuyCuk(+oe09R3rqqt5j^CVT!FTFLy(!F#i#{g4#95Joct zEe3<5R8s|xW@sg$1ZTZoz_sIn&U*5qi10mGc4>$DYFftFET^FU?ayWIKB%5prd@!e ziEgoakywAf|J1CzV>fr;c&n5}fLslafyP-7D8vldmR0Jp(KA^W3wIeMgYxF#RrE$a+DHB{Vd z`S~^Z*ivHp10I@~fcxM!$^6hc#~6cUIFp=t-u|PD_D44OxH7Puy+tTzMqNR*Tr7i2 zCVxk{h1`)tAqJqCR>@w=-4v9XBl|KSEUTM1EXdPhKh(Tq%t&>(#J}o2P8W zPnD-UIG7%fLF$#3fL$n-d>i~Zh)u`cp10^CFl42xIlQ2=!Nw)T=*(1yCQAtNuuA0X zdvSb6W-%n0%M0d7H*EO0Ch>@#pp30$BMBuyZ~@s7%V#vmZr zo@=v8wKU`FA(@L6Mu+IBuX;*BeaPUz?!5E0g_>!?W3rrlEbp#^A2V@T=gywG(94}i zK{e6D5_f$9(;+bA>juwP%L_<$+#a9Oeaw=9D+G`kfotR5MJg!Fjs zQYeT$@<%kv>yP>;!I;8Y_Loh7SW6CpPdM(AU%6Nw;az?B?H?VJEl*SV_n5z-wHH27 zr-!q1{rcX0Bho^hs{lvL|K-TFfDne#XnDMH4ASQ`m3U|={wquH9rgcz;9bw+vLVL^Zw;6Vp5h^Fm!5JffYOOQe*tFMY;sWe8 zHAP=`ynw~|f{!xP;QXb}hI6ELmN+gjPpY=y5ah>NoSz!oJIO!D=`jFXHNQFSr18J7 z%VBCeI?f*Df-DFHoM8G7K$sj#4cb8nNmY$_vQQpb#hmNF5LkHAk`rwL$2SN*nce73BM2K)x8vW(ZlBE zL?wWEZrJmyr$6RLL2b5O*lBEWJwS_3*~;QbFy3pzfuYnmVvp;skQ!eB)R8Zh;dIBS zdc=dryPsrY)^X65hKz8%Jv2wCzgQ(oaImju<4Z+ZaEdY|};0l#-L@p3JM9 zS&tjfaZY^M9Pz3fkGNLiDi%f8lGWRR)|{4-y>qe9AhVfoJY1fD&+WC?NU>FmE6#XR z?8upzz_|#b>U=|x?C(y$xB%_~B($q&Y7Z+cC&301NmZZC@1KG`1wJr>KCNuJo8U{X z#VmWScbWpYsX#|xku+W0IHAyIoWj`TnK=wjm&ete=A&!(>z75Iu`eQwqbzBe3P-Vb zh$4)W+-Vtbi8Dd0YIdi1=~O6sqUD3pmq+he_4`$8+oyf$2L z8K|~T2Xgu{8OjLv*^4I5*efhEiW15_om*Ya&zvW{bi+8p0(=H$9Blx9ZG2olAqo)3 zCLrUg31>=62M2<%`(a)ix3DnBNHF_&rMYWql6>Gk3cKYKt|f<5o_dMF4UNLdw2P-tBgYIbcFVT) z0z`He>z>pneA{~UGxR6>@whe7LMaiil9-2)DqjmXRRiKHlKKjSHR`k8Zh9U<20{#- znRbD04r&8N`ET1@a0ZUbmR(AIyO#ZSESYgFL8ZT4OJ*Dg=WacUT6s4~9>(bI!YT*! zR&UwD$jY-jZypVW?UmD2623cTFskUBNoaVnQ`fd|jiocQPwO@0u&`ST|7gL|*ceeg zVz4TuOsl;l`kcgU+AmlOW$0Sc^l^PAy8W}!#ftkcm29BKPIo9Px+7?ez;QAS{uH=K zhQ{z`;4FjTZIK)c#&lhr>6lkIZuL@?WITzZl{3-X{HjlZqVVpwHGN5lq27m!yZ|6? zmgD*7OPq-9j3ZVXTp%Rt-NsiBm#!2Ne&NQCVYQfPPU;KsHHkZl3i5Qy3Tj&!f+GyKr$2D2_S-hvZ8q`1KK|ItFEyFPKus2 zm1{gfp0BZNO48oM9(Y;jDcC6K;zJ@6^4_(T`_yt3C?@cU-!`DKRAfd6!+}BE&e%Tm zV+jY$XW6JB$3d(`lJ~iZ5!(!+CBO50=1?|tJS?%p(TTX_-9aWMhHO5cF z8fIyBq=1F=l?kp+|7MWyXKU(g@pq}GoG?+TEtdS7VCd4x&UJQWc1Zl|QaeWq0s6$# z@iPs*K;s$knC@B9k6;5ynBGF7&Ko7*D<3&UA@e@B8APYYS-g+4RCBlil)I?6Pibok z_tISA>qQZ|ywxO&JD< zjVgH`SX^ENn2@}4O4c#3Fkdql;%TIsCxd>xb@DHpPjwv6>C1%$vV%cZX9{dV5FfK) zeo7uV$B+sy#}4+$dWSOrMDmt;Ee0XcBuV93%hu}hQO1bKzBr>*@*9RNoa@C)d6@*Z ztccNI+RdvE5p2qY(a$&OWiq(II6hl{8pC$WppCkI1{CY<)NM;VcO6(@8;D!b2S3Rx z8ulwTRkLcJ{MK22hL3J`-IC~A)ZOo($%gLu$3t>P^Zk9B_nf&G(mYk#)@TWezRk3p&#=pO|6+NJNOTM^+Tc3oGo)C{dn7Td5GwF*0%WL%U0B; zL688C$3%QBAM?N+$cn>c_vtimA2QE)p~ktk|EfJl0zQ4Uh(IB(-*(%ALgSiDcWDRB(N)12-kED|i5mO%`GBb%3%h(mm_%%~T0pj8r+FWX- z2LJSVG_I6fo18%hyu~K-WoL^`kz6ru3xl&3T@pFVz0%YEdS*I130oF>1q@C#wCGMe zIQXrL5VpZnd}Sc~a}G+e)x=GfVgvDY2BhGP0>Ner;V#f>E`{|jeW{u&=9a~ zE+l&{2i$g`T=p684N1xS{-aY$xBjKQAfSO;0S_hv_1XZCI>R#3i)bSeOHHQuqv^T} ztvDy8%uReOV1-kQ*A^sf$VZ%+Nm`_@GV)O+3|8@u0r8Rgb=*sK(Qeb6sa;wS_{SK8ZtT&ofiD*wY1n?(cHXJ6=cC@uAG&a(>w_N5T`}46Fd<6` z>iOkAnWd?5@OGJY?Doa zFOle3yi);d+*3Q|Vn-#eIUoU}yo_~Jq@I|5MNR#?fwlZI$t}C(yn~!9i;KKsg=^Ev zny}%(s!L6nu3K+EsjD=Kk!d-9o;yX;OYYv9qV}^`hKxS`5yXz%o)pIH*!?<0x@vdY zPp;5X@9Ev={ClQ)ZR@n}z-YJaJqmc)|C~$KnI4tQWJjdbFIABV|4CG58~sW?C^Td$ z@nW+4b7ln|Qf_@k5#zo=`k-k3Tv|df`xkm2gvTTYwiLQ}Wv{Vj!IUdhE+g6KZr^MT z^BJrlT+oy{&~2uX0)8QmrD2zp5Z{U^qi!r@M31cxUB<^UG!}P$Esk(=Fv~GYqxLb; zESz4JDywas$WuuCWGW`^9qZz4XtG=1HbrrR_O5T)t7P@|G=xr_sqf;BR{F9zhY;f= zvcjM&%Q}_pADe&h4;&s04{d6T%DZ$Tx|W%(8~i>Xy3&tj&CDk?(iX@JtM(R2vbZu5 zk2K{$CS^h_c9t?Uk6cD4 zZ$HEa_bU7{L{$39;^Few+8fg@Lk%1A!X06U5%zaeGM@@Pd1jo%QqD0tX{bnZE`K5= z0Zab%{o^#F{yz;bu>>&_l7w_X=PK!emLf%4$LqglwO&>;f7T&VZd|6vCQ_JICXOnh zNZg6BjMw;|u>kY+R98KnZxV%6_z9lg&A|tvf-Vos){d-wT;h;OeOyeb?e3Z=hRH#S z%qd3IpF{x-^6~s5|KR5HP3G|7cB^am6Nq5v_l)}yo$cR}88$Hd&Fvzu z9&oWES+g@4M9kj%8{c(x<(tXc4eonxa0?F{7p33MovwEVx0!HXaT9Q_Db*g7%{Zc? zZ30GYB_X!r5N`p<2cZ#8-nBtBivYaK!$bO%%xJb@D$$0Gk>ro?E?`Vb+g{gv4kCq1 zV)#o-uw?e=^AIo~ld*gzJqBjpnCRM>?AjRZ+8M3c7;WB|?2EctQ0io@5-)`WDwidX zXeW$~QEz36v6P7^jtVBF!pV~>TY`l$HAz%|eg^_{cIgXR0gY9S7svDLJ>p;H;aKr( zyIr3960+do zef7+)(a84VN(E&+Pz2KS*WZD>SfC6T_N)TWC{&4RkZ|KvdlcR3;nexE7zh>b;dGff z6xNik4%gP7Ub>z71BO4K9Rt!JiTN`aDDWWj+=o+#Q7&Qdm-Nw zteqcY!JLd4cmlN3%0YnTLx8!AQBpDkh_dh0If zTIv~&QZ6q`ehG}WXV@r=p&7e{Qas`NQT~;x8VpdRuBhaS*TvA*%L^;}d3e(m5QHvT zY^2l+&+|0vtja{YG+!PC-^{>lq$OenXKXa{ZF9eQsVnKb-Sk)u(Dv)sb*{L(nUKDx znFIgrIu^%|L6`|zbUxV)g&N11<~kEh>1jH&VsCJb1e4OoHwtVGl|_5m>jW)#JX`R6 zF(^}U@2kgQwHH?wg}oe6HteWYLFwD(&T<*D8b>ynz*`V1jdR=ecBYj}ha^u-uQFL) zEa5f9sh-|=CO{ELvM7$SGUt;lCzR*^uws~Q^Uc_PzcO3;e%}5J1v>~DT#+8~IzQ4v zUU{Ag|5@Yw%{ktc(Ot`gsR!K5vTkQxLX2j#mjwBiCq(?Tsi;^0KFVa2vzxac{OG=w zgSI}@{Vb<`fH2g|1YXycgp<7)^wu>6p!nEJ;kDSe;}IB+h5E%Rd*}nlysYC^SYr+!|lh2{ph!&uLqyJRtl(wA&glehyj+1>P^qYe%rD+ETVj4la$L9X&KOj-C~V zy;`wWeq`zFMaCp0gg?)()7FS#ptmJ8bsCXC9)kBHx?jeehV zY5Z40G@T=#3#RTwFBKP(p-QkLG=siIwx#iXjl(CA7AmWNyE|h9@a3K@_R4D+xsc)kQn&BJnpXv(={CDzLpP&WxVs(Lg zQ*SRX-TmFU8l^P!%jJl!(<<}SS#|Pxd7*;ceWtWZ{1JS5M0h%HUzB~9U;U0vLvx=- zj(!`V;*p`;7zXO4ZVI9e9>yr=Pi_m5a;-@LRecXS67F--r1*< zRbb@wCm)7RO-s9V!5=Gyj`|^o4pnamFxW- zaTG9@4D8MGyB+;Qh?v5pVI#bY&LC>cr4S z99Lt9u$5Pi`PPzo)&d}FNszS=t&L>9r8GgU^$%HjH6L6uLHfIlpn!P*A3U6&LyGWE_T;}-pF01+@BJO66MRyf7<>&ufNP@a%^hH_5Jyt&h&y&9sVRD zAa0TCONiD^;z8`|!tBi>p*SlhI1Xj;)|{s>{gz6Le>&$g*)E zq?yLtfGZKw?A$8dNp8Aq5W{-?+mCDU!H3#JGg~{s z!@d;ERZD)R2&%e?+4B}ruS(ON;`fQ19MUl9ODz=icOk0>#rmRz7NTVCY~9}wv77@R zC(kBfx6?)Tnu01%{YYMqG^1$RI1!Tqr2~hQDa*|8u!3<$x$>4?3f&CJ+#KJdV%b=& zh3>fvRTSCo2X?Zxt3!ulv&Tcxb-}O;;!VCmoZ{}p{vg)3+!1e&szEn+4iln4!RB`c z4$Y}Orhrx#_R}uaa}TpTgGFDLE~i!B#5iWxG4IsqnfSXR9AVcOT8MH$$O4UCd1T_n z3s^EF5oB-7Q-*{ni~ByCR$;?sj4FAcVN$oIFkbz*v2%du9mE{~)0gkIeA?>x=|BRj z%g>MQteTi1_e+~eqRaWj>BT{dz`ga)t?aoRFMD2Rx4k9H(iLMnle25?qD+#^ZHXm- zuU-l}c$6idmV?psi;sG*xe~l~`zON0UhK28yn2W8_%hXKUUZOQp;y22bqM$BV0{N? znMY5J)}qJMVc@X@Ej3K%vIJ21VD|SViUZ>=1d-QyH?^!rZ!P&>N7MA3--(o>$aBr5 zSq6iO>QSG3LUJ`R4f0e-CA}DE^Y|pq5wG2yD?0Yn?cN;Lf@{pBx;G?f8-Ej~iZLw| zshqvOly-64rc8E^`*-P99b)YBAW$fLs6JCN*~Xjy*!#YFc*^Xf8j)Rp;-ORR=HH5g zC;9HATefZqQ-io$5Q@@kNIXZwjJL)9LYYfDxc%~y^3rF{*V>vWBsCR$MKE>LPKVqh zAITImSbZp#1j0ZVIihjvjDV!Bui2+C7yL>LOnZI`Sy#k$4PVI_HR4#Izqn$HN~mzn zSa`cef<~Ox1-K)?#n1f%E{6G$rfzlD#;4Um^0{|cAf*FfwP5{$Qzw%WMlNE8N3Y55L&+ko=pZt5_cCOt zv_G`5g?F+`<>M%Mq>J$fza?_qz}?H<57*KI*Cr2`p$B1sljT^M?CS!;?!E@9SUJ#Z zT!nprR7beV>#FJR)%@BmLXcqEaUrJ?5?Tm-2BR%G!;6KPGgO(DeHUUbS|OI(5o*7kySPhEcV5TTGvxyW?=YCX(w#l+ApkV6v#T*hGjUvsyn?IOE z6R+9OHJ_alncqQ! zzHd5Vgy=@~S336FRc}ld2>dP8K96{AtYk`+;-KPC1jK>)&06ervW{A2-aq3W5qQ}Q z1qfFECeQKvnH2On$3&oJp`}|=6PljB$K45Vg+?E#!Jm${^O5_WEJ1tyw<~DWN6v;+ z8m0%7D&&fB!mqi$I#XJU=N0UE6I)8-&2^>WxgcNL$$kmn&2ff&C7a)lFkE<9_X~WZ zeMpvdsh{=gRs^bc%g+uu)#=svTIi6jqrOJc&5JKJhbU?3e<&(jEq2v?=rV3PMLGI+MVCuD)iz2q@Wu;dyq`BY+QtVH7YLc4H)c+ZZsoy=L*KfR({(5r%T+^2|mlmd$966KPoZC@#RRkaM|7e#-OqW3&Pt2IXCD+jR zhT&WD6Y4L)yJ|ur1~6lNQcqutb(^}*cIOmi{gZ|@^TB<4w+&8a&+x6^&o2%O*DZrE zJf6c6TctmBK&IxcHB{P~X@WMkj9U8(THGnEL|*XIMdv1OTL8FE*FgIB`!qUI#Rig^ z2!x&lTceWeN3Q_~e~1Zb&fZf=o?)CEPA!2&v2;fay?oNw!A)L=y%{eMD?X$gQg0)S zG&EGh0oCd+g{5k3mYssSd~KdBxYb$ul!4hg!kNgP#s=B^b)~a1i)n1 z+nxNp)_#1jcCFbaL0if;SRC@VmAptjxyl`ro$-nr>)whg(ux3;LSzUADF3vuE9CN| zZW&SZDUv6%0HnnRZ6$@b`~VH;hE?cZE}5mOn%wQC6&*Uzf_;A?v7dKZ$MnV30N~R! z>IK;pGQ!u|j(TR|{vMQ+rnL$?Lc6_7}^%V0r>2MQT;H!@O&!J4#rIh?F;JYbENlsOV6C`S@#D z!bth0A1!7i?fima#iy2m2-i-+cjGYa@8;su%!3;n{P_6z9w^&91oHBm2hqtU03Q^5 zO1gSp$;xL+!A0%n;6P>(u&3|rc9f3*?oDtpeSY;cuL5_>;4w1#DI54x;VpGcZaId@}CrJ=JuFc(Vx<{hmtFWu$ z^l#5wxCHmsoT2Q~gC5*Gr0kpi?A(QYSk4S~)P{=OXlid7kZu^F+U5#oe$G_&zEt%< zoVBx!PSdvc((k$H1{!xlXkJy-S5EwWTqxL&`;5QFAk+#qLJj*jZqRNt7 z?ZE=(^@w3sO;>a}_Ra2LN%l0Rtraoj-j@f(6v9;NBTj=^1O#a_zCX+00+xa(IoWk1 z`Kt1$GdX_fw1--M;~8!L$}OliTY1fJN_e?7dQ2ug~3@P;G8b zm530^pB9@RhLra4>5M=1Da0NBmB$n>NMV&_t6a8{wH^OA*44Fsv%1p^%LZ2^!%94V zE3r8Al~OMUULMo!Q((SRIK;C%o+~{9D`x>gx)(J`HCQUv=w4YH$l^J}t2}q5qg^_k z>}aKapHhaQlEIKd{4(#JJ`1sAO=DK)c90Sqc8k6i@d&32tMe!h2r2jf{-D~6sJ`qX zom&3jcc;p2WYEcR^pxQlWKjquR4m1x^A$}HO;}GSR8ozgn| z@o1?sq)>F*sHl~3kiupc&&0_1$hv8M*u5UTaod1op+!R$J6vdtUp#;F$~_?y!mgRZ z%989q(_1Y`y4!L#gZLe6P2(0YigGQ3*y)n({T~|5hX)ULXFqmx0Huy@TD@JcIyh%i z#2UD(I5f(GkE#d0sLCAxp)^o=4(>`)PAP4JAaI^nb@B3bT44FxnkaWEbBlc2aUiRu zG49Gv*U2oU=0(-Vw6ZRRv>xd+&u-rb+1+A>FMB8Mi+hTsr^KC*(uE7 z5$v)OgOL+U@SKM%79)p~*z{9r>l8&tQ_CV`-@cJ}pz76!w*yh5Sb~Ks#p_oO7=z5> z!Uqe+)sRV53g2`gtH#*%%^MLBS3Hk{3&Q*M7SZN?{|Yhu4y9i~2Nq0g$vo;2!HhD4o-5gv zly!lW3LrrKm^mbfSl3|c&|hrQRZFnz0}drO*_NDMgeH}@v3C)>)407Y46v{g4r#c8hYX!c~xuW7vp~{GMK*$ z=IwAoy?y}&Dt+DyJe&HQ?AmEIyAW7aJ8P^wQ_kmGl;jcYiE zI0UfmtV#WSy=q8+%o5Th&#?Uo*8gKX}aZsmt7uPl;k$#xVJh0 zV+#oK2VU?=BJVoN;xqvdU+lQULNf;DkvNv|`Se~5|N%zoFibmezV4kf#yrS==MTvNlCiT0V` z*B@tdXLjUZvU>W8sEpAjf=`yD928}ZX3GJ zaiah};qwVsjc~FrRmn%4`sG7xJkOH(*@*>z0I?13|O6K zlf9#XL#~shNrXwHs3b^Dr^zp!XCv~Qzi2!z$tXU`L7_>AqO8E^VukKP5d3BRDcaiI zf!pw|Z4BANO?w42=Q$4&6`F=CP-Mlh^abpS_1je~1#G)YQ)eCda~K)^6Mlv*_$q)Y znpzC6YVKmRjL`JG83CjnALaPNUFhA#Rh^Wt2u)`n_d+>t0Al%8-T(+ntJi+lpTeSD z^`P1NV$kk{oC1^6tnUC({PhM|!mhQ6!7Cj`(Ad}I^?EB4D3-eJsSm3MSx-dh->?V( zK*_+PuP$S|{Ec=H!>#ihm(ip}9Lw$}^&~B9XnZ`auw4EcXB?pF;}7oZdtXVaHy49P zBaf#R_tKm63dE$y!Ez;1C;{Z%xx$cf(mx?Gir7`2lo_k$H~MIZUB|O?Ac0hzD7%;WQOWPiWJ>c@X*I9H zzZ&jcf`e1{&#jSGuCz1T)t7GT`Kg&&jKwBSXQ-ba&}TMm?eV_P^Go1}}<2{;o)U z`yix?4sw#yX&7M}t0A&CzV=Iz9OJ|@JP6OUr^qm({F1?}AM=x>IbTtQ4L*0u_B@^W z`5iDZ3=ssT`0a{QeD%x1@^PIUh?gn*vxAFIZKrC7nj`y_XxKD@*4-4V9+;|WfZ?YJ`fz%&E`WXL%4Z-OdcfeWOIa#0^VF0 zoWtzh2TVIyYfp2-cMTJfmhAv9_*K~Bo6uK}NLbiEg%oqgPy6^pY8-Y0c?@FEaSbtz z%qU8i5kMU(M~Ll-go@p_m;wAeCuan85 zuqBj#5y{Yg$I8m2&eDpNApi7}W>vCDr|bGoJ(ZCO4UZYzR%oQZSE4J(ZrW%iG^O;vndm6+7xqgM~72X-RtE9Qf8|oHD|^l2~>7PETq2ZuV)^t6CFRI$jid zNnZcq?z`r88ya^v3LtI0rsf^E5*Rq0uEk+|4)0@m+w;0)x;`ral&IMm8QPd=4vr0N z{D`5wcKL@~cp%oG_SvWp$I*TE90Q8Cuyl0PXw#vkF+VrIJFV^VatKnfC6xogu_4MS zx-ZA|tgP5(qMpfo0gma#R8?G7lh;J64`$irC5`_KI6tHA*0iwqMBu!|c2|4RHo!U> zaXmBoh}^=)1^rZL;| z`fCfz?(@P{Uy>-Nf|>t>Eehn9{XU!8yZPW_))vSkZbp~# z5rI?Z+{;y}u+Yq=%2ymCP&Dt&l6;d%cxK#1SmK$F?K#KwQlE7Hl=#W^Xz1qJ;L%<2 zqqC#8M#xItrcn+U$kO~-8gm(S7*V|;*clk80Glb8e&muvu*lDZp z%3%M*bQ3U)Vj0rO{KYZYEJXI>Z+~#dWM@mqpiK337yKx>9sAm=BLb1bkA^B_J3BT= z!Wt{6K01g_)c^}5`#65o!4h6^(r-v7cz~;|vlWOB3PET{A}8?j%=J7jv!(iu7aFak zO=uMYX*Cn|Jh|>cUhAEb*KmoN-+LUfR7xo!tQhayl=jBccsq){Uo>peyk zzVtj{66d)g9$Ad2(*-#g)KbMGIlWi}`@3~0??%w^ny{-{1Qddz7Kw5ZP$pv2agw5R z1+IcJ@ao`kAOUBAl)np>Y!>dE)3VT*dz;|k#yvmEDXq|TCr500Q|rS1WrcFcMQl46 z4HIJqJIGJ7DF{w}b`lvD2P?hH13G@O{T2h~p zkB4t%*V?5uw*3d~o$K7Li+DHV=*b|-Z7(aJ>y3bU$j*C?&Cy{`T7*l%NF+e3?6}Ux zbFw^k_cLm@MVf=7Q4$NNS=|0Dvc_47^l7dJdXkctx}u=^h?n}vbb(XX5~N_w7pFjU zVI44SX)8gRLcr>OJ?uhFr=hn*m4`4%9o+yp-7y!5dXnpK~?A`T|*u4-(rNi`VP+I$gaGdXLVl!jvco$NGw&K}mTaLq5 zD+r&H2ZCUNY35<2H#e~K$~+YlJx#nhy7Q)vo`|{jS9Oi`C@6Xck+GnlNkq0!P5DsQ zHPo*!wfi_b*KI616pu_zJs;v5y0{3rJE04qZtV9ZYh4U3@d`F*Qv=$0emxKPbS?Ro zFe(@8$q>EJnP`W|$^W3~Dq!MhxGnDPZe6s<;_hxm3KXZf%TlbkyHmWlQ{3IPc!A;$ z#ohhQ_mV%E3 zp%-Vlq1xL1vZ?XpKa2R}r%A*YbxGQm#k2mBQUciWU7>p3)~U}nHu}%bp!4|vPsrxk z8u@B_dr*HtQdGB-N)UTRB?iRwSODmOfVru!j#bJMg#^V}kH2(=YY z&d&Uov(5Q0=O!HKCa$jG%^iEhLf7M;0Wqa+=kU7|8L8KE7|@4Fdxhd@!uNY!*HERE zvl<=9hLQTP)U?CNjq!Sc`E6shr!mHr_%NkVtc=sc!zp^faAhbV1^TY`Bz9|=5P zS>NXA-*5m4E65nouP`f{5UW0~29&vYG%=f2Up4mux)qR_?&vR#QXU?9i z+zt3eG`|%8t0x&6f=vJ$F@~FL%kv-TGjDUuYk7^Oed}01Oo8Ir?^$BM&YQ}6ys<5Z>ON=a_(F%t z3=#ild~NQ&X0%(^?{_MS+Oh!@N5c1W(YMdz``GzZGFYXxH-SWXktD29s1-jVHM7hh zBK%kgfK5pzS1Jx1jXm{Q$~cpK~vRfGX zeM_O`;8N?{X-R^4i|GfBgEVjs^-dBMyp~E)dTPb#2wiv4(~W!~M?XNbiXm{z$ujyh6~n2HmqmcMG1f-chB=E{OL2#Yg^Z}m zwYF`k|LGspT9@zlzogDRms>=L?H^7~e}3i25Osp>#_%oDXL5M(G8IFilT z&#&*K5ET25C8d}E6Ho2(K^O4ngNOP}>`nc7yH9y|s_@qzqS;SQDR#!DHhQ;wzn!hj zUJ)LU+tEvapbn-450 zsVx!O7bYn=C`p*`2!dYa-OYp+t}C`@t)Jki=Ev)*3F^I`Wy2$F4c0{rPRk@`X@7p#=%YA1bf~k!Ug| zJ^QfzSNrj}z?I0$aB8~i)D2XwQsqU|!Q^kC=X8(1T;2Pgcka-~Qe~Yrz>d{H4*!@} zFymTd6eFsddJfUb2j?@$f$&Ppah|dnj59xv-qPVl@U}Uw9efkX=|AbRKFQ2N7)BRm zeH~^naR(%)ujc0Hzdjyo8*NDaD(VNL^ToFB-z`!ykI`gOpJaQpM(K-?l4gqDEz(0l zoi@derB-jhJSuAI=nO9(A)qD6UAlq>1aN4~I$*t}=3UAagraDwDdlPGenpJJV328t z3kzj?UbSXh1{`~`??OKw5xg1jn^r(Mq14J+uzH_tM;2qY`+#*75+gMdf4n# z#Ut(_+^qb(U)xrEDGlo^)?*R!a>P6UX!loh}P`%KTmdA@o<+bry2sj6Z(ghJ`#bJs#@3nZi#{;&w6V2+kx}fxJkN*G|KVZgjBIwrRQCwN8CCt% zSj|QfBiIyWQzZWO8-31J+56EJbLa59JJ6dtq)&=qCrKxqW@G1Lk8@#7z#b7%8+@hA zqMC9{&D+wMxptfE(3OSBg#ht9;;HSk4;5QN`Ryh@^r50uHcNt^71tWZGl?726!K;( zg*WL18RqL^PwDkTg31O;Buuv7w#(F&mod|t9L(98)?=J*w;w5cT zL+c!{1y#4x)|t&v=_cf`awZ40*N?doJHJPxl^WIGZ9DR;=dxizM8nA_?~LXVop0w%P6+dj9*TLd)si-_=v2u_peFm*JH`Y!%&PhAYVB+v>=l2S9vRmYL#5E?87 zApsp^cYus9_QuF=Y$znBGQUOZRHuYgY1e~*v)(k#fLTm!)QcTIUIJysrKVMV=%|rA z&GWqdUwg6z>8pcW@%=`<_wS8wm)lm=<-JY)m&|qF@t5>bmh^GTqL=$YM~+?D`vrN8 z5fxUA5fNo%4uapY$fmYqQrY^ZC*rdth`#58{LSSvi3!$vbi7rL+L>vF5|2IL;tx#< zw6Up7v9z-7+YFq4ni0vj|ACZ^)wq50aoXt|s`dJZ^#IM<)!Jm~RPr7^XvoEzH?WNe z4HtnLfCUpN6(SJWC;sF6G#57%so_0oTh|7=L0TL7=Vs#u7VS1z;AbW)#nX1B$F^Se zniHk$Yc`V8qv2jooc=v*&)z;I`{q@>-*psX%j%tAcl`bv@JCVX9`m^yUxcV!rx9h4 zTH3_s!CHM9KNo`h7UaA@mYtcks}`Y>L!W8r9(J*K<-=$5%o)pScU``l)tbO*bX;GG z!)PzxY0fh*@dambZECXg>O^zl1=&r+f$;g;t?ya(9hBvt&j~mCuF&ZA>(dO!B~>4? zU86%oCVrWpRQ&aX%6;Rx@r7cAhMz`*kA$`gMHmdlyEF=Ul8}wDjT0q0z-R9Ay_AEc6lNPj`ZHc5QV~TT<`1<5ZgU>VOGirR5dE#PRNi#dtXUNKIbx)AHR5RJ>K@; z{XO(Z^0`9rPkcMt<*Vg!^0{A=&Hv=R;fyC8K*3GNP4}%0L2m zoYrjaJoj9`{aFfA-i$YKkve|L{H0y%{d&^K{;bD#1m*1sq4I3Jd4ya*h|G56>f?*U z?rgs4VH>MOaS2$o8?)&&xAJ)U2wlI;1%5@aJ#CFQCL#i2f=8jnI?IKwYzs63a-h=J z*wbfIXmYv_$ro`+&*n1HrTiYXm?ffQ3r0R?AE}c{DH+WQuTW{C{>TwaDH@1N9}C3G z8A_CCAp0;g*b%zdHZ(*lv?}0myU2FYC$7K9*YE8qSp;Uw} z$EPjx>;)N4Q))ZwqfWP3BM0sAqJZ5a-MqQv7!9Tfeb%UmQ3#R*+cD@#|JUEzR?UIG z|L&k>|7ClfN!8Ey0T!6Bw+t77kcbEvV|Dy1EVuxTz(|QS25M&`n5mtv=kq=lzb6t6 zX>kyQK=VTO84nJcY(czHz2BiM`i}$ro--{1-YBIi(b(2z?_fNm)ZlCol|Lx5#c7KJ zM;`ytJ629@CRiS)Rsre{hD(+lQi`JHk1 zTsc}?xnhmNM0uoqtg)UME_7+lc-1|ka9V-utDah6_d66G-X?hy_QaUz-l5XC?ZH=) zDb%kAJi5x{o?{raO3V!z2+=7)TC@K1G|t%pDut$uaiPbaAJAtD;GhM22+%iWdXVP7 z)5SxY-N|P7bR3*TqV&%7;U*HV-46RW)>~_qzyDi@a*Du>iiFcSg`zEIl1v$`y$d>% z0_l7s62tK+vDUT<`4c`N6Xj29Pkx%h{zLxJA)itMdR=&vMxI9GvJ7(zal@z9@(J8S zySxqtdgj=zH$Ca&`@r?Hj{1!AK)tMTqDiubLTDmhg3{O~UueU9m54bO8XZ?4mH&E! zNsd^7e5ge`Z#v(Rfz_hm+!U-+L?|z8i(I6?h9U4(7ZWHEQ&xaY-kf1a+U&0*oBKV1 zB{nlX9getYD9i=((6V#ZZ^g5$?P+Ox!10gn{ln<2CGaKY`SQEv?i035`>YD-kVYGYqV-Yinx62HXMrYEHgA zKmN(oto^i|w?rNJXNxKJk~hbTJl@~x)9pX4+%0Z75`A*kQ^)nqa0&f45)`wj-@~09 zA<;8UHC-K1F?)ZYGVcvuyY7)%Mo`owM*iW-?c=Jp;}rG-3`t8Vux9UHF)!N%in{-Z|jqfC!%k!V@_no;_}qFALL=+62izZq}BYXAO^W8^UZ69 zf5Fq31fi6$&ekr9F*=?|S7{hZS!gW%0sHF@+Iw_Ke7+k(h7V`y7lMdO+=1ibDIpZ9 zQi%~#X;gKW&pP*A=d>_zHE4BHT1e4p_M{d_(b}ie*YK|k`xCIAURU^h-(g6SdH%Ac zR<*Aq`j4@>c|*0VdcR~L>Qjup+(XG2t@6S)MCWIKR7GbjU{=JJtD!6%f-DHG z*t$EQvc^n1pYE;KU@S0BZ>(<0t zOY`d1$jU{RuG_6?%EUPH8emB2GKnJ(JY;9BIjX(*6NyfkheQAHnDGl3#-ca2JHnh$ zl6%?V;we*SeF5_%4K2E${OsB8VuiA`> zZmmOKxQ?e(GZ>)dt4yt}RSzWaWFJTl(g3kZQ~w#G+mTu?c>Xc4QW)rw zeug>MgVkSB;NEFv2+~YZVifkP`(yiO{d8xVm>w5xP2yMCj{Dn8>gC+M(a`UC7BCvD z+EItTj3M-ZiobujnUHtDwTa>ELO-Ae3~yGG@| zVI1~O&C%ESA#$1V3mfy;9WXa{>|r`YNhuopd$rRegW9}JV@+*WNK6b(`Mf9L;%vLU zI2M>!G$W}2zxS@HFlSOJWVK*W)$(=W# zY%8*L#yXb;?(K0`R68bu=!U71m8gye7 zbsa8UI5sZgx|F7tyy6%5ch2pRJ^b>*eAa&Mz|1@@u4Yy^D?j2)kL-PW1d!CXF=@iv z&%QsQnwd%WIOL;K6^sK{xpvIM!N(t zKWGd1<3L;`yFB1QjTu=y%5h0)y&%}WSHohLw`3RdwDjRaf+}QtKy7^T)9|eRLcicS z^VXlDqBQsc2wB|{mvbxg)gxNnlF~^%j0!XIgr_^+cRW*;xuYS z>eo`=pkk`A4gsj_zU^GpaiEzY!X@Kjt599aiaBZt(t>!v#%Si5ecfv|9XxMf{XyM6^B+tQwwI%3+1#UrVdR zU7v?kkwBS(kj6%3yeL7BL;7lCA0JdCtg&L(Wn-=rfBwsc9z=MOddCxEs_^@=mS1TSeO==G7rd5b#N zn?WAC>}Q}$c8w}fT1?F0eIzM8S0sx5P*Ex9NdB^pHsf~*Vp@RJXe-eB6Y)TVy|lRT z6qYkc`MPo*c4fTYp7=^a5K#zV&6rvVlGa*0Z91ER&MCgg{As%ewdKkJ{qh3!KbrzU zqdlEqIREusdgae@ML2Ti;lZjLEFaRwGslZ2!ZvqX=7WvO|k9L}wH&W~J))ZeHh-`--*A9sC? z9PabFrTeO|g9;7`^=OEF|zK8j}>9sgH z5Cg!#a>Fn(XLxIQ>pfP=(%=69PY0yqu)<1~6pf4QgqTeXB%yf}i_T$M5|JvX!=306 z{nwF&riPvg;h=9)A{uSm7xh{CF`lan%oewW&y(Ih|Doadj(^w@sS!J3>ArE^_DvWX zUu=Oz<98#Gm^F9I@p^yT&a2JT^S>d;{p;{%tB9fZ8OvPx#4(H&ZyTcY%oNrc;?NVS z_7m-3nm>8^{&CJ^9W#zKGBDAY$()fWn5EI}tn;n~0^SJhkoOz6GeX;U-_ z7>)`W`+51vD-2Z{YRjcbObetZ?=^(;YHVc=etToe3TzCF*r;K2;6^sgjMy}MX#J`F zAqC`LiYt&r<2lr^noSRa&(BwjyrQ9Ix`!*gl)xoF{w27$%y6r5wq_R=Z)^oh?EETE z!x;AiOtQ*4ZF6A7)mHR-8GMs@57OlWqiZHR-QD~_|JCrcFWb$Q=#_T>RYwzlL?|5$ z!Y)u%+oB#bk!_2k*+e+>4jX3ubA$}I4VUg-IAcnsnpk~XSmVhf%C!ky&4`>QKG$`A@a(9BGHeJN2w z*rQ|2*?CgVYQXioV_1EW*$Fgd2y)XM>ZTsIXJ5#9F?5Reb9#8484Z5B7vmuI$Q(y#qwDQE$PhD z8rrWct}>gLnxZBv;2XUj5ymUgUH<-9{UPfUb&0J@I?fuHMWq)0eo%rdW_dZ)ru(b|2#^LKoq-bU_ z{<9o)ZZ4@zoQpA+UGr@Mewz4ZQse^eFj$yVeiD}f=uW@Be1RNp<5XOvv&iElJmZ+l z)h!aI?oH!{3W*9Nx8O<1_v}hR<9_~*hr*xeRAjY!pQm>z`nC?lJbN0igeNMhIcG)O z!$Tc(?FyiWLZN*c$*+a=sKSh;Zd(qNDx?I3AhOj%N%vlczX$ENIROTceXJ>@Vf6HY zT@oHU+=r=MIjeJ&f`t0mImh;cVM@~|DCLng$92<7oKn%d?Sa`6hK zTNz=~7~q)kdIXTjPv6M5-pt=+@wjjg zvrP7jDX0q&Nye{

n2z^XjEznvUyo_NtCewV`u>WjjO-JHNKG7B+ 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%0Ap1G;Ixx= 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 z

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

;D+`;$K_m&^MH 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

tv0@d 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

GCu0) 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

~jbT~-=sIVcwFxoqmV`OS^XU&dGK}$E* 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 z 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
L~G1t~_}J7)jt0 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�-9Vr^~kiHMNa&``=MKOxc5 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�c$d7edA3nHpH)M1yI(%DrSf%E!fB8N+c&QnKzuw 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 ?Tw+NRN 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
;V#VP~Awvy@h>-z=yH8o+> z!p99bNB8!roh@x_D1PsvSy>aZadLnE<;}B!U`K(KA3@5CO-YG>zAFITJl?wvyRqp8 z+VE!c>Z|E!-4+wZo@fIx3#|m#>S}5sW<+OBoWkK}{jmtiy~B*u9D?}vS(Xwaaunn& z2r(mlKT}ejdoUeXLUP+VuyNGr85qRrAr^b^W5%NGT0F*GUz6wO+PeAMo2x3D3&BFg z)9;J>5ALn67tSFeng4l7YPGWs0kj2`s!9?Pn2wI2A-S-C5d=&83uWcB@gfA+`*+Oy z;>w2h0eR$b>eYT+T5=CZR-((k-7p~28hkDu@bmKne;q>J;YUdPdcKP%+#dC(rm_-? zlT#fMl@4_qAAsEjGIQW3Q$4>Vk0ue4qQFYwwtl3lsvHs-2{;=+SZF85(+v|p>rNeaQ#;m+CSi8K0G?AdMfC_2cot%fSwrlT>otL#&E5zO&8qifg~CrLB;_D z4SX%V1@arZHN9z1ISW+{4Trt=ZN*=`A`%fX1X#*X2(l^DE}I+Oojp~i!bS=Wl?6v3 z@Z9>52y;x%c(w&#$kQ@^JCyP{LnNm6w1B6NnB$4Gr{GgxJ^DLtq(G z9vKt>SQ4jA3Q@gXkgA?ufCR&9Q`?~g`jrFH*(`E#{h6C%bOwe}kBvXkARW$bqzS*h znJ@WNM$XP2G%RxWRyMwS={MV32;ox7YJ8hK{VeL)e4qy0TNg0Is<*JV#Eeas)Ato} zN=<(kcnMlcZ7#>nY!T~e=C1BpWFaAabP~ZJHI{&436^B68!G$_zh+PO8H&}lwWE{jp35aXrrWZyl~a~}b#{Z>TmI0P&z}L8Ta{SI z*LLByGyEZAH~UX3V#P=&Dw)kS8+kcB^sT-N4cuuq?^BtIOG&b_L`uzgvUuJ+m$YBs zWX;9XrGJtq(>oq-_RWxrh5E?+X6jxg{GNSmohK9%3-p*4zH-er4Z0>1Cj)8T9GXpVk_m zRz||ck&`Q}Gk*$5jqI!d27J3H63sx#$NM{?(>3#>^Jmw>N*K z)){V7PFjN>h_VER8L`y{1%LV8eA8qW57xoZBMqbGIaEZz3)fAix8xN^t{9hE8E=>hVwbVM2#Wkg#PWyKfa zX`;j5vGoxd?^zxH=tJ|0D!!*$LbY@0{9M_gu(IYuZcnQJXTc`q%3IF9#=f*M zv5@~e@FLjKDn>O%^X!``;qGYKuluF4qvPHsC!}j_D_;`O9pN|f`u5Xlw}{Nl1A}&i zHDRtCdv$PV54U%Ob4rXMF}I?k`=_kkr=$%z)gfiXx-YKB(VLr=s#E3mL;Z|}+N1&> zQ1|%H8JZK`^EdWhtboZ1zFmd_x@5{ZT#zMztZDS4LjaQcfC3; zJ9`Iq#cqWPsRK)ti2okKD?QO`FdtLb(&`4&COkGE-dGo$qF|+nc80Y)2L}fdddm-p z;h1UiWVExp0jf<$UkL`Mc}sV+$gLd2_p-ACtJM;V^e)DAXF)7S<%|DaG(hX$obUNc zND3{jM7J(qo`N1}dvs*tg}i!rNJvjHuI~eK^7Bm_(>|oT7iL~cIm%fia4g!{rM;6= zkB`8)-Oz1ux{r2>216iYi((+h5kJ*E-!$WV@HTj9lu4h5s6efA|L4Prd_uTZ$h}?KFXEo$p^dwsr1rbo3SXRBc?dOfB-IB|W*RyYTdyal7Nz#t(#i?&EM8%Y|vm zk)xrx9vz4AZMWi-X#Boyrj?Kq>=^BP$4*JWZc@w$#R*v$gYo;FX>r|c&fwnOqQ?Pk z2_?p(qoYQH+sx?#-VcG`4=`Em(6)=V9muLI+XeBH*uL-!L&K~}@NW0l9a@&%Vpm9PApB!j zB$2zvpV~tR5OCTULU{h_6}HDMS?eyp*y}cKyM?de)62RH1@n>L?m@^&%(;k9pzXf> zCY#pKMd_biR^X zN1w4nvlmKTE_heFv*J2v+z??30xvKL6zRdV~f;fwi`EcQk2VbrDjzK_yy{-uLUE&tUrc>cozl zs-Q$`OldbS)Y*M%xIDWUTi8vLDM9VTsu7r`O=|SUQcP3x*T)fC2m9Q-I18%;$K?@4 zeCDjS0-PlVgKutV%9#JTxNu**PUcl6&4+*rtQax|$uL8WxD2(J}_kt6leipTuMJ_i?9 zA&dKC8Nq&)#TIUbUW>TBw0A(oV$V+q=#38^Q(5dxs&9c08i(gLU4=nQU{VszsViDU z7TYsLMb}GyrSG%d0U?OWSd!Gv8;S)Lb(zrkj!bC94igd)RUM~&V$!`fD;oo0S})b!EygmU5^fK)Q^!ALD<-f~qnAcEc##uxe67o27kG*J?Bw2C zz>zHdG^SV)`ry1bz&&}6z4nA~yZX%yqD+ArzV~opNhK1Byt-8MQerbOHf#t(PIZbf$Wgj z=wBE3woSh2eBqbPLKBw#{@T3>UM@Db-6x=P>JP&!15j7n^f_jCcQ@#tK79S^K_cAL z^Ko)VXSX&XZcNQ??rZx%>hZzR5jhhRFv@US{w@d3EOd;V4Q>3ojBV>E&mL99e0F8(;6tqljXq~ky7 zR(eQV0b4I(^7r67BoGn2B^Rf07&yn}NKO9{#sGBohX7zB!HSKB26v>BLy#=PxrvZ;X#xw{q^%YW z-3xv3M1taSrHD_Wix0-q^ebwme_k7q_*1b`y3HmxGZ77Z6P3k(V4F1XnM~j1w5^WT zXrMV6lbbo|m;YOrJ|(eb9(+?-za9>{UpIF9EUzdejjY~La37iyRQwr4%PGXJY(g#3 z=k2T+Kp(!~;IEcIwu)-D2vdA9W;4s&lJ9J>d1l7kOl^iY9x&v~t5$ng=7wX$^7f9p*AyJ-(pX`~CUM70sE~s_?pwC4 zaR8l|>&yE=fJQ48)0nAZOl#1c_^%fw?E9A@YPU>;-j<^p*ZYMu7YO;`#Z@{MOLmsg z?G|@KFGsl_&~1N|L5}GDTJ#VnnrWrMkV=gksZeOpvfM7evh-c|_M`1GLW^?C7v%fB ztz#6XThuz|I}x7t^0~?)mhR2QPuG6bc}r5uP{mET6&8H%d#gM2p45MW+!u+A=f~)T zmNbK<_;ihpy^O@B@K+SguG$0>O)`765pNysxOUE0%={27v)Z{DJE@>xHPexxp0z;5 zPmvZ!fcM0mr>!tqh;T5x?M!p?biNu1!$V13k<#nK%Lz?x74=COeNA!32aLj8ft3pg zFEGD)a+M+!$;-b~#Dl*1~#}@tS$i?#1WCSr3)U3_8(^&JKZX%y_u?k8j zAPJI;?l(Jy96({%YT5E3TAVv8b|s_1{ffUiy)ouI_x<~y16uAhZbHm6H}kT~#^aTL zj6#3KEHI#GFmn&-U&gL2yxQ6u2|77p3PYAp<@SCMid14^w)WcGKG3;!0aBpBXHUR7 zXR=;S51aT(|3!AFo;o9*;`9x9irUyb0M;?+rvl4 zMQv?u1aTRKx}f7SLcN7^e18by}cr( zXJv&ji*#D$z2j(q8%Rux0td8&>burESzsR)7iZ_@qDuEtDRE3Z1NS|GL(Q5Ue`bhjCqe%K7g#)tz)kKkFl_Rz$fnZMgBGOmH z07k+Y?bl8fh{75TL=urDQ{s;sum`_x-Ka7om{8%7Vf~x=HYm)zOqS$N7jetdm6tx6 z5z!{E_%QNHxum@GQJdEg8_9<*c9VRZzz-+X3=~PCfe@edBwRwJsH!}w|J}JxixUr= zTM$C?+R948Se^2XJ87lm4SG#YZ47s)%zxaMr#lcHnM^mpYP`NHn~w1nDd2^xCUZ+L zg3fUxfk5m04~b}MxP)P~wbam&sxlm4sb>J(Id{pYzotnUxc zQ94IUXp>p5jI5?YbHods|BldGS#5vCbIF2`wJ&#V^-Sk85&N;uDXD3{*VlhQjs*B| zyQwf(2?^7BWrocrigN&U>iB!4-siH91)n8d78n5#d`$lQdD6wPP#W{4{?=Flr&r@; zsUwbz{NU32J4q7B?wG_>d68t{uNYawBX27HTSS$nP?cuTq&=~t0zPx$XJ^tzms)Zr zg<8w4HE#8;Fl0eDs=4MyGDWhL+hl!UnWr-lbO}AzNRI(6ITa|C8N-K{^8D-YM@_h z?GIK2NZPj+n*Tv%AQcct;G3P#VVC(|CjIZKi{j9(AVIkV^8&}SU3w#(U^ObJ* zl8TC)^704H&On$Tb>18y`Nw2+HKzp{Fu(UY1)~)FBl(9OM*O-tp2Plzcl9OV3*A-o26>D}El$Vc-0 z?$1L$G}2V)eVx9Jq>gyT{kHA*x0CJh$k6y;ryVb<2iOD53L%Zj5pVx1c&7BM>3=kx zWl&IE+l3WrMH-}$?(UTCl5V6M=?3ZU?rv%6?hfhhZXUY7?K|`RaK-@#IC#$4d*5rV zYX!{LNI+^w3eu_S=^J+jR|6C(2~S&6e+?Y>;Ywe85#p4*P-vj=hw1S^hr=J^{go!R zkNYhyqj;0nnUgtGRaS3A?K;jVQB5C|ysn^-70^m3$_joLhc*^V%bqmJ7)j6~e+{v^ zQHstM4zc%kugHoL&XJ$0twd1d39^6jEp3w$p)}9sk`(CUX48*nMsT#VY)+n@p&)1D z`tY8zUVGFvMmt!G&hBJVnP)%J_;K{_!J(O=f{x6_p`IZ;R_&e(($8Dqt`McsVe+G_ zjObtK_MeQV0B8S55VXu`?_a1QB1V>L*HF$vxu96Q2Vl#Aa(VffiuhN4TJLDa zcBK(R670jMMl7P?&0VCwhyVsML0gAZANlrVLfU*!4D5HeyR)Im%?il$b_vD2^sDy` z|4#eey$WCvxO^S3Sp4%!4Ivvuh&+>~-oG?C_E%xZ!MVx^up$L*_(f$(E3kE`EkLGQ z7%4v-e_K>vkV_gXMOo_I-hWN zMuUG$+v05q+uCA5KvsCJqAC1bd6_Z)ff&@K?)cy*E@p&(AZYr zNO5IlA5h7Tb-n!*i=F|31y4Yr3s|5STrLP_SZB<@NhHX@)y!(W8CpSv!|8+r$h`Rl zMcaJlG_}TVTWpgN;5ZbM{+y0ZJvTW+viEd2#czu9;|4_n~l!}c5bhskWZ$hVS z*<`y7U#42V8%EF92gq0#7cc;|jP%7Nvm-VMd7XZO;Em2%DGWTQT=@8L7uV@s+~=)* zfe2~h6N4LoxeQ2#(7$#^JQr&BF+p6R4@in2X0fK#?2rOlH7_>0gqj_XL6Z>{4bAVx zM%xb{R0XO8bVk#-VUEYOLC%MblClJx7t(<=GL;wf0n}=K!BVd>-Shy%Zh#rik;2qm zTfhAZLj2&o0xZPUVAKYph2TIX`}4vI6kJ~1-hSmJ_5)2};DMg^c$sa;FC;_7#FTSz zK(lGRBm-RqbbxBG-Q~vsoY0b5T0DS$;PH4k00|Sc0qS7@_d_JZHk6jNzgSxC5Bw=Yy?BP4EL+1UQUh|JHe7lPri; zB&R2g5m#&LPn#`U+s%Iyf&P3n@GLUD(Bcgf^f`SmV@#I__B%X$C_*-Ym^ z3a1Diy}KkNrbRR|NQ2Org%C!wBlQtGWA+|1U3)fW12=vAjXfs(%RY@5(?E&jD)-2S0Y3YRV;5NRVw0T&vEn+j=uefuyOYDWQJ&5C3wNJq zBavvNQXIcom=Y^gWM8xnx2e581c~4LQJ5)Z8-ik`6n!~WIM1)tVCiemW@2l}&^ezN z(Mr+!HWp@gVvI;a&l1w?JIo*Pri;!>%i0`%i0~cmhpw(ziF~XbErx&)0)i(k%k`g0 zrm3!MDRR&vujx$L>vUFwBogoYYu~vR&gF_mw7x&SgJK`?R#tPj?~2D#iz^QA1ww`w z;c?<${IcNKXNbpeC|*95~}G(wB`2J5Bp)YDPyhVyFY z!Bh#HR5;8h~4KGeTa#EqHI9qkaUW$1lf7amXDdMm_4}}jfSzZl~ z^`$Z|Q+D-->AOswN1}Tyi|-W8xSnL6A?41C2F-wlqgdS!id4tuB}(1Vo8ul0JxQ)% zyd0;_waUoM?yqWm9_M0Un%v#qLOX37-j^e$TJPBysXWr4zpwY9^FiuqvFeq0Z!8VE zvrDLDq3!A2)xNuLHsJSQf>&2WK>_DL)VV=VptG%$6R6+w17Y1@0J{gq(t&?HE>ja& z+S=N{HY^2@Mh_c)Rv!181Kw&dAi`u5CQWA0?LQQsgjqXkLP}Wz=i&~$oJXWiC-v1zH3n)S&AX%Q0k^*9u_B#gxWHRZYclrb2gEW!x&s)_` z9n)=WBWs=D$6{y`_|WuBzTRM!*Zl)ngSX58H0F}wnKLlZ&1D>GBB0iJ&|N`#A*0B& z)B@B}MHUu9XGni~p8(}#u1|M4!KArLS*HuT){YhtRD>g0AZ{$lr+qRuBtdWfVhkm^u}f`WP+lt{i(S*VNK1jU-qi+0V*X7W-|&1VF3C{FMFQ_b_9V?A5AWHY(D`L zv2jci`MP&YQg=7X)>dqAgoOTC>pZ|o6H_uq@I|(L;WS4=C2y)dj5sY9FE*RzbvYiJ zNMY122zNM}|JY%$Pf11dqqzv?5{@!IzxWwtz0oUa{noQj|9o*U?coX>lEkGYN$=;h zk8qAIuCH@VCh-4>VIcC!toMuhuN?7(PHQ+oKW?1yh3a}gM9j}u8qAi~fn7nB!N5K) z&%)oW<2RdJyUwS(zkP42u5jk%l1bimu)f!btD@!>77ca0Cgy7DtiTkvK3h;4>DmX<_-v!CQ|0;-f zWIcVYu5>YzrxLN&cI{pD&vJDkj|8PJ68uWyIo1E$rSd+qz;5!^HhL*DRcFdyaGrm9F82o1Y~>V#vxe%Q8HOSCa<9(0Q3!1@+gvnJ1aC7IZihBcnjiJ37epHXolHe1ic55KKtI=WX6{C;7E#PmcQKC#r?TN5CVOla=Lz zhIYHB$?6$9{(*+B!el?r0WrRotw>G`c;Lfly8OnkClUAfpHDX2>MAOHqBmfTC(?e! zRPzCSgoBeC2{UeKliTUgeCWXTL(>-|Nx-&q_RUM?G{H?sP+n=R*upuUUHM2e6CWf24ym7iyQe@DZd_4KsW%XT z8rX7-k1T+OI+!EGU$eU^=Yo$aX1HU(_jFr&!2cOXJ7MlrUp1khohO2vHiBtf+w4# z<2SHZv0SJ-*4!J@9OQp{Km|o7T8%&9fU5_Ly}AykO~B{})NcKK=i(x*-wlZffZ7W+ zyLezq6qupSPD4wpUT01V&K01+Fcko^3@k1Eg^55g@B#ORw>O@W8Hg@lK|Z2yzyxk0 zYhYuOF|zIHcH`VR_Por>EfFC|_=mW;Fx{AtM`_6oD*9tBL`G_Zw>Y8yLPf*^?)OxmUGm z3>fK?;c~h~gSglK+L?-q#6aK*3MxRW9k&w{CV|5S6yK{0H@ILxWhdwH_|jElB(+%e zgSV-vDLL6e9~hKC_i`wBC4dzwGjkgFv$l6am_f?pv-6z-_$`L~{%v`CwmKF|S_W3U zcNTN4T{%Jn|0r8v!W9>D`3Z#WwX{U-?yLCSZ*jkgX$FnYVKhdi_PazeYBjs~r7lSW zgmyTgRT|gP{~gS2=@ou4H9w_xuvB5-M^B|HS2ffqgqwPvJL7t$+;f? zNld_Gg}$~{_Ri($G=c&R9uy^uf?GHwq=d)KAqdDAc@-6z4Qm<`Ma#}8NG=ImxhSIH zU&1rAF>g<=4Ca1Q0>zElb(mv3vq|uL?X$zNaZg_H{>=Qy!pk(W&JJ3Y-d_hvDQfXx zxx6e38-P~cdz@tm{g1lpR9`~fjMPMS?VGM@)=(wFfal4(_SF}%5ALpIt$Zx=>+!v~ z#&kdbm4e}55^3yrCCLRadv^V#!*`#2FHurf*;mCFX?kcbudN{0+3voRj}do4(c&m= zhFp>g8K4!S6dip{0TbkvfyGpZ7`5aI&sfVybgR=(eL6fSnDvV47MrCcoVk-v>vkPUR%8WAOsRDhK~D!B0(R=sEpd1`!XfK$=GOIhqBKt3S31pZ z?;UT^CEVfH^Js4qb%+libjNf{3|}5^z%Hi4PNo?^eoo&4?dn2(eBKjyUL()V%>mI4 zKm$Gt3JP*~+%teEleeq4fdR3u_Y3QCz15SAK>NxgBO3CTbIRg)c-o*zkG1XyJ-zpJ zq<>;X#Fy~8309WvF1YW+A&cq0Q))F|2L(zd6jbM+&m@%GYYf|Gmu{RF+=vaFCp08{ z6E=0{qviefUIt;T0oLm7{WTWc5OTIs@k*q)QtKD1as1`2kHKSIr3?aS$c6}dYf$FY z$c8m@eSW{PA6J>qr?0_w{(Y&sF}9vFtMq;>(+J8`(%t7ZK4x&LCbb+hZCXWDXtn>7x{B9;>LQ(X zuQ7VaWIBH?JVKs-^9&CSZ_w9Sd7)KtOiwXQhvsC3jAS8YX$(g*C=k!kbd~1Hm%-@> z5pe!kI{i`kH4Q33u!xBdQ<2@>ffk{}Q(+EQ*R&j-_ALT$v_zaXchw}fFGYI91oNE? zuS~O?LvL{z+@fG*EQ2F7F=^b?_0~pkukekF&BRM8e}5=g&{%s6 zbvp@i%G(lwvaZz*x$vF|G&Fx3PxGEvWz*X>6j=-lopUzUD;1jfvFhSP+P-=Pm+Zut zn_CPm64&at{ypT~S=cHpKUM@`=oj@vMb*V$tpbtxi>HzKyUXw!?Zy0G+oP(E=TqVb zEzO6IN(L(nDQd%8cl32g&@PFpVTEG`%ixMjBpRLfu;@|3G(dG5$6`o;+8xXG%=j_@ z%aVu~{`;cENSasik|fs$HbNj|4$6kq7O)i(RaZT(=L+3+G2o5=NKITyRR%1J1J#wh2nZ4WLA*aM zm;9rb9sZz`6A+!Ma9m)TR-@pWQxL5`=l1RIIG2!qLMvudO#_GnS}C`F>=Iz=+uW8v=++`BlEhi^silS9f{x=5ArNc4i9#<+!b2jl{>uF z_5|WBeOLR89uK>!U^sFKI)lH1T1@aRcD!+fgjp{HYcG(DY{_@%_Q#>@P8tc$+gnn! zTiQ3T51D~W-~9UKrntO3r@k<9B&kAP>w7nF#{`Fj=w0ZsPfbsAxLl~t%oeP)IA?*d zAU?lW_uo7(fOV8GHRXUo#Q)02=hN=_w6QUn0SvLoKhKybLD-SkEtXP|9Qb?b4NcmB zG!qI8USQxQ2M{h{3yqNJ8Bag2L}5KM+zl)Yz~GdXkr9qYoe74#2!EyH4wluC5_5dL zcWn&=kb;3mb~w8ndEaOli^7!L@e{ted5MJF==;*i)5O%UzfPnR2bVMXh7tp43*Kp` z=$=%I!c-RlWrNvDzXoQyP9C>NLTuGd&5N1MeLr#@iVUXiaBwWiYiLQhN+9GC#-^zC zZv1VF8HooDb)r{W44{6-nILox7oxI5oiPK$EgT14xII5iJ_;Nd!V-QX5Oa^+ViuPg z`noY}-Rx8=I+x!GbSSQ7u5{ivW}r{;goc76h9|gKTL*`Y$Jv%%KDolUYUKU#b5iyO zSa8gByFG~{6#t2{5GBX=>O&r-|95Jtcm13v5c&~#WPSm&*L>ybSL!P$;1&FFH=%n0 zO!MQJ?V-)hTqYC$FvTI&+oC@=CfNa%HzmLK6B>L>yQh0xdU_uy7l3PaC7{KlmCa}c zhyKr>zHEep1^_51QW~`b32?A$@ay3`bPn;N^8|^p+~RCBRaJ8ROj2Zmq~V;rbtbbK zZeS`l4tTq z^^E>T4f^~d>E`ymhvVJ*krV&=exZY2(Tg+kd|_<2$4H!r+s5sit>?a#8yB!5&{{yAY1+`ijF`l#XIBxLK^_@ zfK_E%uiR2bR(@6s9vl8#t=>gcS`jQ$x}N)=^SScwqSN`v{-1RA{nglU>Uj|;mH}6+ zMTnnQd#q09Ykq0V?|iM-azX4#vFHV`qxL#|dcZ1w)djPBxI7P+BHdLWHJ{9B&jprz zGUh9&m>4;r=L`%E2A7s%gK>0dhy*#lKY#Z+J)nJQfSr6@@i)4oQ-{Bsj&4?u612xd-=SsE$tQd)8*N(Q??e)lT=AWF;gACTKukB8J z>k~2Lh^K=i#S2>VQ^D-Ae7mgJUuRrfJZeIW2t-gKsxvD{M2!?FiMP-F#0%#TZ9v3z;evMsFR!-ar*6LqQv4sqDV z2U>Nr0B{2$xpAjrELsj_;b>IMD>6w+?3fdi|x%OOJ;J z2T4!5C{IqBFE-~0iYY1ukd)>wB;Zm2MP+;INPP6lP?*$#iH(fA>=$3;s)X#I;Q<3C zNI~t54&eX*0?JRWFH#>-`&~bE4K5&Q^WvSHS~0RQZA>-Er(zpjpG+qtn}7s)p@NEn z&;E&RYxN>dlk_+^k52-dtc(n+NzJ)+&jF(lhugiDy)NO_#$*CA5Yjh2kb)U{?1|RB z?vR1V?Qm+|ld0P-xc)6md;P6HPwcOup&>CW5*nIsS{il7vmFw75g&NQLzSrdrlueQ z1ZC~)s3Id}S%y-9axekZPX;3+BVdNyI(ElZK$DP>0q~66Ca*sZ3Z;AvMqg*K*Jwa8 z{$qoWHQ*N8KPMA}NK~IJJO4uDbBSVKU+DzU0MMW-#mLOOS(N3~)7_mOmQ;a)kMB#- z9f`LdossZwY-ci&0UnG`0G0^M0-Xue^Mey3MdjZrZ}+X1U1@`;ep~UFR(l*Tkhg)} z2~$%*sDc1-2zgD#5g=B8grg+Tg`-kZDBW+L1s$$IRo64jK-5zmpEqc-1+NVd91&An z;7z2v*~@UQzqr3N009wj#>E9m3}k}=H$5}65KwXhqIAGf{Rtr=nbCmD=RKx`v^4M* z1im~WDrzeVxw(-wSg(>1GXrho`_%X8;IN4O;|%UbheLQ^xn|38?)mpu)e0>m0RMWf zIwmJU@d0%B?~025@-;woYJIsiUh}-;{fx&odM*L3y5prjX>^oEP{_uf`kpO{fM0+v zZhK}P9OP)c9?dWTH~|hBS;61m9|^+= z0Bb@4&J4R+1x$CE`R3n8N5j?IJ@A~Iv?nL!4Mq~9K(I+r zO3LrN<1GdR`ata_aQ}S*xH1~GDm0Ky;&No#3L@~@Rk^?$9UB8R!bq>=w*U$O^9|`= z)<&D(L-gX50kAX%N2oguwoL#0VXdw{8)aO7CoLTg$Kf2Ybi|cNmo~=l?A=@F?IG~v z2OKQQBgazQm#hlxtOULJRcMnW{N&^>u_>8i1mxUq+@<}oI+5BBXAKeg1v{|`>c1$0 z`k}ETn}!F?p8ve&lkH4R4+VPpomL-MO7EPKpk(goO^?M(wIfznGj|P2C&ji>2`jk^ zfw1c=$&UDDa!&fl5D-puDu#Tjb*drnQn|1{Wu1mc=3ppbZWRyO z$SM-)>03yf$wJ-CM(p&X%WLXH9nbJ3FQ&=IDhGb2%e5&KQ)~-wJ`#11akS0Y^B0yG zuBC>H-&LtU8#wr4k!O`Hqh8DXbjhsjp5wcEuwH(C@m77erl3q>v3ytQZd0@K8v=qV zn_};GG4me7Ui#I}-=Reb6Fa`VxUtaCFUZ8kq+t|esj4cgu5UKKKDYr)bDsXecGDR#1M(Z~2}x7}hWbcMZrWSD2|X+X zuiLdAfabOSH%xu{-|KGMpP!q8R8&;=7d?m|0!PHa5DjjV?cLp*%Jzh}K-fPIUibTw zLgnhrWhY_4%oin_X~~W#h|}U1fUE-RVl z^{LOJY(IbF#bvHTRsT{4PHq8~T^PnWt$lFT8+&SK*(7#ICYQDAo8XemC+GNF>Jl|) z`+oOvLOVH9Y#}y;Tn5EltJi_dDC2qz2dq_88H11N`>`<^e?)^B-#Lo#CL9(x;GGG* zmWy5T5s+gzVI(^-5i^oRR(#-fMM{YztA00G_Fecrw;YUH_^Hp-Xm7E3Id$1UNgDBo zJ!s@w`ihLC-tGLt#>lgt7OaT`WBA93gRxn>>Zo{`rgVvOa(5JOrY7yj&cilw9_Mw~ zi9`?1xGrXQRCK4i7_P_gbJ?Q^T#Zzg{FOm6y?l1cs7pv>VV_@{s~io?iJgpmjV_Cd zshT(9oX)ypp|#Y5?V7?DzFs>dnA64P9T?YGr(>&S&0ca*BPKH^-*CC-;!mUO`=XNU@e2q(K;sM_ppqy?Hz1P(?RSPr({Pn}9x>&g~r{BUhPU*qoZdjacO} zWC>pKGM1LOEzWPD8s&SvAwNG8tWE5VRmT3WV2hT%?V1S;6oE)i?r}Aiw6M(0e|z^P z_WDK|gc$T6u<)V)^gif72GRdjVj~dnhy6Sk@IDF@W&ShA*=|Ad@bI|oCd|v1&EoO` zgT}FJe&O2w!#=zHxeh$cXI#Np5-@&y*nG0$dFy5dDwTUDc6WEAqPBL=P#p4ajk?U( z*zaHjIW*=eZfuMJ8Vd_6Dk6)E)qMTLHV+RaOb-}C!$umN=@TN-RDS%h9`_BXWng7A zn6L0lPECnTc0tr#w+2Tmg1Y9Au{8GYmF9Z=;c#k>HCsOqDlHdV(E$>RaVmV@u1_Y)^!ZmrIz8MZ;8)jhry>Xq=xjdi82l z=!6ak{|F=*>J=$saDU|py(%p(D>v!-kDRk=8@JwR?)uXO;jJWgiA0mMt2tyH>&?QF z6A=+jAs#{3L*AuyDm!c?egy>@k>tmiFmhB=d4BBjq%Uz@8UCNVmY(2w-CYlEC{bn; zsO)M(@9m%9tOp8W(zFfz$1hLU5^&~Gn(&gktB^fYUT3}#(TghRRu-=Rdgpd?yE(MM z`VWYdCpP|JWA}9YZv6zz8dJSq-2YBaesfaEyyOc+IFGV%rqA?z)E*w81_r0yxiJ?E z+Dw5CzBu(dH~fwlw|DfFbSLZ1;rP6*z(>jSZfy-8_>q!9-UJ2Z?8mvDRFQ0=DT@Y} zo)U{82qqfMReJh;+^=AET;c#rPcp9wN@S$d$s%5$dNc6yc-AMASj%k%oyOremyc^O0aX8Ew*xe5Le1aMl| z+S&DXb>Rn4Y@MC;Gf(hLG}&VUfCZdpL;J{7LD|2rDwRkh97_VKMFA{L8z@qCZ(h)R zYpWc#Tc0{!Z}F&AXnIF#`B_=1j7O7$Q<|`zZt(@a8BXO_)2Oka0(@CY3fASNvwH0j zIupT8jmIwTXM#`cR0b_>jnn0tnC&m-FwQ87>WwZ`*b#xH!x}oS2CUp(yrCowgz#YW z?czg9T?FzW(lT}MI2P2+ch{ZMWgl}X{yVKq54FIiFB$jHkRE5Pbt5esUkZ_xa!{e%AT$1!+g*?$`J=)`5^? zLTKoe2Jm9Jrh{8MuOI4iXVL`r_VQP^&)iW{Bhgvqs`c2F z2HcYfM{;VEEkzDoyZY60$@Vmf|5l|RZ?A}V?)N<&U$bzR++V9bH@3F?RjB{=Onfv^ zg>kz(^!Z-$EeFl9m7`1OpXsxyso4e>juxDo_4`N3o3j4<2aTSZu4!~7P6S;s3OYJI zzrJ;!0`eSzh@c=5=OSX0BXuBnRprVDf5KvV2Y6byCl3LDXgF8yp8Ds{rsHv;}0DiKM^gKPa6YaegvnqrfuhDr_+8=g_F#8 zN(uT_)SDd`=PTDYKsUwa+N$B}^Ofp&R>vUdhRtw1p1atIi@UhG+I~9k*qkb$?j0C- zGa>*X_^spP0V(>n&J<=7kVWIHH69~jXHNn$aIM+28=H-n4+y+hTg>BQos{I{-*J&s&%2iW3vy931MD%btX%BUS3sZ?lmdq75W za9qORYHz;y_wVkBN*K_t4_0jGCfa%nD zzkLM`V9>aUIG)ZaC*+sv`Sc2Yvi7fhuWVpv2+;q)HpT|pHlcudV{|{u8+4Lx1L|P^ z$cSH{8!J3-yt2JLvr~Qj0`~%=$r;OdW=pu(Jl(sKg$D#F4E~W4R4%-vfPhF<)?(dv z5)yZ=PSft6@YXP?sinrVLYV$bluhP=0MwK5jP{U(0@5dEvFJ1fVF52J=wdTX92}lSgp{0!g{gm>EUj(OD=`Z}a%T^5$9K-I|#+hu`drxpBJ_LDjc|D1fmwwu7~aWlT^ z9Y0D=9te>iLM`HRhU!3sX@*`O~cpLM_7jTH>Za3;Rc+(FJldV&f^*4Wb)SczRA6H(`~~<8U7e8qxL zDPcbW;b^l#+Jc;7l=H(E%8&_xgyo|)J#&Ld(b@YipE0pM7Rfe790({{5icS;$JC)f zYd2F2p1Nq4GD#jBorForVM^Yt5azz;pBelyy+r;R=N{ui@m@W)x~lFQ($YThh|<22 ze1@WrO8ky>&&D7o@lg~}l%uJe-=MJGM)Mu@PC64~A`()ObPZM; zbTTHsFOl$T3YcpAfdqMRvMsCK6uPvhCkw%2AYS8Gu>=Bf?J%JI4%cx_En>o^?i3rdSW8^L_qF;@QQTxkpr zTJ$u(#~NKIkdfb)=U5j6`<1bNKAW?AwflVZNcQ@AW~)Jhpb_COS|*S;o15^5=WZMq zKYy?GW_{LQ*FvXhBv61rL!-;<_rYBbXSz~5#9-(@ ztoVdPMJ=sJl7?(+Q^V`zuKavMLJ1ULF*aHa6j4&1`}z88R4A9#8GeYWP@=?AJPRhI zm!}QhV3fcP_c?R4SV8D;wFR@y?Sa{T&tc8$$q}SR#=&dwAFOM+{zY0=R<=c)d;8r1 zVc@~1P2|k@Tm2oyzwYi1JC=+a3e@MZUIj!mfn$ZKz^U<4TU!_1}&Yus)miHPaJdro~+T1Fs|)8T-D zl=K1Al!02wA3(A1x?6u61kyXW;FSn-7SQvM|AV~*Mr@={y z4)hX_Oy+!8Y_Nd=wOhpW^oY?EG@~F_oe8QT(qo9pk#XY0?d^#-H}};$yx{QhwaqNe zdjUnI!}AdX;Piit9bqbzr6CDd)m85<{QW8X9_U7WHAYuocu0b$rr<%()_WgSo%L@5 z0&t9foyA)-!o!7kaadOx@#Q3JId7eAdD?D2h=w0YN!Vh^Mn)Q%?0qG+WnqckXQvk} zOIUcZfRq^;Wks~MS&JFj#v`>oMopyF&_I_|NFT*aWn4^T_ zR#*S4R4ITa9o&=<8rH(=F32~q)E}CZ^%fi5wto$;yxMB-RBzHd=<|Hqqnpfn2iGk) z!RR5(4?HBJsHlMk78XJdN<>e0nR??Z66yT*egb|UT#rg5xbDd!r0+|lXmlBqfacNc zaOm40#}18nHt>;wB|dgI@{;eW!PN?O83Pt(1Jl>wogb)6Ln>AuAw zkO8t3R*<+ZCz-3z?cCRG8~+n>ywE|eHE(i7t`MynS`dJR$YiJ1^2mBtWL#ssN(AJY z?5sSdj<@!#8=OSY_BaR%%EZMRduohuK=(Bn-5C`l<0T2n%HBp7FK~`vV`7@9{8j@{ z(@Nmnw*y`?PM4qj6TEjsmF<;mRc)tiz(aQ*_V zQ!>Xo+?n9pZbe(O;xoUSHMW}@C2mF?TW#rnhGF0Z6PeiY*oJqUU^HZE`CvhpIFL2X zxSm{b8oj>v%xG~I@Xd+<$B0ZWQ~Y3)7_8wi4O#9n*MB~d$)H254#-43%oEYXgdF18JvvFX zH-1P??>yU&GL`Q|LJ%>a)_Wc9o$n)bY<#llM~}YgcEI97aX|@^bSwO za*p&PIc=cS)ls#!u3R20rF1_tomg7Q&$3|OQ3pI2(dh6c3{8vvw^cZCak>@}er+i% zApA9%fy;$Zn@2miJ)yT2haZCQD_g>ID@wei&q_K`WRP~gs*Ntl22U&@Tvh$~vvplU zt)x23WHwBpRA(L;sM9;X7T70M^xq9)C9}nnJzyNaM<&h9{w55vkiKrp#9>LY+iMxp z!;23k!tLh`euK2^es+xL2*4_6( zi0NXnBtSi-9Hb|vW}e{q2Sm9XsLWAwWFkMBvocigo?3~W;9HE0tNrlzuk*$2rQv_Q zyOs-$@t|FUIGD)nj+v2_ad)eaVa;XR0D~^|LnqkVN@wvA!@|J{puS>YW#v=B6r`r6CNv_pxRng; zdFvIv^_lha!@f;x>#lMljrM2+&Xdd4*nFeg4K`>A@o=CoJn!l75Oa_pc_ohQ0Q@^V zQ1#4Wmx8EIRWwX|r@O=mi;jj-((p?+9zuY!8f2`z8phAP6IpUhDSp5a= z+T`RayFP3%|5$xfbp-{#dCp4q)ixVqhfp_V?SLF42x>wfv&_ z7z~f>?adEDfCK-&9hl9J_5`_Ft~6$HJD=4Uk3pZDoC3lz1RWh600%Qz%t?PH_`I8> zTYm}EA`tqFO6PTt1X2FSq`QoSgg!tXkdlyqTW)w81$+Zw*3JU#nXd71Xa%&GKN`Ni zk9GirRiV=+YGpzI;~3NpS|Jbn9pV8falL7fJ8h@~@m zGJ*f2rq*7q*?~7Fhy38|xF?L>TJNkig+}+4 z@`8eb0Oc|aa4D6{`n|$*+Rc(bFC2iu>;9#o?YDX@8o_xNmjG*OnROl;3ZKr&6)1Cs+6d6ZbL5>+yjBMtvsH98Cow=7Kd z3eo-=!#)SW+jLegO5QrcWV!X#KE*3P37K)SZJl;&8vX8tp_hf%McY_?W-Nvpa?Hp& z>@`Dyse#JjVAx(=S(8CEZ-^jAV%Ep6g&1TkB{w{ocJ3MSwoatr__Ce!IlHMkp!4q< zhx&?Sdm-Z!^|n9Bu02{nW+;e%JzBD?@N2f4 zEEdQ!YlA5$Ho!l3VcEeEA4DfIy*Y%U+(3rqY;ZI>)#{po$RSZ|@HEp@iH#5wn8A_d z%Ew92wVIZ~7nEl}+kLmBGQgqm?cgK;t^Dc}l5ljvTwcx!@jmoRDh06--#1PN$nR!w zGxNuTbLdRNUIHxSWY{C{x#2W${q_NZf@SEMS5R2$81lg=8WO^#rG=c-1S4O4SbE8D z*gc^?_!ACNXyG2t^n6$p7AvG*+6Aq-kMI?VHXuRN^~N6+uysE zy42D{0f|*k^JgyN^GYtO_IyI(nG*|!avqX{rd-4;pP{qcw=|m!h-DqwJ}XQuMqkdvsE=oRAeNgnX*9kESzuGqmHTtP4{r z*(tHrm$P!7B6xNJn9y3P>gtB<+AL6A+&~MXc_Bw_pIbR9f>1YBSdlUR`Q8j{kY=dl!8^>(s-X5uP&@( zs;$aJiHO;vbckDQ-;6(Fs~3hv5tDLqeTY&?j2IY!vA)`w@=0IEk~)uBZNze#Po5V= zL}0qc+a6KG5zGFIBSqTwy+A#$AU8j8DwoRZfe=?cp3|G;z53U$RKoI-6bbN#1)~KQ z%QJJu#T809ESLv|Rz7}l2xNOiQuES+O0Z}c@eK+XW^kX5#tZi`o{Xw1_hclgTfs`r$f?5B2c>=zo zXfZ8u;UBLUMjF9v%}V(Lv0HD?X>wSi8k!uWcvGW@ORaA{;d8-t^su3GOpiPt*xL2d z72plLA^IH@FqSEg(UP+Z`oL2ZMiD(ZTZAM%IZPXzOjt)*_ALY>;;+!sPsG6g`nhf% zh_;B~JL*9X^V^5;Hz!XceELbx9z6D77B=eyhk6uY96F zc~M?RXB?dLLLwu7oGj?wo+Apxl7OR=i1H25n%gm6X=$m1loS};u_@}PjGr!718b2O zpe)A#3=~9kT$~W-YW@m?sBdHxK-ldElLGKGs0H2r{e_}{LBMTpUJ8b8aA3v`*sK#s z*w~_A?gY}`qnXSI?l9bBGWbD~$`gr6S!A8wkf5Kk|G;mfnz*?1H`$R253m`6)e(Z5 z8wdEqW$o=z%jRiFPQ)RDK4*3>_Qf>SvTv@A`GsHOvS1^eozYpY*9YC;VANhk8HB^* zcP<9wu#~2$wOV3-j=W8WZ|R;%AqK-wgXf*EJfl?I{o}Esj?A$nU|~Yh5JtO)a@$xR zh}*~T7W=M6R)=oBos47@17$H#ZM5k$6?b)cxR&zO;F*&0H`$|ksP*VD6TCv##$T^L zEEbK95BO`V+{`Y*?=IP=F8;IsN}dP#tIAVVt;PxBD>wb*!f!TgCiG-NIP6En>;3*& zVV<@XSlElM#lFn4q%BAPx!c>(WY)-x4!r5|J2$$v;xvi)B-P8F`nyIq(m>Idppxvj z1NRHUC`7(B--HBGjR*`#pR9WC-t&$CdBp-EzE?VQqgk!cR*|f4-m&Ke1~wLAGUf0R z9{^JUBp|l7G(^5tW`f9*f`(QIFtG8uKk6?IgAgJGfzWQzZ|#=%I5;>ftE(=D1(*~-@@D!@u(|T1 zJi(}3N5LX_pKyd0)>k5pbzWYDU-#xPD)aa#HrnAhicz;rSBOBn2f>It)0xKN%W_oV z@vxMyHLtZyQbZ_RkH&+lBTnx<_bXAy_PN_NSGg^(1+9fkmUvW!YZN#3@?6K=Co8P= zkU;01Jl#eh>--zq7PbCP$6_vGwpvosalerPz)}fuaadi?8&b{s*3MiJ>Y?G`AIEbI zi?#dj78ju`m;RtAXQbk==VEa?v4ALaz%kS!eHU zUW(&z{#l)bk1oXV7^Bugl>!)Q{?iQiAr!Q1SAO&!kB3iL$DL0V?iGb?t>4nH4*h&Tsr^x|YsQb3lIu^~2v*_#L9 zCL$hv=4+18VDY=$ih?g$?jp8$Ke#IyEf!7n>DR@gp;}*7tDH}I$CxRD-9Ci-k6&>f zNyF!vTyNSP;GyM;XT_`uKV#()NHvp3J2nJMj6h#*$i9~u!$zY(5_vB$=gEY9q&O(4 zPhZ67wfBzi*$6$CLS98_ETxB0JofiGL2$BW^3+UrPJT{kUW?7fVo%5eb$^@(`A0Ew zO=Eieo*cXwmUk&c0ucg{6GV@;Kp74Q@FZ8Y9 zYxj`H+Z7JbIBXxjv&>hn^)HS^)@)H#XodW^oHEmDNApWEF+tgiRR}F?Y~;$F9lVFR z&#tg3tQQRsWat`Q`4qu-zq~qz9#Fh7GVuzU%2S}i$Q8ei-;=3kzc zS7KTGrhfmD9tL)1^5=VWNJvmEp4_4bXfkH$tqFnN+2q>1S|L1`LBGTs&dyGFS`%`7 zMkwiie~Z<;INcPO^MgRyic@bl=Yo151#$K1vE_{P6QZ+K8I!K95-_CGvo;nrGlMFj z1h39B0d{)1ww|cLEN@&As$0lv#*o2SS%Ib5JZ6pZ#L3Axp37cwx7#nHGiG4$L6rk2 zSoZsLV54^h5M^jRfe5>Ph-=1u|FMFa6@Rcw)q-(EBmuX8hak)A>nmvR3itQ_f(BpP zu|n))%F_HN!QUT}i3xvlWn~m(+GPOmy?xaa4)(%itM~Hx^@$!5`ZMsM>^Hew!i$Kg z=NA+(+nnk9YCP(jm+ovwy^5Nee$n;5BK3ZIV!J)%?krXyUhH_=%zLu#;i}ZF9QLjlt z@L9c{z#>k7yzzd%q)tgu2hETTt&hXUG@8xu62La*Tw}S&1t4Z%=3--ebHv)+6LoP^ zW&;cZeMhs@E>9Wd*Qcn1!wJ*}v(&+3X}W|Iri6ab2s1s|w7b`b_8?QkU2DSM2Vgjd z>mB?#YH*er4C`E~2*V$gS>3Eac{tK!iL&C!LyZoM3n&Ns3 zBPM=cYk#3Oh*iG;z8Li}ckP9zwJ~ z-I{=VmD8IKB|>xrpwr*`7>!^6M@NXHvXs3&I)Ht34Gbi8=UVnhWDEuov<>)t2ukL5 zehAU zj!xSu?3eiu5_zPTqn?lwq89Qt!`WyK%-`8sM<5*@XZ|76ynR;MSNR^*&_vQRG9Dg} zD}e)MjCl8L7nkl$@xjF4D&y@H{vE0@^>w0R)2uJm5l?W{)vqOAm2O0#cIluRCW^7H zemvY}0dmzUTR&MkJ^jz6OxnDTq}f!nFRZh^`R^wLqP=mj%eo54S>lh;#J|_lHRr2% z%V?(=_|aYCT8LHMO=3Cx*6x~JM)6X`a|11JFNGI5&xzvpXQh^AD1V)25Gds zb5+j7Bj!edFc5vBijxWZ*Up?rPB~kPfo5}_mQMJj1ycOZ;jO~|(R5Z(S#{wSMg*iA zk?!tpkS=L{knZj-2|>EMySuxjL%JIY>5!0)vp8p*D{qYPA?&@@`_B11kg%OFBtk9a z;Z@Uk1&EJK@2OqnOt-Kpyoq_CLRJ4O6S=n^z%t!Me$I{c8orG0z1yWorn zw1Gr*^u+TEBrD5?9Cbo+xAiPn_5&4eZe!ngjaDkzhFOo=Q`yb-rc-ppjBMfJ%7pcT zyX2ge@cbb@c4b-VTcZR!>M1{U2RdF%-vye*)Z?g&` zYi1=D=vUS<=q{9aNO31HA6<5hPF}gjJ9gc@IJSbAym5vpw*Tq4f}tXJ$X!V0EV=WsWXY?S3qshvc)d#^TqncwTTczgTe8U0$3FyZ9 zyS+YQ!Rs6n?l?Yfa-m^@3fII!t^M3dLE}fFV;5e7n-s)~DrJU0#f0kO;UhQd-%~y~ zJbv?RZ?dAp{Y!KtEiR0-Ldg(Ne23vnDYu#IDIP_fGi|Q)A15mJ=m$0@3Z4;)mPg)c zw*-_8@AbolRitWN098Vt|3f>obJdC!JNn$hU#A>4BF#X;SD7;NWI1<4+2+m{>-b1Q z*foLqN1a%jl>rxtVI0>wv!bNjCa0k#tuD@z&=gxmSy|da7t9%=vs7zXBCIPZS~I&Ce}-FigG!G!s(t*K}0-ip*>Q3SJFl#*ij zRKR5hZf9~jN%1Km zs%P6*A}K!PP*;}*9#=()gyiIUkE`&G>lp;VnB0Ve;~6eh8KR-4?jIjdv|05rp3L$- z5vmEsnKdIBVFle}G0CB+nHdo^HBK-eq@<&Z{QGwnWY8Rb|0I;pjv{7f|6#Rgi;Clc z)7XYalx+)u3W_Q!0W$wZmzT4FEIwFF#DM8pmdmkjPDh@=2-S{68{>r124Hi|EqH&Es3onjIaoNj02MrKyBF8^`#^z?;rdxu6e;G0fn z{wOV_@jyYKVX7wOY7Z%8^Jn2;+p$&V4G4ys8Ci)_=-&7OvIy_n6`Yu80+J{hHhpTN zS$1Hy7nZ+2t+76Ndcgr@Icbuv2h zQOKZg^mf{uJ;WdK6~b=jY@gNHT~Av(gS+MxldF1tu(_S8r$-b35qbv~f&{&v++Q=# zmCEsWzEMMJ#Buvv^N)`+0F`C@120E@KrkwrPby#NEnpb2ZU_>7)%?or{8eb%@EpzI zfz>U3CNx~ya3$j68VUaQJQt_^_L8{mx>P}HYv9YXSA5(PM71s955kC?(pu<1G77oa94P{5>(aOGVe@a`uQRG6PWH12OoJ`g%4vIJndOufZPcNwVTo zc95&pqR~lMFPGZQ@}WW3k_+~t&LlRYv=O&d%{mybw3$(dhJ1|J@43>1$s43Rt5wMC z;9=~hnvM;vx^jh9E(`_E9$Xi{(;s_infLX~R82@u-rHs8+iBgt0_Q}%?<*mrZUp)D zu<%DFO$m2*s3zAY;N3|9(j(CLQ4s01i6RsjD3DgTyx%86BOs8}*JpYwxOY8U0bn7I z550fIn6~RFuUK@Jz$YF<=1jhJG}Pac;Gmt%w7wg;C}eVzK?4?q;+R->_xI>7bg>Z) z+GIXj9&+J z8^@Z$@d(#;`?t5h|HtFTwwC%n`p?rQAgDj%pGjywWx^q+r#XhdN(+M_&D%xL1RIUcE_7*tiR2Q9|{$k0% z)1ji4R$A!)j)7pEb&1iRHH$W#9gR*E@WluBv0*7d!%i5!nuZNoQy2$#L}~JMX`|6= zebU})Vp!5r8kDac#xOek+C1Jz@NwiyZ)^%va-@HjfW!rNF#jF}#f_Do0{$Ku5S~sZWx~M2 z2IL2x%d1Ns57LagJ9kxDEWk?WTU!$$5?^iGv~ZzY9N%5wX#FpWfNw%U=-Dql9SCFf8<)A!tL8Iq$@6!IfwR02D)YSBL#{!Ej``DpQ* zxT7M1_14AwB2m5fDiL)8yz41E7^KGH^L7Lr9B_le(Q@N4Hlg6y&Q@RW^~rK3aPQ7?vejn*9(iF^I($yAKD({SJOjwPCK6L-@PH1TCXGl?qO`&m|1@8Eh*)1i_`|I7$~b)1)GI=oW*0<3Kes6%}O#c^Nn!w{Z6qO@B8#uDm{# z;ZF50-BfL}t?i(;+GwtIt<)uQEGUVZBkP9{cq_X)E<=UF2QzUZr{sx4qh4>W%rRY< zjCU~&%;gfm4z1HXWy02p*Zs5wH%ue z96_*2^7>m-Wf#fsk9L@}FtLt{7IilVc%YW1ebiu!;Eqj{%LWW8-k+ zFehFHG0gkVvA!*^%pbQ5!K$QOIe?zcSQoWfVa;m4(*XbKp=q>^&f(Ujx2hhgH5A$$ zS4*>#cjekZ$AUmUv$B-F%;qkR{vL%f2 zC)idYa=BfFg`#ZQd*=T2!M>8g+XVj(Fu?F~IM$|}=b$ZOB9d@4B4TF(rrmk!l&g>MI}cxdjI#+k*W*5jzH=v^4U_w$!!-qOkU+S; zJ|FB_r%L5;;|J{$Vsntk*!uZ`QK2aiP2jt?b9^igXkQKv(*0sXD!NJ&AlwJm_~)ST zIK5N=K85S~OKK>F+0NeHkLYNW7awmNF2+w#ICyxHK2H~Xou(u_%lB&?XtEj_6qAC@VHZ1+4!5?nANM{w z*ERj_{nJ^YdjbEhvyBWMUai724A3v8X4b||?;gd(*M-Xyhrh*4HfZ$V3ph`gTt{+y z5Nu}YXtZp@fgeEGg)h4+17h%wbf5k9l1vkdDq|I&gPe;SYQo~4XvM&AF>#PZD@$)E zHHKS^0$=tH)(u5+L;IDEa6N-&w0gJancr6Xi)qg&6}9`<1zb7e17df^A48XOPx`#e zzzjM-KBMf^e?O`G|5*UoWfwvm>1eCU&zN6Is;qxs*IIG&tkjzgNmI(cgm&eVJ#XV|9$3a=l;eFsev9#Uc=mM{3gCxaY$%M z!TiXSIZ{O+sT3k3)&r&CU(oMdB_0@)7B@0hidR}z(K9d*J8@=Pg2%qrni&(6}Z=qPTM?*kbwUiv3y z;+XPemvdL8sb^EUaK^H~;EGyQLGdb*$&p5AAZ5b#a-$=hV5E!XZ?2f`CGe} zBl9k|Xz;(j<>lB9D0LdG+c=<>)YypBaWVL7X~{XSsR;t3Umou@b%xaT0w;KQ_no1uf#Xl^cHg z6J|6tGmS<^hD=_Kw=Tl{{W3_wri0^({quudf{cnPEeG-T>3SqU8URGtWUUbz*iC+| zGiJ>8z7YWTRDgrP&`2sRQ{LJ=_~{?0z~XtWXkGa{Wl7hupUQ@>pfghw27M}Rb&nAm7o zIV>UHr$YT8>M$s%2lTpQd`MDB6m5g)FzJ)mD||}$^$yMoVN&>BS3RSPHY%Q`bKJbG zYqJE*NaK?>^wpvoyyKBdxf%Pc3E0|B+L}FqMxS^xHnlglHXug7xJPOg|T!lY^ z(gxK+c)gqH-pP3*BvR0}-SKWM_XQ%5z)?d}bOyO^pY8Y+iOa4fI+u;A-l1Io4(5tB zSRP3jae{Fop?^10(>>KE7)G!WX;h3@R8f<($Yo2#&km0RCuxS);puETT=Usjczee# zdvEwfYGe5cVVq$+Bqb-javFD0TM09j-vzP#l{>UPTp&D2{?AkwTS~e{j?KcU3V(;r zbi;5*rwbWEwr8MIv5SO(T{a^oma4MO{LhWdH|=upsc*;RLUU8C@1(`if0p29K-fGm z7oWut;)RecmB)<#zdy8~;0b}Ig!13P-d;pV2%sNJkqUS^lkw0XC@JRHz#upwVEV&h zm?2VLe!)+p4B;jmS8*D2s=nd= zUi#5@iSN9HwyN^nS0VS77M7Hh`m1nHROf9_=j|saxro-%!B0k>ETI%lOFtoRHn3`P zoeMy{M<9dsoah5`4&|-jtyA`X>-poJo8VO{Tm9ljz1id#P{~$qYLY@FsH&>gx+OEU zwnA&Sev5v1fPoSo7(n0x+&B_0JHecqnjga<+)33Lzp8ZfNJPHK*&uEDJkp_ug7B_v zh!`o*F#z+K{`rO|h#2sJV1*`ld=K87>g6eyf}0|R0NHz?ZXj`gl0?3rZEYDjI5^(kZ~%nNYCQZq3GP`aME1ck(|zP$9t_hTE*2I8 zAmLeBTC(3ACIPVLkgxQ6Ab_`%>BbqKkkB7P642uFOnKf>fB(;!E*27pTOu` zDH|BBQc`gxpRT$wTg*UpJzXO3^LM}^`-D`VD}f6yXm#y?H6(y?bF6jyW^Zq!i}VrJ zTQAc_;V(y*9)cnfZxj&TfrobZ)xJWl=RY6>V+Y2Bv5;6%W=>Air5fQ+>7NWNE&Wqd zS$uqoHCpVUH8nL4%&jgClWeT-uSKYDJ>Skui`l*H-#MoHfS@N4ks>26&j>c+)=#U!)QOM)`8M=( z%1<=d$MEmZ(zSNHUl}~J)b!MQ!&?xh6S$M#H@gj23OM*X2+IxwAbR_@nK?MNc9+jf zs?~ir!(*AwJbkoVV>(NmGxR#PIEX<^USJgD1gW2a-qjb zl=;1Khzf&zK6qQaP-`>qFn*;Hqa)#N5ARR>_g|Wd`Jt4Dy~L?$%`&uSJ)L8yRR7d+ zr@JG^$70=6n(=Z{x++v4@AQmz9{eeloY7Cpns;f=0&n5?GJ73zbR>I`Hj`PFhYJ}U z+?e)DWm3G%FD(p)FgvV&ZR5wgD}muq268H11%{xs)4apff=aWcm)=)SD6zEG^;f7T zs`)=APrlXm_r?19NFQ~yXtW>-MaD&Fq^(okm7jZve^2V0udAw+ee&gMm`0$YH(hp8gk2<3sy2M^DWI0)tFz_k`#j-r)GX-FlF=WR2R&ovzgNs_E_24* z`j%RjPKP{3i2dh@t>ng}x`p!kr%soqy$CnAe=lTcAhe;V zD3tJ(36h^ONe*qbn3AfDkz)`gM3D@t5-B>+F^F241mzX@`@&Vy;8%iVNMS?X$8?+k znvRcQb!XXERF9J)iqxg!bVFXh5NDWvpufzUK$&0+9Ay8gv6*pnTyDG1W|fvaU26;8ZLvr2N3UNb~lX_P9=)md&@n zCrjZ=G0?aD=|<)=&_9?mSM=L{T&@cJv#ffUg%`$&=Te?o(NGM9F1P2B!*yl7rN+C+ zxFVoAl+zFZC_~J`Bvxw=Ax8{&Y4?7v?xSeJP3H;#QTLt#L5_QYlVfk>#f5a z^*SXRT?*MbY4p!Bqx9#rQEW3{ZODww^JL`;SDq&`>$f6Omy^q>=D%wY@M^^;t{8Tr zl_R&@Q8R~;^a;4%5&ORj@Nzi1LxNz;Mll|}-bzSNMa3@> zycxK11CW0B5LJ93PeQ+vVRwE3uj%q;ybmZ3hWa^^A!zTVWaJ0t#{{~d_e4Q%y&0L)G@ zPyoH_JHE$$fdrZJbN$6Cfu-d}D&R4U7F>A?M{R6~E;XI1_&gk%fle(JQ}uU{JPQEa z8-24yLN_-BiD*IqislC}0l>_rB>qiLQ3ze3a|QEwb8hlySTD){H61SoYFWZ zHMQ6xAf<#H-f{G6t1V1GhX9Zc_bF~dC_ehVY`1e*dzcY5-6Ub|shO``8W&;B)H?Cu zn!s0Be`)oi(Z(M={J@(yCGnN6?5_$?R-E^uoTtIL~kbK)?+p4-yjMQ}NGBo3|bE0J=0B9Cr3uV@s zY~8&C%NNEe`T3*dGaFi#N zt}k$Kj(S`(XDAuLkibGdKiu{%7m{6Elt$pxCX|ih!XTXmANEP!s0m-fsOifdEhUDwrFYp1<0AxNRD=V>zKsff_LA>(&v-WK8 z{tqrR;d^t;sFG5Uk_L^AS^_elyiH|9+KO}6vn%$h&?_7&i`O2lTD3;V`GpfM!Zje6 zF=n(&8;*K+E#1(uOv8c07>Y1zNpj>@GieCFMBAq!VJvrNaLWNNs)tSm)34=fOmnuKpx9K7RDB<4^%cvrb zK09+SUL~rQi`I^*{s}4khJCDPWO=eoUP&m=Syi2C@NZtI9NQ`<*AAS(iK(~+9vH8vszI;J1FsxL>s1@v7rkH5KzkD zg=J+SAL6t^WwZr~l!{d;GJD@hF=ll}XLfR2I2^Gwn|0fQis$}8Za8@EF@Gz-UaaO9 zD^vz8GXKa*Xifk=mme!=D#}tBva2z_C(q)K$g60GW3(l>I9N?=*wudWwwqO?+P`eo z_q=g6o!Fih6I7t2VEG`7YVU9gR8R!a9!GZ9ae44{YzQelZsZy`Kz?#OJ70-$%J-E7 zJ#?w@mCWbm<&$A($k^DoEdHpRy1cZpF>OaDc#o&AHVLMNhW!Iq&0m`=IftUly7`Rj zB))l1#;K$BEGTs6>+sQuWCejfOgCvfhvVV4%k{N$tHU!gU)K{98yg1Xd!kzJ$B#hW z(c-Z4aeA6%_fP5O;-rX(lzb@QY1o`BU*UnKhV^n?A~eF=i0M{AV3BDD)GLA5xEP$C z+3Yq%D(C?x+7YSE(-Q=N1C1oTmpk{(00bnJ-QwelCOR0ni(6XahGR2{s!P6^)8gXe z`!aY0`};d`>gwWTlNn!S|J}1`cl!kT`PC;RCIW(i@V9S}0P*}KjXg3g%`ze)0%Vks z0cqOg_Dt{Pkn`gDELUgh z0|ofDHe6(am0w$ZL!WpYxxw%VxG!OZ3-cNpF!|bVtXHl%SDVlEdw)3K3!M#t#R|{^ z8Gz3WqK0)|lhvS17X@_nsOXm&L|w13Acn=t%GT=r$OulE0aH^o>TB!lVAL-O?2$D< zVFTP}Ke~M(;wj~RgCA^=mwLp+P6mmt@-zDvG;lrzub08eb0`2q8%yW<;0Fwsrh^g7 z;6jkbVk80Txq56iM_<6pYKn^)$mw~2^9LOpdmviqY!_TTR5UaIPXZkPJ~ zb-cj(<&B74Z^lHy$w^3*Z6QUW3HC2&AL;*YZ4cmqHqH-FG|ZPoQD13Px&1)Ex58$) ztG~Syr_uQ2O^(ij@KOHH<-i9Ba|>y($Hu>4vFK>sLtxDM?>2fxnE(i`-0?rj0Y#c< z&@JGjeF*(J3f@-ROUp?Y-dcuIs!8+uhPJSunV6_}U2GMMGBakq&dK6O;M(x>S@IHz z4b~tP{3pbwonkN+2)@va`nXi(EHYEop@)@FSCDL3Pzro-BRw%Cjr`}Br57nlif(Xj zIUdt`HjK9`wl0@jt5)QYxnNbmCh_rsza2AN`6hZuz=S7}Ul8ZJw;LV|!-1%bR8f%l z74}Q7FC;)5X|jmE;*VRun7*B&rx95SnK;C){)CFb|A%8K9zxlf`klnm06j!+rlV_& z*MhNLL%uBE6*>uTxC(69Fq;Ov$j#t??VdEUHA^m7X69emGVN68q)YnmB}YdeI^zE>@P(sj4C_-D5iY9 zP$j9MnB!VZ=~u>MTlOWYtO3)+lXo;tQ&kQTJC|ocro1uaW3_`ag42&WR@^+5sndC^ zb;5~ZLzNiz`e;=KwLeUHl?z|6ZTJv&JqAM1G@+B#WvMOks5|aHm4`l;d`pt@_E}BV z|7BAgl}~CJPdQW27$l}8(@vrjdvK_Xo-}wB{Y>*M?#FC{V1k&ba;n-|LbVN59$d~s zSPw;P$mhbjjutIiVq&_gJlgz(8{Mc~fyvKh#eo(doY0xXnrc|sw@HmnTt1~7Hyeb6 zi02emN7gs9p%wSWgssH*qaqMnu!MRS+Bio#AMn?Z8N9@nKppJP$6lMIGBpxVo50J= z%F@U&iBtGxeMeS!771-l^{Z35mq~pn^8A!?G&`{zC!HR&b-O|FAb0#iyR1W@sG=tM zpEN_;!%D>0?U6=3|LNJ}GON|m|5C~-_UkrWrL_GabTlk%~ljlG?K0^v> z9mZ{YjO*6jlTkutXhA|}Wkopw9!r5~kkzx4>h_t;qQpiiA`ETXtOX$!WlpAQr3^;d z@bcjFR7|zzp|7JnSRfRQL8dXNO(M*R?qJtY)Y6gA8|!Vdcm$JiWMMGSl7`>(PEOTUZcySldMTVL>Il7-;aIDmJCp zd)#=sr*HFbGm_TDMJnRYt$ZOCgC~Au!oMaHYo!@*Exk1c@4>_PV`-@cAe}IqgrOiK z6HwDt|J;0~2Pm9UR5N*r;_Bz zEM3lQEK5qY>ao5$K^*Ko+h}m(!ipe>{z1VSv01&tVy`z#gS6pt;{s!1@JuIs4|Ba= z+05BA;s{=4P1ehR$_Wl*(6X`!VDf>AgEP?K;Upz3Z899w1Kc-cAH%`g)(i&udT&-i zsBdB;O77fxaAh1%RC}!F3EwF+ko-ekh9e=?R$(9S($u>%ZOe0qTg(8kYF4QDouHoVaEo>dC|&+B6@nk!Qau? z7fM%0&3e9We7(eC**XjvFdURW3|5u(mqA7&kw(Ou{SXT~L5OVIhHkm&Fg-bAf4-O+ zGDPE-GJ*hudP5z%Hm2NmbK;kk#K`JFM$!5o<{!1G@lG-;Q=jP4RuZnsQmm%&69^0^ zZ|BD99LxmvIqDPvUv@CCI2l2xW4*FSpkZd88ZzrKe^S^e%9S6fmvlhHJ?Yu`4g28U zdU0ZbZ&&#oR*vnjNS*K|HK|Ro+qp!RYE1dy1JRvS*c`=iYg_Z`^pTMd{?}p01;l3dHZm=gZAB>h~BxpyY6MDBz*Z6SPI-5XS ztU1|C*&PNnAFB3z%2Qis@GH~`56jbV{2F*9Wc60nbXB5=7f#f}Fl~%qV9SK`>pDnp z!yX4eQbYf%)gAJ&=v-h{*OgB0PN=f3U-$f-TV5_J(u?qRo1QOEPGK_x`kKdF<(~ES zTX5BwY_!5=W@CfyXXm6nSY3SY17diDFdRW^ z7y{lUgV_n(+OHxyHe|s4W_lmidVPEz^_5(lG*(ebZDiHXMiiBphXl z4I@#+)RW|w`q<#$LK@E%6-l|>?q%yE^)9o`0xV-TQa`ZWm$FHcl&FdYQL~q7dUOX8Mci(JbepqfeDU(|U8~CSG zb>g=;Jn={jdM@#3D95O6IG$qCUe^B_nPfEECS~G`To0GYCFLPiH}b9!`Am;yWL^{; zn)ps$XSMbwTpFT+=mud#$S6?)x)yuo-Ujh8mjyszO4fGYE_kdwlpoQtDlI)sFq5!ySy{x@;AA$j^!4gn3FoRncZk1aHOq98h%&IvoZCpR8x zZ;z6{1!K^UM4+~Tvxw*Hw}RK^pCKl17S3rZ7Qy(bn6EDBA@gTOec4os%Gy!Nic_`m z0>uj2M*Sr(E$wbpw5;!9rGALyZr?t?ROs?WhsI0h6c&nuyVtqx1HQ1L!}*y}Mddgk z1jDt&iC=i3N@5Rm15m;fV1YXfOfO(} zu=9K?WcYMfJC?%oLBLx;jFcre*WiuWFN=*0>K;+Cu`HUJ%1vNKtSN+ln?au zKLQZP58xv6_dlz(J@x!Z|20C4bPLq&LH=kLOI@2up%Rc09G+T;Y;CK+5W%gZ^@RZ} zr;R|L!^r2^g^Gk^5{KWNUAYvhR5cvr%M6SQCaZM19UgCVfYUkh`**>f9u#S5X%gxK zLZEaW06DP9@9(<}EG+t#YK>}|o8O={V5R`7o8WNH%;)ygf%Xg@8pu0=KF7Om*0gWEH2z~s5OyKtJB(Vbda0w`y;aO`Rd=D%om9krnK zsWmn(XYX(rSzOHL*qQ;Zc=0hY{opNqw-s!c%51<2G(6t{Xd48#c-TzGOvlr>{{G{W z(bq@4_qeCmtBo+|n>z>21em$QnQ6mIXiq>uieFgG60T|@}bxq%XN4{B=qI9n9`r#WEN<8}S~uaHM( z5HB=kQ4n|=C~2!sbcpZ3aeJgY?0krgO;Ru|^ZaIJZte#LZnUj_wSj{14~S5)u%S}D z>W>RG|D7|l$r*zl$)sVN3_C`sQ17z5JGklbdI zL^87NLI}CxjP5QOT4+gmQm$PELc>iSX$+2@l$r<$@MvBW9{N}1aykhTMpoq_Pv0t2 zPnKIdorh?RLzhCiSYw-?#)ymUg+pGVhcEqZ4{6xf5Yvvd<4}LZ?)$^^bZ+o)efa9Q z@p_KM_=@=*jb`WnvjCO|E3{fKIyHyTt+~D#x~Ta{BXEzmM2{|0EKoMyjd=s3a9>tM z#j`XuX1{(2!)?^Q!ZxcHPmrjcac$>mf|mI#S#2>bX{-;!`#_vTiqj48XFOit9ELse z0_vSAEmR?7tjPBqRZ>gUY9(snTt5j4c1}`i%pBD`OI3g6?>QRfC5tnVHUyZlXt4iS z$0@8$8(^8*T^~P8xjGfS)M^?nqh^LQr6aVRRn19~KP8V&pU!24#R!e$t13Ak((Ltl zk+5*&Q3^hGt9BK2?ZJFSI`CJ{EjUmjy~O?3-!6^vVRs&>ARA?%&W;LSdo|vh4Q7ji z%k&jqX8Y>!_o;trJOw8qGP!odgUbDpza^qgMCoX?@;Rz-bn2N{#>&NjS&yD zIE5Nmh$-hiL%KrS2L=jrkx=6;-6n0KKYxB9GO`j~>&UbxI+rnR(3~cQ^?z8f4TC6F zE^VezW~q8l&|3B{W-R3!y38>uSdDz;Aj*GKq}n*U!sr}oiTRiq+_5z;Sh}xBWe7PR zQ0C>c6`?(oj2E2Mc>kG&dAhKuZs3ynS^V95s&)etI~gB&oXoam`+24Uxz=1^=`roY z$gh%Ojwj_6?W@UIY+lo_w4-Gf2_r0=EI&sFp{($n#7NN={eAz~S#=q#RBV+flG>@h ziQdG%@}s=(qo$#eq@ZSIW&KQ1!tJ(4Nt@^omYZKY{@Q@KVQ-+7RH5=Uk~84c#6ErF z_$8sIhhk+V%W0!I2|}ZN6PaEhv>Axaw0(ECGd`BdmkuU6DFR+Tz%(}SwhHjMdyzch zbJjo8Ci*|YeK0VmOc8C6`ED^mtaW&VgPrTML7PbK@5?`Q5Njd4k|Ggq;^u2?QasF;6luHX(8^3G_X7X%o>PSj!5!y!Z#5_kVd6*QuztK6IF za+*_}SJ9&q^~aoiS(geKCw>vHRXF;%moRGYpwdkeGD=W?ZdWix z3s*@^xl%fv-3pZodBb!j<2yOkZcIu{s1$i`r=A)AhqmpR#`mjTI=@O@j!P<)>hCTc z!*RF^u#pLDYHAyIM+-m4VX)%xv3*`&ws+`>xnFN0la4X1=Esn=!Tb zU-|b6-50p#DxrcdT>-#lw(Si*fA;&HEBFj^-8(k+!;EBl*f{dwz&szgyd##4TAYqq zN@+B%Z|n!WQm9Y@dQn5g-BFIiD>JbYu{b&&7q}9V)Z$WOB}KHu4ZouP-fs0mBwPuO zHG;7}zfqCX4326-#90aM|AFZG`VBH#&^93{F*aW3v#BXzycY@;KYbd-FVk(WYyN-# zkjAvwp*M~84*;;qZQ}*e?bdd!m0&C^(J7VJ1P)Xnjm^vqYz>NBo2k*kF1i<(4L)&x zIo&Y2JtIoxF=BMRX+k78lH+RDU0PYuH?-`1J8k^#38<;5(I1LB1>fWkw?x-^-{4=* z1I1!26Bu7lhtQ=tWRhQP$FhZ@X;g}K4i1LU>IoFcG1uEXwhs?SM&iv5_x48fB}tZ=nhmB6i466~jjUFY5fGfBh!B2jNRb1j zUT#2uz-6jqL!(QHT?~uei)xeIV_-%GWPeENDO+s4nJu%+iaB_#vaoScuxgLnJ2@Om z+2{z^+3EK7@|-)ICwWH90@m4o|1s=8pXcV6kNXeo+@GYoSZm&5sF-?ijmXULdJ7X6 zuTL*0{VfhvO)MKy0SXEgBeH@Oc6XWv@pU{`<1s4<`y>Rvn2c_})0RV+ zrj|_G5^P|T-dZ;9$6_`0(TgKniRx69!NMBgP{mwi*3ZK$@AS#34<;b34S|z=xY(9{ zs{=jZ05%=B7j;UhEDV~n&ic>|-dPw>l$b@sG{#m^m-jS`gyH_Qs=)($cU`fv$w?AWxnxIYw`x<7~oQN$%>$PVXY z!}|Lv$B@N_O)X55UTfedVjbBTrGuT`ZsK2R?zqD8BKwDaBuh&x_K&r<=RwQ{bzDhm zdvCVd#rhBOnS9_{YZlUsy(+jmGE0?vHXh)Lqy#^|aCfg;v!%a1^qTDH z@==5xA<{WbRcY~5D25gm6V01vyTh@Y08mRxMV0*fx8$c!2W)OtD0bb?T)ccPe=55> zM~dXm4fJ!OK^Fv%vttBML0+$4?#KY%2?-k;8*GNk)hY+T4YsIA?TyhcCMIT}umAJ= z`}Pz;Z$|HjYf2K5STJO-v7FZ|`jR@jNNcGBPniBB)z= z&FiquJuol;AW>kJ4b5yhx8&=7rjQ*pRUG{RkJFl*j4b}V`!RNKPy*!Ogb%J@1s@Is z`~!%TR8>W6Y)I(TyQBfLL|i=ejWPi?xgZORLzL|S#@0SFvuq%N0?z3_04*3mA$36l z30T&z?g7^Yuqt-W*1aNdIncpPU}L=_^zUCO@GpGn_R)1dUH}SPY&0}9X>h*=VDZ7( zVv>S_jw1ocxk1s!M$2l1wzi;QV{qnPe$?xRdw~OBFmyb;aIhLM8jJwI{hc?lOSI62 zh_0?+U|^uTyE_`%MFu$h*Sb%$g0DXb1x42WWZ&OZf$YCEupj_)d0Z{T?6Cc1Z$d{z zbq)al{QIVIkGfg`-5tytf)eRA3w(W(UHEHnW(L;aQKWcy##GyTvC#pjhw&^ zrMuIu8tj&VgFDJ;F!*Nu>16;qJ!m)dgy2O7>y`H7E4}GWZ*0chGv%x)3Kb=PAGq6B9bV^-HI%CZI)sIn{y~8v!S}9OM)+2AK6NWv_%imOx$562u5L$0 z3SQW`(VOs4r{x7FRwsMT!yoO~q%Y_9c_FW&#%pAU8OeVS<` zdXEN`QuDbw)MTb1L`-fD2F?61{|qOgx~Ti9n`iRZW7^J7_Sfb^I1?IT>X*-I6>82Q z5Z-JtiygXqDAE6B@_2~e$<^rBwk*5Fwc!tS#b6aBl~zM&ag{Lqry@Exy{9EnRGA+Y zuDjv`0B7(1H7aVs{YRmgh4LU#;?GFJS}zvj0U4;FnDBm}6&AYn2p9qb6?G#N)gTj1 zU=#l+s)Q=)ApPS|)ca5e6Y~p|=1-1d8AEFUI=QPWH6cvCfHikn1-)1ayF(&}Ly~y4 zZMZHkl43nVLk4e-)TA<3rqpL8?Wq2KRGVUC>dP?H&>xhpp;GbcV&M|qtzQJNy^Lvi zaO0HNu7pp!HFSdfLW0IboKNYQ53IxK+rN50vNJr$H_a7dm87CfQI6-tBdGO3A)3nxKEIzIeP zd?}O>F~yP^d*=MyvUeVt9dhkqVpBHmW|tUY)RR>?`RxQA4uLi^>FX50%qY zgs)G<(EVqJBk2mL8x#EJl*4AylCD|9*hUYg)`Q5>nYK8GV+)2-kA^Brt16F=d27g| z71&0ksSWR*1dYZ1l+LCbqX}bIBa;hFNU9pVIa*Tbdu;#~77U#y_3nSr#K6FSQ^oeD(FLN-QIvkotdsESM zt#wBAw^)M!nxUnw7+?S%mbQ{p7O5yH$$^NvIwKUY%E>qyQtGtv)||$#-;EI|C>!!V zf4HIKrTsoPhxp*>N+m#+4(2!ZN4pdmI=o6cDv`lnZdn2d0D>V29)k%+L$0ylNzrD}f{NLt6(+vEJRM;MDvMXzxLQ({Q$mK%rBx1!pbbq2D z?UxHLnfH;7cPT0uZz{0RB4s~Uf1MNjK9J@;Zql@C_adE^!ddxVxY>S8EF^ttCA*+H`Len#GEax3*Hc_-quZ zvq-ZNrVUr}%mcnSX>Ae8i;={5xgu?12Dd|8M8ubG-%Ky=MpPK}y50s4 zfq~-Mou08}qqH|5FbQ5+2TRlMQol%mXS%R(vxRj6cm+xQpSwAOdrP6&wyMJ&4HzWf zV>9U#OS-AcXYvOJOQJm7o{Nf#lAWEc(=gKPc$kxSdb#b)R-V`BZ#ko5sIah4QSDkl z)tf4am8zm+;RK7(gUxqD(1V2S2SN!+_4M~%AZ#@T0o72TnUaD_46*LzvbXh24JDl8 zRXsu8Z_2rj4avK*f{42uAOCocj+G{3>j`)EUi)CV8DnDoq^6FeXJr9X9pwWglZ1+{ zYWdkKs*2vGRJD&hdAH&RM?$u~_?+Wu_R(EqN^I61Gl&Z%jSy58r)lP@EDw?VFWvde zV*A~n(7etyB)@kVA`p>22{}+NsC{g4aT+YGe~&%6K}MJF$Ebtf>bUi;cAAD>izT4i z7t|*CkkKx=gBlX}wbwIR97#gH2dpa%L(|e(0xR9nQh!KAgotBZ7|?bZJc-%y@~(gY z0CKI=*gv{x02}^*rp@gY-SzA_<*RR}tit-XF__%YY4H$90dnroKV0|_fc)VTcMVFj z9dvxQ-e+MYOuPl(;c)EGFDcyU3=9lm;j(Z(cTfxrHuwYt?)#b1;HnG)y7*vk4{{Ib zIXQfQ)Ek?YG&mr;&+R>$4USodWw0NyK?&vbrH&Bvz(nCTGOUN zxIBrT&vF0Nx3}{xR_pDpG#&%rS+te9-QU|=Eoi$aUf>k`1d!URa>=q^M!y^U;XP(6ewuHf$8b*Spsb=me;7Dhdo(_ zMTClx>6hE}PRPeMW{V6)SyNls#^(LHmn#VgV?aUw7wtCg+SBl68XDSSH#_w@Rs>jN zL^1)2;JE^NN;v{)(6FKn4is&>-lgyog14?6;~}9&bS*rM1HZS>1+t*Eja^t}J`PJXE2`g3<`~UHwb*otwI_Po5bczcJ(XoS zo|LcB=i)O?u?<;D8eZ(+ss(psx7@al|Doxu!m8}HC@dvXBBdbRB_Q1(-7VcM-QC?K z-QC>{(%m5--QAsM{TJs-eXOnQ{jD|U7~>t0K-5JHx38|ECnL{KN?^^$>%&uqS6$ zl3QBdTWWd?_dLmQx#7qtxuVp(XV)WXa&RJIU`kFJL@yY}`6zB}+dxi40x{vag2hpT zOc}E1&nrPdOO}qJ{}_v&3FC|T*HW6K-xz#;IjIpqon=IIHN=TI&HaG{FOh(PXy^nP zB~R+}vOM^3*c^-sd@CQtVkx1cgk%2zX>Vgk!p;L*EE4FK4 z?~|y+@ZWHcV@|bP`I07&6RfMmaAHC-r~vW4qG~8->pgZ~cs+f2)jE54Frfd8S5}Z! z3C+)EXKDDHhIk)xSfa+CA&iEO$uH=PLpg+nzMc5pbJMz|#j*c~Hhzrg=qWen;Q08S z#a0mLi6!dwcsQ(24g~+c`nrSD03LAh{LT>LFf@t@rnT2nv!Y z6iV;@*Hp4UrN7+a;Rh;(bc~FIf&A;^!w0;kL@}aZ3$Q*E8w46m=$%e+PFLFpMv_=8 zs6gi;AS-?P{CT`*U8GF46&^G@0?_<;5`8X^OFk7!KW%I=MuE|U1QpK4=E4G#*~`DJ zjqATu-17@mlgHD0@HhO2qS{IP=WJu12k5%ra=PB1N@rbN z_+hC<8->ri(;tz#e{^IAbO6AP`tSEJGlNx+HJ}7jP*Zya)I))swWP2x*>J(TjGRQz z6qlS`n@h9)*_7&w5roRfpdDLwP#|r-*5TLcbT(C)`GuLe9vV6=r>!l`9~7Dq2i#An!LRO<}#oR6A^LwF7hyf1Uos1g-EKYy$7a;>*Is|0sND!wl?3H zLOMB>pS~(2yRYpc;JJ>v?iE0(&@Zd39wp^QT~_{W|8FO2;`myARhEA(M5CC*n9*z! z-!+hC?s!%EOggbi$V)KBj%4yF8*Oqd_u-z0NNu5I!g_E*Sv&{e|3OFiLEqs`wd1y3NVakL6lPV6$Y-5Qm>0!D6U~J)nOO zttScBT1ZSC;Ad8@S{w;Uu19g0WB7VB+u!PIgraMt-}@|lI~6M=VnDswX&&3gz}vKGXom9UyLaXtLJoaoXjJ2Me!_n2K3wA5Ww zp$4ee^M_}r3ADEW<*DU)U*PfHqO_i>s=lADw2DYdB8umus;mF| zJN&X&H|@n>iqJKPNA)U2YaGs5q~9=j^jdB10I_fzm_j5w^j7`c3E!F#jXmS2Elgp5 ziYylO_A-DL($xz;z4?h~j(C7`1@sJt# z6aG@U90og4`}NQ2EYGVQ%Rr~^VG)x(Zdp~vzR=W-?57`kSz$R1G5MJJ?xSL zLm`F0iGbQ_7Qv-7YDVnxhxR3TCjmxoQ>vu~O$SxnAzk)s+?jx?e_~Bh)@0Z7NBUoT zxrPV`PSHBloIaf*X~fzu6zMVKA}hCW3_b`s^`NF`KpUC&>HEs7wEMC6hrGD84wSiorowX zfTgFE!EP6Esj(3(@P7mJMwQVG2dK1dw!0$(+nBD2GfW?!t}?ZH;L}d{&wmMS?*|81 zV2i!IlRud&!V4U(Lw#ZYh2H2nojmg$B`8pB&L=0*IGy4fSv|YcIlBOt2bkfn_B!~K zmA^d8Xm=MYkPAm)bx*W5Y&tzdis!@gk>=zzh1X1*j=x{tw2_6@??;A=2~IoaC*ns1 zF+nC_;XoX2XBeBAXa>4gOgC6F+gkDO-)9YPpHb3y+`klyrfzJlG`rFJuB%Up!cd~- zC8=RvUL~`#x8L!2v}roO5`+Nvy%gu%-0&ppY!|3<2M)3l>N$OKa72d>b(beX?am7e z`jaRql%GQBcgrWU*%2HZ&{QBkA)QLAh(aEiu#@x~{?7bcrlLe|{!_ayPo8W7v&3eE z-6n-KxBu4orG#$(UnO=HC>spa_IgShKqgk*zRC!kl2=sqi>c;F0Gs7lwgWe*t&y(; zl=QK_zVgx;FBv=;D@p7RR-pHaS0gnZ5hNgjLq!e7YRbRfMhJ+g*VN3u%*2QBjb?DZ zPcDl&ZBKK#lzq{nXPO?!4}%g2ywP16MY*<37BW$Ahk=6PmQuYtRPLym};Im#d3Tq78DhK|CPlG&M1&hfeqjv%HZy-xv)Az zMZNU)_O=@|umz4Xo7-bUPGINzMKI_3vmJbL326#rpoQiP~ri2F6R3Hv9M0biaotsKG&rbEcaC)~Qpug$Nui zOKI2bzM>?2-#+Kc7lUz;gtInj@v0vcDyTrn0#j@8R0U3m843s)egg7%E4hBFxuD%aP|BLvlbMe|t7M@?8;Kyr! z$EUM>-vNj+AWHEY>?tFTuSDPw@n)d@;^Bt4WoJO`&rHNi7=xXnPwaptgV%xcNBp+n zgako5u4WCsNx$!q0+HwQOLW$@)rEC+zeSLHR2vT!Kwqbc)!)dxyw9Jz!;%DX(vKIe zPfeE^k7l;jltVNK2Ns*r7+j!$(T2+dbvP0iKL*UBVE-^bp8#G8Dki3XshKj1)#_l5 z&6kx*knqudNk#e8+bz3h72(1Ey#QjttqAlV==ptHC8j=8(x9rr*TI-J zI=Yp{t+vSd$cLgWi}4dee@OTN06r^r2R= zn+q`Y^z`_>-!MTnVD~~bn#)PO@&oEu z+yYj1+uc$2;o)I$q1HKGpa<-skC0HAdxJ54fJd7+Kd+SGW{G=x+Jnh#N@8fZ1M&@E z`9ChNsTlzZ{s02nXdv>;WiP$c4iHwqV#gadz#t?L#15%c>F|K6LMpSrJOe4rM?m*m z2LkpsD7CH9>tk>{UA~c37m4@^;tnPK%b&f0jf5dNjYeH7KR4G8Od?8U&VeN*YM{Ex zzqOV6^XJduxSZ)Q2pKxJ#|P$XuNYuJ*p4q(XV1HI&^IvXEsEI!-n^auF*6W?s@CZ` z0#|r?vw005Q2g1S+Pb*L>2I+3Cr2SzAf4VlU!I!G{R9VmsPrr>yX|+Y0F@YaeqQQ+ zGsjw{`Gn)(;DG*l7ZvlK3xE@uK@ysrlyoQi_N6oM^whHBVVCnAm?(haxwY7M=A@^$ z`2o>AW6(`*d&d|B2WNPxeuB}x2^qwE|A5Q&S;xPwEF5+VkkgNa2& zoB(+B6^s}lrtA57@C5+$;XXG15D|e@XX)%O|F;32ol(8L27yS}zPY(jfIGYf0O70v zg-puH83nMo>A0M?I-r2EoO92`a0E6S`^ygj4>aAseju}KAo&N?axGMt=-15jbRfu` zmD8N~Yqj)slg?P%)DO(9pg1`h8`!cJhqwg8$H2%)5gj_hkAa?WCox^-+Li{EKr$dt$lh0) zoSuxVZst))_(=YZLaEsaH|sGGLol_|f-3>GQo z@@4LLfABpBJ1)$;LaC*4uCJwPSRZa=w7ze%Px)jG7GO143j8kI!X9|0m@$u^&><`%h=7KEzJ5L=qbngL*-ZW>! zH2y#$a=0!hKzy)&b3`iYD1e?DRm>!3HtJM#M%5=qw-^)Ouoq&jd2*UcruWN8{mXnK ze;2TnAGtIT*77Z4w3Z-e>quHzIMVb*ZjoQ&Yl z_>k+d@rp2$R&<}Lm~Va|aHR(BXFz|JnZ9pX3j|F_Fuw#s>CmdEgF{i+SUw>cED8jT z7{2<}OKN~Oe{sZ&855fKqd$L2?XZpJv5bH#JCdrnu%h-FEhG`7UM8C%VM2#=5>kBu zQA6}$6F;Z|kF?vAx_aWhFVi$y^o-k4-pQ3m75ChD`?+*-&-B-GTW7vS4@Sj-^11vz|BL2 z<1W`sse#U7$b~1@Rv(_BmJ80xEsPj&Ha^9V5|Ic{!Bihj+VPylpr+G!eCz?NBDQK! zrw*UBpFn)H-!&*1b=xl;pQA#DW_b-smqS-Tgpt);1Ebp%TptT}V<_eElNcs2!ftmw zL=YM}50WW?dFId{G_{laAw(QD*>fi7y471wz{C*=5HOpfszgMT!zv>2NYo%tJ#QC~ ztD)nJ#;M?s*spJx(QRQijN^jnl7|D^G@@&rPoO=Yo>9Xxa3>aXU!;={=^fbqKK&C5~4$uDTSlNIfP22 z*>wE+(J|)NVdil8ju02QyUssSlX&W z<`a~(yk4Zh%TA`(r!q1!s%xmXeY$1l=cla&1-6!J|MgLaC9&CX0n~X8=zv{bhCJmB z?)tIjjYQWbE+$5rEBv6VuitmN)~Vk#fp~cdkF|RcNkO%LaL_-x?BChmkq)XIE^R}H zhUFP9=HJt9m9ut$p522qPCKOHtbp8Dny`$Ne&p8Gjo8k&z_3(qA(vrhVh*Z^zLCPo z<%MyD3CW$_S8D?XcKA3WmB+{CPl7P98Rr{fYf+dy{qcj;$>GVTKH15%=@u(oP4Rro zW9DR%cYUM7!L_iK#6k#g@Ia)fE{PbS)V>&hT%#DT;0v7=j4qM|=6|!@jP_Vkquu`A z<&htPU7^g3>=^b)@93<^rE%bUh89!KCx3CYwnU4Qf~EnRhiOgz@fAg+R2)rB+>WXh z2`6RN+FeP#=!%cN1d~hCks9ymEIk9Mv+wrJ6A4l3Oe_w%XM54#4}{6K-rckgpA?jqMH>6#FBuwl)_(M7#xG6%whuEW3w? zBY^;uj)jG|nFJ?mw_Z`P>E@9PGK1mLuS3(X%}$(n!~#%i>i-n&)O0RqW57kmj+Y@O zryD*cb!m!qvZucv9*S7Ap`#{JlM@*YD0I&EG(g7DXuBsz_%gQpg1ovunyhnp7$;u~ z^n;&DN_LOeLV|Ljz#Kz5oddXIYgJnvxjSE5{Lar)0Y852VcpLunahP^t3Q&EoHJ-= zB=Pe0pB3QXse$S?=F{co5x@wZ*~?Yp+I&(%_*vBNoE7y&j-KGvt0yr`EgOot{PAyx zhO0*d#Z@$7mK@@!NZj*|;YhA~^|Qn?#H;F~Z-3B;zI)yE?!}i5O(xu{s`l3yViB-z zJu_c8C+d8CL@QN>u|2*=;d#AR04@OlS0$(Ai78iK%gfD;U0?sM<-CCb`p(#0HX*4q zRfqpsd5qRqao#_;Ty2K=u(7|s%kgeb#!`N38%wFDX0xM;JFUPgDLoXE8Pi`~KA;*h zg?oH_+}=e;!$avk)f{Nf#uoZ@PUG6LGiXTUWHnH`(O1ZhWe+1kZAUeH82w@C+I|SQ z?)3ILkdv6^GDAEk&|ElG86!Q3gKT%?Nx&WLL4ph*3x!?8aNou5MQ#f_Biix_y9gnD zR7`M&VT(zS9o$xZU2e}mG6uycYyBC>O}Zu&W$>U|9)ibpP=B+j-#cX?`^gZ()H7gRurc{v}dM$jU? z)sTv?)UD3LWAU^84Bltj%pbNmQNPlYXFCiC6VB{^WAYaaPE%7fj zN6NtBTENZClHr&994P!)$K;eX&x1>EN+Ioc(u{!@MIc&L$3)Jn?(mThButi4TAQse zKeFn1^>k1B3(c&qFIRt2g)Db-ek*OdT5!*AnqAeVB2AXQ;WB5Qn!q zNGNQV-eyySR_i(T`Wi7bYy{kOeWs^v_4Lm!jw(B+78V90Gd_=o55zx8?b~ z`rCi}qnsR6&{!^LV?zl6;rUIY$s3rjAn5310J#_xV}M(Dd^)F7t;N5AZ>nu^;Pw1h zzyv-sDz!!!JUpwwhZQ0abc+V=?JO+wKNaJvU9PBsZK;y$YSa`Mu0R|OMMYJuTIW^I z^yu*Z-`c9qTuD44)+V5?f&z;CA5bbjxwJIc;&8Os;=s7oA7MC_;;`Iom(FZ9pPS1VTx;wHUK13c^5C#v zG6D>_pt^c0yPfgX=^8JXTC6^Obq&b$e2x6`hgmX{B~07tbyVG|BTSO4XUz*5SiRl@ zWda%ocluuIL4SfLhv;l(ad8OzUkppoS@8Y%)3=xmIy(R(BzbV~A3&g{p^;1f$BIqV z_Vf!0q0d?98BMlpa$(HTR)>AmJ-E@#Rnuo$qHT9G99wn%u{3ZRgkK#PoFfXVx>i>` zf&7U2<<1+>p{}MS)c>0TZ_BU%C^!S4t?-?kSi$mYcU0?#lm#x3G(pfjL%s1770V?v zJRI@A^fvel`}+gINQUyS(JQhsiahA!$&ALTW~XQDn$sB}JA1|#?d8$R&eQ*vJ^ucJ zzP=x0K(%;SDFSG{l9ZF9XC=1$4`H~u|0^nEl>ia(I%dQWd{MxAP3QRdxT>LM8$8wt z7#R~Q#x1$HgVr}U2ix7~xA!ovW}=?Hv$7g*=E;HmW^BBwq<{b;2x@pvJiXXTR`3VMIBdiFq~wY+WXxZtd-x2O1dQp>s2T2;*|K&Cu7pM&15n6;U!R>n{(-DuQoIEB8NIftS1BgFo%v)$J|CTKpLdqk(U z!d8Vi4Ih4J1z3f^2~7Us2=l{{6gQggqT#_1N~7L3T@vU*YHh^r##h)^b-tfAFmHu_ z-bPy59uG^ISXpBe5&{zwzq~s*IN-WlwrjgxGQ;8ZY{P%`k_>%uM(~Cyjgv;kFNMf9 zhQoDuS>u&f)ziUCL8^f+Ys)6P(Ju5VdMEdwJb~Df@-|inHLSEn{kRQB@XP1sJH?p- zd9}<^#>ekirfakwY!Rl=bwNnkoOW4(3RWCK3e9^~A<47R0Px!0PGZe-b znJ_D2IQ3gAw5-0=D}|^h}vSdSMkd%qir^8{(<7lFntZvpFxex%j2(78j7B{TL}+xaT*m5Y4%9=z41s_@VYoG04;mU_orGNvOb);OkOiZ;YzPFIwo zr6hFazAeL_!)b1Yq$mfha;SwC=Te{=2R^_amZTI{{Q5H~iVV)ml*4~a*v6gomL&Z~ z#EH~JB_;a9l3q28Vb*undHMAb!=W64=;&XRz8ke6-$u>@$0nKNB`7RPVI;2vPsIMk z8D+qq?j9WUUYGdGX7?x~ufPbND19>{=~boTCPQ+$&%eygyMbW@bcupADjZz1xT7PB z40nC-Vy!VMF0O=z28nW|mH<_}?fp3f5s@V*0^=+r`V_18_(?O?M+(O$zO4mkdW|vzTo6}dzQ$_!L!~Q=a!U|3=RqDo1Bb} z;&F`vl@j1d*B64er`mX`3et0fYp=HuXk?K)rz^1G=Xd#F>Z+))Lxy!DA)@~Z_70dkr&3f1MQ)wO))A>wTBQs22Mt?v}NmakV+~r@$lq2ci&9cfG z@gE{SzjoA3N<^6G%wuYIF!#dDX>(e2y=RMwRVsm(NNTi4974V8 zikk!E^xLo)#}l9Ah5%AuPF^DJ$9+bQxVA-$Yf0E2!1g#7%& z)s;oLQZPCrW-R@m+)u^1^L0KPhUPRVSl@*z!f4R62)d5g>~^{C&P42v7sNo;8PL26 z8X7V(yK)84*<*o=gM!#_eQi%Bu@ za=rdTuh8Mwy@M*5dG|Qd(3*XVeUZz@sAJA9Pc1PqC2iK@BUJhu(?jUH@iQ|tJzk^V zf9u&X`M!(KzX?x06p%6`&hQ*3;T}9=yY`T2OkOEnvg7TcCt~AX2t&s*o z;xPVNKe#j5(;l2(MP~UO4Ol2JE~EE5-CFw`^D7r&3E$k1Yripw*vt0Qe{;f#q-mXUJc zj>k|egVX3nLnuJObByx${|Tme8%GFufBevnkZ#0-~0e6YCt3&Iyc|C#0wb^u$n zUCd1#765pWu&`7YmefEwm^iTWji0XYg6S5!$(k_f=&u!M`56XcApA=}(e^y#ifYmg#g@bg)J7zM45rSnU!sPF7&kW#{sAk0z%x53 z$=TG*3=|T42a#BsnF6VjUzXzPUNDIO75+lexE034)s5WiXu{~!`A3SRE^A0OT%CX=ri81cY! z6an(nuMZO^pq#UnHrkNg&?7>F|T=aBM8Mx;h5H&E*x)Ko0VQr)ST@VX4>U<%rcJ7^z-gL;&S*b8utE*$sIsR;EKB zJ6b{c-(W}kfc4ko!SY}V$V|5ss3#d+Bg^69t?Z^2AS&IG07_JbmcaR?bH z)ciC6^hG}|8KJ|Y=<5rhZq_v8X8hQHXhn3a)?X&U4|L(wH^>|4lEAm!vgN{C^}{;c z`6Fv3A~_ZT9$DFJje*hnca%dF*@fzn&~TQkj_4)MgeOv(=!S|43e$s=??i@e&5FVK zZC1ueyV}6!wn*@f#-V-QInBeIQo6ExWi4YvVY$hHD5hYE1*!QHG(-TuPkSrOoDfp` zMM<-QrizS>DJe_EZW~tJ`v6J4!3n1W^Mk{5qic3eO2Pbh=7I9q9$luSl}c5(cMC4p z__2C#cYG@YGA~g~l#XX_Lkm{RO))@nqu1;GAe9DyTCcCK?w3R4ZD2+OvdP}{v=`bh z=OQ&z=AeOJrJ^L_<%u1spF-|2mm#RA54p+%1vCSvxfHdZeI}KOg^|+hbxsg0n8j!G zqGm$n1S*$8I23jSR;25*(*1bj$ZtZ2?TMuKx!;vDgbx$?6NkY-^?H+jXlhF!7uK~{J zDI8ftiu2NONK|{zv%Mnh?{* zWaieiHNag_X-d-P?hT!dp7k^gO99O@0%96)y%+}%jBK}8pq`8u1!)>H~_|5Wy`VjUgpn}!0qMi_mIbH9$nFgZtJ z2akq1obTCDaPr#Hf?E^E6eeVHNE+Y6z&{JO#^C%j`wMLMRo;!0{_=unh&E6JRMy zeXwtCyjW8RNO-y{EjKtk?(aN2wpRO*bvn#QnxeUS+l~T681L|ChqQ+N?*)L3a$BQj zr}?|RxVFkeG5eL!^ml#&0ovU3+{=}`S*j?rL|aLuN1fcP%k?9g>|gyXSHhRgxp2XU zKX+eu3)B<@v*8d*YGx%0iejRVGL-}dnf>!R`z5Tfps*r6j<}+|k^Lb?mj*-&!k`Xw z67G*Q{h*n?%0iL6yvI|*r-oo7m;l?E@bJ<5!%{ks4ksH);Fb~>r_$9;v~h6go1c$q zS>j0erq#Qr?OwpZ>KF`2cm0v+;^5Swq%7XvCb^hbKa0)G49du$HG|4DdVAG&Ic+X~ zZa8{ZU+<8{jvE>gfe|27?GLTJl`nN>l0qE{PpkD|>j@W7@Rn4_!aWPT+yr3|5+#X= zbG_5bh?L6G1|DWuMWtjtM?UZFJ~!=IY4G3=p-J?k*)Ye9M_NM5NsGymejHbd!rKH=85tSS?|EeO^=W*? zAvF&^%9OX1y?&Tmv&SDpe{}CTlz_Q`5yr=tds#)!(j=DWj25P%A{&> zX+j`{Cra1H!*o~q1LsHVo2G1|%+%iRr;GFbj{Pz7br?x6aKS(Y)lU6^NOYjMF0&e# z3lnJF;1LiI=3zSiY!E-WJe}Mvw%ka8yI(IT*ct(SB%-RSFiT5*P0j}t09|IdidM^J zYw%?tDzmV*R^24ybiWcvqcmf#RR?`@z5OI;R|Ekd!E$|r_@To&-AvcX#6pSQR1nTs zTGMdjHx?$=*O}P`aaA!Sc|HVm$cN^gG`2S+UQauJZcdq*r84x7u7?N78m*{9pOB3+ zH0UD`j4ewZg(|SjycPI#%RF=;LTncENVcg46mBe|GgyY;*q6sZlRZ8ygVQ2K+~xZ4 zjYK=hT)$8?wA+3ncQVT_XmyPYMukS%4D7TL85q~>#FAVooV*SE}6JS=S9UbU96zJIJRL|I$Y}7#NzNr`{$Mi z6@?T9zZ?-CXrKN=$Fj1~qGGw!QN?+?*HC&5b_~DBins$isNkmG!DRw`E_~dVmN7Kc zUU}IS0S9)%c6(~5@Y@S2$y2f`CE4xpe0;-F0aw`P7U?Utj6t9Kilo@Bauns@u{49M0}Re zwIscbRC0D{&MwdQqxh1)TAy*!;%mj}6tcWoL!AedjRw}T^%(-EriZVd%5k8Ed3 zc5S$?metvFOCA-CQB-0`fNF|JC+`bb0te@Sk`G4k7JyP_B_DHocnzxjgcdv4-U{~q zbwu&vC_*u2x{W3#COi3w^HVd#h3(~N&60e4e0ZHNw@_e`M*^HOQrqTmki-PZh=tC# z4?8sh<~b5HPi9maRNB}yCtoyWK!-OZDpo(>f2-$qc^m35AOzLC}T2MW;8 z_l)}eIN&B964?xjA6i4AB=VYzldrEOuWuZHt?IAIuU~lu1%Uut8h`Sy)8H_U5{IoS z5pY+lZMH@LnVV~82cry0qwnSj1(?<#KVf4}9M1WGe}wJnvdMq4IM5A3k$In!G+RCY zt49EXOH6#cl+OAUkd-dy{$^fHczKHb@aFCBCj%{heA3c*<9_KtZV^EjVzG4h(I1em zGMO3CX#Fg$t4rJYd`X>U@M;CL%hS_S034y!ay3CX>wH52c_zsWhLD9OXHXsUee$pI zfDG?>-xuwRr?Xa-)?Js=Ww<>nFSjUA$PRQFVR?CmW)IHLxl&~vUEM(7b5c_J+}qom z&G_rn!$ZLF^NrIqBkE$?gW~b=iSrr$S&gd$0cg`OczN7o_k1P+T0?h%6y41Hs02=_azCYE2h>zzT6~#IbiJP63~ktdkLSD#H7ofp5CrTOg}Z0m%okXdV?$s?YzNhpWTnH>u5wM^DRwKONsq+0$DgF zdpP4jk7|eQN84uK?R$;iTXs`_=Zqgx4&KcwF{8SPm@xAr(B#R(feg;_M=`^LtJvnM zyNv#}B(@&}%ROrltoUxPTFt-Lz z7>E4vBb3MdR_R61O^Pgg+N?4frG zY2h$AH_iJ>*u{dPR`Q4P-Pd8)tH;V;O_(W^W3_Y26c@1Tq0Bp??gNDLagu$v?sAkychWRh8e1gpcb&XJv^2)5+7>X}5Ji;?VdWHd6vILdo_~)-1_Ihrxmn}w! zM&bFKjoXA{@q9gL2g6kJ{;;NhxbhB&;&qs8DFS;mryS~X*zf+Ffj(rnMp&c3O*T;>0{kKQB>_umUk`0d ziiau+csf5@c;Mm)bLgI!gvCUlP&-zVxq6{nI9LRS1~oXoEX_?V_#6o;Q!&P=k#!)n ziy=vQL06#Gy*If~8MaXRy<5EY+tSwT^DVo-=D zu7J|wLcKYOm`dG!`$Y#K!)V&v*nvS`=*pV_2 z{Jgns;g=svxzp@mAc!HCq$OnIih&Vu!{(}DLqid%S}H96TOrq`qr^Na_zm3&^>mjo zR91b?zc~V>!Efw4!(3rULGn_G5t3a&elxC2XIC7$BBN&uatsRPOP)RT@S)08Hy6+S z9s<}o7U!+P0>xEI&z+2U?uIK^Jg2lYNKE1R;ug!dK7zeV`SyG%!2&F7W|rpr{o#l~ z0Wt|EXJ$^0JlG5X`oI01J)_Mg=6E_183{>vK-ey5#W@2MkBA6tZ9XCtOpe(Iz|Ute zUyvQo+%oO0)sWLmdlQVt)1P$>FJrkh8*e~vPl8rAD8(ZC%EXJ(YMxhf+{j-mFATY z@lX5kJMnk6hr)mr6@spk5b-P12Yq7V0%>dsAs3_&xP$u#x2fsnP)V|!^8CI$N{H>9 zgkLyrkM|!*iOb)?p-M_3fqWwse)|olW;%mj&U7-n6;lUnzShl-WRXBBwhSn!GFXAORTzmLa@$+{WaVbd zIQ%Z(;;1YR^_w|xefGtk-CAu(J2M25xi%ry_pHpsWNSqtUfCGkAlNNlAI9d9?QU!^ zV@@OWN*eniU>*|P|8Zf!1tzJdViRvb^2X$f``hZ*`o@dI!yRom}K zO5-Bs7G?Pg$w*BlN#U?gMXg^og7A;Q!SEv3pr@r-T;S5j1qObucyYlmPJjkk42Eg= zK}k9y#`aI#?R>`zFCUrbke;iraKN5;+bD5zZZRSv9n}2DTdsu>l$7PFP<5& zc{KO{wth=XuKf|ne?XgTEV(Z*SAo{ng!6Szu8In26_q5L=U%)T20P$Hu|3mbDz_*H zg|Z+l_@_T&;=iLZIxWq&yd25x_Lu}@1QS_12j|P_?CwsvS3RGkEZ16k+6O5tSHpp9 z9}8kZn`gYfb#>RCYl*w4_jGkIu+wLq1w$T88hCtB@mH7HGuv8Hi9U6Ax>8>tAmsK9 z=Xf*bU(Za?cn&Fxa5Q+eKvAh#86hkM&#NDx=4H^vh(Ib(cqCkOG`LVP#&T1BST}fT{Hh8 zc4Q{9Yic5=^xZKzMw9dI&EiUKj{i|sBsBZ)cVsvfsyaQeH_D&-}-uu0Ed4IL+Vap&sG*U#s znj790ZYxQH$lkn17TE8q!HF%S<;wnWfU%vQs1U6s#-~K;>dGOQCbQ|O@?Pn-01^Kz zw6&7EVzr^^aY66MJhHtM=2c+@Zso~4gH|>3Mf7Z;>3%^zYsrk~Vi_}sf5xOlL5+f9 zq|)#bRr^x$>#{Gwcav;nCw_S*VofF4k=Z`a?Ysn2Bku_cn>kWij79-z=D8aa_)(I95Gv3YRBucU@jPJ;`Sx@x_#Z%XgS ziB9>*07?=w8B^z1k%*=g+Er%SVC;k>1OX{eR8nhlUA-d_!S~sbn3`@ij-{4CNm{+4 zMyOR{jmi1>oTjXlq1wPL>~-I;AY7B72ZMZ!TyD{@bvq{$^IvoByghB{As*3uLaNNv zN@Ji|CFmmdxyecS0J)~NG^{`Hv*j}P4^#1v0)Zb32s-0ho%HA#88?pToVGSM{|s#r z8szQi=@boAcH$Upi{hWIMTvZZZfgtr4+=8R-RK+GPnJWZ-{i#`c|%vG*ArL|hZ?XwzKb7x{XsFn`4IV=&eLrakjV`|`~ocJ`@jYBzutrK`2=vo1M=a+Nn?7MdLteq zqr$4o9t}uG6qT2I9BUb!uXjPiYOhDIu5QjLuYnI61|uUQC>+BE`6=<VNXF*v!^iAa}+2olvGrk zxls-DpuOxfjhd*C5Dd7I7S`v-XPjDsT;apxkySFA4J6P=n1SLj3QS2vBy4d=*z;Gw z=4H3lF9q-(l9Hp`;5HmHSDHc0O_QFtZ2)v~MqtA1d42I(-(yWX`NvC6FSqk$Y%;pH zmkoq7q`~bR6)m>OmNX8?H`WiA7~n?$Jc>z3m@OzQET^D8axi1u>`ICQ6iq>qft;Ba@)5{__t+u(k;!V3KW`)AsSA-R%7A zG$PmqO53mo_=7ih)ql52WptFp8#Mp zl7YMqcpU02)g|W@=7X>481L%^AvR0dUMXFt{$sca*!%DXhlLq$i+XiDoic*7d39r> z;o7UVsFc{i&``|7mGNc&n%4H?O>14F!#YndOtK_+Dnj7(EDuUf7~d`rh2xxzbnuQ_ zzuL3WT1JNBai)QzriH`s9uc2kSBrflGkxqrfa+=)9zxv>!L&3Li(xbd%TC1Z_1*%W zfx4*N#He?laNAg!fUo-=ODnGzeR63*%*K*A?5`vNadwk(4{0uZh@j5x4DrFQ6QW0P zvK;=r`f8}Cn8=@>XU+Pvs|zB2hnt2@mr@Ls84X{egr~6sw2-*{O7FzJ%|CKZ3vwlYtn)#Ozq-8q(^RyR3+^M1)Y`*R+Gv zwa$?xpMVf!*gVw>3H-c19(Zr(Zd`id&w8}=8lkHBChTs%ti2p54K}OXXwQH*=m=dh zhXYkaL1_D+>oL@+ekTR^S7;=z0IPrrqTK{0ZVu zj)U-UpCHjeJ<0;>wu-=%_6}7m$?&~&%%Q80@B8t<)DU>vKd?Tgt(Ac37sI=BPp9IXO*t(GlS9&=>={G5hsSL>*ER1>>S^_6!lMt zNYP76KRl4c3rww;=Uhrk^BMKnxG9T04ylP^f`d1E4oG~1b84|w6>){_$R^{}!iVSB{_|Fh7$xp29V*09Y3f0lg>HXWB1BA? zfYW}_uj53gPM)8C1<>iMSPDuT6k{t}BK;(!q>e!Vm+9xLu&nn`F&U7X!fVss8?bX;vvaZ}Mh(2Fdq71>J6x8em|7`giix~JyC z#sZu)iZm%s9Ii`EGS<4*-e`^)Ec@6;zde~_+Xf-ipm1!i>w8vb-qYaHsF|rTpM0-p zEXXbP(^Xie2&XJ4ZC1#In`xv&=^C96KE1VU`PXuxy)L$ynfzi64Nc;EsjR#_Sk$+Q znR28Mry{Lv#u`}Q+7#v3ZBd5?5>0H*i#jLf!ct;TCsOH5KkKaD_`l{aGS{&>5lxRU z(0`xnS?KnjURJyOO`Y_GEwKAq+@MCws3o-$x7h?E#oEDySQ=01xaIllQ%5tun_1$n z_2TS8|Nc{F=n57gn0U;TeFl?9Yj=?r`q6>p$Vl3yf30j@kMHl!@}raGL=}a& z?Y>B_Pd|Kc7eOR^HbplvS8xw3z5nCsEW@(Qx;88b zNC;BW-QC^Y-Hmh&Al)F{-62SqfOLa&cem1wbi=#(@qPd1m}3UziF@z0*0s)aUNd{k zSB-C;BL&n1wg26FA0Pi*YP`h)q7HO;z+f38BQFFTztF@)(wLZ=c&Dm!^zHIM-P(%!w zEUbjwM@${Xny!>m805g*#%0!eU|_#*npy#lE+%Z&KtN-VT4>7GC1?awgHaMYB6K^ zeyE?F)YmW%pXNMDW@zg(3w(w(I#p9i)uS^!yY?Ry_HR{FrXFWT**{mSO^~`U(uhG@ zSsmy#qe>_%qktSO1$dx?TQ4y`e;}co_rzK2?bpX~d2sfP`M>u=Mt6?N%Oe3%1gro4 zBV)OM=;|u=c)6dWGb9L0QH#u%R0L@-5vf7tJd%8F?>qE{hIw$BUHtKdM2cyE!hZ}7 zx?@8k z>%^Ns;E|A#q-bEyt!>qJ7fT@Xo9mOnv(YbEs)t3!(e} z*wl^!mE=Qy?9KVHgR0>9^xiR2lg4uo$_$-8rrhk5(4f07itIjM0WF zL-Q40zsVW$g{YY?7QEKw8CngF7<-EAYU%kX@8E#G9i-4$M@NE3uSm8X2ghiPdUnm8 zwh|G&FHY?oYh;oHM9?AaPLYx@G)Re?o%hgy^NBDCdA9l zgldpcL{>Kw1jn}yxRVwap;p)QK{PTK#J~h!+d!VB_^XQx09&&5_V&LW(|{^J1p<`d zhQrJ>X)%$#!R2%Kv8xLcT!*57AF9^v%r`?f!z=cmkEP@*!lZ!nF-o1LsMCiKcDCkJ z4*mp!+b;E)^>x|f4zru-KmM2u)){od0djFu3t3y8UVlj&TJw(&gMSV;_AnJZ^V!R$q8HeOn3^!k^SoERx)96%X09#t#?t4o(`@!OiXV#?m+WvXOrK0eRC+ol7>Ird~cEa7M!3t*+cpreC8 zv+)#|CZ!q)8l0UD0bCTNJ?lhTW>^TQ)G~B{UH(=C3H637Wt}00tCe?pW+}!zJqd{F zXhv+L6vs&aC}2^Ca~F`AC#GwBt1cBtrxwp>ECA#i{f&!$wJ>pGm{`}p@rHN`3=K)U zn#74iD-R(;zh|KXVcReQqrY==9~36-s>dhm$+;TCX@_T+h$|x^G{l%qC%kMIC2j7T zM|)tRfyzorO1F9DcUNCVz^o$$-Jzt~7oIutYx>%RcWTzhp1LXtn$apnrrUCWJ}4!+ z{9`f(r5*>*OIJBdHCm>!e^4x^L(~g-GpA%tHVIvg)%hnbcPaTIj}8$!EcI}ySXkUe zf(~eLoF8wzH$i)knpbncS;E=V?`}NPmlf*EOeV22xk|LNy!1s*E-H=7mdP5L-l^z4 z_K-N;P5Nm5H?4>ZnjsnbZm%vZ)O@F}UylP+D)S0{;SiIo^0k;)S%s*cRR+P3|EMYt zt9KNdI>ra`UsrnS{1Iu1JDf`yiN3 zj~Uuu>04z?5SSQl?oPc26kFr`#3>Y6F0Tg;01JXeX0rTB7(mDma>iS83+X>c`G7>S zx97v(f&%kjrlp)AFb}l=pB#_N9Gc&JtoY23^|Nkt2q_HtuEMe#uyY=w1&W*l=z7c5!nIg?I zgEuDB-2;KyXxh~F9;T9x#_)*g$uj%#dV46XCWDHh=EOM~WwZM^DyO|cAs7hM+i=Du zW<~}FL$5TxMu&yLg1>Xua=kznw@*qig5h54S;uBAzTpM1V*<8@@yNV9SZ1eisCL-i z**)KPAevHU2IvkDY9M9MZy9cKFu8jP)jxhQtHPkT1FIvO!1%}Kf!Ytaj8cjde;PM# z06#m~X-^?OF)_003~oG&dji~W-;^1#gdZ-i7h2!3|NV<1CdRh~xXJfBsqJ9$#p<{X z%fiZ9T3)_2U3ghQR{Zs8Q5y1e4JiMFre~(P552N}e-PGdcMS&z&xVq{IhyvuN8-78Jw{$Utf>NL`dVSi1;N#~{6ZE47X{2tT ze~F7@sx)X9$`QyG6PKv9IGe!Zc8qFudv5k)3>%1juS}!D0 zIk=pa$oTky6&3VgzaP=-_GK98K~V5NkL}26?$3|KqfsiJ-#IV=+v1zuY8UVW@B~js zei`M*$rOUl6Yv)50tQ(^T3Uhsrj5^ig_q}vXW0@$BR50c2CdC&-3DyHjbFv%m%3$G zpu_G#feiw*F_4yfgG-Z9@PypmiBZVoOe`4sNq_wc3uraKa>77Dl3fGjD6`h=@WEO5 zyaMEObXkd%vDJRB5T~o>Tc`ShA|eDA|Nfe2R9+F&&}5*HhU5cIe|`A^5DM%Z*2^|E zHN_=l4KHkX4{iOSbUvJgQ&jx4?)Q2oMb^USagmhC`2;uuMAY2)0M^*-w7|^5u{qhL z3i^6mi(}b-r`#g{$-z7A$?yEhwWnra*t2q{%k7$SJ~V}dBvuT_2e1y4i&>PWmRliB z%}|KIRW6?=BWHLFkWe9~l&L1a<;H3Hxe2T_#6Z$_9UQg=C} zk|x+%EjBSSOPz)>^|;%TPxX9r!G9({IY$dUkdRFg%2@Eun%(vTr&?+{>Pe=*`wH-{0i&=gZpD4DK#aWRhn1-&c(uWE+h(AV}oqW|BtaXitnvCtoP zCKE_L3wHa?^^o-uEopQ(#w^QUCbCoKrAP`R96P11T9&?S@h2sGvrM`kV=VF`e$Day zhz$D+|0qI;j^yfjMvVe@^C*I zN>cKINLWN!&OOHv;$zYV5tJ9NPa>N0xl7my(792XXEhtH@gIF%rEpEjR^{hua7SCU zCoMv7A#;)Ib>tmnsC!ZX4Y(t%EFi;A`>gjjTL|60tgi^1hXbR;&u>P;vs@F7S+3l*w4 zJX&(iXdv!B{8dV-fObJ{^pDYUJL%mK?c%!nmG>H!ts{lbZY^d^>}K4tmB{I5vHSFQ zc76`+oGkrNN1it-eYZeQiXc$nshm;S8BcNeBj8;W|I zDkN>B-g=ZB*s`^4ENkjclNu|SS6ZF^vyS8e=|DWrk9Nb~oM2{V;cssjr~p{w6GKn) zl*)huEU%#mqEJQLT?!HqGl4ibF(qr{H!%Z%0P`2aYF@JKK(P+k<(5{{KX40BeD9+z z25R<^nMo)f-3(^)?sw>p`zlYh^y`P^sb~|r4`ufOwB`7baZU}+qd}|synzJw_CT+s)xTv5Y3wPlx zS7ii6wileaq~NPtU7c4_67+*rQ>)RA8VvCzV?~f7#Ka^8jj#3(W@pvjcwAtqwHfFa zL0E%BzjgVIeUi>Pa1SyMQZh1tG#ye>VmV*A_8au9`U9XNfsvS`qeJp_`OE#Qf7qNc zdWG1*Yo<6=QXQ85%U)k~a8`3=Wz1B5|6icp*dCezLr`KSrZB(^1tH4#yE{|xv&2LL z-%20wx%B}=g^9kb+C5x z5p1Ia%>J)m`@J23uV03H)j>mbYIZhCjBYc!5hLIJ%Qqn+B5HxaOAGMUQiVrKn{_3W zX7Rdw0Cb~_47SIuI7wyqYp0!je4FrSg`IkjEtCc-M6mLF@3TREXoLH&^;s-m?7#HP z-8O;j_g)OlcGF*4mUY3Fb){`$$9pfQ`)$&9DR*+a$MIgv?KeT%?_rxN)4fhN!c6;D zjaK<)I69keoQN39lUgz;x=+bjP4f_9s|GqJPeqHHE=C$gz-|ZGep^4<#%MQksxVTT z^Yjn45_M~Ex|erm4PW~x*6A@#j3lmvM`i5@HyN@3V|CdyX6K&BDH)4#8SgEFIJ4P{ zP~}6zD@Hlc-wlcp#%m4!m}1c5M_E1fbk$+Dd&XNjzoh9!MFBWoJ^p8`&y2pT1(Z99 z*-45y5d2!djQQsEN3|PVSr*2DkfKF6li|v!je}?UwO{q;e>}{tj)JILHQa8;0`l@K zAn$=(w(_xRs~GXmew7=nSK46oCGi#Z;`_5c($WgMKj-aSK_bKey+>)G`*7tZ!l3%~ zOowdRoZIt($GL_rw@5=Z)Spxjwu!)BjbZC1SqX4B$NFac-4Tz))x;uhvMJ0Zs6NYd z+*={2O4$CHUV2v{8kydV;${!Mb=j}y{YhVfLe<*HS4FjE-+BT2lcEJZ7`P`U1q2w| zZSW6S=h!mgnX*u)r*ne`uG3|Rpls@x(Nog`6;K<~)1yU>e-De6f5R>LzkhUiexQHT zCG|(!1JV=@DCFX#$n;vAfk~2}#&QZ0c-_V>cFMWjPWga04LtTdZ%=~(EveCN&F;42 zE#Lzd#obTpJ)WG-sz3zN>3$emM?5k^(AYkk(qbSv)SFz)iqE-^3oY*ljc_bYdpT>XTAa6EibIbK{8vVWNLHSs(y# z6!@}|g7}uZ*Muk?2D8t@f5*oyo8apNy83YNEdxdJx?u5QbFn&+jg3u3qX@g)+`Q=R zehWtT<`daNZ{r%En&a}iK?l*Ozkhokqp+A^aB*<~J*?Sbiv}dWIP>!JJdmAZ8`qa3 zVkdC3A}?YCYdfW=6ZC z)M}awKY)LTGRIrt%O6r;(ij;3P6&RNk;UqK?O$IA0N+us!#f!$^Fa4IN~Z9QIm_6w z*yYyhyB*Dr>wa|ySFTwFMlXa|9L^s>A8>KWrEjgB5GZFw!9ouJ-52EMf`LYZ!^O6h zz^nHMd%NYq=|b9n*ZjScxuo2{y9X9RfVDLQ3BMZ*Wzu+DV7R%P!7&B4NWD71ri-iP z=hxx_T~5ijcQ02|^6meeCa2|cdEn{^i6)_^$5&NFJkCm1*X(${A$+>)nYcQfO9VvX zETDLAu=9zWD_?k9pg)+Q)M|BokA$SKy<ySON z9yuLUEkZ=-2`L%TLPS4mM0(E4ii;!bv}^5?Mn3DcdgllSwm0oIhW0#GF_}I5b49`v zJod^|zZBRT>fsWTirWvX4|#0+sbXD*v$)ghzkCRzl6Mh5KVtRMrl_GTe$q>Nbb|{g zStYn5n?VyPgvgit*wG6mB4|{LKj_gS&+@0u${vQfno^pwzY^7NCo#8GNmt2bs)a)$ zIUZaV_Y79?^yF1ujHwGeTNTy$Z|#vTtzJVJ+d=x_l5`kT79xytqu0_%FYoc!-fkDK z!XQnj-Qr9QzFFHN;N_gT2g394sHonJjU2Eb1fF(wc6M@ET<3)cuQ{AemfU(`_~=mG zNNDjgh1|tEp33Jkl_`55h!}X$bhCqCklSRhUeNg;l6N*?5s&(NdJT-*1ZRBA-qe3x zS}j5z5&ab%q{Wd+*Q>RS>zB>&pL+vll%x=*3ValxD)i7Rigl$abwuB{-h2y^)M3Ev z?QXE4|MQ}gomvFu)~vbil?`g3(1Ht z4kH)4Fw}*+5V9CxA;O{jMM9MB@TTi!5>M5$7)1PWl96ZSquHQ>zHr#Ev2zlVPA31b zvz*nlA2OO8AV=&I zG23LHZyv8TJGy|J#5|FWCWdu1<@f$2-RNJ*f)a)z_GcYr**+1lF1T#Gkk->O2ka}6 zhug;J-+mQ#RCsfUusgdpNN6w?c9evK)OdO-I1}Hyii~(c7s?46nGyuYd)Q9lYxG}X z{SDGG47hDvCtD4ZT%VNll_Q2@zUSL(%-=CkE)`xU5(NvC%k%#Tf6%lhlpV`NyZu!9 zc0^`T)W#Y!V{d5utx+W7x7R+1S+X_eD-ybM=t`2S2Y(RpYMmAi5gH zyh@UajFmYwrt5lPb5VNGZ)bW!S;>P#WAVXztR$MR%nk($L|)U`yY;g9Hblbnvqj$V zBj|VEqrS9EAlp3=MEJ)u$X{nfCpFhI_Y^fJpr?=2n<%F7`Mrzp%0Nu2G0RheQ%;gvL^j!x(s`6TAH<4@m71uAqDO=_hzt`1%5U#p=Ks;R)FqV; zt;J^+&Z)M}A?TLw_@gvr+3%Pf4AxHf&*VLK7Oq#UvdHjI5$djJ;36(K#v<9?K}z;G z8LR{d-lI&x(9dTWoKN#O_mB zK9KfjOLPWpQIv`V=eLT2CcstT?%{DUC+HfV_#JphKLEij)CbAQ$;rWoYtY({d6Sb? zjioCX8^b3jtDEle<+rq8JXXGE$Cc2usHwT6;@4C#8hYb$a(f+ezy~L&mm6Bl&mtzJ z&c=OL|E5ILwcZsXtr~hU_bGF!;oOU20!Kzg4ykzwr>8llGAKOpgNfx&#o0t>7F7ff zr!GY;H}<`*3QP2{vXpuBe2X7FG3=5K$F}mWB5>@V5yOy;jO~PMJxGm%GF)_^7h;2$ zJ-XhZn$(~W{dN*^^K4o|ePm0t8OX8Z8$lseLXeK67uzQ{9_@YMLkbg(j_~jK&VHF8 zGB~FSjA0z&gry@u0aoFMC73=wB5_%}f@TB-3{ZNGl86@pk9!T{l<7GvM+Y}mni zev=P76a>vSOCg4ZJ3wafAt;)UT_{S0Nf)=(1Q7SMH4!35)Yn5ZRPswpkDD%EIpFcQ z$Gp5>b8t8b@902Mj)wyspz8nb@jhN%H@hFefU_;HRC>7Mc>|~cj1|7Og~`$61K<6W zNyzz%y&yniWrEK{7&dFsR7K|dw;XoFXB#CdbS+)ow;RmnW0ebC&4q&$^Rp!=z~31vDI-et_?M^QJxCybecvE(dvi7@>=DX3sG&B{u%%Szs`T5c)Kmdb*yy@QfNmvj`(L~y}%1WdS??+}rzbpDn zOe~0heW`#f{1i342@+v8;8wIH{S`fV2Snu$jR2Y9yC^2iN9Vmz`%h?p7R=F=^2x~A z11}=rH7c$tfI~ekO^io7jp;uzLjc)bYVtr4Jm%@X-N2i2Wv=qA%;NFI_wv#`Zq-gq ztnjx&frWzYo20YvKhuDf^(k`ryX|Aj0__^ZvAu(yFE+F5RvF4N?{Xu` z4z0nlKcqf8J8$w|siM9%8VG@LwP-o*U8y1q`RKEHO0+DWp$m^V^vbzSZy`_*SM=JJ z1iIRmR9gNi^@HC`xurvi)OwnNGOr+1Sg!TX`e4l^tY*zFQy4MbMib#kg8~O7r!|># z6q-#md+NV3&!wG@r_T?UU*v&I5Er1cG{2|YNlma3VKFyvMJ8rGQ|zbM;@W5#{zaWQ znMNvN)a)!Z6@`S1w*pGu+hFC+a!1lCImn_JeMb{DsV>!CfTt_%{F%L8xfJ-x$!Xie zI-b7+y`u4MRy-K%IiBzLq+~?Kv(qqfFcmZl*QR_TJQLPdrcaj^zdE)J?Wh!hLun=x z-!?HeA578?ynpz^157s3igbVGsS%A@I{XQu*;xoyBaFAv6c1+*qnBB92~Brz&%AOD!RUO!vJO#TfO0=|E)i9bUru4 ze&-dm*d9blN=f;*cIyjf4#xM6grIHyyTt`}Xl(3n&g)b38U?~oR-_=kP3IcQ@r!VN4xU{QQ+~I@TXxT959Ak+Z^2=*ZL75 zhus|%+n1D-Y}exFBqpUr0kQzV)&A6J4jHsi20rV=`1o+3vg-+P0jn|#qv@ACyspRF z01W)6=aZm0h{2VVmz%7&HG}RF=!Um~M-z+B1KYZf8}9C|KEOKS003PdVC;bWWl>Se zhff{GuP>x+FD?B{YMQCB?d=~@Qg(rD@cYw~2#Br$Eut?L78V$2+5>v^<|b;B%Sfzh zaqRiNGSl4L+|~ZyAQ?pUxq2X;m|9(pik*PjhX0&%^2E!)(5~Gw8)`CuRBOL+2Kpzp zey>#kNEW5|`T|F(kWIlxmj%>*AWiqx!J&WQ7P(xb(r6|#lbMO>&zjo?B`0SrubbV) zlw^*Q;l?)=YH_Mrt8nLolGua6lj)XS7cDQIuT0i^)+gDmwy!HXH=tZRzeM=5(a{cS zLFg}=z0~0N&Du4m-tewPFx(KmyKD20ouIineNGOuh*w*fjY~*~P^0Mse=?Y(bj{C$ zy?YJ|NkA(rDkb9A5zo{?oIoqd-6jlCb>)7SOk6AFAy)2!PRC&Zj*|wb&Q* z{sfJt@;samjC2~&5s`1+t3JmgbgY59y8@p==% zV0RyDxMxZfFnJ(e*TX`QNW|icY4XylBsjX;tZ8E5;-KskDwur#Sx8O}D~_}Ex{WOg z+lCTdT8-jDuV>ogi7Fv~K}OpAZSzS6bW`VDzcVpSi#>*uiD>w7B^SX^6EX_qX`|`5 zXjBNal_*msm54#A$sp#WDv_BkA9me+_b4K7n2@E-m;Hng!NSHAN0Xe9CW+IY*inrn zTHIQF-MGNrN*i~%0iCB&UT+hn^N2|GqggnlG8gKzEf0xpTZM@9_L?aa>{r~m?`9k0 z1yr?=^(CL9|8!pD5Yb%A&W^ug?rfBf0Qfd2?_mIN;z<@JRRc7{P!lQSA%C>AJR~2y z);%XL2zaO|Q3i`@P>N8mBBC6)Z z!z~;lES>%m1oH*faltZ`T(P!6S;2xmfz0xtIQ6qi%Y7V{Ah)5#g>afOO& z;TlxiENLop*|?z1YInE9OO=dg*CIlmWRh6O*$>D;)@s_!)Sjo=rLejHM%>9u0K3*; zUadG45;DjbWxVPW(T+$EMouD<3zJh#0Y@Wbp~`bNJHCnjF^n7OR(5})T%nrD$$D^2 zQiAKmLW&~kv?uoG^v_zYI;!dF(!=fO&L5ozeNt8ur2dHzuxD6ei#olxj<7atLi%#F z4jrff!?%bjr*Fl7K&*{koTQSaBBMM~%~c<@nWRz%Zym=uRDEa_{@A;&cmKrDTrG}X zn4~Q-_5A!Oi9ZRhDg)_MV-q zNtZMstc2QL2znp;;ER!sjIZ^Q(?l_V$Ed_3|%VIY>``w)zs1u@`+GcUtdr#= zy4QNrM^f#8hiITcIzN7B8w>XU^t0&g)~~?mo5gGxih$2OsJIxHR)el@#fxHP;}z@m z+sbOI8=?J~_J1o4$)K^cb$B?s*7^bPJ5!ibe(Bl!qh1; zKFzd2_$7}NMhi8{-!IH#>O`?r1=LSDwm*4{r^Iv`_Dx+3tkN^i-%Q}YM%DSn`lYlM zp4^UnvxA+yT^73$_R3ar@d0y~ShsiE)dHEOtncJDyJ%vdR{Xo%Op z8GlHo{(nL(-elo0l5!hE_70xZi- zYti;iEoGF|=m0PCO1++)4p+PlfT9M|* z&jK7$RUgmRmH15c?mxiv3)*VOKb?GJ~ooRV~<80 zy8^xgrcOL|>tp;12j|0XMZ@pF5rc}3EG?tLK`jlUDLa#M>k-;ck`8AITwTJ|CnR6= zR@wAu-|ZB#H+i^PObrj|bzX&CVHn`~3oUk=O`7v5$`70TQPT9~X^IAW(%He}XxJ$t zz6#Vu<`QYHEZbAhmSAlnt8w7tGBJR*z)^73QJ0MS3PzRv$H3zG@iz1 zWsN6NqBu7k2Z@ySE)S#f^Xr2i9UOvJh!WK{@Qtu>%-5QYc>OeJ52)0)1v!V!-~N7p zm^1pfr$evR_4{Yql=zgCanKqKNl(Y#p*I*}%uHo3HWWy0h_*Ef-74SPjxn=r*4Dun zsB@|+S+h3^b;-3=IE7^{@>jcemTD<_{IbZlyiXf1r68X5wqF=?0j zkaxUP`@}CV5CsJV4u89?K+_KpX2Ll)^aer@%cZ5I2iDetX*CsUjPE554-XxjoQy8E ztAA==A}R3WHGh4fKn)K{q+|fb^wERF1(5kCW~ER4_YW&uyf^WC^2BdppT*}bqt#Wf zOE$WgO8ttG$};lbXK>Qt*liqckOv3NgFEngdR}o!X~L?itkH<_tId94$3GzfrOpE# zUHCs|_$6)VUa{gYCMLqlxkXi0{i0CX*um}-_>$iL@st?dm2?2ZrHbatH)LWfYL8KU zw(PsKk457+{cA_L%N?Y)YG3v&!$m5MueLi@JFr4z=3sbJGnI#vnggYx#|FIaVePWu z#YrpsD5L;xO#(dM92d{IN?a0uw{$Yv+Ia zM?sOr@9q6s-n||vdU!KpG`Ecn<(4Wa*t_wZf2(09ngfZ)#c#^zQVlhvI`zZR+%aGxPL7ZSYWCNU}#2jeIIon$H4;2 zANF6AIlf1tM!wjkLmqq{ShBzX+Hiw0Xy$mj`q5}NOL=x~ex}&aou?8`9ZWe{oBH1MhNGa!90fNqs!n^jBGX??ocxQasg#is^AfiQP-H}HZ?k3Td&XsC zbWOB&{?K*v0tWd|q%#Si^9u=)XnXKv^1S*AZZ@&0skk8d4W(@(6dBWGPFR=)D127jw-5=zx&qi;#y@Mn zg}}zf2Dzk&h={xUJ%04hJK)baqdITVVA+o$~jgJ?n zK#3HpC~zOOwWHYfnUc68&VA-Yf&v)1P^6zp$I1CL&Fvj?D05j5HZ>)bD7z@7kz z;U>2;2n~&tEN-Wy!9h!foQ~gj=O+LDeeD~tK(l5C_9|#aMa{8g4TE*aMvpW!%JGDR zgyGgRJCNdm3>Onon$$-{O<-bX-rS09bh_NtMeuc!0etOm zV=!J`r%q{9pKdVNH0Af=M#fB37~HayiJ)yyi0*yyBAvozO~6R(H5@+AjA3fOo9wWn0k>{8x18%M%x$hEvsCdy2V|<>m|@6 z;`|lH!)hlg>#x5FBQ1TMX*uW|)7i?G(v^ymp)xyNBSVghO>0rkS<95k9vyI2Vm3?L zdQS&nY>oaH8V9Fg_I+UjR)TmZTssp7=MTEZmO^{W>BdS;qzXO8<&MA`swuP?zX$}0 zU6_K9-MAOFSZai8_67Qf&bq4Ke#Ct*ii4MU46jyk#tSk5OLbOgKT3<$%IL#j;(N7iSQ>E_oQK zmp?77M&@gnCLw~=bo)}ZJ9*27bSfT)!NZHs!9&`{Z6do~V z8mfO4`lu~$(Ad@`%D_V66A$O1wj6s$Mr<%n<0Xppv@?xeV-TdpbWGcJ#GfSlTSLJ@ zTL;-POxmIlmBjBRO(tn7?4277(j1nAk4{Q7)KNpthC$hyr_58RMT%?1-ioag75fa}_JQ5jRrnnltTG>$_-bRP&4U`f~jc<>~I#R_;5f%;a=OR)ni<1f}QJeJYdZ)r5 z9-y~$v#c8`Hgbs$Rcs>I_F?IhN{&gCQsBE)a}QKM4iVg75-1#an|)IY30vX%1_d3; z#grPCtKO^hh1i1D@R9=f3z6EmeQB(Jo`Ucu2viCTQ}d!%tL8#WWa1kotRxVOdS}cv zA7~0Af^>1XYJHvfspV~Zc;@E|uTO^1+0;2n%I$XvN&RvsOf5(l`Ww6!oJ$&&-a#g3 zT>a8(E8;PkTg#f>8$5n@tXBboZ&q#$(~QY~o%lUV`GX(NIkUYeP!)MN&(db6md_SRau% zzcXNK_F(KT9Lr+O7`=jQuwCs-M!034s7NufG8(Yod4xMnrc>6h? z);7DZ0)?(3dkUYgIES^Uj;2p1ny`YP(DsSugcO6&&H#|#a+NtA+xlwVKarpQhtRvPkb#xb^}L#W?l4o4u#Q=juF+j z!7g;U@j4Qwu)!Ojf6ve^$iqNqroQ75>Gp8{;Py$T$WFb%Iz}>sGjrZVM8gk zD8+IpbD$^f&eM+tG2&MPC+Tbz7KDg18RSFsVR&gFF?@Q0s^G?6S27mgBd>CtLFt+v zt)+57`IOKoED<#gW-P>-hwYH%uxwe*))KO^j*_f_1h!LZOqW1^MsM1GsAx4h(_vJD zm8QRuHM4_@CWnA?*W|(B^p5`>44o@E1UG31Ad)-R|_Gz#Z|Jm*$t~LH(|YtAA?|(%aYWR7Jhv> z|40BWZvA*(arCJf?a#=kRwNdSb+sVKXpl9H02VnoO!7zou3HQoL5 z35#iB7ncZ2&6hq6e!tS!+hP9h6(8uPR;_*+%hLDV>* zq=X9`7u_$<9pG{UhaZk4_p>_Vb5kV{>z{Z-%hIIYA62s##flpm!eq z@BouhDBs3m&u1K-c0B66uGjfqRP;T#d=%zZ69DZn;2^hH-mm_2!^iGK~F?#qU=VagFV%+gD zq@Co`;Az$PRK2c622SB1P7)i3jPh_Y`fe(#-x?OdV_&Wk6*93zFb)Jwo+xWthdV4_ z;a(BWeScV{m^Nk$fdgq%5qFNBqNejZoiWYw9_v! zxp1~WEUKhvM*o7AQJI`pjQ)6SRbmsu)8xYu)n`NT_1csv`dTH(7@`Dfng92!N8sQD z{oc4Z;?-yz%J-E#!z86R?QmG;eu)t8U#IVc-8QkB^(vAG1()nRlwau+ONDX z4Z7N2`wTXI?|RTP3RTKzkK$!^7MI;9xR{XYaUQNtq`{s%;`NwweJwF5Jt46OLsr|s z6?c!v%6N~Ft5031eCb(BcDrV;b&>MJhxHHH_|4SSQoIFCKJmw zpW;UfVUaIx8m@tcI#;a>i^Y;hHf0Q?n3OOWbz-ZlQT8SbO)gVhuyC;xkaMC+ttfq; zuPMbyP=tkJ0mStTfaG_<1r~g2{iAU=K)yLAjl~Q`6y{TLLj#g38XAy;$b&_PZV=r8 ztGZSDbLEt}jdtdjyN%pF4^S54S!Q?tjI#K>2*AAMcH=cHRg7^n_)DY zJ(1AwA^S6}H?WPcOU7h9%xpRN?&0d( z^x?`Xi{B}Gi_%-W%^jPWxjG7uJAiXzb$3IqkOf1BP^s^8q{%!w;p5+1I)pnalSc*J(dJ&DhDv%BFMAWV)>{ zMRars0EOki$VlYT0wZWFaZJy!-d!*71IuOfOtIoG?cT4!4zp8$Pe} zK$-?HX#y!JDFEt|{QT&1zj+yZ@OSom;0Hw&b^VbsTnIW{j##T1is_-zkAANMy?upo z$?=lH!pt`7TD{?0sml5H*A^AMqZtm`UfeND!m3d zXp&dH$DzIApA0;n(`qh$is!Z{Gt{oUJJV0eDLgh}lr zo0eg6p2gC8Ne)94Hin&JbfkWYl`(^NzL^wCdB(1G3{Ajv@PDPJo`4z8@e`{>@ks7E@smlS8Gg>6JTiYSZr0~PJoc|l#wPc77{q;f z2yM|Ro&MTF^xNF>)6dYG0y>(|j3|{+Pc5UV0sqmXDXPp@m!;`tb7#3LL#_>*j1N|B zs5&2QZ8O6IEV#KQt_m9d>==3Xb5LAiEo7!S#SiYtsL>#zr_~wA%r;9MKdfxAS1~#) zY$;2v^xzKRnC@d8wketC0I^6xvU1j{`My#)d*+zm=eAw$zThU_A+|XVV3vuPL6&6c zaWu%7w~Bk8KG7A>w<>M)&zlj)CZn{}64yS4K;PZ_rLX$4BXx|!$cKM-)_f2BEjpwT zAeLxTHO|$dO^hBn36;PekCPm$SN5gX*=?4Fz4~uD`i^B3ul7*i$IL?+DhP!)`)6v79v; zR)XMe9Ixo-j#QA50E|B-_fyU(NV z00^#s`owv2_8NS?)z0mDOgE-N{VA|}@otwU$?KAPmTeI3dZ+Ytw3C~e&zL3j-GZS+=F&8sj zLm_Js0oGl_p4rtnhKBFbk@lCaFtAO?L;Ki1`+_Z)^4Bap+Ss{qv|*k}3gYRz+0O%4 zo8gA2*Dld=2262Di+U<1?0OFUMGvzYjT<@p2S@+<*5{tK+R@}Pc?;Iq*=aC3nd7$} z&xjI-nX8$Ihh5t4GnrWCi$SjhR~KRR!Fg}_UNQ=6 z<-?4E#A-W1NQXazs>P?m+>USs3<|pQbh-U4_iVoZRyx(yXB}=V-vx%WvbYUtfhGx> z#mC;o-fw9Z2YLd}$l+o^Kqv0+t30aD5+VsPg}$9^VzZEbx7fg6tVC5%)RG--KQYj* z_$dLkW`Dg$Yf09da{XLaMrANaUqqy!6?W!o1!x`5x$fJ{=$# zJ}_6#3CuR#{r%yEBNzZ)Ht=eE*4~rPRdfBSI1%MIPG#W_nSd;^9W}HFWs+$78)D^1 zKU9CE)nLE{i3@br6Ke;F9LG^%rK$F^oCu^7A8rStB;bzMyv_tR9=%Sp_fSMNHG$ft ztg^DwY5h`1N1MrMS1$_>9}fPb*;9}M(B}Bw8Eu^jLcPX^4tGZO>=3@*0SFj2HFY@9 zFPk^mZww(YKKX+czxR+JK4EG`&SEi6LPz&AoyiE0pr8Q|AR$q8us7U9`}Qg4{HvSU z=suO4yxiU4k(>MNcSaDeMc+>Sx6s)hB~nU8PyPYa5a{saji-3q&Fp7?{vHH0H&a_M z+L8Y*xBvNHvW)!2vz%S;2_-9O4)vDi4>jurms5iA|27=ciWeA2b{Eb1V`BeYN!tbm zvKCj?I``>;b@#<)U%}WPbn+o0SW!}j>@}FH$VV{EapGaaZhUK*M=)A z%Q|aKkE*afAKccSSoa7`)sh4tZblaN;b25VQ6zzdgY{?AXdq`DL>@w1MM!<>tDk9g zsfQ{HbBjJl>xk}C*+U5vJ=-bgAiG8=d=BaN5!|T2A3H~I+j)REaZ}P(pij*Hc*fkc zFNO?7!SIoMcY$m4KY6Tksdv>DtRJqN7P$bKX|%YkAf7t1o2!-6S13D|w4J+|HfHro zWtR@OulhSbAH!}61<-<#h=<^OzGz@TvTN?|F79`tra-AL$t}%AbV5MeWxyV5-f}Cg z!XD(Dp+8-Z2@<>e`k;hYiy2*z-yRvs4EJu4M~mfoO6nux$NQty5%EV+1{>%@wc1^YQA?A46A3~>wt=Mx@2hiM5dOb>usLG| zEOb2lV~@iF%6s$Y2|8_-9M1J8(n~_!A<%^kixC)Z!ORBRu${sr@yMUqvyP8JM(X+Q zZtE7v1`rTzVFf8EC4u*5sl$hrG{67fHrj}#wViQy&=5H3<3Ug3bj|Dh_SRy#4jcG7 zk_4arDgu=??MP}B2{Cc}__zY7ZF>!0E^s!yFZqFDgTe1%#%6I*>+|&wKo8#r` z{YXm1_DB_Qc9ms-YcU$3Uo3!}-yAQ2&N5hbHuNxBlYP3nj4he9etPnTs7Q5`m#4R~ z!Uk6F#@9D$eLKxWu55HIz6&8bJa`ucUyNN13D73xE&5jCv@@P$6h( zWw$SIU=T0NW=l{212#sE!lW-^4_Ldw3%&tvOZs(B*G2A1Nm zWj;AO8vqKWkdTnJ>-opG@n=cN-?z~yxO&bkm+2E$=+sBGwL!iuiie@ZgQ*6sD#gT~ zWKBZ~5@RgC=c5ge>p4NkS6>!-divwF)=1zRRZ*P=mDM(Y0taSf;4tX(C<6W$=pGo& z|4au3zzu}rT&E%EvWFt!n@xpgh;>^CfGS#Ti8w*GKA5CW& zl~vny?OQ-XIz+m=yF;YALAqN&K)R&6LAtx8ySqE3yOD1APM`6;zjVlOD0^S*eXhCY zJf=7R{Qim(e8tex(pvtL>IzmE_s4o~k!@}KK0d-b%aIQ-N z2WRJTH3kh*%SJZqk)-_mas2M}S!$)lmA1wwjWGa0X<%JW-p9eh0+wT}=TnE^!xULv zEd`Byn_b+Lkdwobb2spPYX_5$Ux%5Ejf7bs{lK$Ov3ORS&pU{Hg28y=R{4h`HEa~t z=-9F3f3@|)O$c1TwXZME}nVAengO#tnBT;VBBQeoG0g%Dsb4J`#Cov5dRZ%VDhQ zC{Vurt_J6(qB<7noVQkY?0L=9+B9)|@wT^umv3?+ZX}P-w$W$Jz}0t4T<(oBO-)Sf z18!L$GGT?ha_O9QhgUklPWu41a^6c9Qd?eiwUX^3sIVcE=evLc!_B{`2b9_%4ZeA= zZRG5WPUb2QboM|5qrE5#>i4uVdMH8s5}1rfdfAlj2+;TONn?7v>ZlT0S433HnABXB zPppt}{wTAO)dsC#rL%uy@cS|ME88`4a()o$!Er7xgXDjiG104SgJ)sCQ2#>+uM0+1 zHH*s7-S6|_V?=hsz(k!fiV+DHkIRZ!pdI`{5XHmd)-{MFRDK{Y{g;tgM}@OOpUagd zlvZ6RUu2I5wyNNR5Hk1V;Ys;t6sGGRqDN;X$n*szR$pS`LyHu$rhd4qeE13dFz1f- z{>gxu81G@Mmw+r>&g2gEpuIqI20t=~w>|$?k7x-mBP_o*C5`97hf_NFH22pcNdN|ux=BwW@Lui_Lxju+Od^W=L%+g|5h3n>_o zBVcbg3BKNQq21i(;-x>Z9|7a#mprp;$8~k*W(hNEcp$LWs#$UFrF~g7r?Jjm{>TyX-u3UBv%HQoA zcMh_{ibTmr)W=8#JA#)SDD571K7vr2#>2Hoy)AEVw`dKw{XO2RA3qiWcAyN!=4E~= z0?y87Ei2pt3JRHwXDX090Nd`^f7@<=s6jv=<1&Xme|~`kXc-hJpOM501vSn7+2R>c z_sk9w`QXtQGB~IRc9S>ub4M2|I0pdaGjRNRc)ZL0pY;Wb?Xk__7=G5&@pI;;z2a12 zrsxDCk<|5C>X*vo-|_^j-}2@Q?{@7Evzw19j5sd~1<@pmJ1T>Sb(-^?J)BQHZ^GWa zMB78gP;@XtHX=gvNqhdu_g*<%b0zSo5QmNoIOE~FcloaYezJ#gHm)8t<$@FG5Uy=& zKu8E&W$Pu+(4DeIwK21O6P}fo6#ylYmX)s_94Ksn-X{?eESv~vXQE$A(qnu<=TaT7OG$D0Fv0 zM>{h`<7R<{EGE9NI|SXYT2?T3hOEhKo><_DYIDcUmfn!133@~U`<|%^Y8ll zPR>Pavrk%{84nYY#1~Qw>N)4f>kF&6(HysXweus2VK{Q<&C-7*fGHT`oeBKj*5^x{_U9wW0=eXgd3tvMcFeD+2RCw?sdPZ1wfV>?H>OM*Z_c%w@kCnKY@1Mz`~@fOZZP!)h#e%Cu=v^!*i;u zXXw6=S%C`ja;-aX-I|**M$p?Tx3409F7TJhJgXpbmI20R=MRW`z*a((oDHM}%Bl zi}ue4AIWlL)YZBdB@J3%pYOu)a7Dy4iE$!=Rh-v8TXt?0QeG{WM69&^3Tdr_FQ)48 zivHLxtc@iw6;%u$#O!3sG(svkN38egc4ZFfXer(rQ~b_o@4bWD2>wfoCKSDQTnt9S zmk519?`8GN#9*dBQ1`=7KBz!l&a@?cC78Q5@6xa{l zD0nnDMbD{dsp57GXRa6m?fWi=3h02JCGt26k^6~-#UyR$1zs62_RJp~H7$431k*Y< zvd;z)OunY1UM$9KQwjKk_xtwut0Bl3i$ox9bt2Ilx}U{P;YGD~HK994OF&gy z<_<|vZ{25?{^u|D$Yjx5gMf6IRVpp2rY6w-dIka(Q`G9eofoLp1h2SUn*zwzqz9(D ze3-XM%x%wi1~LVW$4BSz`0WWI#Qb7nh|xkieGcLPd!qUw{hdKLP-lU{!j@#) zvHCM0pPW=&^kUhn^0&tWjhG11e!!=ND#JeIGQBsza5x7AtS(L`i$j1q3p0woY5{8Y z7XSSDH)~Xzj@5kC)cmI$r=+GP3woo1Gb)`G`9fg0$v>SNp7oiFxMy|=F> z1PyME%)ZuHvNKdL0M@NrhO241lUE8aNFdFCzV1l7?S2sa?k-WCK*RS;0+@%`{Y<@) zJV{p2`P8+%jKIojG++6aF+0l!1h1|V)e$c5R}!NEu`2zp+_JA#@yV?F+b4Xm;^JDS z6J7vKJYi(I2TbtmSMyqgpaO(LNx6p0>zPhR=R^DbmN3xWLWA6?09q@YfYoa%f0{PMZxz8C^LR zZ6>5Gp*R1k0gNtRNCr_*%xw?#CvLIS1loQcw3#upa|*4kg^1j}7!$GTcgJt?Rc)c_ zx*bW|=*VV+s+nZ-&Xa)LAsK24*8HSN11~x^O9)BMOB9svclKoVX@WssZ57_<<|wGB ziiaJCZp&<^y2RLbp;(-h{tKLZ;}wjIOosg^I?k4)Rj}7C34!6aTXW~1E(#BEx!YLV z7Zze|ZE{V-s= zrZ(|L5=vru)5-qy=8BYPq^I|Oqsr`CEga+*>04>0+Nr>+Bl0ijd}@B#+(9ty5(Im% zukL9K9gdo-K-$eRf3L`|kVxe_izS1f-PE{Hp)W5%lf@`MB0RxQRG9;L(wbFQU#NZl z+}=YhC{%d&?vcPL;L$UWSlMiPb_fo8IlS1ukg`k< z-3qEO8ifUptQcoQ0TVJE(S)q|zY1rVReH@t`X}tcPUH=@4 znbC;FhfUWHGbP|1R8ZBdN+_-c)jjYO{ewSKD1(D-wsv|hJFle7=lNR7etP8M!}qNh zJvF;c2@(#ZJ(WbxoO$y<1Dulqt)uoLY_Lk!bQs>t&)dNP=zxzDAiwO{nXYDR{inW74G|e>M>% zFO;*|=BdAB|a zLTdrXg@K$rA~sg(_Vmx#QqA&MQfKF9fNLX{8Iy?_*=@aDUjN$W_8zz&gH6lwo>EqZxbOT|lSL<#}<(&%x>vANlmmv74ICIbZlVJ4@WTVC#`#fdgFIw)SO zpscGVE2PWq2ib;&gW0)3#8^Uu6C8}tyRs6WsvdU(i_HdMKnmeo*>G9ZE| zMk^KzRxsG+RpyL0nOf(qrlgRnoX*n#?UH^zP z%2R{RY$Y`h??->J``9>*(9$4C2h7OLyX3mB)p21(ZjsW_B zr~AVfv>ICWE8iFrrPuW&E1Md`#l6QX+SBM?_O}Qa65Aad-&w`?fml4GJWJ2*R@F=TagAk`VyiD_%10nnkF6ru??RZ3Wx)!9&a zaDrAe_sTi>0GjA{dJ~sfClZxU9%*Wryj5J?*v8#uVj% z-Pxi}s6%No7i-${=m!xYVYAfOqgXMXU8$6#lww7Qcz#-=tV z5Wc^1zXN-0GC7MuHc1c3^c5Cru4DM54%j8r=9!aI#o8;`;N{DR{>l}H+ zV@Bq)3)eza{sF!tO(<>>n_&FOQ~qNNlZ_lKr(EITfQf@JuiuI_GY5NKRYgMQcVw3H zMDw;1_Xr(YT;;Np(FeB)cm%>volU}b=2oY9ZRKVXA~O;`Y@fBAHzUdWE6m7nm*q%gAq1DoG`sd@b!XWp>loW zIY9Yjxi0Z)pK6RU0=mjsj0g4c@bG?+{grn(U3LTm#%KgC zXGj~qw8|{(|3|NeH#BhmTX6sdy>D&p7x-JKpFYVuIwB@A==6d4At|W_$lB1}-h?0k zCu(TO0*+|lydU+`spl1d)&TL1IQ09;qMglJtE`w9G+0LfUKDAJ#A3TAJTo&TxA!X= z@Zp1n`{i-vA9GvV!knB~*;FskFt;6!g*tRFrTA^N8HBBDmA`)N?hB&?A*#(kwwxQF zB2-Nc32aV5T0O?!pA6)ez#DLHw%7qwh&yb4LAX0FtadzR(A3fbj*k7sDrEqD2YlaR z9rxM!?Y%wUFWE%o~TQpUzuudnTCe6E3$lPGLBh?aFJ zRtq*;J3Bw6@{Rx0uRdQyF)FF6%Uemqt5;;~gJn@|!-yiy$DO@BMIBYJLh308ED!79v=nnr7>~a}=qKb+DoOu2jbcoy9vYpy<1FaAwuYZC6oc->w zBRC>R$c~Xw?6HAP53p|=&ur-?ouRxqu3T4AQTZa|#r*y~IjrwzOG^sjz{n8skH4DQOx->bd*(F0pZ{fRaUV<3%u{Hg4LT2MhM5 zUBWN02)ANW`8oB?F%FbxN{VXIt|3l(pMB$h5+Pr*)M*a`H>5GeCv=p9an2{boTjSu zgUpJf%iA)358pKE!LsQab@?Y~F&8FFO(O92&0D9=$<^sfhhH)#2iaE*Sp%_;eb|}| zzjH<{W$44X8+ZxCIjurjt=vxaE#CIAcSMH#8Z}T**h#D%?bAF@zFsyI=dDv^kyPpq z>~{Zr{?A4jk9wrU;I(GCO|y&VBzt>H5F{164mZDJ-*rUxkQY483(nn%iHQM1?(M^$ z7H39q&48SA&7G}4}rOMo$~E1L+#OS>ia1S_Llir50zF&o92;h`#;T z1Z?3_bGd)KU{%%^a$HniJ|1vn+^88zGA`_TnPWfVTd@(@{s#~9yEX_DzsrJCvwswt zN2|^pu{dwPr{YtIXot?+gyl=8by=VkQ-hDtnLfRd|IOV;h*j%BHfTJnlq&b2|hZZROgeV`ecU4)4~N&{A+jb zDMLv@V`(f$EbWpw5Z*c%iT8UvXVauVs}#q4@QfgM`BTC1zOCiNK^CScTaLs^F@k9sL09sa^MOwg__&>5-DBB9w7qZ@2#`x-U_ov%>|;!%&&}0=-Du3^rBu7d8!I>f;spyt%FvLKkp-`|cyHz> z>KZLo&jB4N7?;zg#&f_F6fOUIt+*Z)vwzk6`u9eCT|rG(?#H#RTA54eOrcS5a4-pQ zenjohe`fpAu>X4=^6<_DvRO1r?g5b@@ocQ+-(k+1@Z?=)&zA|d)t>WFyaUT1l@jhqwf_P%OUwMDDHJZMAP*I&yLcEYp%yxVM0 zpzGN0TWeT%tC-S}D{c{U&VM8^BiP%_NK6!$mWH%#y}-OXr@UHqK88a^&MmHr!Db~e z*z6tv3vYT5v><>%!rR_WT>sZYRajDuBZR`l#PqpX#qN1g;}U*bLUJgtxGDf_X*0AM z!hKhiDzqa-Nw9vq4AI$Fhk`aOgV9EV=UM|ndAj7W>;u5!g#=BbGp6BtaW~%jGtNP- zKc+x$3I>R9wTfn2N&BQ-D=nvDfMAyKV018=DMRE|{y=-7as`p{Cn?1O+&`%3&k~Kl z!dkQA6j>oJ78;{7mwV9jJuUOx#)&>oPUUQ9%HR~*3zFO#LVN4fB}XC!c+p9V(x-^b zpFU8UgJd%uCGv_`X!yMqH{Dn6jGh*p>lYIX>%fHk_s8q}Kf{9f%@})+GkM*`X*mcz z!d|pMweu_2e>;~9)kKL6&0|0PFa`eu!HVl7!TCLH>%A_GYz5em*4b066p%D?(=aD06KM*YnPxNZ;;$6zI*VUGvkg>HVQo?4j8G?Y_Wcx>-YqkFZN8Putr{xA0!XyItswc$iSr z4Vh=#I2-?wj&7?tEoe8=I|-#}Pc*bM&<^GgQV{mM9FYKHFYvGfUtLojGh_@P`Jk3- zjIraJ+2U^|T~`x)V0jiHErElFFUZXWJ%bfB_aUx8SdQH65yoaF!BFQklS^+Fk(S1t z;H!zhGOJWpR16VQskWW4%h2Y*b#;efV7QgZ;0YWp=7&>P z^dJO`_l&ihJ2`)0bOIFn>0keQBTdBGusiiYhRlIMcG7 z-0s3f?F=v3q!nD3Ky73OWAM#TL{14?<4y{TpB8q6x@Ak;=^SWQa<<;klvE6Vyb zvXzz?Vf{wRm~CjtWoHpbS5od`6TWsQh`Eo5X_4(SFfTcZp;%Ig*H_Mq5_&Q+5lxN) zh_qU)5Iy|nWy5)N4H?zi7!nJB@6nASqDnf+LVR)?S5(T zEKrL2d)qNYuwdjiUSrH}&BG*3CXO>h+@8;8Q~40FmgROXhDkaAH8ampn9~^fi-Mau z$fnBU^oNtRfFGuEnWuC*pIe+bA>qXAA*o`iDi#(FktG`_O#XWb|JJ#<80`BDx{N-K zGsvl^%%eDSg^-WzT_$p7njOXG&n~DkyN!PL^@XW1xzZI;+!-Rj`pv{?G`dJtR!)b# zgVCK-MGA^s@NC;}D0SUW$mvAl8TU_ft^FrVRE+ ztXJ9hS@N~A$_2{|8heK_cL&fBIjHU}FCd2dHHDIy^EG1B(VahyLCo=^sv0K5T{EAYij3 zF}B~sFt%Ou017Pd8Li^+I)!$;oU)Inw~XFcRkdCRu>*e?I=Vv&yOrA3@o~?1y8FXH zt}~#i87_>kVtm@a7^d~^9~p^L*L6(>uBI-K^#)I(Q|nU|^||l2Cvd+Q-9r=K?$M4r zUVoX4WNghAv$kGO^8h;^Ep1pbYoQU?l-5kNe*SiXU;phPWPl)bB=hy2hu7KKWbA1F z-zWy++R-0r)oKiS)Is*)39Ls0bH$CQ=*PPH`=Nz}wJ;fVJFAQev6v09p6+aS7xbL$ zw|X^h^9V_(sG`9+{%V+Z;$mt4{BotHvf4O=2mPeLPRWbYpsoI zZ`2jT!NK8QB?YTlJ*KDB`Cau{I(KKtJ@I*#SF3-UXjH*He%?qRqTtry;SlG#2N+6P z2f!=?Ahs;1s67hBb5sd59v&WFTW+~Q0$)NZbRW!k+U*_zH^&{u50|Q-ULfvYef#vZ zeQ0R4qlaJt8QF?{U#Qvdh6c0k{>pc7>~oI5dzusW<(tTrQbq zWMl?M=nYPfIuuk@#e4r|uQa8H6U7jPlJM5!Zy(mdQ;${>@z!9`(mIGmAP#hQ0|-xF zE!IWAyS8&gKz4J(aJtQMfN!sY6Pl&vvsX5#1IPbNlD7l z*CdK4YR!$dS#duq80LuN>IIqqB;Gu`M|LD8H$2B1aKx*NQrjc?=EX?h-fidZFZ^5F zx1o&Qp&0uTMf&a7B)GSnj#XkMRo~V{ZKX zFBAMbjro{-fkH;2>xC0mSQz9t_R+_V5jOm7Z|hGh!d`ukI8Yr5<`$DVy5TaYqva@8 zkEo8vH@7@qNj65xWaA7HtuN6oE+lsLLZCbRB2=}AWm?hHB$t{_L`NyGAP21~SK67^ zbBgkj=~K?+ahe(e^iviMjquDEI?0EuDNxAgYxkQ_$sJck^#&4^-VKq*FRYy0SH(A{ zUL$jjFl5^A`5@JX-H?fe)d&NzoC-&i`FCAbO>6rClRHy)KBySArCbiRg!y4|?xy*G z+)dFNk%Jx*j1x1ytcFL@WSQtsA&AYW$7waa4`8o*nGe=$hg ze>n{YxZU=lSnp$qYv<}>Fyo-NI$saUTk7f&D`PTd??~$jd3b~4m9Zf!-xnoV&e9NN1lXR&S&&708sfRwTtyBzw^m5G_`XH<_Qz*>*vF7ez#Q z8AnSsQfhQm4Qn4)OOUh*ojB#-7tEjFBZh&>PNFL$7r(cVtyF6FqsH`J#9QvP$uBrK zJ&rtIv<|~qH8x$>SA^#8MSYRw>)_uKh)fJUO`6ny(3ue z;GGiud-!5Dj7&E}kL>7z75&z5{8uk-z0}#e@)9Ni_bX!n5JkM+9WQuGdV2CRGZ!wl zTYrLslQb8JfrLSFI9o9R9@a(&N*~~~U0GQH>tqC>E&wq>1T-pU`yHk=Z(DwH@{ihW zcq1w7()Uj-j1HU6vcONGNHgn?fJj72pP3*(VYXhO44joh#9qb)pNLTNWHR}2l4XYb zSe?zwY`4eD*<#Q3ViR@5G!*fP4c0uay56-ur&H6O+)l^o>l5`b4kq9h&cI@C%Br{c z*8h@gyI>+4P7QY{FZ`jQi{C}cA0t7|HgAF0r|aWKHCi^^5Z3#-dp4lww_`PtsXAWa z-2k(jCJKYD6UP1x5eh!E#?&%NVU4iRB9$JE^l@>;fe>RVu(z9k%i2yub^S5KWtd|- zwK6L=>rYgz6pA|4U*+}f&_!483DR`0KaI~Nb!C(V0KG3R@q445boZ}gxGK^PnT=tf zn&MK6MHjHJhOwAUVZGmaD#O!R;!jk{yDWMeiOKr+vZjJ(7wQ#s)&_k)ZZiXYmNlNm zKIfO!?qxC5hbx-jj=y*2=ZyF03FI}aIrt8ME2ekAbaH7fgenxAWmqgM$Zg$(_+|+l}u}Jsuf9ed2J5Woz3im=<6i_T>I8 z*4$yVAfDT>(GCV8t*5{n$UnJ;f;3Lb&cTs_gapWs2!Jp-emL_9yy{3=oNfPkj$mM{ z=^P`(di35NIUXJ!j7?2hEN3MEfipOSJAeqbcfjg_)GeC9bAK^tVyJ_Y^KP{7k?nCW z=32Ow4`K6?sn+1!=$#NJ;cYtYTRLoF(8RCVQ}fu;c0 zo4S4Aupo9mFW5Lc3kU8zGlp;blU+4XFi+sZAOpyYz}pc$gI?(F0jhQDbC$mMcxIcN ztLw*+UxNLt6AVJx3LE?9eGyj964E2tV9_`p$#7(e3(C4Sbv4-?#GqGz14!I9(bX(+s$4Mw!AzE+Tw@(?A zXA7I^e>Tu<@+ynRTwpQj|87Z>5{!l2iKs&*45zfL$%BQqB_wKrzlTXN`W2(E3cn$m zsEczkz!#yMv${lD*1+`R`(jltkV#^?2a%hW}B;@B3CD|6lv?qe{wYA9E^>u zXXs}{*qtUgP0^mrm8;EBv-<5^my=x*00%GJEXl^dCRgPyLJ2E&?lvSIBDUHh-E`v~9X(1F13(o7r zjJaQ)5_Kb`@=YJRC3GLmQ4@_~zyGK&sAzt#%4poI_nX!gdl!Ka_ooQS=GqOOvBcrQ z0f|fFrw45QgHItMMBi!&@lSQY^La{PwY!frWXDV;Hd9ej2&kRhbF->!=xi%-+kb3k zRwl<+tu(+_6?C^kfBI)uoPo45I;Y zpiTQV1;BmWWxs!NXEBe4?57X|YYTL2?sz>8Z@Er=LVzWPLqhr-4GZE5`z!KNq&$yY z!2Ks87HD8?E$O983^o*78(rHV{{W&BT>u0G;C)I%NTc7Twd+Xl7<+pe&-V%^i*k19{KmzA{)W z7i9AN9QGNQjQUBzl4G-KVDF+U=o}RcL7+iFLQ=ACVj@bl^q0fm4b(NyyULYT>>yA( z2inrG0Tqdus545o!$aEDm0V2?6C@9;fXoYeUU=y=*$8QArT;}TszR87l#YRk34o*T z03CL4WJH|d984%WfcuK9-Q zQxnD-2n`J!`HI@wGT^-e&;;Oj zADg%z(t^4Df`WLR&)1BeZrhAab``*v)YU%$&sgE_-@&u9Khn}+rlzKb%C#D(sfRZA z#9px1|e>9rx*`3e(0b}-^&1$olurTTS_W^i37!jFzMELmlATEYPD9{~( zP6@n3Wc2juy}icG&COgcf2j}=5y3YJDoL1)Ss&61-xWVQKHLV{824P4?8kqNBS&z8cY%(E0hL^*<^)Dzia-(AXZai2nkvLSK?r z5~};L0JWqmSW91wnYm+eT42#fSl8AMGPARHfq>C-+J_JJBgtIsz6JdpJLNi1P)*0E z4Cn-KeVmgC4lvsm)@NBwx^gRXGP55L(M^N4(062HT}dm}ZZXW%w+WB>lMaPuRoT(q ziQ@uO)S#ez1KpJ}^u(>=(pKW__xRaUo@edZjtH)I4zK|WOYvupuw|?mm>E zrHzPZlauW*?RS*E{NJeLN(-p!LT~qw z#Kz%zJ%dRd^ZBPF_#o1$M#>DjuKsN@><@$o`n*y8Z8B`OUEfAf7-$q_WyS=9zPm>A zyv zrz-^@a?TVccOflDqWxt*m(hs9hJPNFoZg#BT=3F|Z?=N#?}tSim*De^X>=#Hb6j|B zGWUM(059T-YiNgRsKIlIZ(fIvU}e7PAl}$?4-;W<2Ad#i@{jeEg7CH$%eoFXt3c zbfnL}an9tm+)&Gh-b=`Y7x88WHw*jpLPiwP{>c?5xo-OeX{D@CqA>FD z@mLzFJh4jTzb7g^1R2EQ)?fLReq!0(HbuDfO>=JPs~u=UT5?l#h51>51+A7TS0&8O zRR)7w5;WVFRq)@t1v=rhyv0wR@vE+!r(bvs&(DKBf0D{&+l;>6!pXfEFs3jhRM_~w zYOY$F?^=qgJHQ+vnaJxjpJ%JLL5ZBSonkeaBD`O4V6NxLZfb>->|j~7rbGR_n&0c0 zgj=`7e|Jc5_C?wR{oS_U?4 z!%sX3zQRW?=_^*;Cv_PeSNQZ(ot2KHup(3#EOX<2mJ{&V94QuEDlVufOSXd#Qi@gz zfkrKs@imJ^e{YfS7?Bn_4K2oxCgJW**+cp0;3m%p0TFRij*z(_ZxcALPbwi=Fdnus zSLmg`*GMMkHSAXZ1t~J#Wt8krE*k z7vuh~NCaHMgOmT^;HCgeuKxJS5T2l0#^WP&e?(OG>}*oWFpiQk>&4B@4l-k9eq#|7 zp&lcsGD5dJK3ZzDg9lH2u%Hh8{aYar332Q8v_(YxJg1-l3G__{BI5S9oO^xtc;=t4 z&>1V!U`-Z$V+K4yF7TWO;kY)A`{uVp-EX0798U+1bhp9^!Oa1tl|R}DB=tP6^X{~T zTbK(MrfA!2m)ajhgl2I>{Lf@t&m_*|9?|Nt=M}wG>WkglxOx7!wl>JORC_oC#mSf zj*}nkla1l5CmzaDdb0wR-{j~Yc_X9}R?9JX@nPC)(Wmn-+^c`o&F!Vc|WwkfXCQO4LM=iFih6ZYoWH$ zxVxe^bULgdtm0?W%XyuglMyGgEMyXjv?68JqukX`ICTjTGAXDsa+=)cP-%b%TW3-yy9#?21z=bB*fS~7%?D4`kwUCI) z;{@CB+?bili3S!dlba zbT^vHi3?bi#!A$c9j`P1rXfxd$858L1>h^dGInP7`-&`s?lk=s1=%aMQ*=bB`BH%F zv#W2XsFpCN;5lY5pT@@YP5WC7L*K!Uo0uR%Lf;#i zn}b7T*V0n*ScjLWlM})CI8tLX&(z}LXfb-Cc|0d^f)p0pVCH)L2_-Xe0?g3iSIuNa z6%{dYahPB8dl);Pw$IOnEv0xMVIB=EEczWL1bg;mTezI}SWZtrKtMd%k!`W{h#~ZL z4mhQ zPX-odV*RTmnz(=5PobOVt71pC;jZa*MJP+PXA(}2)S*FM6@qd%%I~7#p+;ml3w2ELE>{2bUsCL zPQ+C!`0BTMNO<5|6@m&4{pfPzTu@i+m-ok&$LcE_n#XhckbLRq&qVq~ytx$b(cFps zrdu`h(BM@2>>uAZEBsOyr?kgJBa=zv4PHF>G5o<2E_qAbrW%t}EMHAgb@{Wa9e$mv zY_Evm#%%T<6^uDz62pCS(az8E?TgP4hsYnQ>Kb|nCIY-(Z5o@Gt_tOQ24(2Ce$2`e zkeS3J>;9CXAouuVx5A&!#Kx9WQi7Q*6X-1XiG}sU&^S%!_;{dEp;vxcZESZp3pnum z0B(<&yq+kH1Q(_wNHoyBa(z#$t^KyL@`Og1*qc0)h{a0bPb}=Wi2aJbwDbU;#>qK3 zhM4pzK`JyRpfVyHkNuy^3@GlBa&l(9!3Ka?8&*^lH#^V%eWQ~BghNE_?P)-A9>8Of zs%vUoqtm*d9~`(nj}Qt>3zAY&m^|*8K%u6jtZYuU(0J&_k+1b9*x}*f_s>`Iz#*9n zT7y;81lCUN?`A0Y(Dam)y4}y)gtgpxsf&y8!oopeX-KB`Qg}@b`mV|Dv*R{$I6h|} zyOnO|)D$W@I;pPPA^zia74d@*j-sNOLh0PeALk?hasmloa+v}>frx~E`*ABTANKXWU+vMCmC?JJE`hSw6xZYOyXc|3!Cm{U?QKv) z8r6#QM@C5*1W>Q`0z4^gPfn=#_+z8V|By(Tz^kwn zj`Q)$k84rDe_d*@rIeJ^%s#o?m39HdC$NLs-3mA!+>JO{|J3#K-Mb=ol69||kc|zY zlV!)?=xF`Wun`dVpazz>F;E;>R2gSvYc_IGR5O~y{Lz+B9=Nf@!Q@lf{z$U4QS>Ru;b6($i$WOA`82us-znq?#2u930o2d`{4r#&Kn;l?oP>cPB< z9eb6;!tY-{j}!>?^}nexF#K(eYylk>^< zXIv?wiD(^gBE%$Uei4!*@7jL4x;fj&;u?-yq&@7_mdGxUT66Wve?h{-I2w9MxRK>_sQ;Ja^$&y@iK|GT-(xK%T-^0jP zzqlSjTE0@8`AK;h^9HN^Ix+KB36bdi3*ZVzK$YMq453G7cK|$)>~?@(4BSXGJ-u~Z z*SB-*{5P|rr)@d$0^P~@hjR-#dCSrF(t1VGK*Z|BE{T0*cP#y=pa)T(p^ywe&k&7z z@> zQZi{lUQSuLknM?!iu2iLBTlhFLHQ^f68G5ZEDT3k{=J(1DGzp}y4IVjhdk4MDyy9+ zS@$HFXKm(7dy$N2aicG1q|nNM9$PZLCTwULz6x>~%L%jndBilCC%!ptIq!tsrI$-m z2_+peIHChD-%FDIpBJE&W=CU}Z$(eF1+CbJAmz3LdB<|oA}pskU0Atepnt)~7hdx? z+Qx`#Guujm%{dw~`RAK2F~<6kxUR~bc~{olv`Z|!;OFQM*O^B_V)U0pEHRO4?=1?I znH`xZzssTc5-H&6iFiu(7@gb3H5i#2NLcyZex9D1@VOT}6XdX!muiU~3f}E1n!`bp zFGOW3CVVVd?#n5zh$z!~U(4or@QBN_7N#X0%f!M?^kay~5Q$ts$+RPz!MN|!amDT& zJ(>2n!Ag#gHcwh-bcjH&-tdv5ynAUZyLa;N5Wh25>q82IE=He?vuEe^dq6~DLlO-N zz0Ugr9rc&^)rRLx7YSp}Q7ct6Gt^|hTM>`nC8P>H$bLK2iLRREgGRF<&4sfvwx9u5 zB4Z!K_se?|H9_8}qCxoCIg5eD-@h^B8P#v`?*rroUI_%f8Bs)j(It=cN2E%4MFacF z-rsC0)6ulvcF#Y5Z*KOU&N&qo6@@&WJ#}4o>5W;itE%ikM3Corp`)`vR#}aq> z{P;n|<+#Oic4qTjdkEPdjw|Mu}{kfUQD`c=BP*yaGk!{X1)K!&**KWCVc zw{~t+`g=|Wa$-@j(R>(xIV6%jLl$2meIS#>wW`ACdf1=i@0DYV&em%oU>^&2--xf$ zu5o3I-WS4TsaY(PwCj3earK8iEjTnfx1|5uG^hoU~@2>pkH}hVrBfs2G?NE z#KEq=+--oj?r>FQlp3ct+=;5o#ifN#IMX&jOJ8Q%`&Cc7?WF1ZC4p@Ev7?eU5@e8j z%nx-dgDt_q^j!A}NCh>O9^V9`kftOV4Lf={PwVe@b{lTjkjsB+HM;_u5|T8qSUtiS zeTjf=9ZO(5O27$|ZLYz7^PXSD5>UE#>0oiCf2i=;yRz!Oq&H%guO73{vO8Q#AdF@L%O>`y1Tpk0i;uq?vn2A?uPI3o%tMpIE*8B z!@c*l*E-MR_}1~N`Vj$7Qf6dpZ(rcr6$Nt8XDM@DKzN+55dn1mUmxde++H6r7pk{7 zghePpzUm0@OLmVJ;OgqB|3TPST4q50N#DYvJ6YH3XLK~?t9LF)D#wO}(E#vMlhYOV z$H$;|U>FFz-d)qBhS(hLFvIF&hU1m_oLpv5(1VD~0KxgCvQqBfy(gQ)%P%(eeYMMJ zt~1@qE=vhd=8EQ{f!zxAltlGK z_=;$Dd!%nW0R~1A=ow7S&18L*|7^It-I;))O6u4Qjq$@&6xrsj{fib$6z1ORPmL8m zlhm)h@OY=)C;P0&j~Xbv?b);11}Z2J;;z3AR<AU?X??g%! z^o@;V1~PtHcXSvu_9lo!n%l(Oa;pJ{LgAW(j-u@oHhfDs)2u+v}%%w@3qEA;5`rUIlpYyticW85mBz_X6k`AAu7M8I>s`SYWJo1%`u4MA)A{ z@4%AU2_Qj2OG{zEp&G6hxU?-TwZ2yyV1stYn#-}t--7BdI?U0nE~p`)p(fKMx%)>) zfMCq&xX;PNA#Z=LfQCvLB}5S)8;?8w>_%&MXWKhG43X`fg@v_GnkeP=_Rkqy)&EG@^V_>um%kgU#Fv4Lw)^D&`$?F8<%GHoki5MDN|PPg>7wb4=gv=J{%5L zJ*@jj$4ZeOgD3C1)h9SqiU`BCc3bgiobg3A1`tUaUFL!_v$6m#(*(`N)Ag;b?!9aq zkh+6z)*73w5Qt4rm)Fz;s$Q9$(qf8y6)Nx_GZ{@YnLob}uheP|&C22*l^u0;Yjx;A z^{A`K6StsV$X(yQkOo)z2-yf^NZ%_Hn;extzc$`4x2J|^t&U8E7bCgdcaeJWIN!t8 zW)Tc8V(ux$s0Z~ZwnitK7A&{M4{|K&bd7a}5eje#_f(eu)}m*hW;Zl54AW2`MsMAc z9sRuUI%;N4i&O1TLq=M9AL~xYPkCsnjN)}qP}?nT&-~nwWYUMhYo87K`8y1G!p;oy z(E<{|1pGP)zu%Q_Jo7?X2~5>fn>1i`E3h|{*eBZ#AD#B zW;a)4AuGogrNWqA2?ncK$OA^Qkk3|uATQWXFH5Cg#3?kI2g~~dXQrG-Lp?lLPME_- ze*b-;mcyY2=eSjOea*9Sqf#=BSm>nV5}8Q#HBkeMG&ue+r^gq>M0 z+4}1{_nvG;5>Z3lU(Z9DBGjNMoo`Vj#ovb-@Awa8is%&u@;xeSkw zq@>-EZ%n{Mh6uIg<%={KiBf3E)j_G5dG4(zFA6Ft9tBjcQt0%mq(A+gNv2g2bk2XV zh6j5Ay!95IP>`t!?GFB>ZCP@fs>&wXD;lxy>g}32BhGV<-RDelC%6K%jV!8eWZx4Z`0(<*AS4%~mZKenQgeQ+jV=e%wdsZgrjFJE9) zY`}6lkYJb&Ev8U&6NYW#_#^KVwLJ3x*0afzdaz5pEp451}_-II9dX>~P zB`z+Q!ho^QJrkmY^-7}?UtbvOnU6gY*vQuCb1K_n52XE@z1dTZ-8`!7pP+6E+nUr| z22x&gLYjxgV`G&B&!Ghn2%AcV%T>xuElvAYrb7AIla`w@a;C2NJZOTN;V6iw;%y)D zFpyM%iRcp|^B{fGNcecic$eHU2H=3Sdgu-f(=;PH1S{tIUtHmL?@x9P;NtMGxsd}p zB#P59>&;Ch7=Z>yMX`g;@BmmB2gk>gZfqr2C&`yG*= zPukl{4w6qKv8L7VuWrjfE6vWPliGA@`xUTtDU}g18 zeW6FiH1B^%7f3gdF~_O8>Pe?wM-iCr(JJcg{rX+J8MkD|(6W?=m)+w--8;{GU>TCv z&;aZd9#9Yv5bckLxH=wQd_aVR*(ZNlVnQaP~z*sF(A;8bULe}*zq zX|!+vvWV{UM*vW0%=4Ea=^PnK@tc;?c{acxHMzf9%{a+eal+j1JmCkhx_=)%hk1FpZk#!Ova_a9sAwz?q9 zrEr;I4h{9K{8R~9Mr0yVYb{w>k^_i@q?T{sH)&b}`A`&zI0_^Du3;(038nnoU_>B9 zRPb?ly)rJ~>>;otuy)3$7f7*=8^ZdEipIRDFD~qenKzlQFlBS<>l4FjaAYDP&8#i= zer%&>=`aS8BJaTvV2EzVnv(fNJhotfxX)LELl}0?YtjxI9#KOFRB`d3x<*rdokJ(^3P^jBDIubE3pkZg9h5Yz9xd;sH@)j$Sfq`^ewb24LAS*w}j89(J?;S+b{!BEd-vm|@w^2PtvCN)J=G z&I^LTWwE^OkMs5S2?;CxeNyH1+&-@|V4~OTMoUnr@zvg*+ZVzMnt=T${u07OM+c=Z zM4OqJHI$Hul>J8%oXbl%+tVY#uV1k*E?`vDRO4dZ{5jU{u{aPZtydxpPtqDosj5Ut zV*lov<`)%3C2Y%3$iNaG2z}Jip?|)9k;7of6zj>Yjey4Psnz!pr?=T$Oyq=zzjj+R ze2^Fd@0ev#mS_Y5-3+Yoa*tub1U5e4=~clff3dm4e`&R9SMaV4J=#I zslRCgp0}m`vy{bVp$kE6wILOgGWKK=65(y~C~Ooq6nJX~;xj^>_i|ccl7b}2wzvD; z=bspZGnc;JKez!G z*cjo{xRRpI=*v?n>rgrjK1Yi83ttFtbzOvRYcaPj`gdW0_ch@5Bb;G-CiF4kQl7gK=Vjvq3A9!kBfnmk(IroPmLX zB`VQ-+Wk>tlN~++Lqo$r70mwr_4SL^FGvYWiROQxG$W%{At9Utu_5`O?9AwV zjFrToE2g2r9gaaKrmLF`(zEz)nza=0ZvJ?DsQ~Px%>Q;QorbfM!RZ!Jq3LZ1dIQT% z$RbiwBp@!udo=?44;}*QBV!F#njmybrs=&RrR~KhD=Q1s*QDmGqGI^qMKG~*IU7#5 zX%_~4c(2F#^Q~xIpfYzC1a6Jd<0VXAr9yQ0$EQ0HG&VAdA_ZNBy}j%PyE7dWH8r)i zU)F4um1CagugNN^Gw)EOq=%sK`CwzfFDY?xUNBb!C-MdxM2S)r6t`Wf0JiST;&IChpuNEF`tI&@WpBymt!&2v5r0ttBVP;&JTY=9l_s2@;|By*?BqxD z|0^19{w*|Rx4chaG8At1eE3jVnU#Q+%zK;a`t}ly#r%UYH^2YlY3u|N^4`#9ExFzz zTY@AOgt?@__5v?6!}Y9Vm6(d^r&xGW?M6J}!>}$tF!OZ?g4g!fFHBo!=iTcA)7eTd zD3D@CAmonn^(9XCUJ&|f##K~geE$$d!8m|es3ZpV6(-|a#(%e~Bd}5ZN=vDabhHL@ zA&OmNQhckjIc{&gnw-g_4$HVP1X$uBJjT{{w)!?&_udT*exdj=O|)ra;^={Z1lcDG z-#0&il&IwI+x}krbmm7MJmh=ueU-Lgu{`;Ljdd(*@2Ru*$NX+pc#kVfLxBnOst8{2 zxCpWPe@(oSEsu1Lbfpw$_HyL)QuIp5-7pBGi}XcmXg?41My z?#Cc^`xAu^M$K#*|Lp~jo4<*?<@%t$Tn;l>uC-^nUF}}n%;_F&`uqF4?PafP!QfAq3q!rzzGw8nNSK68WvxQ9rk$Q(*BmFtfN zYK?Wu_?bV&bqUj%UO_FHjp@LYdjXQ!&?DhFJ z#@CHc^w6$jIFf3j8T4iA!Zv%7~MeDbgfP&&?^TX?*=^2i0i3DneKGtD*YGYKBRDj-Nv@ zxcrZdrnG`tClW?Oz@T!Ufw8&Nk8K!W@{v3LB_t}LyBmn9#%#Y0O-Hr6DljoMC4vN* zAcfA)|DN~l8K=Q|rEg`PlmBf~89?rYT<;P7T_h~#=vjJ995(Iz^ zGPwN7WN`XU6_1}63;dRrvZv9}(RtosIIHTiQ7;d`W)SI|Ht?Z?;o1s75iV`DVe`|8(#vEG{r$}UCc0_74L;)Jc zoQ5Lb{NOqa%WjbmV1loA+GPhw&osk_Zcn}0CFN!YW19*El7o`;n~Tk&eR8-Vk&#d? z3@&h5@DbOxPPP3D-9g?EPc{36)!aKUnbH)GN6phJ z?1w{B8co-)f>-BGIcs_*3HUVLFWZo#kyfGtb?uJLo`0v3FJ?49O|rz;8N5}TItuv{ z{aGM&xxil^T1L;O9;qZ_V*gYxWudxtyjq;B8bJizt3Pmw>Eo}Pj?wp-zOa>t3zmkxf5G4ptjiN-NeL%sFN!GDt{$(=7+ua{*POP z>tfoO8R|OEDT^)c#$#Cnv82WCPjHM)P5)dUfY$A^>NF19_?L9BI)>QAFy_5mhBdJ6 zyS#o@)%uMi0xqEV_^RL*dO4%+vlGt1j)d)&0VXKvfFG}KU^zyK%b#Cb8oJd_3WK;N zYikSb?Ci|#JN#CDJr1q?>hhIl;Prj(uunF~e#wF!GO6`idv~Y*lk3Y(SSG`#a+!@RX?-AJ<=ttHIvsNU>#m#v2y+drzOjk zHo}SaDqwQ}VRHNDd9kFb41XeM5IgdX@2~m`o=Ns6h{237UnOKD1%K%EoFybL1Z)PF zQ_&Qmfbkn1YqLA{CE3=Y+-ROk0L9uFP9iAscB?DY^^$qG$(;s9wKeHZGIo-ogn{2z z&hvJYe>-u-&%{dvJIwiHSq*I#nRO^%9q(sqBC>D(N^{#8KT2r;(-p|8l+AP{!T8DT ze^}?}iadTIpH^i@WuA)GjPAsP#NwO{-+#G7f=YSOf~Is?KK;lcZt?rCkrQ-GwwiBX zA@%$2m9OpTh(7}(VJ;U}g|ET7TA1Pqbdg6d&aL@1b*CbX2&Z)1C`Yg*^_|h(4tD0b zH1&bORD=m;d(sbHBi!KPL`mGT(V2F>O3*;-oxo3M<5X zV@vtp`F5{R)BaajS>_?28>b!~UX1_nU?h{uldw-!5mQ+dL&M*hTASCZr*^Zy|9<=q)RMqx1ulqC&26z@xI4AFDyOec3{I_M zz&z`AP^g~5VT16mNe@mj6@_hWetaIcSA&##Y@yi*^6z#zCj1&F{{k z#PY9_A%;6cGeC95^6zT~455du=oj!T3$}L$yl-6&@VM+K^70kyhc6wT1OA@|GkDQ^ zIo2$<6V-Kq(K`8Hsu%?C2tbGxR317?sH(Q(ZEvL!1{P-|3|-&V)%EW0-QI4;iNTAw@cQnEP}SHF%NiLjFHzD zko9-oB;8qQb%}Oa^9qMS?Yo*uUW-Z0lm+)vC1qvMRp7F-yPI$KqWu1y%kyEU5eo;$ zc5h4@+*3n9n(5=mAn+Z409@5z;BxMde(S6=gS)so>c79pt!u1z*y_W_Nr%0EEYGH< ztI%`YhsHCWM@Dxe0M#2KF?5DX-Cj`q`&Pdx`#7%wfJ$Rws#nNju@>reZ5!U6G;o-* z`ECDc%)M?GSQd@rjW&H1p&no`98x9*fkL~hA&5#{DZzzYV!lE_%81xdcbQC6#*-H&K}a_v2Xk3`=X!Jqk5A;&suGYeIP?<(?_nVyR{ z^+#ntA#pWXuCEI{U%Cjjq9l7pmP7QF9}P_lBpgI=L)9G=ou5ypT}9f`A_iw5xyK~ z^6{_!!MPq41O-3@wh|4Y1!(;G981Cd5(py}s_h9S_=>~{MZ}Z(3B^xVY!j>Kv%=DB zbu+>i_3V{}Qn+&(`MpMFr9r!6ze6Vy%LZ2p@L`n;p}1BQC<&tGKNt=#Gl zhr`@gY9bc+!VY}G9;l9WetGz;G!Vw2YDtTdioH(sX0~A>+2tHv>iG{ zb{sW6LGLrFbFZM}ck3K*X}=1U)J`E!n?rsrwv>8TU58ehj*DU;T~hu&E8@U!EKf|( z+^`hgc6yp9?DyHh3}0x8MR-{a0ykPp6k$-!FZk(22m%Nf%7j284VxvuSwHddF_hs8 zf23*iG=n$=mElSK<_U=G0+xhST+))65)Gb~s{_^%Aq5N5@v5Bqk}&@KN5kDczdWg^ zB9T(3_gg!H(mGH@rw!NGyRrutoC>7}TvpujZNe@KMV0JzNi!Btc^2v%V_|zE@6mMS zM5ZeDdpIXGm|;Go%%@JS!hI@iwJAc_l`KR_8{TelRIJFQ$VW-dLOUyct(#-dw>x1(*%mRM9iL{AU~$@#=Pp?{B3PMeeq)~H&mTpdCM}6IWz4fOTwg$ zA7aDH3DOM7OW#wB6BBB(&{z|^ecxC=!qcm>BpC|q8M<H^}%Syw4C~mC#sSBh7$(1<~Og*2tI00S|@Q(8k=E<=b-?B8CdQNO3ZOTEFFK z=8w@geZ9j`grqvV%Nv}YAD%Y1)-Y`ZOgx_-Hy74o-yRLPxKaxflGVTlS{w*VQ%l9B z=LSnFV&gLsdh4a{1|`QyS$_Y_$Pm7Cke)CVMIhvq0Hn-?)WG`(kBf)mj?H7sV9=Z1 zF;a!c#*uVZ;|EC(c&zo|vGcRRF?u4R9D!4UN`RU$kHX^$4KHWe*+~otfMoH!SIEm7 z1IC+wbR}R&0rMP&&6AUE(4r;-{c8}dj##KQiH%7a$bNe!n4H7}D5D&}&x6CHk4;Jn zDw6)SY?gbw)@MJtGN(G0|BXJnhc95~gZ3QC3ZJ%jtcOAUKBH#9*ipYhD{t6Q-a)MT zC(fmZxxg6`M|ZxtdgX~e;_E+B``i57S~&PY;TWxA>3<=*#ez?ST~hgm4>u2@^%}1G z)ZWKH$8|g$b=}2D)}2glwm1f_xYB4FNqf9;ZxQzS9i$ee<0@99<0A2}9f{SY-LK4P zKeTMNPPJBgPzhh>VCrf~DE);1Sc(U5&w_zI->O$%69;!TFE0q-zM1)UGHRXnz0)Xc4)6@0!b)`!`F7zKmJP( zXoaduF=|4J;^^p5PT&Biq^cqh@`K5Urk z-9uiJGt~RF3{lh&BpCeo@#ntyqaXB@deqKhD%po%S0u)Hk$zepjRdmQA+d^S+si*z z1%3gvlyL*{RXJ_Hq8<-17Bv@bj!AT+EV72`iR-AKi(pPb2fx6C58SNM~Y_B~x} znMf#5PxFS1Ln#i^dO|Eq%F+<=HOG+a#}5wEcMr@X0SE`|)es{GOXti=?3s^O@O1(& z=o(zWoeR^%UcLr7U7uJ)$5tbw8?k9MI|eUj7(70-I9&FShrtei`(?}B;PoGH>tb?n zm>|5_#ew$@FRyk8rzb2QA9jD9GcvYYS_*FU{=qOK3x{D>fWqtZo;(P1Y_E5c!V~f* z?CxS%{#P+y>q4ohND1U!;*+^VJe0v9A*3J@M*`I3oAcEra#^(d_eS!1E5X&@vjSG~ zyzW{rK0peUdEF5@oONT-^PNpz_OH&<%XirxxL4+A=G^_-(Nu5uK`Spzmv`Q*+y9S& z?RNm(%026fej^*f@6Fcktb4`ippNHDQc!S>(pnt=F5UouIRL2%lcU)apbxXZwqw{KUXL`R!K*r8ys8)M`?@) zhp0u5TSLUB0ZX_qWa1sOQWz2xvJ2uTz$0#Qp$#uX;UcAk0zdAh9^QT91Oveq-Ko`< zoZmwWK~@Up1F`apWLs7+KrFvY*j8aNK7DtoM2qyUv^{}(ILO{xz0G-73^`ix6YO6a z$JuRdPCs#q$NOkU(gS-0D>_)M$E8Uco8o-2QcV|fzn}G))I~|+347Bd?~J(EA~YF8 zo)ciTv(`gjBqQlWC(8=p*ec4J-e>*b zGv1@d255+y$$kFt0rVWu3RDk<8fut(7p9V;T`GtkjQLmJM>V-Fk%UbwPeh4V^x6D^ zQ)@6@{++P!LJy;$rZs$@>K`-5285b2YVOtazlmD?zQaivO!db#En$N@mLL)nGrMS^ ziXD?P+yOOIQ`0;Iia{ksTv~>#w>69eg7%M%xKhVD7X@`v36jM1ZA)o0JM!{uZNcqW zxP(Nt_5B~?EAwRktcUe19}Epiff-uJ-JRZ0ICx`SPujwQ$5+Vv+xIjFDg#{1yeed@ z{cv!omWVn9VfyTlka&<`+S)#r?AbsCnh66#!_h)%AjVGT^m_aPZbM+(=Q}^o34XYN zpa3p5R`GZRcPzIX8IR9BVt+pzkKZ!}gik?*26Uw%gApZu+3&y>$!8DkWqW=7@dL6u z_|p{#9oZetS^=`^S=$u`a9bO`z4Cd2F$FLlktTCof?Y>-ZSB^Syg;$f+w1d1KXF;P z#r?~j)fcTMNT6rS%ac1_*vtN91~c8)9O`i_PDVgUBz=Cqs`{eQ_7i{=!3~XibMq90 zh9tht+k=VWzbbX=_v(MR+sjLP=M(-vizdlin};JeM;xV9Rg`=$2$8apl4KuRUEYRX zy@CPFTAU;{E-|tD_mleh?JZEvdI9Ggm~;cAYpn=Hyxs1IScA=5YU7%BBv4+|)H+Zx zRIP&+I3Quw#K2$+g*(SGm;PDwn(ek=4-O8%Lz(9CZ(IpwWz?vsC^7-b*@{kW z$8AYa0jGODkUvvYP#9ROFAt4w?avhnez+*soo}?k1Y}`d%cTbY$$W{8lat=f-f~+< z$3H_uVfhmBAf=}d8k$|eO+>*%i|E0_LlS*Le0u72jE@Hjnk4E~%Ldy6dcfm&|FAbc zI5N^bK9|0z!9_P(vD}_1sj}^+rTqwIuX+uZPk3GsUaaPzdDYht&8F$SCU{)&$@Qse zbMGv)ql3ep8Jp+UDyKnXEVU$kxg%Z3qE@MO{CH1X$QsJD4%)w4{BerPhMXfG-ln5{ z+bB^{b4t=!3fb-Z4m|9I!5>@s_WKjA8s%^Q(TFa!8X7_%3AN&L7mG2GXP57CER%&P6JTtVHIbmKh^vWfmfZ z3M}?f0ti{N%MmiUc{%MzN5Qv62+!gzOpboHylMu=ck_F2ul^gCRXLSRSw?q0gh9gx zWhp*`%Y>Y^KLM)W)5{Ck>Z@E23X^};)EK#jlm??==7eK2r`=|;*b;z@oCaCbU3}3;&r#Y!%>I<1x+Vo*z5@Zmna`hFbi zwagJbROm#jr8a)%%QbdDN^;(bM=f52EV5-rPOb*!`96KHb*}VWb4ihli+e^giQSc; z^0$fn2m%q+?}2(ofzvaetIOInfBscP_>lQ+u!S|X5%VxlsRscHB{YNzRo)ZB(~~BRT7;R4Yh#Q@l$~VFj?PbjU#KKoo9`=h_hHC%g}EZf{WlQSI5ynYRbxq z;LyLglJ;M1DQn`i6KptS=7i+p!~DOeIf~YnS^>vm=@vrGp9pTa=-7$VJ1Q)C8%W|+ zaD`;mDK!O3Qt?uyW0iT#wXkmANu|W*a$$Z8C%=zE6QGh%2}k3jBE3I&4<72KX8+qy ztg7nZyV;RtopIWDHpR_7R!~e*9SuknVPc#uruq##_b&LYchy5&!s*A$YRA;dkTCL2 zhCqT5)oAxJG*`S% zgAriYQ=9MF&sfGaT%@Fr9A_5L<^+eo+ZCTAf{zrM!9 z0E@{ed|d~SofQ)+bbWF)9ht%&YVzg_&B)*ddgYR;sy$;R<~6T3RLus@9zQ5V#uBU_ zV;KuzGX(qygGqEg8;xtu2v+A%nNotoloHT20mMQ%a`EN3x%vkpV^j6QeEJ1~GJ1|_ zq8$W|VK~TaC_-UWG{}&pI@rt_vH8klz<~%pgoBP!Py$H~4X<1fF~oAr%?n>8kxW8F z1WSTau;@I9q!?`)%}7%vCs~r8NP-)yPGUL~2V0|Pba?qyViI?M%kMR-Q=oY$C^9od zltc_Ic#f~;^CP?T4;=1L%M=osIb0f9pM3?bJbO_sv`>@wY6|8L=}B2af_cRvD&~7> zQY_J;H`-gs$jF@*Rlh;w80ufa7#lm)^LC+_Y(<8G<`A04<&>C~Hke!*Ls?n5`{t<8 z^=?H#Nk`|aq8&9RgBCdtPxizF5fBIi>e1#z=TrjPa4NIWhq=nam~`zCRQbxhx&l~4 zL`+z?Z7f_|&|;8vTpqu6yd#c<-rh;Dr9%^ybg3GtP`|-tWR^B`$k3;Yw)CNXRRH=3Q%~ z9rDBwt)m`_dWdkS8p&c|<7}Ru35tmEBqMXwrh_GCda+Lhe9oWB4#L) z2!lM+quh4;T!I`+Tv$;betP@9PyTKrR2?%GMP1Nc2{{m(4Q)@Ac-*3(y8W{dIk9CK z2M7H&s3=4P7emym(hbBM4qw9974bGk&F<1K;<|sU@n+uPx}j2~@$}cC8m;P`TJt?G z<-ni_;36i&T*yPx-4IkN! zyp6#)WH(j^_ku35xyoFQ-id7M&qo1-B4$LeIOt75(Gkw3Ra^BMP^~#zeI4=)$OR=g zuuHAOI4x1_0+%$)EQlcXqoA%n4rbnxLPGDey&qxXDa34_oN-#6Pl%Y9V8G9+fq|T& znp#k1CVprrhnbaGF+g%1%~=~58TFRNW4fL;e+DbVk6?dH-N-UHO21hl;M3PLpzv3z z7W(s5aZOngFwJ>-^1*!myxo}jBoq)BZoIL*EvXlSSkLwus05HbxMDvMwh->*gn<#h zxdqO^KvVamArDw7?QwY@;}y$m|LHP-2Z1KA`O8dxJx4gP(#GTR3emWujslGgq0aXE$7T?Wcz|-tv@!gdK9m z>4LKP_uv$##!ruDHtc;bQ6B864^i9|WgK!0V~zq6|6p?0F%2Z-E-#jxxiGTV3WQ1m z>n}Yc$le7UejL05AszEVZ=KQv^W%&P1%$HwBRsu9W#y(e0rYyMiZ$tZ&hHaT3*&m( z_VeD5#(dmaJzL)aaGT6eP*oAtfe>5XPW&^<34xa1pX;5@W#0I3jp-5n-k&HpIXGtu zCOA74CB8A#S=*~|r0A?quq(u2WpNZmbnrhm@pQRyT46#Q`x(BGI?_s(k}y>Gm2Dcw zG3>E;=`+5ft|;7=o7tT70q!qopA&rJNzGWYKO9;_LXIU7D^)_~T+Q6fz$uW7{aOGi ze?cVB42v9_ltv%(=Q^-6VS9QVcUu@R{D_eWWKxcTBUiAjMfa4nmqnMW;b|^$ORG$K zXD9t8O0zgymd-aS`e{Jqq!UaSp`+F~96Y%wR5}71_}jfjzZM5gKed_`A!v9H7!04uDwjx_uQ**ddyW{W7OfTr~in_Z~2t1$D+1aUs z5v0k}EdzLfkE7Xf zNm<$M-rm$`e)sH@lwnb^OymA2KFj5MESul;sY{J4pe5X85CKJ3K?m(8X=Mcg5S@6u z_q62XsilCsPBGpxoyWH*-Xf%uo9QFS5^X11Y4hb;|J^;}Ljuqdk zJz;cxUa-x~QVR+S>`#}WxVgCxPER+t2OS1>#DE9W4hUw-Xv$+G$pQj{6*V=(g_-`8 zDw~{NUlZ~3M>RFks;I46xfT5WjV~b~0rZg|T$hkM9LjAMcQl7u-O#Wrw~L>b&wxTe z(6>;#2VS;(Kt~6KC1(9D*IkB`@zVI>Gn&SN0yJ=a1e2|=Uk8C^#s2>MJuDn7s6=gp zUFtvn@X1m~&*UT^bvh#ut`1ilDuS4Ot>*)Zfgx&>+ZB5-VkWr$#gq+cY+p)k@624^ z-H|d>=|==|efW@?+D!HFBlupTSyik=5E4objq-4EEybtm2s$X!Vw*h-43~3y-=jP{ zkW-Um8Z9?9FDep#POlXz5ryDi-T6jt1|SBM|u&b_2Sy0 zXVC3SW91Gp$=|vBKf`OjL21q^@O~OOZT|)RL6V=&ODh`^2f4Y}F|w4o`C6gP>b!8Iq}Cn<`3N~ zrBvl}N%`U=iNBr)%`#RqA3$Uxg1B6EcW*_P(O8dmNkJ_# zj7Y7gfgdN5xU^CKtF_`An2BweNmuPq+c&uMk#eniM2Cfd(uN#bimdO|W%RxFeRS8( z+uJ!|ARItS0Il>33??Qf;5f*Nib594XYX!B3m6~GRs;kDMC82r=xo>@pQ$5@eS0Yz zj;Rr&L~2#X6Ev=5BB!9y|Amo&kFyh6=CJLgkh}_IkUe{yf->#zlKkM|bTCTzGRF5? zN!S5hMmtB{;?g_^>I($x00x~O2Z1oedgY_ut?~{r?yoXU$`1&B?D_ z{47d7ZZNkXXus-9CA{GmhOe)~e7?-R9%IKc4Ae9Glu37|)^c7&tqn=(($i9=Xauj^ zQrAE%Nj4xXjBHVMTIx8tP>Uw^9zwt-p?9Y{NM1QcvdR(oXdrd$bu^2 z*XrzlwKbx5Tp7CfJu(Q~NIx@SqEOF^v$ zqsGQ2mY%$be!h;cYOJ=z{s*4~Sad!sFZUL^DPHOpYC^>*aa)KoA#^_Nm*<@>hq_rO zCCApVHZm?%G1-y?b1#n-f4q_rn;fgVNtFN30{m{qO_Ul9;A$VZ!ewNQ-B`Dl6^q?X zD3mW@VZjI{Vz4H3zId-e_LY>--C`&|4;s4hU2jfe+sG>C+i8)@T z6(ehsqN0wxogx%CZ%fOm!6=nRoQG~n%G2dkbs&NwyVf!u7*^!eS40LqVu((I5hyYj zbwHv8hM^H#kg{Sj6>WJ=ZguDZ3k8$WA!HOjpM;$qaIeyVA$khBXYk*K5U88kj zOlGFP2A;4dqp&GQ4;kx+CSs$m7+d)!m&ae8?$;q%##nx$tp@~^coWpxj>Wlesei>- z#WpDUrVLN9*BGx-|z~2 zeVsV-*(mcc*8h9KUfPs>`wAc;v!avB-ZwF+wNbU zT(n0N+)N;}v@#wp`m--CFSjpuXhkLZe*p|g``at6f#DXo%WQ=+G=KuNEMPSPQMkd_ zGIj?Y_RF2@9;DLmpedRE+t42Pm(AFN{)F2C1DxIC^(0j zp&fBjAUg0)sFNS;6O=W+b?4(^Dk*A22RD+EKd=SJoEy)+Y?YRq6I0V80$UqBUPo_P zB#0XQ2bn2PPc{Hw;QGj=kfkdx<_!@(C#Dovs=5gM0d7vh_QsULJTa}|k)C8PI-j?Z zAT$b*W?BV}-QdVn$lVj>z^?b&5#IE^(RqY)FM^aV7YpXY=;uuEuj!du3I@*-h9}l@ zB{dkUB%202Ygc$-rDLz7?#sxl3mATpDWSIM8<>bWfb)k=-_BE*WAvO{)rkR|qkvO&-ZjQtvaU2{_z31;t(r~%w zZ?3QbJx!rB;r^4mQjBgCk)*9-js6D2)Wa05u7aYDw3jw2B3-(OiwmNa6+l?J$7ic| zZ4YjxvQfqnwy#K7>mVl^R5G2t9^eq-c6fCz)FyLz?4k&Dz5=?#*1F#KwOK64)_=5K zl_BQj{0YY3zyV|oU^{)QzdH;7G+=$52-x9%fI<%*mwiIE&#UkGIU|ABH8Q)+Yy9fj za)-!9p85!LTyTV1)Bb%10u-ksewlKGx_QL*PRrfFN=Q;HuX^{e47SYxgwyl{=MMvG=I|H*+-N4)8%w^MF9avVTAuRksvON_cL?#5fbE-RW zet6E*(sFl{9w6PeW9NIIYIPypn5|%aegPm(J{SiF7HhIha_R$i zum-t*dICHQNg!P@+CdKp`eB503Y9+X|Az5aq}n^AIWTD8X*;#-XIc2T5L6BEcLzN{)Tocp#Q&GDT0( zS3QT+OB?o!rEDp+nNTtOdsgT@Ree_|?l`O*^`jfM{V&Z&OtE>i9YPJsTfa`F<9zAly7h7KTL+a;YlIFtARC`kLJr=6oVU;IS>C{XnN zh(NyCsaU)r(qrxmxnS{v4s(=T`n8+{Pwf(!j#jIhM)zOF4!8fh|sC;>jW#M~{3VGj-CeaUI7U(7T~ zEgFxeR{NV3gmXZx@G~@&_$JZnhZbFKQ33Y!I{LPxSi5m{m0Bq4oQu-;dC7AXdAV16 z|F~t1Q?f+GG+haB>S0Tiy}m^No9dnyS_=E;MvJ;er%9DHp~5!bxHb)Uk0&aIN^;8D zjPwgGG>idihSL0sdQ=8olPLVA5mHk@wB5h6hzHsW2KOB)~bzug;B}vB10> zjXpa+lJ7q_IO$zphF4}m1$eCa+tF4$9+b%BWLyjk!w_lC0Un#z%*91_EiF7Vo1;Jd zbMft~{PewAhX0C=>~)M=?O*Zc2?GrjI(x&_!QpoM`N6-Ze=Vn}B%z@J;rY2Oh06g4 zTJ4)Kj&$zQ2Tc|&agFng2j%ILsMa5H&D=H}o zsj7Ykw(x(1ysD1J(6lt1!y{bqQWgFB1w2bh26}owLFjhPvo?}kngDE_*6w$gsvcfj z3I92@0q7SA+@MF(bpe#v1`x+Ub~pv_1OCp<^%qK4FE_{cK7Ky>*SpVjS=}Cp%?BGO zrmD6}ZbI*KCg2(Zgyw7*7#P4~BLRhTcG8%u|J8L zkT?kZ?PA*6d|=|YHI}IbRI?!BiN}Q#n4HYh>ihzHbu=bpqRL82L7?se7Jz*V3jj?8)C zn6vgJ;A9-^>FWbUv4He+T2S=yef3^_Ti2G$2oa{Q5(K|#5`og?D@e0^{rWYpsVTr> zu2M;NO;85NSHgs{JTGCuWeFQR+1)=LF@Q!GD_}b8fS1A1(YeNS@`H}+t5}izR0@if zx%uXdx-JFN|Iu`oL2)(R7LJgh!5xCTI|O%k2rfZ_OR(VX4#7P*1b26LcMI-Lkil-h zb?f^+rsZkpx)>|vAKEl? z>yz%$Y3z<~Sbv7`P>?m+&AFK+RFrN$S=@f6x%lKzz+0jB+WzL|Jlc0%2rP(IPS_%# z@lWUZ6L;6uiS270Df_Go$7gKpyo#Ev+kTtW5*{Wt=5O5~^r`ukO6R3bXkkF+RBW^X7OItB(XWvFr3th!)5zv9=;c2FN= zw)|@A`x?d4>@Z8a84sb@;Ra0+TYkQX!C*WPSPmZ z-@UW*ozmO~7979vLmhYi#g9TV3?YBAxo@ne!iVax*o(+>hv$VwoZ5LD6XD33S!!=g zz+8hH{ruc-p5_9^KQ%qu17aWC8W957$6MO)6Qw-C!=yV!=1FCTqX<3gQTACzh2r$S zxDkoRI+po}Z0xs=*;+1Zyxh9{6V~UO5%j4XLR{hDF@Z&PNOShbstT+g*K5Vz0e>yN z9ab@VL?=ou@^Q2C$z|nyk#c8ooqtZ|-Z$hMUB=Sbh_-xEGxdCqdQBf_*p-9iM~|1O z&G_aIt#II$OV-&H^aWT{dWb(vQu$^w=;mjUq(T*kzAccSN4Mq^GWGftbuBDNBQz%< zY3cT5cw8@jc|Q)p6?cKZo}yfhDi&v0&~iq@#4x0XjB!|@fEXi4UPT&8=)6+p%`Bg1 z(IdJBm)4~2MzMm#WQYzKB*0)I8;jeg$Ay!w^`!A4*gsh#ZL5I_+f|sjO>WH%h04cK zgJ6wIGBCRx?=)WL4OFqu>-(;ohPzlNQ6pPbz9N!4M@&73euG^@v8AzCUPG731Xo5* zfnv%USiOVj*c9SjXSO1=P|+HvScEj2ev=@mvCFQ(S)ZU`4lkEWD7ZklhBxl1CCkBT z2}MH{1pNyZ(y2JA#Z9lVm+`yvD(cIA;Ypv-OdyK!x?@dkLsUwehv$MS);yes_8OIL zB&b4ut*wY4u#kfzr$XImpsqOkGm@>u@Q6jD?Ko5vL1TaqR9`1ipesgz0{*~am0It> z`aI0z2Uur-B5Su`usMqo%?dX?taio5HOCGlLeXrt;%CMxuX35fpDjWbW9M=99$K;W z3~GqRIz6>s)X=`ZqMf)n?Xpta@`RZc4JN z&0uXNc2-gz9%y8jqajmZ3EKXf?fIWldvS5`$I&coB7-iom8xTVnK;ci?A-(1{XxxH z#z0~RM#vB=T{&jZ`ezXeBS&_NE!1Zc!YR~A?ozCO!UFVd?exmeI&VLtS{rM+p|QH1 z8FgO#XgGiS{!|5Ny~Y}1uat`^@h`N#Vm3EZW&c8FcKR49rn{*9GdFR0?yG=ks%tb2PVKnKD9MqXU^+r;|0W}6!h$Ncue z0(Z^HG2Y*#ETl^F8LdQm{Wm_cG`TG;NzUs}sGwH7X@UaO>KG{mlsOB;v&g+r(?o|o zjd%Xi4*K)A^En{}h^_{5$^C zCdg-4K!~%z?uCf{EIo}Tom@@jqs{ywK=v+=s0?n`=i}!*W*O=Ofdj|$n#sfU9ddOd zMze2AtTQ3&X?{8S$Bk%_u9Ry!N$-lQ`sg%xe9!juQt^0Fco(vc_pARQCcO<~JxXSp zNn)QErC@Il2_{GjQqJBo(ILpN#ubyhXR`$zqpA7$fniEhdwWw7|DLCO*AHd^?#fCk zHdp!YFv~-Kw|o_H(1kXLTEZV)baim1o^ z2_gy#f)v^QT+5^y%LZ}DD(7<)D=WH?h*m-w8HaLR8GsW9u^Iqmp_H7KMw$RqTVKy& zyH3JkajemR`ZG z=Crrso>^a-#jKaQLgBVh?tS-p0%g?JHObNI#8boS$R@KH{`J{X?k4r|f`B*>X$cAW z(rMMkMB-(UK)TI=Vrt}an{sG`ws&qWaCGz-{9VGs(?gIv1Z)^X+5SqUIuFS6YTFvk zst%RHqJdhf(=#(YsS*Unr^^^rAE6bCRROxd?*2jwD2TJwN|>3MjRz_oB||#KMP$xR z&)d&qB(uS>)OmfW`?qq}6loz)5ara>VNg;^0N#2Kk)+E}@jyrjg6VQCOo1F448qm+ zLWaJf07rb6&<6|*_Qn<-W`{j=2JwNJ$;s|zCmAV)G3dXW?BQH?CnP}gnB9~gnMxBm zxxO$Fcb3UNE=~^chZqR?K`t&|m@U_#0PtuL@=SRDwEaw{!5?~CPhhc2&!*}`#8^&g z*e0;;w-&POs>^egT17uzW-u>ez*}nvH{jJ86xoBF&TIAKN0m6q+(qYC?_?>X?|4g6 z-<=~D{`#Q47ooOLswre=`n3s4m8UMpyydaHv(M{fwmkyVk<5t{H$QJ#our63<#&lN z9C_7RDkRAG>XQSbf#VuRhbLid=iwz;JB@3*V#@e97Tq-Z7LU$+SzVxVn4}`0gXEG2((s z7~AS;X{D0Cowm%p&362D%nf!ws&lw1q&r@*3HcEPyq%w0dOAB}s*J2-hw~)!->Io3 zjy5vBQ&DjM7I=W3-i@yC9L@tx1(xr;>cCs+-9-l?QbCGRC1xaY@9-Sb)u2UWaoms! zg`&#LU~O^SV&w}tgI)wFmkWM4=GbnAvpy+_A;Fg=SKix2>3)sm?Nh!?skm+_+18=u zI)!hRmLfmp->MXh8URHvkPrf&)))u?i!RJ`^Q*I5_;IGgwz+B0df9(ms(%MHQ>b9H zKmNH?`wj{a#3?|Qi1kYQ-XmfAZg(IyHxJKJlLK_ebA238FM2)fO3YVm48k+=O8oqZ z2!asv{`>){?d2Ds5CV7rIy(9?je0BUl?Lyj{zwHQQ`3o9Qg;oIJLu>C9;lu6B_$;( zI17CWvs@!y+P&m6_y<~DYe2sYL_;nhqqD^V9vIA9F1sf-LWrlVjUEA^_YG`Q6RxO` zwKe_FPy?6C4?;j=AQNEBQh0^H9uv5y?`U%Z)Ns;L{iy@!C5jkseF8pdnCFH`h>)`qBy z3zd)%3Rts#rKEs}gFCS3De%7B*Wh#gNCuH^t82QJ8i1xjB!!HKe@4HG`SB=<9yGw4tG)-I@;1u*k?y z@L0T^5`@ozpn?g$zlS0rB~9jWMpUop-{{+qmnJ_uTL;4}F0dIpgVt;XppYV2xow$) zJe?1};%uwj@4%;K5Zhmlv0#8Cn^e zwMKuR`0)K-8dsCDs?r!@ALh`pR9S4&IZ=gz>=nlzitrYfHEP_}cxgs(nK?N2vLy-~ z{w~P4X@)TrePE{%3I$aQ?ZVhzudj=n`^ST$(>|Ao2uP4g4q~s7rD>OlW#QGK^8_h7 z`oTFK(V;Zvny#m042!28%ur}kE!)pZw{83_Mw99JqBUDsCa-3sDy75J^Dji4BJ%gf zgd`@>J@YmQoD92@b4xrYJW7GM>@?2}nLp1-;jnQ>lH0kk(O5-Twq=k%EZ!|>M2sPX zv~FZgmugAZuwNmr@eE8ViYoxn!{{0A^=rUufVaBK?UJc0cr&-L5ie6Svb9ALl#}}e zf}2Rq{y&5A@#~xU*0TaBZ2Et#5;`%O7K(IRL`Ci>5xneFSQ$TFo%t2L7VIGBWUoCQ z5Vi~=eJB;qgW}m*AxcGzIb3~uHD6ppdWfUl>{sn{ExuB|o?!wZhv;UY=WBsQZ|gY_ zlhd(ylPEtq$6GC5#|4>OI`I+5F$sbc-iN%iaw=NO8_*svM8I*K%ZFD> zOqPZ1nOyngB!T7Glpo?Rji7^%U1|+gH%`=7SuLK#2WhAJcCss~@A_PHhAkz~N?*V) zuOS9ec4kOuAEp?6N;i+1$S%pte1UM3cJo#t*bR&hpu7p3hi&2dBln)3Z!zNTcZ>A( zO*mDOOWS1&9p8Lt=5GLQAA>^mS^)nE@+6B+kx$AlO;~5kM(af8`gm-r6p-6 zWgLrqxCCLbzB%D^N_Ru79a(MHYZ%j%9{}BrJkOooj7%d?zs(4`pP2tr#JF@ zxDRg)&Wugtr|0tRP}MY*Cbo7}%q`6NdS_u=Q*2si*=FmQoDIm(NZy-So&uE|@>`)y zsE@8j7B=0KS#901{#cSy<6Gky9#{4_?4O}D2^ctS9l47aTCT$CG^zp3NI=g;+W==PCRF$y2%#8GkUv*B73eIa%9y zGQ91*9l3MQUb6zcSA)FKJ03+J1fn)hu{H@Gr5e>&#?aQP9u^!WsF)YidX{3C>RLzcYdd1M&><0Y=Qq zs?^N-_^&Vd^&6Mny2ASl{|d?GOnJLld_sMND1tDP?SkN;QL1lG0Yo&kN8l-^;HgRe zr@$MMpZ~>~B`j7te>4+I=m1Jz6orGgE!mczN8G?B|HWu@vJ)9eUt$>k2*g~fCUR6e zuCZOQvaw~Wv<|lAf2pGs5?0q{WXP=7SW4MGF_(eNp|&Z?Awz*xCl*Kg&}Jchm=&j>}>Yn_`g1L zucjBsmAHm%s4K;P?MYeVq#h~B?eHEX_5?*q^{)}d;@S9}`Rc799CTwfVhfztc-Ob9 z&B{#G>#f|Fe5g|2rARYh0J6)>rC?N0`hpCp+w}e~+DU{c3Db3#A`teN%dSGT{6*Ud zP>8AN-!vCPo9L)Q2sA|IRB(@w`_$w{oY9(Y-^}fP`N@&|!3}ZAISdx&_8a7c32X{c z4D}J8ErAaN7V?0Jyd&o2Mg8V0hSTDr)+OjJ+rONAwJ9{7*{Be*`S|f6CP{s?H?#}H zrTskR4akjqzdxZ{kdqT8v`fTkTY!Sj8`Zc7Wip-`*3m(zUaphd*cbt%V*wx_;N-+= zscm1~(5M11&j?Ylu?6kyU^l!T*)=tnfMdhq@z(m;rStVu_pS}ZyWjnvS%VTx67kEu zd%I4MM>B#1tc9Cv-a9q=)im!X2XH6fk!!JSw;?l-ZolGh+Mm+`4}qeV7EsRN0i^2} z^I~&=F)>yw&TDB21}Clb^z_OayzrJ5+8ip72q$;*FfzECU~IgHiirzuoewD~U)b2| zuTJl>t{}$~N?J699o{~}VYuU&k=cNj7LHZ%_iV3wLH~8MK+f_KZ+~p4$ic;>QCUOL z&)bJ_rQ-!hiJrwI0tYL{h?$+a%Oe8E!DM5g%E(kP+#($aqOTUUi`C<-0!FQ}!% zb|bFuvg->7QhXySD~Uic7uw#Kbhq*R>xgD-^OujHepon7GBS#+gga+`enKkW#IF?e zy%8Ks)3Jz03i~}{-gSN(Rdx2?szv6Or#YpKi2B~@h^Otcx^nQa%qfnwPGIj785Bi& zC&IUMwLNq550NNN>hhC)Kj+|wEFx2n_ZiGA%zvZxOAB&}-U4G^s>RAshpre1pvQQK zbZoe*zV;7y3Fb!QAAuGknOvVN%Sd{6OEB-q=9r7C%IqMAJyd9aGq}Gg1oa0#E%~1$ z*IZy^%X7-ENW=y|Hj$!dYT4Vg#3OxlFKw{-Nu zz8;Ik@psQMxa3^psMZV{Pa-mRH;87;ONAzm$@ZTM0>bxn2zhAp6=pg9NM1e2@Y>de zNjVC24nY$y2&$cT{%;-=ey5>afo^ba(U!e45F zMwjUPdMim^Lj&tD>HLC18HaD*`lpfMrc2C9r)nik$oi}zP^`z+mJ^8IwsKkgPYY0O zCI@9#$Z}wI-nG<&nIJ8uF2P7bB45q{qg+&MRzTGeMqW~&q^CCWTX<;a@g0Dx7wX$C zIZJD_I^y~gXT~SZv6y;62@$W)s&d98$N0vE66<@m2TR3?G@?8B{~6}~Lt_aG`)~W9 zaKrS)?{HOmymwf7d*rJ7!6htgSfkAZcH^}+uyGO3#k~a$`LBpk+{ajRQ&Sm9vp0+# zPw0`K#!i+T;@e-mT3c7m&ks7mC|IR%d}eCB>-pNW%5uROpW8A0N`NhqLiH-^GG6}sG%V$IJG*wcpv~qv}gub-^+9G4?DZPrw90x z^|t7jm$%Bw%AjuH#K1@Zd6V{6JLZ7*3{F|u0Owey-O&lOUPVPJAjjTrs}}_o&31Be zQPRQ!7ckVURvUc-0*lu zb}vulpup&E*mxOb1o4-Wl1$Ku_$DKX(Su_n|M{&%vpPB%dAxGk+cUv@VX@KfJsu}N zY)*)DzTrmu`~TcjSk8gqK>!)v@a{;}o5tp5z`w9hWbljulox=2RseGZKk(~WqxtF+ zfg=n++afC}ke;8Pt=1sw;QNw6nrswdc=z&hDoC#1xq@TR<@Q&l*}cD<`HvIF#N^ZV ztZ{U71ZeKN!wK-lru+W|ih^klh&w;o@W!sw+5x*90wN+RmNNm+{Tgn`ft+S<<9 z*#I8r>ceyOAA6(3xVX5Xk&%=1yHna=(01f+F3GjF$> z|Ce=%$N8%f*)ukGAZliMx;vBa5u`=o!on_qO79#72?_9Z0HwHkvBMi_ZjL=5ICyh= zdkoL}1?_H)(;onh;iGw*gJhVi{+j^B{D>SKE^P023=1GbS5bK3BIi{bT5r92H*jrzq|eeFGlGy;iElBCK!Xtw^l<&4ZX1*OOGGe+v)#+aqhnh)XF`Ya z3p4Z^LPB+#-G4=O1r8X`G*{Kbuz2S^Nj!QK4BQx?t8CS;MHCBj^Y12CEnH(I*@$)C z?{P2C!EplP<43k9HDst0{8BRuGYLVU0@)%g6~a|Z;Iw~nL4E(s{Ys1458%J7Vh)4U zukz$bWhvsi-{GG<;h>-ZN6?A(<+d+B&x$k=QrRaNUL1yUj2ZKNp6B7XSy1rep ztuddWSO-x@C~U6|ZigG_H{I7$6sA=#LGUah78j{so3^*X(3~TY z6Rq;-#ylamwU18;y9G^>G?#v)_<3A{LRz+%2ag-83n)o_n=pQzg6@oEhr30!X>Y!oB8jU}NPa-s4>Xw7 z9TQVTBF=C$!>yw_@O4Ex&=IXHk=Zm0@QiIWZds z$1iUZ5r<)oNm+^aMmWPS*&pUL76r9+p;3-Wnj9#C*Kc1?)=E*ks5^aE8%fSE$ONbU zv8+-y+HV-436d~5IdRd{NlwXq`LeLPZ11>T#)|zR62n?&J!3d8U+BgODF#H&a7fZ@Q${Js_0$ zx@GL$WTC0+<6hZGmYL;#$Kyl0coMmH|fhB3Ib6@L9b?QO{IxcZW)aibg)`l@-nmq01R+w4Z=GGTv zR^4($T&D%)=6-&>eFjasSU_WsTyG};{T(6MQSx=K$7qj>E^Qb0;L4lq1YjXIGB@vf zd4^75ab?-?xW<^^z2+SOc{M;_Ot1a&Cj*xh1F3s*cxJpK_8r}t!z%r~FrNCS$FlsX zY}%V)PI^?sSt*myOuaOQDAD>Sf-Nz0rx(RW_}CnyJMNv~jxfh5fh5d2X8gchXyv0= zj#u0*F(iapcBNNd(kaTVHtgFD>{;-{5jJe#DCp{t(*(!R=blAIMPph-iMJk{hyOvj zoC>Bl8A~0?7Lh0_E+!@;OFk>N$y}_B9UO$oblv-~?y?>I9}&V~?;QdH!UN>E<3FfB zXedQa@IU&1C#RH=vWCj~l@sfwM&O>ARjQeNH+GYhNl``OX1*9oT}TIdHYb8vaNo}Y+^ z>qYw*NDwr%un<*~{_;kzJt`h+?hvF%=4O?cvS_y3abqDBKn0&ydzz$tYzP> zK~uOM+J1~3Ci{)Q<=od$l2XSVLE*|{A-Y$VDR{C88rMqb(5gD&!-i83NkhauRQ|EF zR&5Lj+MEc91U1&}>Rw@^x|9Ny$rSFXS%}4-urx{Tq;Px1K=epf#m}e`EC?S+#d0M2 ziXgK(i{5Ep6~=aED>xNP#Pa-%p)AC)#?PDjXuY+4L3)gzR;~!PY7y075s5;HM`}G+ zNJ1AOt5*Np|O>ZdJL%yVcPhFe)_Js4gWnEJ(aucq%HS3_6m6eo(fI&Z~Sn zTuv+>>$nCNt2n?N9Z-ZeMfDNmMBw5*4vr?!dXf7PZT{{03~FIIKcb6K)-*2f7u2gT zX|IRxly-KPR?9aCaD6_vFV{fJag4#+(}RrkG9c8k9uRB!xX$)xBY*0qp*$kiPKKyX`MGV`8Jvxi@_!16F@G@V$!vfafbVj_QS z)Ct&v%jhq!ufJ_}yPhmoWhKxO?krBR4jO;7aI}_IdJEJyJ)MGKpe2dKkk+@pG5$6NJFCmHh7#GG_=6AmNa3#}6>%{sQd)uxIb1Qv z+Pjz)HF+-+a^Np%y&3!ok{Uz4#QypGX)HZ9Oc}E@>YLm>C6t6)j9r_C`>T!KuLKS8 zvrk_#yP`(5Ib-)y5$#cj2bxQ8mpkyrRg%S~=uwPShR^eA5 zOYBt;OeAbOV;_GLau-2T7V2&cEq8(Du|HMiXw!XI#ph$G*>~93xGY7ARo)YtV985eUKTIcYwC(GM!UGR%dM}E<>c@V zQ>ED+PB329;sLeB@9Lb)owQ=vWbE#HSYpXM<@qvgDNj#Quvd_9+~Ni!W$jH#B*i9t z9gL?&X@v~0^y;U8$VC&}40fZESK&c7)%dPLJ zsj0vm1EO?jQ#hQM0iGK8`iEF2O1J0K*9#gNqJs&vL=_Ymy}T#@l>!Ce6G$kb}07e8h`kfZ>2b$Ab$i`gR`HZ$roSK|7)!dnV#=FOu0JtibZ*!^vkcQL%i| z&+!b?AM%oPy}hj#sZy`Jy!Tu8bryy^b@i%mQ#FAEAVrh)n)l9OyJa?Qw$_nC?n;mf z{bDniP(@W$_I$k!Bvx{QGQ{ZoyyHJdjLin(wo4}pCgUv$(*?GkUOO0wOf}f*0~|xx z#RbgSYSTa%#>;3%%^NU|o-fnCzByFs?jhA|x?&e4K>@0AkEt@cuU{PxCVgX$IVaQ7N zl|z*v-P)G)AIC>nm@XLcv%xc@p;pTZ0)YTIF+#TDsL$K?i?xTJr)LPiSzF5q2{GvD zjc_@-2+*px2koO0hJ~{`0NJm!sw!J{Hm6dtv5QNqu;Sz#R(}^*GF4RLqh%=uz~HQE zyZ_>_kZ}9F!S8noRx+D8ZZrX3!Jj{2V3IBC=7y>7aY>AV!VGwY7t2Qt)U@v1$yGfl zaDm|e1E4!_8UCK~MSHr-$7DQ*bTPbtQ(1M|-NsX8{C&@1PxVK*JXr`7D*y9^MEQq6 zQp?FvXh-s9bgZvT-czFES*?MknxUX3mTm$MXz<|D|G>;#c+cOX9ddw-k)Y7@lNrtd z-l+L!L*9gsO$a$jX^Z2|nnIiA?gIulL^xF&0X_N(E`@0T}ex zRf`pCN11vB)s%^sq{I*iHo|>#PhmP@!ZKqSoY*6+4GdnoUg3C;MV~s}zJ^wVkflq= zaRnMaK4_3`KHqJao-WsUKn@GRX5;_z{0P*j?O0dOS)7eeE6BLnYIC)ZN`YF5!GhDD z>Z;$VzOox2z0gaRW%D0LPn7H^X26;}XS4k4xLp^YSJZvlHy?KBtZoQ8ysABTeb&?c ztcca_VFb}Es)5S{{kVP{4$@LNvcw?$a6T8vsyXc7?292bcRL4vLMbTgM z=g%u--c8vt9pYck@MqZ#H+M^@+{O2D8qP@s&54r)1sl(R%atpvx^Q;G`~E!XS%GMF zrq3`8KH*LoEP)-0K?1_MYOw4nxVI65jqfqf+E9+dlxV-IlI`Ut(jIcnW5PafoUOtVe%!p*Trc{{uU^I{OZwA}D_H>~~u)WF3xwd0Y&Fk45q zBh#GeMSz|o)09ZI@-H0y!AO99j;F!MrbNU3vJ(3zjN7nh8Ir0m@LRbh7HCeCm1(*JH>2PACOQ>q^UW0e1lZ!V)2K8{dmJJj!+8^4r^Efi`+P9TB)kKsMpA{kK=x zc+YA(~0vyxJFIKZW8vT)}PRJ8`PW}M?0Et0{AA0u#g#SIPNY+El80k#YDc0w3m z{!znYxhd=D{FgYq*0RKGu;s#_k0{KLbd3aVP%>cr94pi2ytuj|XS?C97)>6Fz##y5 zcQhFp86exfxYHK{x?Y~29z*feaR;+Qi6F2<`Rms{yw3I>i8bu0j}V94OAJf}l!vp!s^f$paW^0+y~1r#8Q zx)_Nju~nF;J^#p-SZOENPf@;@{;47xXF9x|NhddkK~V=I7tGJ0tr^lt(3UoOq5Dg= z!!uXhB*N2;nXecEUiQ9H@E`pJ1s&Sbq3xoj5J$kdE)G9)WYJarw=x<=d{nERuhv>Y z#mr0-ysJ4mV?^N`#=kt#z0I>Jq&7tE)sFm!+XK9#Y4GJeHE|!4*7zftq6%w@8^?Dv z36Q2pYhOWD#C4>Ryos2zM!7?Y-nv==58FtmF(~MMmKAR(&Ixj`L{#uC%$1Y!K|2c3 zP0^7&B35mhYtnO0ko{I|zqe*)o60S%41+9F(3M8IUY#^Zm-U+$@mcDxiD}t0jElJE zFZP5nk^>a#V+aLFD_z-`EKJLvc?}daySGS$pWkg(TQ{xPJU~Rx8yQ>v*XH zswvsCjc7`K{uiWUh&K;9)yw3;mHww#!6$u8wUY^C9Gsz6SBIjqvizLZ^oR)At7}5A zpb_vEj2RZ6+Y{_!F{lLiv25uD$^#0ZA@`Thpkrb?@sZ94 zlS~+3X#LNz`y>&l(}>)QydbpNQW)yrVRos*otjp2ou<oW)93~Q7GnrG0Da~&3?q#4C}?soIf#BAO-j%VFtolw=Na4CD7@iH9}*={CJ zs9^zG6Q^oB1@Ve1OP!7#2E6oT3qc!Elf=es^VpKG zPiE&d?lrj{jR2W!SDc>(1s$%av+WiK}g%Nb^C3?*$-h@QOepe&v7 z!99Qan)hAP^}<9ii+L2hb2+7o{#~n`MzN~htqb-Bp<7&UqpY4L6Dm8+kp*5zlw@}E zAH+H>F)>#R(gALVJGB-VL_rlJ)+EMNlb7xxbo4}2JB2u)jfhKm2#GUwuCf_36_ubs z#=wbIq%yu;l}i8OlpvN_fs7U>>Z!~3&i9SFIwiO|ID6cmvn5594QbZbuQjTs!!JTK zFd0*NW~sL;8_v6&H=ai;4HzWJ3_<;@+415jEjZ=SX#vzm^RVuk}}zDZ9|9cWHx=aL%ik5^n=X?^V68#`ChP?QukMwf^( z)4&AH^-`Uxpp}O6t@8#rUqL}IvH;QN;XCo@_Vxt-G1d4NZRjN)P>jaHYp;B0yTh8e;>VWJ0zhu~7l0(YNn+do7U6eZv) z$r{fnd$?UWFD@zB-WdYN_{7W8hK=09LJ43Onu3*MfZMo2Z&w~lBFyZFkznx%~HR$_3_`e9C z(d4O8-ImOOXpnc@^4Z>%6dbbqfstr5h?CRM$_fmgRZ^IH{LA#uzU}_O01h0K_Vx-; zpV(Gc+dsTK>I0t*O%lTg)^9$fSPc06y^F~)c+P_(^kfv=Z|k%oqtAH*go%y%5k>NS zv^hx+H#(4_-s4Nk40R1J`#~V$x6f{=ee0}T^#UP?L6F&b4rIIpaW$>C;T{DK zD(Qt^h)`jh@KQxxHQ5n8TToCEWfuq%!DwIQGA}iZa*nLu90A0;6<(bkw}iGQg_URv zAVmH{fq~*3rY^8_hEJqR8*S4bT5VgZ-&a&$8NBo)rn|tIh@`FJx;d1;S=-;Q1ZSi; zXq)Om?{{!bVZp`GDNTzRK@gL(z`RL~jR-~h-uec1Ze>`7kr7xvkXSN<0&hpK4Bs&H ze4!(d$!Yo`JBboG(=~#xsdrIk-Ss>v8zK8|Dd~x!Wg)}WHOKn`>80oXuRjtDJbcf> zLK1jQ0{7L&a=kWbK)@3c5{kfK-OGP?nZVPj&5S%PD>#+#QR9P+Ww!Xv45N+1FhQn- z>9+_M(EQuYB<^`)k>x4W*~XH8s%BldY{AV$n0od@UFj}lVnc?=T2BmtpBY8k_T` zg<(f#mf#$O+3s6XNB3y+w@0N=0f<1BMl<`pZ+ZEiv>?2*883eKIz4V*=0dpu-U9uu z8@Z)1XLcc&H&WtHk+x}kU?8JeBa9f$r4J z#Isq&i}_u?a@nPydjVZ_H>G1Gb0Kj@YkoPKtM-Cw*$Mi0r_TyD?dtM-e1RCL7{Isfk`4rr1CqLR-DYNCLkQj!s0qpG3_pZfz)kkZZ7D=vY6_- zbiACsV;<_xCzczYpT7qJ_|Zjom9bN1?4uL!9wI2)HE6`wZ=OCTy%Ef(IJ6>J3trh` zYR5X{WO2o*-Nl4E_|gh3t`@{L&lcyw=l}kAJcb~11Y2LdJ8DgWSf$>)vv$Wjg;+eq zhtl<{@c`DP)1XD-zYX#4cJy#gk78AO_qR)ARuD(Sf(pC^gsE^q!2 zkOdi&^@{CqEyVTZQ*U2iAhS`C3$4Nbv;gAO_Ph4g)iq21t=mbE>prZk*w|Pp5Dc)Q zLG9w@VP#ZX+a4{jV82N|@JDSzF~KBPmIu9K5r=JPnOP|Fd&1M<`9$rfe6`p71YHtW z2HUj6u4}Ui$0?QrEo??V%=#eYYz|fV66m=NlUA6_*ES5TNG$7&*GD~tvOBYq-2IAT zi?SrOJ(-gEaaJpI>$Td}3IXH#)=o2}dY)H%6PXfd?;k&q-@c{1xYY}jq}u8kBaBN; z90$P9!SSJOu{bn}?Dw@j0Me^{=v%vOgTi9`z0XQa#sjDaTNXXkA z+QV=PpH&)P@`7|9iKk~(wep+1Y^9)-6j+g99#UkO`}-PBDsN>u`)QH0fWDbUDx1`7go+YP z1&khAMi%XUR#WHr9beMqRUMeJI4!QVM8%%)X%!|y;t#FC;w=9G-odXQwBcbn7Nw`7 zm4u5a$H9gumK%iyi22IQsM#@@Q5l!ZY)abYLCX{b6zDM?4Py>kRLIB}Pd;B>&U99> z0)>}MTC40T^O$Php^y;tV}4ti2n%)i=x}XCB5neiRpV&;>$I*xPkCj*z0WFOI)F!+ zQvD4EEX3XEa3ucIb#{!_h0euD%V@On9ea(>xiGG6dpxB!1J$?T*;{NCBki zMaYK-Otyzq^5-3L>e}#h+^MKPzrgB>FjvswcWt+_7@qUJNqD1M6<~fXp`xQ9)cIEK zAg)WqJq|fd$is@eS^2Ygl=D__+xhj2_J+O7D>*%n(xd!Tgq$*;u1&yd?voU`kh;y( z8?gvw+x)&-rckA*FY|G_f zXtd&$@{*}lr8?$^>5$l0r_6cgTco}9vVYTOErkh(B4h67 z)`mmB`ZTn(m>i2}0VWj%q(>(^v*mUe3DD3~7#SLh%8vdQjd8Hi!I;6Ly?K5WS55`G}z}}P=>N1L_AqP4H z0P2a|9a*S{aUkp)FooUjcV#k(!28UT3NlkVs*Hz7=y+0QN|NZkyezA#k3>~f>0}Z| z2R2?mp-X>(#~RxiDN9>yc-4;h^jVRH-NC(1D=;%N-VSXIXzF*Lo$HA)!(m`%D^UX8 zG3&LnK3rYvAFfR#qU4UfDXK6RrbA(N-gNne#xgWC$wg8;E4`I7ZAW0Cpff8H0F%;Y zhK}`)E$v>4`OD}Xfy__0*!nVrtktBN$1@UPS;qsBJxJtlDn?}5@u=0eTks^6x9+y5d6Bxs zICR7WH78Dn`t84nP$3hc!kF2_*lpi?n%pCin(4Di2f}3w3Mv#b>`-9TmBKI2<9zLN z64jI4HtUDRzkk9t{kb7jJZYvJFsE^mm5%;yGXblS{WWmUzlrI8lR7JK;eo{vOH)ROXUof2v7h5o*8 zqpwGh;mB@|=KN3SA}M4$r(|R^x#7@^M7W&~d!HYvS7Aa0%hak|hGai--4gTjfA08> z2g~b4;Df}k5nY@DTVbrw)9gT54)wv%lm{w__{45h*#@b-tI6@qs{ zK#D&$CI^x?^<2Lr0+OGqYP^clWk65xUCp;H)OBxf*1!*95x9pz!o@^vH<$|*`UUD0 znXQmNSS4y@Vswd2=F?oNH0+6q1pwq!?fHn=?0haGE{-WCM(%iOA@}VsN+N_|U~n z-mk=9+F}I4v_U)&Nqc*^W~&Q7H!7@sQ`i`xN2mq~kcUPQ)UQ!fQxJx+g+f(ugVrkvoH4pSGEwX-UR^Wmoyyh65a)h zof6VT=09rtCSjg^`-6?hYf9U=)L&yHSyK2si~Tz({HA0{6M<7@!5Ai(pJAFXi}^Uc zu8`LsM}wX9Hv)aLqkd)-DpM1rSu?HC) zCU$7o<7$k>>;4D<`satKRkDR@1{6UR2Uf^u$E=hYm_svj$)wD^fDhy`NlJcVoJJob zsx1xt8>)tca%;XSX_c`5qSXQse4emptdQLJlEs^0f_VD`im>4O*Qfe_0{4XdyCX^9 z1SSAj2*zWn>^CP%XwcBm?T=?I0%LayBhM8ES z1pcA#RiD{ab{Mm55kI~5J7ALejUiLX`u8t)$iLD#<`G#wHB=W7_L3ZM%Jw)G(>>1A zzAGs&+Uj|2W2y5eVfbi}^%4TP6-&vC>Rg0z(!yO93(|<_ts;CUA~HKRHu!5sX@T?i zd{E@0JKZm=Gi@#3lOsMyt5W9FBl#JB-c$BPk-q{*Qc) z3fH*E814uz(@?;aX*V>wDvdp)pR&$4%RP2#nt-MWHG7=UHkr3QEl@+j?^#viXv9K^ zZ7BBOc+xt6&muoHzO&=D6-|bmD)l89B^EC>SkqZW2kX<`%OTXP^qd2p1T z9*f#&rIk1jDHTx-(4-7cJ#oK^HY;7sGwqaEs z`u{tSc0z`MqC$tWS#J#o9k0#qCVc+ZVDp*1ACQ|bXB!INj%Gs-j-)j!zoCGjHUt9R z_)NajhnpGtn-lX2=Ef&~?+e0S5Re!W-ZHU05DklnxOIOih>C{##eU~aP>=~YsKDqG zdRJFFG&wWIgP4tE04}*aD!B#XO+ip~cKOO#&M5#95OU<$E*y;7qa&412IosSw^3j)o zuwPmP{Q@7^;D@}*IVAr%36>R90hYp%$EoITwkrSrMxyfl1%ldAcxI6$y4Fk z?^cXCBFnY<%0|~e98ZPZwn$AF@w%4$onzT)i>S)7?|$1D7YKV=qwPnn_Z1Y9!+Q)| z{dwiegK+D7!IBs8yp|c6TqWxnUHw0r&N?XS@9*OJrMp|YySuxV6iEr`?vR!S>5>Kk zDJ7)4ySq!eOS+%yGxPh)nZ?l^c0c#NbM~Y}oF3{3sl^Yfi0R!Xg`!X?#!>f=@tnPItzRMrvAV)Cu9S(~VUx zk)pz6bJ^wMvG>UVDq?UYNVvJ70PGYk2S<7oa!>(CQ-V#O&H_~F<_H5{n{(Am7V1tE=PLXodm~#Noe2lVvJ9(DBUqQ~9SS@g;O0s_ z6CWOE{)18h*9ZQ8|M^+W4%GwCAIx{d_BA0-_0F$5M2(K*_!1uv9dzbX>jBL_?X z&DL~1wNlnLqM&XBtjOJ=T3>eEZ;FgfS5@E1s-q)jG-xTg$g-{cBpa)E5t9{^<_&Oz zvp@TdRJ+ym*?+-NigtE);FHyPdH-)RKQjxbkurY?^xg>^ej8+`26B_uGc^<(bXll< z>NMVsaakHt=04=B-g*h^F&|Kkj2GWlYKNEQb1U*F{W-!3h)Ux{RT=@XAKB|S~pj|SVH42P-{yHVtrNR3#8<6UN0@O=1r z#LJI-OL5tyX?sOQ+v+-M(J47_lNcr2rg+9{lhC(n%HeKOz&VTcnJGLW0r520YWJK+ zxHLRgk&^%Z?eNo{)71dX!%g+xklAR99v!y2)^bOCU0bxT3enTI*6tRVX|b~1d11p! z)5)VB1?CfF&D>xZ3`ylnFL{s4ZvP|)c9)&Y7H`kmE(s*VP-w{h@XnR_#&&fX``vwF zb#BZA*d@>;{o_>I+n2u+d1CawCE1)SYX&LgF(j+qO>SpX`LZ4?AL0LHiGz@PcGCeP zFn}#7IRJ?p%1%zGM7(V(pdSUREsJLS3UW#rFPQ=$X6Jr76I=x;gv5ekyZt~VIEi%!k$tc&V|Y? zJsOqlf!k*Hs^=qz{gp;efU}QMfB~BAh6X;D9R)T}`Cc7V=dhc|OiWD3xw^79HL1Iw zuE^BeyMOk)SJ$~uV$@J$O@5HX+-gO+=6 zY^-m2Ircs6_<7&MJb{2Kd`O5iFaiYR%l-$P+R-4NDr&Xa-*omT4m5P8(aTc^$S=#y z&kq7^aYF;0X8A`+aO#2Vo3}vH)N;F~=ks*&2ubG(iY8j`?#iPC@7DEbF1h4=Avli| z0qqGySWeE*TY!J>M`0l_q|`s1cdLK_f2ee%kWN((QLd_-(I56YhxNg7{q@b0)})H| zwa%4Bm;GsrH)CUC;Hm@}(S(|%=N1!Ww80YW9BEONCbH*~VTPDki9LDJ)%>2D90qHb zY@D1s=KI1ezPoB4K8*gvA$2@CWCl6L!E#hoS54+?ha%4C8y?Fy)K%3az?`oFi*gVo zMOviyv9YxrFOlL`q#^mJ zK^d0!WVUIMNH7$*tT_X_we1+r?BAS7g5njZsbqHJa`G2d5^MP?fm}|3K-2_XW!R?C zkuFnNUkQVZf}SIcq_s4)b|kC#k82qZt{7_(i*BpT8{(2w49*8iiH=qz`hkoj*F*cS zX~`Q%Zhz5U_Hqkb_3mDoUa-vQ85r^m+x^}E?iI*2(rNR#H{5*`b#Szr75?05y<`w3 zUGQHpVUb+CoXbi!PQIILIcxy=e@F)t6rCVuN@&$@1$ zaq8DRFrleqEG&>a5g`AE9v-rPbr#eygI)VEf`S`oXWHvT8al8pvc}+7a`Y6TdTAMb zG52xOH_GHVo;hS|?0e|}5}f?yA~+h7Q?4FSG0jqpLfct)@nQ)&RhzS1eOr0zRAu)9 z0SXjP9UO{JzdW>tU4-9bF(e}fsGdg^JzUxqwo10CzG=dhNo`tCcjZUTf6Ifvl=?o$ zFs9{-ew6xy#$^=bSJP;bzA2gX_)w}c3r{%859T!w>(Cb7pfK6f_=Y0^YcstAsj^u4 zUnCHlPrAY{GvUyOb(iBmFc4;nGfYhlAsxjT1QiBeK|`e+EX<;E@6Dh#-5~**T4Fn# zZj|2?;)LxcTqE2GvCE1_{1rav5KH2s7E-*@e+ZdH&YZ)G$PT8B&BpYmIe;ltu))Iv zm2G0esiB45;_#kgL`wqT$+9yEb)L+PfpEIvBN&Ia8`5?Ph__<6^Im}aV361;J5H4hH}G*&6Cl!sEqBekjWuB)%e8gR1Y3oStd*jcg}BL zzcOf8!(19>eeE|DZSl2mIUex564+ON*`}|oj2KBf5?8Y0o>W87)=rJjNEts_-WW+` zCjfG_e~6dA+5ID0LKonVTAN%*8V3?su9}aW{{d;jGqba~6&10~%|t{zr4|>)tYBsx z2>Nw6w9~DTv}*8U;pNPl=a-7wkDpIH44g~N)M|KWKiIr`*{g-q<^H(T*XVD!T+q5$ z+3KgpI9>1|u^_o|>L!VqXxrLJF)hd9i;!Tb=&-w|$jN0?%FTtAp5mgxmh?H?2;S#! z%zvG0yo&3qOp^k?xfhw`(k&C$Tg=zA&Wldjs@3}l8O)q`zAV+4bk$hYT^&q^33}LX zoV6zaWGO5f;ny;KwBwT#pcFBgE7f_b+oOF0i{ji5XcZF^Y+$6b)lb^qx#)>)_;N&a zb#;v%+2d1vNjo)NtzBb@Dv_JIeq&qIs1qti_GhE}__$Fw$vzoCXiaz0DLQ z3T$m<&hKwh*Pj)0R)_sBAdZt(Li>OOiCxR82PK+TDB;~FX z({N&Ir8F!;K{;&#vUYBi8=WQLGj=YlzwFJi_q5bCwWT#21**R_VYss4f`zKQY*31Q zkG!k&KEYw0{e?NpU^yA(%>~lhQo63@mPoZ|f8E;mGgYE@VT*Aj$*;(II84oH=Rdv^ z#*4|lZ_TukHBQ?(8{2_W8_2*3@1;<+ZX+#QkE4zK`Po!`NTq(=X!+-x8S7%E67mgm zT%~Km3de{T_>%JAnPS<`Oit8y+AA*OlZ$hiQy-)4#U$OZ>c^=#hu5Q#yeZ#IOwWtY zeV9}ZG0jmxDMmH95s0FLv2F$R5AiS$UgDjSbEA{_%gUykNaou3~}>_pNaV*$^! z7ng6xXEPLi1LcVWE6inZ07B|hK3Thf4J7!E{fYiguZ17O#Mnh0vAvL!0juh zu((|Aet7rJYvZIg3Sh_+5)+3(nm5RcdrnG80dOL)&$TjnswK6N9w)6o$~hrmEgMI* zGuc@;8*ME<_`7$nQC#z&eX_{L@Zxj)K-p3}o#)fJkoW9v**~_|{{F<@;W4ImEod)h z89zIn6tpfWK%5{USy64=YhCvHDlfz!DM_Rg49;D4NAeW$Y$zx;f$(DR;C)IOmlYEn z+R1Jt^Ewb##EuxABLdKF6d`vK@G}GICny8B{a&)c%x$#go_deRIgc7DIGmf^M0w z8ty8@k3pZZ$rt z{nVfe*|9`st{HXHjZH?RZoVAD@ZKVy{g7TMH~FB1SL~QEgBI(TfzNA#uEsl!@ss<3 z^Nr@}2>n>ak3)INPKzy2=s^Cw5Dk2o=&s|GchUjc<0NZ-v)&KE(7ovKO*vVw0uYHV zsK5#-K%wY)Q)KXT^^Cy81aWd9m2#Ehko*YecyomUG?tGynVlAkOvnQJ8zNmej7Kqa z$%uIrSa*lRhIDjvGIZGJe!QqS3{n*AX=(R&EWXJJ3F>p@mwPe;`T+KxNE_X|?tp+r z%L0nkgKbd;)24poCijylNTJaqID>P8NY2_{ah=nU4Rfdmww?byh-#k@XjMJ}`TbDL zNwYizk_#r=QBk%e!VEoKd05pJ?SYk*7#^oJp1Z#^i~w$lHpdo7;ju}5uV9A3?j!k- z!)X&zsFWe4s|!m{Kk0MP>n`$q#R%9u2*^S~vE#;mFZY7qm<+_tWmxL!>M{j9;~m;o z1Ldfuj^T=vMsi*eLF#*MY3YA6);*Z)Kw59MGsFv!t9`v@*q}uK=MXCKT0iK#1HhGb zb91Au>%Q3+ok2z0?|A+PV{;2jPAsY^ z?ukS|(}I3_d8~LdGs{he8;Q?pjt%~rlBYCITG}FL{wXk%zyGr7JDeT1vMmKcB!mSL zV;kMx_uGl%i|wy$gM$$*O-3Yw?TceoX2bVSm#lYpTcb>RyOE$B@_TZ^i^TJE;=JO~ zZ+16-eQCXWtS}w^rlQmAF5DjrhmMXukR`}_0E&1PmLQ!C&^XMq?GYk(UY!$fpC#lI1cL>co2_CAne7FNTUSy zE>L`eXxqn&V!(TaR&O72u_2q$=yQ+g(AF5=>h0e`Ba0*+rIM5^ua?XyuTD96KN*+&OVxn&0|uICA(3v-u|1mHj&Ft zRNscN(yr}$_Q(2XZYQxp1efGX!NhvL96)2D50 zS=feU=f{tjh>e)OCi*{r9mO5)vl%y0f)qmU6m?7cnGwStcuQML8Le@M$(=nZ{XXea z&?}n;0}iHqMqQa4RaZyHAJ)tN*XQe@;|D!dT=TtAozK&xM-Okx)7*KzO_s0c)L$~Kqgwqm;dYE5Qh#$bHcfr1wEc!iAforb?lJpH#0MdSEa;^OyR7<@4j zS!wXKA6RM7BgF1s>lSFGM;fBl~t+_!}0R9EpB+1%PsbdGowKLUnP9)X2p?Ge+|^G zeJed*MFfgra+1p4K~Tvn5#ToIWBo0q`B}|Hg2TYAja*5+ds)q;#cjl?v^Dw>_cgpJ zu*m<{u|I6Cw$!{@>jZleW+i26(^5U`ZR@eau&C|JCo z(d)@l__IS&n64a}%FS33~@IiL>0ECrH_@&p$ZoB90 z3W~hnY5mo9UrfqCUYHG5$>?uj+ zIvRsC2T)q{_C(~z4{ihTA~^Hq6(f7b9Z)FZ!vW+PK>Aq0g%D-UG(Dz0MR^x!(*#I$9-#mAEKs) z;OQBw-EOdz%>Vf}=>F14gqwia`)=(fbA1jnaho2~Co zI0c(-$c|fNs!OVBzWt6IY}w?^jC`c1tYXjKRx9AK>u2fXi>;HTpSGntldv zgKN5}BYWK#CMXkVGB#C0#O$teA~8`}|Fl{Q!Fv-Xt{;JFZ<4^pJ<#aP_Vqw948yfJ zdWRev;oxYA_=qI^TpUMw_V}3#K3DE8kR8V8OEdA{Mx(~Jxdd0%lnbOx1mQ*8U+wjZ zy!JUtQzY{uc7Mk1P0g8z`c@<9HMA^w?n;|7rX0di{;Nd4EqNaB)$W?8^lk89hS8`A z4zzT6<4Cklisj-vM%=1sXD6&RCdFp^(NHFec;IA$PvPrQ)OCfI^3;>&M{#LS?!-bg z$}Mq{>+9%nX^L{g<}iu!j;cid`+K`}ET9uHSI%yMoaTF%>OGR<;!Zb`ri>iUo=tU% z<$&oRr_G#3+d>r<>luvescr9Sb37O+{XME^PUShl07((l6uEJ-v41bFuFR$jJ<|9u zalrf$2xg(-4E+xTpW#?HMF$<<-d#<{-kmnDe)f7m2ibc;aDzZNgWLA#&YM^S+3XBL z4n-z_SRG)2&J1KJxE>fsxB8;ZwY`YUm#><>JQ09|Xj#yPPS%ghLH~zie_Adj)A#52 zcwl#w2=FRNcY5Hl+92 zzG6rj_>1WTnCo+Ptm6J6G1tJ>aM}9Y!XuO-N7k{>^(CE_FyC!I{tnBa(vGuUg^I&BnJCK^B2M?cq%AG=PuKwA z&NxArUKk@7;?E?z_F!UkTU<#~P1&~98gJXm{v0}NaC$mB;4|w587>;50av#r-b->` zSCs0f!dL=T1@K1hljdr zdi9YY>H~a8akYHh3xcj&BZKHw9DfP8=hDPkd@p#^yh)BT$!bY%jG8+D-^iBYK;OmY91#V;-?<>yc8STaf zdps&J@Q2dk_mq;VBq3 z@A8U@`ny6d7pg6I!Gye^>My-)?915kV&uhzj=YZ#BA8zHc6DX$4Eu)1w8hrnGT5)c zQ|=#v5<3cjhCV&r#e;Wy|J!9X(dUQKOqrUVO! zOTZvH2FT9CV`6qj(%z(JWDu|$3xRpMw1EK$0z$;U;BAm|08B4$U0tbwHIgD;4n4AW zrNJo?DBvHikA{DLD*sVX$my_V4ALwA>F#rLf{9V<;bJ4~EKhX+ zBSPxwW;qs;$(Qy0yAc54M3k1kOGq?9Kxvhh@cECMn;Xb{{uQSjW?$g|T%ve3eeZZ> zF@62!sS8c?3Gl`o{tci&VSKuVLQA_x4wQ9(hjS7|BAfu|W@-E`2EEfR^kC@$q%nF8 z4ah*~MkXYT=Y0ARy+0;PVk(c{(otC_>PKD;MjQ^e)Tq`Cmr3_Rvr^oBIg9-|{6EqgMIOtI3)0R$j~8_3IgD z$XY>!I&|gtV)z?_jx`e)`Wq^1uD+S9@XD98}$K8Sgpak8D< z8mH!3CbZu2Kl+cox;S4Ne>R`fRnfN*K5DBtYRk+LygY4oh)cOm0-UKTuWPTvqeDKg zD?V~^ad1roF7E#9aO7L4r_Xy14wbeCh;_F20ma3ZfZXBmPUv&^-QDMvm6iR8TquAH z>YM3-28wgd3cr6vaPlxl53SIjnUZR-K_GTG%LT&*Wbpc`pswc5?x^7e2*BusqIJ2O zu%g1GH#5Vzd+@@-n|E(TGO{(6`e=*E{lV>Hba-x^LPm%Lm0TL1C$w+#n91CV)A70+ zs+nMlgqk>iQS7SG#T5O_>>!`-F)Y|%ddm`J3M}VpmdFnXbu8@|PBlAd{dJBk`B}O% zb`l0jz{wL&cyNQuwuRWP{Lg#h>5snI_bmJ@))`J~`}`6Q8Xoav>FayNX6Z zk-^EmcF!v2rqy%1!HdmZ*!1J6_+5Mhz zPe)$GaS*WRQnNX^TIUy797&&=O2qLgfK-K30bNllDt!&k1WOWJv@!IPJ%UVmuC_- zG?95t{QH}T+@q*)1ywkl1<&mJ&;sepzmE{5BgP~6>RmcSyIrl;#@djwCCRtk6&Ke{ znzWb1mE@1MUzgT1YV}_T3X$Y_F|LV11nx-&4lPGrF+K{b?U`8;KsWh5F+%Vnu$}N! zpcNS>zBGx4{yk+jRe%YMK;Rl$`T;*rIpOwz*3_?}C5GnYAd_%_&lafJFMXTGY6;C1 z7&ACoDxD8UVr}Vl4$n;ifxVGo<1IR!^DTCe($@(Jh^8N!QWy!nkzOS$dN4*d7MnFl zk*Z()+DidHaZU#}yf!vNV@_VvEbt&JjUK0+YQ(z~`Gn=6%OA*9yb~=Kg`zr`j$S(f zlYU!b^=W&5@@$D?H>-@Di*wuRvk=RB-vLyWH{#zV4Yl4qH0Q<9(|uKtEt&3~JW~q` zhKiU-kdaYj!(=-&lIbTWv7E8~Yi~B8LD_95;ow~HBT!A*)X|@HMNq;q|+B+t5O@&bwyb^dDdPFbJ8gXbMQq=!_?(;A^U4du@&gU53nH;mpS%t ze~NcFeB@;!9%*nod|TzkZ?boXK7AbSdSupLBOO#yUcPs;WBNBIX=Abs%l$@kr6pm( zM@b5xASYTYI58`OE9%-t1dr+x9_TWD?VXW3D5DimTHY<&=)vo9gg|+ZymWoqgKBur!p$dlrWWFB=|4t_xeQdJBFNs*T_RH>ECU6p6NmuBTG87 z6GlaTuPbD0ZaFFnzvX8rQM<*rVkY_TC@Cp9IIDr+CRU1~4=j9-<|+6cjd(XUEC5vP z&$No@T=hrI($Dc=@2LP8A?D!FEpnW3YY?4twmJ}L&uKRdGsSdeEz7I(V(_vl+WC8C z*<5@zZXe0{PWPdl1g4y^$f9I_$$B__vfZ+th;Fv*aKGi=E%og%&Q$=KxAs zAYtebt;_}0IU(u6Jkb56@d zsqh&}9PxSg?&QMJ6O{Hq*I9C#{r4`$UEIo& zqIYE~_*k|VIb$U<_0sPBn?(WLxX+YWm1KEb^rHW*2Z#e&rfTxbPyZ@?tq$`d;vd{6->s<)U(v=uu2xdt@(gjwik-2?O zC)8eXS;f}EWcAg-a!}lF{!9@!7#s!xenB>$U{+9_w_NWQ0hzAj@jmy@pVsFGXT2}J z{Q%;Q0aBMr-a}0k&-z?VE=S?B1Mlyph6eO>t&P^

?CL;MbZODv(+i(d=Oo5!E6O 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 (L|(4ZBrR^r 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

P?qJ#S{V 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:s8CT3X7B%mikDnSDTw%5d_La{%t=5Q7i)SrQ+bvJt^y zlywF7Asg#X<${^}r{Ir^lGqoiyeUb~e0fInFCz;Br(TG7JSP<5xbyGTW3|PMWqG>@5TVycQ*njmNsJ=cKT3EN zBV_PceIhsu7AF3#zTCefRIJ69)_eaDtHqhMx?Mzh_9NDgEudOPewoAU%U$*YL69r=MRl&GGCE%yigSn(1bw36#W1J zQSU(Nd$QyT@~QNIGo$Oa6*;HY<_)L`!@p|^68WDu;6cJkS*2WKtj+rwpP88%K;ZE} zs1A@Y|JiSa0{~<`3aX%xKaxnEkO&e?w&;E$&tON@jBJ<7pb6z$!YK5Y$3>lIIjSucNkub z>Px)~Lu6wvnTEx7wbD)O!y=a^GRtyTO4jct>C*jNrY3Z^mbkxCfxu@x$0u zi3!V_7WZc8g~>jgueWV%zs{yN(U?MBnBRQ+#0e~HfjU?e`Gu8n-5+`vsDUHyF6HZ5^#uQ6A|s8I|Q-y@Im%nxeOID2n68EBVk!R0xqj{>7uk zYGLq`;*R%Nnq($(Ka}Li7_I)&#o1Qa#)r+u7z6usc1z@a%H77$5;WP#1xj4QMgNGP zi4cq4JM6YwPp6IAyiCi4t>RIZDmfWgT1E5*gg zap!$H)!6jmP|1W1ZET_d%vp}cd)dtD@g4^S#b#@7Ps+%M1Goo(G_p`tsAp+8l%-7` zGhj5F#v98_9w|CZB(MKh`-Tbu!DYE6T}1B}y-=`-fw}&`-P_|&{NNcW!o`Ogx z?4fQCJd88>7bjU+Q)e`w7%$NxFRm`2`#r5DkyKlfck(HzNFxzJ`A=G*PNv8<1^?<& zMda`jDGafAH=mGOvSe^g0qLQQ(93zKfZosRKRqdgMEu2ZA8~RiM@m|ti>FrjUCdodkB^<75u$%KoUd|feta5hYgSHsVa6^djX zZKt(z%@Ar?K7?)E;kMxP?jmF~WoyW&tHMLsx5l&byuC#-vJd{M5hP9N!>d2PX-0mC z-hT(Tk^#-Yu-GKled>dDb3&o11PAYGICM{ck&Y&Pn@R&2s^`=laVca%dc-Y<7OOgB zPG^(<=S2WIg#vr8n~54L7B-KfK_j5K@x*rvpA1U=zJ?|p^IddKRy|Zx91fVdEc+lV zgIkrHiACn5Vl+~i3?`5c!_z5SmhNn>b3!8CLQ^omo!0m=)5Cl)o7SK^X&71$ef<%L z*g34wJMXrkwwR`VY!Q!;yxc?; zKd19P!2DslKS01k2D#^|SlqkpS>mpGg+{Ngikc=jHp!abmFL{)IC1elx%4u)b_j#p z4JZldiAdezaNcyFU#xFXAI)6Cnr0=ha_mE9(bj;2;tdQm?#^iFWR`pLeGC$%p{0#n z_7t~swl6497w~+hCH^X;UNu;!S}_w7 z(~ImBG!({mN)+}OwxHgP_-hx)Bonfdh9~|(k4=jkC}I@ibhwAph{P`yjV_JE17!2{ zU*EvJ514YOKq$IzS*y1{Rvy$i1tugo0o$3bbP7WjNT;*eu8OOu&{@t}ZB7^Gft*zY zt0mj`;%x6~OVfOfB_alW?*^bHC{Y=222fU4S2J1ON&`d#wMwbRkS~PC!*2T7kG)L( zO7|N{P^~DTG>zo_`XC1WG+d+9WN*~^c+KZ0D4Rx&Czmr=X=H7_Tjd5rKy*rqBQ8fp zGN3@rU=FLOb^qIui;Iu%0+_T%9Z(ps`kYKE#9NlF?xsQdmB} zvJwji2M2JrSrPD9ysKJTyzcL}$}w5`zrZ@eet7nhkQ)O?RV0%6r3G*b1XTh_(h_!=SL=S8-u7bpaSg0+j9Y3d{Q%<31TPEI^} zdR02@#?JK)eID=_zuJ8XP1bP-RPLZE>m~lssI0I$R|;fgB5=$3&-zE0Os!UL$CvGS zi42CN-qlrn4-XGOh6cOIhJew~R}vPM1W?%fU0Yk|r_Z~M4gLOMqmU4aC1tSIt4U)< zcbsbqw!D6Qi+xikemMsU)bm>-^4k|i6l$+g?z3ip&^Y$y;zi)|O!=-nNcjC7=7bOG z#Qh7@NvpMtIy@7B>u{GRfbsQoFCbLu(GP#%iCI+38Ko7=5UA#3WyQJ*0^mN&=0smRxfcJ$|-?s7=1YzLvdytrPoH&Wzh(rbXtV zM%&j7=P)i_m7FZ61Rkz`DpMtb>fikv{_sX^2{Jkzj1MX!;+h_8`RU9A{w@e+-<}u~ zW{5SwIPmWZdG{A$rQ*^#r>ZP*HUT9;#JT8?=66-rJesmR+5$*rd%TiKC^&39lQNfi z5qCqp<0$7}nr-~4{;V*5$Rh?wkzPhf2Ube!Jamv!^yFza7=$i`+02fWJ@)kkwa7a2 zkPZ5%`$5C2pN-8StW&>GgdfSH&rRtphN!GE61uE)cDnBmS?^*Is-yT}plpi9i+5cd^8KFV7yuTwPr@F$y;v`S_Nr9OE8zqho z?R%QKl#sKlJCwipIufGfKg*|?nT6t3u%g) z3(H6EkQfOK2w5hBn=_c+Il1GJip`hB_IC7j*oeu(5~rfJ@&h=4L-=;ICL}41PfrWVy70}+)C2@W zD=I5@fj%4u?dctSe5tl*$<<@7#bPBtQ%@Hd!+QJk2LIQ^AAve6xz+KVjSZ z8f8Srftc7IlatHOw(d37oVhP9RYlyc2r)|bHYG*8vi4s)IL}|i2PvqljLk?DQ!LG> zX=v!3nF)Exz~Y@~qwT85r)Uc~`uo`{5@WHEg_Pel3ojQpX>rAd>CBmi#1M8UnfPV; zE7x@u(DTZ*>$&ngXN(_-G=In(Xw{C&%=>b)Q!1(?Jyze)_k9cXRMJ>S=*(s8wOt=S zA_YrO!xOonm^CCfq@>h;oRM!Do%IfXZYHOo@^4^CGgQeHcJYAaua*Lcat2jDQMawb zvu;OzI-%8HB)n_{*1@-}Y?wRVaT{4L_#6I3LzeY@F{aPa9`}TTg;4Q$@j{yH|2Dl1 zv)>i%Snve>ATGD?I@f@}MbtB(A~JZOkfb-7TF4cYUlbpI&SBY`##F4q6mCSzEV5WK zqqfK|E%M#%gwhDdHlwr3uc`2jszvBbhU;7Y&q{y1+JB%6dJ{X!SkPEpl6j@G??S}_ zaFP&`NM7PZZ+D3Q;?jP?-3m9Yr^eSWgZpgP`3vK~O!1C$vuRAZw&YX#x}1m$p2{tH zgogoxJ=k-mZsD9{z$;#WeiQ3hTF4lOSkD~1Bnt7qJiy=WYgDeeK?y^-Ep4qE4E6Eb z=p8<9XmMmoe=Fh^K*om*a9dxuiX0wBi&P0#$;-?A7uA=I*|)C$9(UdiS;+NJ5E%l> z-}i3>u}Y~AE)I^A=kxNX@bj-54k!{5snyg80V0rgTN+GQ2W~%pG%|RMlJGqaodKd_ z$CM?KJx00Xoede3KWHHzJ-=TrCL#L`WRR3LJu;6w+=9P+oP_30Ub;o)Bm````F*Y#T8F2-oI8N+Sc7KIcIHP6zC2-i0c zLllZlPJ$Y67ac3-Vh)Zioy|G>oZc0zCH1lLih|?j zPDZO#CoMidliWXcfki-hdb-^6w2`s<^u$r+w)tHe9bRir8H-ZwN}ge4+t#i~jD0Dj za~;GtVi*?Xp-&+W(2xl$FXN8QK&nBoVVg#G(be3y{}!TTG{fk;LSf->)YOK>;BtW! zCuibZ7r*KlF~@|x0U_$97_Z8|?mb6ns`Vjbph3^6mgg7q$9;=4gYWe?mxr}thbjV8 zNHqp%4Sk9LNwKnG$n#5TB2+4XI}CqY_KgnryELs#s0Lfya9*)l0(OSKmKmjW?=SZ8 z;{E)Zzp1}FgI3#mJ4M0i#Gjbg4rkL>DulX>sEi}H-oV5-$PCFooGHl^Pp(k$Raa;; zeIdm^;C&|NJ2rnSm~8%(S}M+-xv=r&IcQ=AitfZlofliQ%-L@;vUn!7yKt#rB&8B@ zBQ>6W+T7xtN|;MJw_QH%Z6w{I|A6G)+Sc#erQdbD5$9r;Gn)9m(6;7r?K<{%oPRQM zGNaM^NjXf`VTvk+hyOFRCNs8$#;1t$UxZC4pcSBZEQG|Mh+Y6WYg&cX@yP;xr^oqt z4QuF`G@6JNxv1Rwprr(KaH!0pCnT%f>Eu=X`hZApDjF5l-81vv(o!lYI)adgDds$c zaB&fhgxvVMnwlhFNLKEl7M0ryQhkAexh4f46ANc@fU6+nZ%Y}kAOv&*d%Fr!8X8P` zTi4dLOU|90M9}TzaAks`uI|Rd#&Qu{$7ize?_+h%fVpKn5EB>xpRRw1nuL}%9Ng=I z=-VED0s%B3SvAgqJ^lgK1O;=yuOVfqf9E72Q3doCq5_4$?s?uVZ%VFA@7XXfw8aj9 z?Wl!?1CX$=1i$@6q#KpBT6m;P#c~6$-Hns2P@TfU{QS7ZG$FAl)D--QC?G4bmyy4bmwkb?EMvZb|9*_jmD+p;tPTIJ{@?wdQ;t zpvMq1HfF0(XCh`J%K-o{2NKRVX``6%l6+M<&#)o+1WK5-O|_%~43Xf&W_BBOsM2kd zcXJagD%u^*;0j7gLMm3s`b}5eE)V#)U^^v(`sd$*{!XmFPtehk*7wLruo>Fzi%48; z_spoOQfRVS`rd8u=W>@0h^c3$rn;kWW&kdUq$?MEzKA+)ZdswBaJaa*Lt|sxkxYWS z!^tpUaS$kym)p^i)zrl4_i(sjVrt6f4X#n3v;SW~MN5nK{{CJrlRE$`Y)l@m%K$px zI#URHB#fv7^z+Q6q@;jiJY#34&F6Lv1*n1IlGA$Q$sRS@JxI9hR(l|jP;goJ(6Rpe z=G5E5R*l)Hk6BJ$-or+OUAuE5CMZbY@rIy(%@!4ys5VEc*GtOEVBOunj%UV@u@yj3 zVZ;0JxWo*9$0f|+3MtJq1aIs4%5Kco<1m4NKCN!Mj5I?$AYb9Ut%Ykj1goK`$!a{V z!QY`%MqNQhJ&R}R4ez`s6dGHNhiz={%taFhzKi3Tat4r-3o&HGqPn`2Z&3DPVtb=m zQnIpiwfoh1s&1(67jX4visT#=ctIA#UaJnEoATeALci>u!~G>PB!*yImZ>vRy~1>Q z#{wEU>MU8Iq@b!Qpd?#sJcZ~*LQ)dG*^UDA_62Dx%BAGTK2x&gwYLZE?U@zJXY`C` z2|1oF%WrKlZvXuoDrYuqp5xm+!qheRUxLMX-zW{ROWwU(cu*dA{@&X^HWnR;Ju$Vq z+EXZv!Q*!VBP~5dz9HWYfxv-C3-}@#KK#=`lKJRXfyLiY^=ij=;lCq%c(~oIjuD4I z2|1g6{U(%EN~Yra?7vh0iqccGGMTq^v%pO_hcPe_%l04|Mpt63)WYa z*DL8|j0X&;?_0n1mfxVEqwM+~>NC1Fl+d*vBmFLs z6n0e^U;4fxUZ1&`D$zW}80RpSvhK6T*Xh>Hl7mk8K9;oM>%foff?V6i&_#JVMxe9wqbGrj zs(vS$2LI^^eW0r?w5cM@{AkMcnpg)Z+~a|d%}9p1#C@Y!WhEqBYU?9e`Ow%zHf#kX z@9)vpQ3%pd;L_4; z(YUOCx)L_@yh?xT+{7Plb13}t8h-&}(__Nhf1|X`-x~zEVBp|t{GKI@jK-(tinex! zRPY6#5W($6u#uzD=jxw37;fh(mwn=MLjo%8t*3hpz#Er-N`?{n?~aBrFf|ndo_9Sx zJ>N@m^kNmLz>l-u_xE(3n;~N^rLzF|tgNNgoyjxP^63`QTKzR)HpwR~y9lAyaX?hldJAMwHF=g`i+Of+1^077uPKO(v@?N-$w}PB+(T%UT~10x>aE zRLG?)epIx0G6eOH6tmeMMIsU6_8l58#LG~${Nml*``dTmC2&uIh7M5Q>*ek!IjiMi#W?U5);j|M9N9CsND>n~F}D>1Jy z?%!vuFFrVsI7Km`lVh6Cp}P~qYD>zhGFT;SzprWH*si^gPfeE|YE_aDHPyBkYf?px zlL^)%HDe}K2Ya0o@{Z6u0f;KCKwBdL?$YVE?AagJXnWV!LJjMC7oYcN zWH9K?-#houFTID^t{wYmJG(QRe>^RO>bn-CY*}H|J2a5pB(u#mUYJo))R>>#&`WdM zSkR_>J3BX3*k{!)1pSs<>({_>#}f-BR5|Y=C#$&sV^3&Wz^jGOaIRT$kKL` zE$2M&y_H10y(s*2>~if+>boz0#Abbtza6HMiWkD7c|A#h^H)d_zqIPbshVVLcq$=$ zX;ZaOHQt3BS(udBX44=c)?7K;Dl_L$oH<_F5z*0fHgItLd!v>B2W<2#Cg;?8X&>Ee z$mGR~&T>4=HEJlzWX<1Bx`{I5)qJVURU6ClL<|9{%wW6hwCq|_V0y@c6(zjt?^(u& zDW(2N_ToWHBn7*iz5;UPdE6y%S-AizTjN~YXBsC^Fc4yFY8yk%a(*wQ|EEC6#&~_} zUHBR`zi4cgNZ;yern}H`pLX@rTQy1eDsaNIRxv=0I!h8`?w;641gEE8zgiyvO=rlx z?%-sSm7O->BuXSb0~4SmhC%nL#p~Y(udHy9^#GCe?yMC{dhI4uke;rrtc)P!!UeY| zQc@9*tDhSz{_84WP4gZKWYvxr64Lm2(jATWxA*pBEG;PjWxrCVF+9A61_t&X!~dQV zut076%s!5!2ud0X(*W5v6lle6{;^P8?YEX9R|cb2DG3R|B~4g_z@*7ZR7fn5w3!59 z24`pgVWQ(`I>$S2Z|%z~nK)u*PA~5H`IJ80_7E_g);Y0Fsm_!Y7iWlxaXWds=LUox zSVcK7CP>dbQFf}6P2=}uuSjVhBIYtD4}2GyA}2}9GXC+{O6wB~ZPZ2V;bPY|zE*Vj ze?XxH#-e(ge{wN@VDPwq}QPgdWH2B|;60GgrEc zTPW4)Mw`)U4arThwrq=?)c*c1;gM8zrV7j0)OtLhV|z%BR+LnxrnV03zPZh?iZS2RlN?>nLP6aKCIdkY&-z6vMu^+U;QanlbWS=1=YOeEg7 zwvDGKxkxHTS7{AKpR!J~2JzH79vpTmQU7KRAC?4pXK{PIUAUoS^IW5@`YUg?IEp$w zzRR!Ld~=Z2ekVc-#t20ElWS%LEpXgy)QicPSFIff-H-8f(39#*GM^iW)ZB*&%Ofe2 z14!s3;+dF3?2k1@rv}QJ5m#@V%5D_rLS|4s7A6L!wQ#RjQ}1uwdZtuP)EH@@9_E#J3wOXpgyF&e>fX$8@^p_X~B~{N9lS zBx=@JP_DfABIG>^Xm+@vZM+!6yWKSLU#-%*o$<#=6qwGRNbCG^zT@!0+s`$@?Dw{c_|I3x6&C(?UsL2_R9hH2k;G0)y)Oe&3&hm^f*(H|%nhO))VcLFV&k zC_Z;PkTP)=Vws=T?p}C36RS$WM z<&2k}=PpG;qB1iF$M)P;{k^CANDmK~dZ*pQlQnO^-NHKW!$1V(qfoHVAVw=ZS$=*C zju>2>K;Fs3sz=GzJFSHf?_zEy3qCaM}4+DJ?F> z%b}ae?}w(Mf}!W>%V6L22ukwLj3CP^j)}aus5Mh%QBqzPI`YH5&TEYnpbw-Ca=F^v zK}ix>r^73<@fd4nuBdxuAnW&MqV|rp`w{((&9V|b5lr!;<0BeI#?3ST4Uw&^wkRCF zKo(=k8tVo1&es}j)v zguivZ1BCO{`q9P3@tsUF{yRdK{;^L3o0l65=MN;>SGPemJvn$lc*Ce9aGt1I(|h~m2cRQH=h#(kA3k^XDl>0I1!z+$iQ4g zM)5j_Q7SCRO^<;t*!?&B-Zc$~L*wq7WI2U3`lFn1JE;k}z+da+xfS@9>{$A_;*cHh?wh(lou4U$)t}+#|@_b-A^E``jK5ZL3g0fj`d)6BxDf&Ptcd4IgJ&~ z+;*xXhuI|5QF=L^)@`%1=eZ<~&BJ{;S51t$U5HRw>+ilaB@K-XR^N3gHy{5L9>jw9 zbg4(2i#aH^PhfE}z(G>wp4Fh$s274i{W8AaipO4-b^I!xg~l zv!8LcUQ%0|*5!AZHT7=(8Nu1<@?9)KUT5bU@B-wWrM0p;LO@0)rlElaJ6J&2Wz+Y$ z_y~TxXM0&;phpBhJa_?EHP|oW03?UW*}CuR%Jb`MC^+n&13=c~^0I`ZBa8WX=FVYB z&hCt&5EUOEJQI_mMAWCC>R6OWY$0J=TY{=8#+KIBTCfw&6u=X8a9}o{$QG@byM*9X zJN-LCPESvV3INZD&`9jT8uzne6>aTUnK@|{6~wf(R&Y0oPqOf7hDUZX zysz6Yt+qCUj7H$|S&fFB?4OBimMIZ6(Iw&YVD`3Lkn!NPMGLekII!Hn@#^Mui_aAG zkB%O=Xmt3I>?`P()K(>fuo-v(;UZ_Doll&myozFp~Ef?YZ3 z31*D=?JL%pNyMlukRO@a5cfvWss1@*h~Ot)mT%n{PnK2cajrjKnhZ;}fNG&Eur4`YjB|=LH!}E7D=p5%r7;;GOVr5&sdEO;Eddh&1$(EYgD;@spC6D~{;~2N3 z2XTGl=PSAmt+Z$!w@wAjY|a~RS0fxs&OI?kJn8$N%FDz4S&zqtqzI@ybV$OaaUOr{ z^kM3SPj(4gzq;TGB&Rj1n$6!_I7m~p!1A#<>A~FmZECOeXVBK?hAdK%PPtfFTB}Yg zR~P;ij_5T0PR1j661M5eXj?7{&o=~KM@hpCK>UxQe;XWLtOaZsI9gB&i zbxdkIzvQnxY!-O~MSNSFcp}2P1L!q5F_cj6H%o585HYtVH?tSs2vr;{x;S!Ml8M>* z#uzAnjg77QyPr$WudaI5*Rkx0P-I5z&qrtc4VEtNJ8s*2_csntPK-96kXKu>!*!|* zZcb?KeE8Di;-ENfbjG8PAxWCu-7l%ysbD=K3j$?AFV_^Or!p^hHzf!Eyo%+$kuWeY zvOxn@moFBC@XfYo=l~FYpu0Q9ly2|pjOe!BXjjCK#|i6OY2If0)!#_q;ElA=c;#(# zdx8G^IgSZ8Iwh6u0*YQ+@CQ+|Z>U7UZpi-2Xabcv-T*TCOY1-1mzU<#r)T>WsLA7h zsZx)b@2;>F@_yxKUpM%qRC{HD&bw2+tQWEvutn`=q2%mEW50B7BU0tg;0%t@7ga8X zGg?}z|2eT52%jMRNR%K1Cv@6{jk>T{U~gWAnV}@btNC>*&joI}>P@MEb;hfGj2dVBM5( zq6N0cEcMK$PbUcLkCw<`&E%-=+^}h_@0Q2msbtwP8WRP zef#{@wTfWG<)yceFcH7wcFBhLvM!_)lFJL7+9e*9ldlgvi=*2Z-e3euE#=Hk(9O)PhqV5@ z?^W~(PfbljW#>tydu@?B97C^D#3OKQB6NdMK5Kc&oB^FkOtK;fW_ z3U-G(ki93ffw2NHOcDV~Y&>&1NHw9bqY>;JtbDK{5;5C)Du5=e2FF?G(-Zt;4kw-S zMAmujzhgMkRKJt>rKCMAr)!GW*gw_+&j-YIQp1-=LyCWi40iDh#hQ`GyOpwGB)oF5 zT~D6P@l8WqL7XL_dUwY3;PteozFA~y{>K|qs)D4|QP$!Kf)F{gz)_v=%@f2Tq>^tZ zmzJb2vux1OahX4f#XLI&P^HKXjI4y*jYud6y1Qc^9Y-~VSC0C8mz7znairNM!t0ON zu1!tDd8_qbulXiT=!>peWJeG~ZS7YmjfWi_&`cMvm}50P^1y-_6+?w#)bE^H8IQz9 z*Qj+u)AqYV!p5c=&yL=fX?Gk`($Wg(>OuiwD>1Rq^X{CkzJY~EL~QggF6M1D4GqNX z9_XE4Hp}e^V;Sov;9xE$2A7zqDh z4scTi+0qkPUbmJ?HcSue2D~R`j<3PCCN5DoysYe8byr2-|7MjQr1UDxMriN65#!Hf4u+lQnvbX zCsDS=X_vOYpMwADWTyS;G7{wEvH?4a@8d2=!w~?~piuASt}JNA{Z61jytumBZQbW| z{C6ZzN+xM+ZLR3!go}thYI=;aQdVARHkHo<-uP>b_nYq?Jg=@4A1!T@3uf@ReGV{1 zL&Yv5$(9{3a%XL=lAQQK9=Ea!v?6cfao zG#pD$cJ>C;CObm$kX?SSMQ!V0|Jg4Run&&Mdl+EqLd{fR^c-3=%f+6rTqYf^*gL!o z&Bter`JSx&IN@$rwu{PUO!=42rgzs%YR4<@XCEKd&CP{0c1wJf5_;3wQZ%2(Qxbdv z+uHi(-P7im(O>`a@VOnpoTmu1pCX5cW&X1d01EH$2%X1vG}ryXHj3v(5w^$ut^mDO zL+0S1#ri|9z2`1hmsxM9Jh+NPEa<;76cw3be%v)QG7^@2ocT8a42h5$!xwtJ_Bc=j zs`b8Q)bq0B0>?7ISIYv?`pQZh3*fA$&(Rw9Kldl}G8=mJ^S<%Nes#8*CVE}q)A^;` z;9{ALR64>sc|-Ub3C0IM3^_@lB19BaOlX%O>S9Wt83*H6w5QV5Kg%jHu;L-oo5xBn ztP5`!sERe3eXGk6Wb@OSY*E0hAv~7!b-~igI-h0zHD2AC5%?TPJo}S&wo$%g7ze?v z9$Ja3LD{cUHn{QDNOD5s&T=NEsWa<{ugpt7Q8jRPP&gI-4r)?w?z5;eiL2xN;sjFe zvmWgSXNehgWznV9QU%VTdU;9TXARxTpqyTZLm=+ZL4`S?Lh3hb=b^0P)CjvHX`Zz{ zv*1%@C&yMInA7*(*UZwRiqD-piiM@-CyLxJN0njh#|b`z=ePf6>t@`+;@VtrDa<>s zMIes7jpj;fHxgJH&2&&=ctwvbx53%)=|sxcPOZAMv6I?AA*i+kHb_0}i<1D3nyJrKq3+$Ok%AzK2<}@C!)sOe)P0z%L-_bq5$~`H0cZG4Q^FuA* zwmp8(A8X)ahlaWJxtWWHnEYMUQ3l1~c|X z@qat~j2>R5UP((B>ji5L!2AUAJ+TwTx$`cF->}S8l`@q=h<`Af6*HO57Xt<(sz1}h z@6@4i8Z(VJcoweuI4O!zeW93!7Lm*8VQV}OJ;pdfy(o(M z=A)HSt$sY{(Gu2DDg~m^@gn0z=iZe_8REt&7@n;_g!Lg!?z=<*fSx!$9Z*0^Ae(OQ zeYD`v$}hkG&gq^EDiq&Nc75oS$mE8rM5yT}fG4JT#f;_dqkWPEpoV7X_sOMC|dsKLIlcfl=i$6m4z- z1KrQ&fb~dnOMed~|p*g60jZtVD$UXl9CI2S!&hvp{V?fhEuIiiMMN z>n@_@HE3! zjWwhFu6qIWPZb;g?^c>qSElp)b zQS*jc;%~E3-vC@J9BBhLXHEJeve{jxc zR5|;6X4G`eKfbzz9y`=oNDwQr%wc_CIg1HzxdB$B0Dy&%~xW zUVm;@;V9zMD&@l#_jE`UU743z)neCpU|!|Af_n+c2M;*UI46e0y>u*rM~Q>KiLfmF zNFOeVn`aEn3^;ELNi8{eho>th%UuUCSvwcO8`MAu`$8kBl2ol5`@sAZzP-P>$$Omq z#UQoC-9Kn~;!BW_a+Jl#6^Felf=KlOGLBzyvx6eN7g`OWgBHR`sI1N~igraL!acjj zO2Gm`S#0oU`A3tVoL*$1nuTu=cmopJtw_fuYi;IKfgpCp)7H0QB1!C zpqa3QmlorjH)Lhi_9iEbp9zIxjBm%e%Bro6dLKT5^QgofN?uVJ0a&hpQXK_P#t;7s zMpusLq!jhIgv^=y6AJ36b*imlGVm!#&PM2TTtY<%p=LcPGLR z$z@^n^?JVpR^U35es**t)}>#21n9<27NzzQh9-T?{`Ts@hptN|$~dvpx3%VvLg1Ax zW;AJbFpDx1Zc>uO$~qYd$k@e9NIRp=w|qDx9sj;CzJ40IBuM0LJ|h8kvf4ynPY;TZ znnX=QH7tZ4$j%}q7_ENvG3nD1F0}DwS5K|(EUh^yd8HrYWlaX*G%#R7kszx*!5h`D z0fE;tJ5HdQAJZpA!gie#!}&1;M@Xydn1|Z3#nIs?3qSyyw9Sw=o6?+!w=j#F3?e0Y%vY8G#$#e$b}=yUkm#v1~F{S z4HUa7(GJpr7+6o*Bl&=2P31_hvcCHi`1b^!kt(_SCT_&jZhv;Br=`HxGLX*X3C* z(^b)Nb(3UAhLx6w2ls~!R7J|4j=f6@ZzALZRT+yqbEABTR6I-!|%XdStxe|Y9_dR>FNRd0)>G+Q>yUJRY+M7-H5&PZ!B?o3IV_!OR1&JEp zeJxP5ri#@!tf}UzVjSn@U7A{)lu_um6?~WxR1afdtxN z;6LkI8ft1`%toL!QBhHuwL-?@tTehAWgcaaO9M&MM}PiM5yQZcRw~@+(AS4*{i_>3 z`*R51*%vJ>5uhwIpCH^1LJBJXW+4vTUQqjRD(!a>N^$Hg63Cy zr;96mlk@X~F{e!DyV%~X&iioAW=uOniOKw4*DypxidFhuJ)kNftEVUE|8%+n!rgw* zZ-X=%ttkFGLa#J2JUt};P%4|-+1riJ%IejBxn!|&g~#KnGJbtIyWeHf-^_V^`d(MZ z3V0)9`Qlfew`&_$J&4uJcB|Z5Tj=i)&dpa_SXSE|VA2d9S4TkJ)C!Vd9+Ae9jHHJq9f*O!d&O=s_$_@cf8s$g zFW9-no&*6ppW4XWd~7v@B;Go~GR4J4h!xEV1;aNtgFc-QR1OWd_2#@@Q?Rf|V`5=p5D-jU@##xq ziUR;kEcFq%cN;waTEoP|#Q4M=7!^g&FR*rhF<=Z(1ohSn5++VKkDWZdt-V6-QReWVJ6hVl@X8KPqLa)`5gfXCqj)y1d>WWOV z9pw4ModAotheqfZqF5XvXuR``@)Go#cGtDOdD->8dl4ZrA^-uJonJT zab)RSyTC>S2Q8#eHDIpcGfc$i=U!D821P}lYiAM;E}SowFP5dPxIr_Q5wok|l8;Hp zBd7E=8HArtvrJT7$KDdY&9$=-HnR;a?(Di5`ZjrFAxE3bQU(Q;*1>TzBS|_~h~)20 z!1Ib!@^pgXQvTX#L2BEETNV*dvT)votW@|@B%-GqJ?FGu`k@z%wu<7K=U~Hm4?#IX zSiflB_4~NQW-D)S&y3RZEecd5$@pT_buK4k&a#4f^lHy1*Tff1tn3Jg;39lQUR9Ew z;)8vCdF8VXP3P)u_G3XuaYVa{Qp*Hl?$2NG%Wv?>g|L;4dF-5@EUPW^|BTKQz-L5S zGhfvd6nPk^ONpxU$ZPHrqtzf@_t{lq^ERfWm+CZ}S~Z;dt|JQn9$dx@>41gYq`<++ zcQqhr#osJbE|+JN%F~m+B+6Q-;a2)&)es(4mb95CO=+AXHOZjxGyKxjXZpnI4^wXT zF=D_NUJ%ZLx?*5>tURZ;2$2KUbry5h@YGJ;VbS7f7a0wD=T$XBlLBYg2M&nErhb#DwU^Wskpq~tp|*e(M)`g zi4mSxjD!z7z-&{4|AHeW6omf91CNI7sL~&asbs#FTUgp{Pon%t<+Wz_>+NX4^vht` z4#mJOFgJJ?_)U&dlr;W4w!^;uwxajxuw%l~!fMCpPM%U8XC!%~`TW|+^hCp7Z?Pjy zw@uF!jDq?7FeA=Ti9iqR3+*uwE3whgSO$jx&Q51FzytCH62~PZ^lT5r1DICw^t3Y2 zcd`WrQu23fzJzrzFMp3GdkaiMfU%ejq$C8h3tR?u3!Z0UMaqCA0trRV;C9}F z2G0e^x*w;|Q%x)=c7=0o_+-$iP%0_KPvnc!#YvGr-EA*`{Yjl+FXw-iF^5g+h={VM zn`ohgxHw1(gLN9aCp4Af(ad8eKiW8A8`ssjFnfQ$Y1SEBQnDIwl6yAU=tuVqh6B?Y z@ET6^K02;;;QKqO+!K!IciYdQ9 zw?7N7b~F_uxGe1*8a7eEjBD44DFp}q<0hP}x?*udE*#K4XBG*ADEl~m`-1JqGcj#h zcuKR5t3fX$H-qcG?#!iIs4{A1-zDnVQ{L~+UVM<8ko0M|zc~t|CYug!KJ7`~ROsRD zsi8OKHMk@7)(!+lik4<)*6*RCv{|8DE7IHGjo?m#CIZ!qinwc&w)&KVrYsNG^|4;; zKKxj3``(!GQT}5zdlJW!i?HvPM793&qBn41vicg{E5<^rX;Cv-hkDt{u1ZwOXe!^X zJnU)n;miuW#_=VlI_O0UJ@hdJhWq;Ss^Bi5k()H zdK^bAi%_f!;4=!rZd?R0*Rt+yMu>sgabJzns!+adM(kPsZGMrY zQE37&ld%!t>0D}^*1&H}XlYfI+t}(|<-PfbOx-54C*thyrzUA~XqCOFt-)I_EG>Dp zx3HccqY!ZFMv06=aB5@_Wj63_fu3#(Sgh`XJ=S;AS}(JmvGRU)XFsP3rSEB5CQv(M*nb zzGfnD)$NYh-aPT~Bar-%!?OC=k_#1zbOHBg!v6ukQ6i|eHZXFN>kBPjc&u#i^mOLk zovK7EVStEX-`U1faCMk!=@Ae(?%p{=6Vnb(o?wK z<|?oqZ)5cGe6CZ`P98UzD)lZ%sbUVJnR`PY6Vl=(ZCr4#u;s)_;}eonhrS3g)v+R4 zSXgXbM_7Nt!(;K^#8j`!9>Lyd@4tlYDr{{C<~AE6hy_DjNfaGe z0&p&2_9*3ZRKoEhGtuEJyMP^xHUVDppz}nO(w}xF;|au3ChvQFp&Hm-zGUk6_u-J? zus{-JC3A8`@#6yWl&o95$kY3^MOx0Ejd$MTlz({6Tz4)d>xF!PCMN4lt&nUZ$OU{> zF2w<3JJZqj#_cca99KJD&673i1)|GgxLo9u$X!!}eQQG`Hwv6iWHgCbF*`5!Cg1DZ z26)~$D$Hb=Ym%8N8bP*IYKbh2 z@B8Xig&?m5jwnoJo#)JR9bRR7{xh5E;ZYgzLQY*uGvXTz6*gX#=FWMlPh}8L!c?1# z&11D17JGwQ`kXYFWkt`qt5!u|5dQ?bKg5v#}P}?bM57oJ`+S zddGq7hvbVc4Au}#6*^-R3D&(%?uavg*U(f%no`w?ml(vJ--rH@(-qV*)jh_AWLKQ9 z@mZzzlHOlsp-b+F-+xKh?rk)FXbiUdhMHL%s@@aJ51Cp^PtGWbOVg86c46dnOPQTx z2VfLq(a^0eQxHcdqhw7kyu%-ssi0=8H0ezV5!3M!lb63`JJ4LnJRx;*e(z~_r7ZY7 zaOUB-uwv1Oi@r6(?RbK&T!xt})Bo%}WwSyE$y$k}p{M6yP97O4=k`5fEg3&Co-QPI z;YCxz92y?p&8S8JO7fuS#*dG;IfY=I0ZJdhS2Zw-QvpQX*#WKxK-c+zOn3JbiQ-{9 z@rZQuuQ0DR;)s?)F}sh&QwFuOGyCNAg1yOY9&`#)n&#aUvhK0@nmW1BVhqfYLnX=?Qvk8v_j{;Ihu?ZeQKH6Np`l7jO2Tq-_>ou)f9fX$K~Dv+fYqf}B~SQR~h_iwCOH30In(R#>trijuU6)9dAX zvr`!z^Oyo)1{112%WB_kVm6UA7~j~4C_2W@leu2pi~{zb7CdP*qc#T2~tVs_!?k>`Dg}zwz>Sp{1=2 z%oqc-3e2|p4BXDv$2+`Ha9I1osyiQm1W@GY81HUnLvZhF*8?(ulil5UB&MfJn3__A zgow}1&0R$5w-4rvBMy#?>_;-ay!q`sVQV&#{T0ro1t10j{v(E7?pTgz@x>A&0BK@c zPY)@u9C%!kCmhaz6!tp4oE#VsJ_;r7?g`zYylnjT$7jrnS6>$733=QrK5ZjVQK6^0 zFHo^A?fMZ_dc?Z=zT;&1m-@%l)K8z-A6Q`<7_6-9`^W~1G!*b7W@l3&rAV`l0tY8= zYvi*bI`LYm`BpZ^C6O1Zwu$3T!#xF#nk@0(5fxGAmi1hlKM)3vuBJ}U#O7$4>59DJ z+zwOrKHD!zIvT>AROg!3n+uO9ArqH8o6%AZTdVxcK6W}QZiaKIFNo-SN;cNt_^EZN zV3^V0N}C^<^S_-yV-Zi+_k@uP7xu;(E!Ci_E#l#-KD=pHytt!4ZsjPfk zza*$@yYvJ0G7&ZJ+=^9QG!v(RKfGro;w|r3gTS@ILyu`WkrSfvdopF-34%NB2&my} zr`5f?8I9}fYertN$?tHXQDTh!Bp%E!U3%ZjJ7J@C*5jwr3rBfq%fCTB03 zvC^!MK;m5K(Q`f;4|SzO=dU{&v5kfZBTBx>J)Bg|`Xc6S>l}NqRb_rNTmII7WiUn< zqhqKgUBcUUMX{~~cLeVu`$$$(re85dTU%ApRtXxbN*yLFy127FBFekX2qlK;N zy2=ldTy(=DRv@uoxyl~&xR3}y9x!iu6a@{|VwN&_eIn;MJ7y>?wj9Q@TWqP1$Hy#m zbWWFUe5e6%ikwpBT^ee*!Yn$`56BCV!qn{SXptG!=ot7RGT(;Sf|Au`m{9wWB++v+-h#cMjZIWhQ6ouC10gy%veVGg?q2R9 z$jH)BGga?w^;dvJ1h_kd^bDq+RO&3Rtl$XxP`kO^02pZqhjq%-{IVT&MTfk&>Zqxk zjdxZJhiv@&y79-U68Oiv>eqfg|GOyg?2(ZzM}_fiZk z+#z9S}?81%FWtYw|kahDO0aH5j4aK3&JKTboIYH=qC@w6Vuvs?J0UHZDrPsg2I!0>Q#uQw#0YD0DdW!C*4njoTt$s+x&{*m zR=!JF1MWER(YsMvM~d#Din8*E$fn31uqZuzeHia}WwvBWnbZZe z{<^J-W;)M?WLE=8Zzl8)cTZa8F-}Jdy#QHe2bGuco{6-K$NQrX3<-o$DU1V=Kx6Z* zTrDIb4UK@I+>R)FbJ+`q5nsaCl}&o#UpjKWLSfl2SZ!=XtC8zUQ`?-Ebpn!~1Ls3} z7IRwjNM1i!>O)a|1%fV|pTDHiNkuXiQrDN)pZ;1mN8_WiPD&mVaM8Oy>0Q};N3SIi z5Lt3;m4x&tQ;ua{+is6)NMfunZ+74FC*7AhA?Lr0nJ$i?7Lf`5YpTHzl+%sz#j) z7VvkK4#I$X_)-f?5-5tt;J1H1zf($0PesQ|4g|QCyb3HJ`%5bt*?0Im>k75UlnF_C zX9xoekIK#%ch{l{BOEA3YCPUP1m=s2+HmzIOL9Iw?LY-i!R^5=`5}Z1%|s{GV|4XC z5e?=YSRR7NqZ<9_7(yEJdptgCs3h0uLUL2GAGj=|_RLsV#h)@#i4o45ne=xPQEskI zvCV}`V%eFP%E+ia$S;&M;pA!UiMRljVyGV@w#ADx!LlCW@a!X3U5oU4xd$4B2wvST zyJr##WjSM(*eyC5y|-;ubpw1~>4uNYjO@+oeO63%Aj*5y?<8nHQjb<{L25mE+m_e} z(qP^x7dCK|wz_eD@cv4dVw)``EJ0DG6oSC}rd2KmlSTm)nbUcaG7FWfPGThjzahQL zmk~207p1+{TaiZn(rh^t!BkXL8Ba6vw8VC%f56ULw=Elw0R0|=N4?2RV=>i0X!IQ- z9)^ii8Q{*;v+pHZx82(;NEiRaovS#zIURY}c<@($wZlreF?%wEeC-P^AqihIR@p?o)nm7-i>KOV|^&8ooQWDUs=T| zW4M{|KU@;|CoTgQeVfl*jv4_~Fds!hMw-?1P=eRy#kvP|bb0JR#24Okkgqr30fQ`3 z92f7`(IqImac`yKib&~Z#=gLx#caxdkep@!Fm>*Ase0KWda zkI%??Lv`N2FqxR`O-)rvXfFH?YGVN+==`HE&Ns6hy=-ZG{{m#ppdWIy z%s_{BExiVNayT7IJn7*oc7Q7Iplgcg%9BlW)x?OxkI$^H2Z+TTb)^NyfKiiyz5U40 z_E+G!1KaWNge_K(rfK(G(`+~SuyOJj4iNHqvMHl)nN1K=SzY-jgu3EyHy)GD&#eI= zI3X>qcaP!t{0dJ*S((?VRe-6ZArV*yhk)#l+k+Qu)+xwM_-T{h!%I?u4gB4{kPr|J z>Tg-~A%mioyr(B@vYI&9w`At`kdBVZ0jM~f`9!Aa?spI&XwPBldcww_QZT(a(PZb~ z0Mm8fkw4;I{r1JI--++m-YNdN%N>bAHk)7mE<)P_aHX5c1la2Ll)vsTj_hvaDiU=c0RPESrs`F5aZDfEKH$pmo2fPcjFWHF+lxtYbN&%y61W5L3r zbYQ_9%g(L};J!ehVcdP=`S*4(f1+Cr0Kk!rg78OQXNc+_P{FT9FtKL@Q zmFhyMjM4XkC~TzbU0EZ~-nL|}?P2bw8-BjTW1`WvSJ8dW;?H?yf39~hZ$=D+=tV+D_HaU7-)S*emD^g1H9=8O7Qs|lCaJ|%CbFKR39W(b z3Yp)?x_nG)5TclH*ALfPo6#guGdHmvzU(l}$oG zf3pEgW~tT`@56snhBhUTcQ{GR_Hf_(tF9qn5aXQ&k0!I>m<73nGJd;FJgvzr7M-Vy zh`)Whxl3ydCx-;3ld7U&LPWllf-+5&pqtJ*k+`X&Kz%O+>fv3dRuKhXN77a%ZLcpx zXxPlo0u}jdhGvr?t9k5tK~e0*-A*@N^;k4OXv)1QhoBkbarzqU^pFfjjx|gp4a&mH$ zhb}HINSP|`ec@>2R0C}0<32!j1cHL3irHdYfB%jr(`|x(HwoY$(vb0*98MPBLEzz? zpCP76G8D!TIdal1INIdzeC~g*ZdUB`XAU)5odnw4Y)guZQ#!o6L{UxTviaYnsX|7W zUSqn0d@XFOK!iO&@%7>3LiO72PJ~0pwixQ-zaC1;Q2O59-mHqRe?Q?fvZiHbwav2{ z4|^3Vzxy|gCGvFwv~8&w%C?3I#Ke>Us3gGissxoN(N4-WuhRDS{P=rQT{c)xQ_TIt z=#j{;a@$||1ceLc9sftuSq5dOF+82yOC}X>6Y$pBqXG}8|en= zhO@sj=lsIaahPFVo@ej1?)$nP9ZeKHfwzYJ1b`EnP!f!b7KKWUyEd;Y6D} zO0<`RJXatfu+v4fC3MfW=1*ER(3GcpI`9_ibKJ*lJ2EVDWDk}f&Mq|k<(|(PU0g?k zB{#-3-beZ~sw3j5$LJn+{54D^;+uM<7+uPw=9=gzWd~&6;%GRUYCCJa%FnaOAFnJq zdkRt!VCXu1NQp-Au6smsT5F?!?LBK2On$&XcY7+?bJ6{GzHi+X%? zmR2!KrKTUay3r`g=YK7~T>bSyz!MLJMKxLvbp$`Ee>-L{ZR4H`iX&d92ZoPcF;B zmXe~pSS?DLou&C&>qNBS@BI$UO2>!I!4d#i01eEnM76BAEK8T7iP!@fSJZQraB4SO zO~JwC{A$C0;xu9+p?G5;~XdgPk`#s)cmxr_`JUFbaH{;T9e@2P}EyImJRl8{@A|~ zMM_rguGxl#w`T{mZSU7FSP$d1xR4-JZz?b>p^K^;(W<)@F)ZSU%YP+Lxs`f7scZX- ze-Qcf0hZ}(1~zeQ1Jg#jYjz6s#2W(A$JNx<6i^}4bcO>@yW54H^i$L6rM(x$Oga_m zYP0v#wD6q8@kF-9Y^bX7B*0!No#@IS{;d%mA7?4Yt^oZR5K_WZ5zha-7lSpK^V&#ze|p$c>4_L8FvY`JOpJ|i#OXB*4EnS+!-(xprx58B?Xno07g5oD^``Kw~Zkb5K0R#jiF8G zc~@F(NqQm4)t1w0b{rTLN9eaLsN``NDBV$^ZPdY zS0xR~of($Him?pkztvfMvq~vV5BNW-`d~kF&bW6 ziqh$B9HVF=^_v=<2wA+tzu&n3t5urV96f|PTlMT=>FSnCOm z=lV|O0t)j@;=fWdPE<4I!ActC6hcf%tE)y_wqLvBHjbB~=`|*{M-Q#Rxxel$tlnm+ z=?6J1^Yr|DKx+tY4DuKlW9Nr4)ta5YlN*x@kC4d)_63peN@|+1Db4g?S6*9RPX^}N zw?uetoSZT!r(M6DGg6!`dTblCK+`zn@6q1x7;DthirH%ZvyCXT(??1IL7(hcl#jc+ zU*yuzqk~Rqxa{=)3?+D}mnsx@udX6#Yg=cp`~&a3J_Ae3p}arNN;tR|r_FDFuMfen z4|!l^C1HMEeR#xqvGppYLc1C78#tHq>-#pw-K{^d&&_ep&VxJ9vxJkAiiMrsUXq61 ze*Huz2_bHkMuq z0x+z6O2kN(CKLm+qlwSYWI_-3vMzjt)Un5|wiJP&;bjaYi37uv(6egvp4TK;?Ccm? z{AtuhMg8|EH#`3V5CvNB2bN~I+ZLz;(X?~)$3LVLf^B4mbMYAo_YXF&Okxp?8(M*n z{cNu{rz`Duw;Gweo>{T6>(;APYQ?XRVmuD__8{L=YrKMAfpnVv7k_PYfsBt|SZep=#=_b=S??g^=f{72nDA$H zKVz7$Mm65-@w8cOLC#Vb06Z$l#U@+oxBHVEo8@Z)uxrq1a|yY;bOOlCad3WLY`Eb4 zPdftA&04 zPeR~9*Voq<|NVP3D8a9`j=V>8dFuv;d5mZMbBDvopQj@hhsWaa%PR(42UQ{fV_M=`21I^Hhp=vF$iD5NbWj>x(H-7vV0f~Yct&3moe6Yr^Gfwy0NOX z5kE7K*R~{F?spruKcenHfR#Nlj}iSYV?kSyOL}ui%Z)UZPpIX)B9Q-Liq+4ffD7|! zE(nPOrnl-<69d&-riwa<=BK54ygM6u%F?ULET<~A{?D$x36r)1@y${#Qi$|WE*WBz ztvUyeKPedB2Mb%q@ghp*lpSaxmCNxbSq<2Gf|h4hdOJH!Q-p^_46Q@&$_$3jOsBOT zY|P_ZQ{F#dW89xJKsTP^IVlWmaje5ebt_=%FYrT|QX!~S()F?{Yi4Y5IrAVdCGBLM z$)wy|AGb4;=1=bvJh&1clTVN98249PjAjzbS;=r+T&zVsL?raHdDOs$p=MJFG6p43 zGXo)N|8(Kizl#enlNW1mdEx|55eGN7t@7&E;RNa_p!>=g9!B`IbCDnoW}Cp7^Z~RK zVu|<%*E^oTGpT=L!~btTF$9b})+3vCc1YEgm+(P$m;2dj_j04*^Rd4E)vt|?@r~D8 zR50V`b=n~T#b!o*|Bg67u>GlCp2q9UN3T(3a8+ar?gUWacXEk+vqBrY-+jYBrnQw9 zY?6aRtEjoS0@B!vXXfX}N7L9@+1PUP@(}3h>3wlCxIYjGB*);plag%y&Fuge_W#U( ztA31ZsNEdmcrs|3 zp0TX?%MXn@R3RU_cy3ffeLj&7V;e$am4|4OeLDh;oaT$wdGHv=quO=xYVbo+ij(#n#Jq(*8? zNt?U-qbG&NtgIUU_V$k-ZhPrX+%VY(2Lj6SU^-^p+G_ zX60fcG=&ep=5va}wUn{=PfZJdIbP=4eUiJZ?YOx}KBhKJxeM+vdupj43*lYLy(*@L z=vJC|@9q3D76X+RDVkS}nmA1qeGx+yPAQbmyVZZ1LI~pVW!DH+&SloG85md*5aB(Wb`@DFI<+(oMn9~`_j;@I{h9V{`Jn%O(aywqz7WV)R3=2x#cLP1YuieQsG0H05R%s7Z$t0o{A0eGlGBbt2+4K3U9qWEOy!g@F*p}CU5YJP(Q1(|1ON|N#!t&!{oq=CrFYC`?+d8DQPJ0jf27}Mv( z&|K5lxMkGm+n`0LvIC`v^V!A(2Jd60pl8NS2DYP%KNLE}s6J1`jMUlBnL{4u9VQ{M z)x{QDR`;p_Qj+fJp1@thnO1-H_{*MU1+$3t?#y_#(eO|9Y#29JHfc1y!~N0F^aqi4Vb0isQ;ors>*L8bf4u283^?cJgFcd~}ybER8BGzPmKykYwc3rPT}kLTy^AA1I}v&{UnF6R=~&>CjsI$Hq^5q_%v-lgUymC3ma!9>?NJ5GA$^+3HT`-Zw`I)M>dqfp5iQzK z5>FyRm5?_V3C{I>_YCOU^_n#v2*N~lo9ZU!8u(qlKCRV7`(1qY`NvwN-8=E zMxuD&Rs?zg@}`33#PmMATcDXW@$!=HY(3WK zW*J&jOEXV7s&BxI3~h&lyU9^-3%U+J$>2!MJgg#OQD^RzDV^yk$#mA%BosG+7v&Eiw@&-s2Z|>cMjphgkS)<)4 z(L^uRxiadX3w{H*(t&Y+KXMPhzGiqOzFp_%i``y+e7PAVG5B0{Rv&MTqPDiQOublMluElP(Yl>Rl5av zB{vj8zVSL!#P}f-9-ipGrN!9>qp24l{=0Q996375;N;{4qR5osu0&SdajT7ohwtd* zM#jMr46Z)0@)=EJ3An~KHlxC?7w*q5QdeLrQsZ$U>g0S5x(Z#AbV=wK?6JiDtAFZD z>469p1qijlPbph0%ztlj3d85(Pl~|PNt8~jQ;cki(bonGChuE6u!^yMc&_id*gkt7 zjgPIMrG+9mOqA_sMlO89H(2nQwQo&E@&iRCk6*;(_fO!`Eb?5*0j5o9?DlNx>R6cq zSWzlVVh%Nd;o&6HsxIffH`-VZTZ67%iFlXJBmWTp{q<8obGIwb7YPXnh_+oxF*G0% z`yh_RoE0gvCMM}c1V^SY-qa@t*ZcdEWRwmNUOcBYsY9cS{C$3~esr5NGO-zKZ#_Od zI-;Weobt|bx#2=Cv*!EMYd#Glz4^>uQi+$ExKtSUu}JIc3Tii>{oT)T4G4;lHv}w@ ztE2Ka)URK^f)VEB821~6a2Eu)xdOs)L|ilWlfTe!@AIx+3`M)`%cOEBSlEk``W4Tu zh+hp2N5xBB22G+E*j6Vvsn2@OpN=(CBPR!?^ zG=;p&VSmadIc!Uxzeun?@pe=tx+Akj|AT~LN9O!a7`r?YVTJO%upZ__5Q`h|Oe{c` z)Mb+2Kf}*re zFShgvuB{9P-#!W1c2;K=*I`ru_&SJT-Zkv0O)EcEvj%z@ZW#sX26NL%U~{Ih6IW&B zWvn4Bt2uKbj!ZGNFe2q&`YeC15b6~%vx`1rb#ZGuUirSS#`<(1yK~wmGS_Isp(_Xy zn|y&m1aRfG@{^+&|cw;#F5y?tq7<<0#n5aK4YGxGP zRu2m-;o1$ffgSq&uPmO zgU8ypxpiRJyO@?Q-I*y>`RbvJIc3!_h*VH=6I)7DnBIOZb2&{v1=nWVG`^SmH64P* zQ-KE9n+q^FwM16#2!GG4q)l}CMQpr2GSgsYt+x4Ldq(9=D8arck1SMCT#Wy|-$v1%E_L1ZY5pU<12{ zzcJkFedFUOVq#(d1I53z#0#FCDR&$GDaF~#<7Hp0zt($kT3Q~qzdn}xJYNtmwe8Zj zwYA+JmD{^mVn9KHrdN7~_QBCn&&*5^_%EV9K4gGsO+iJ42b_S}UPsVmWIa5NTLf-R zfX>~H0ltq>^;%wieV9Cc4mmk_O6AJDipETM{x)1*Ucb}Hfv1+13rs))HPhAgt?To@ zQ#6nXpZJ65NVCib*l;qYs30vylVk;giQ%#E5={2{h5JHeq(U*f<>n+LN)BC_qu1~F z_}f_7XKt!XQb}}l2p6ATJSV%ht97N#_MWAyGI1-?Fxff3w^tx&rDG0$j|cKMrF-c* z*ys+x;>pXjl0%C5hvKx?t55iMb)ABtQqJ+FuGc=7pY8qU98#T6KUJsX&3ss|n#F@? z*i1d)`l&(_P3F+ONj{dYe<1%D8Vifp7`u7NQj&znR(*&S00V>Gg9Y{PT7$mDn=Wd^ zzf0cS8vBiKJNn#&c+^HtTBv}X0VM*$Pp#@BniX4F$;hlk8b1sVS_=hc1Vqe(E646! z?icI$K^GXPoYsH_Ozvqd&9|JY>h_j+G{|urEgZw+W9jXe<$-B$b{6)&zJ4TfZD%=K z`S?_vKpIfBVV{nLXO`QZ_TE3VI_(kc2`bu>#2kCmO7sx>%zg__aae~q!h3E-!HfuG zXZx75aniNv`1(CNH=DC5$aBmPsdZ*ZtwSGYF_F#CO*fcKkB(S%_<2$Z$?Z@64tHY$ zynok9N5E&qAm#D~i^;r`quj>E_Y&6B$ed1*XBx(q<~@~BxI1Qv%Icb7lERXAe0m&# z>88g;A2u6fz!xX0J7llKve)bIz~rVT6c8sG?YF(+@xH{0k#Dn36Lc5&)x{4P&c`)y zh5-RuCs@oG-I0_N?1m~l`7a&PiZh3OpxKh;Y+gMxy*hlE6cp4!uIL5n456`P{b7QEq3raQN$v0Ux>(mb3yot?sNK-{=outt#)b+|oS;!I8 z^=Vh)m?`d*$fb9m?!{Y_f2hZ(+nX+wH1xfu%8gzclwIMM43~=Ke|*YhibE{TO&l!j zp2g;j_mRF^MSx2zRzt5POYHx#xfJ+*i9;sj2aJRu^25uv#b6}siQWxiax506&e(gA z0SMMw);~Sn?_hCQmk6#wP?f4RHx12xw`1(g^%o4UHW79RH^N00U*wa9 zOLsW=fTt0dLan{@9+z2&*Pg$Wl#l117uOcD=0*k5C@>Tr-2QES?oAdVlqWRF8WABs z(hOMN?qF$R5uFWBTxZO$RG;8uXYaE=qA}@bvpQdJKDTJ=jO|UaX6=bSYR^4q^VH>U zzAZM|H~TY-yg7@-9iN~S*_aQ_=*3mo@ryG6LuxvI`ny}@2hW-OMzxQZOjSfO5=P*Y zLf}7Y6FnqHQ&iCcDFWqRGnXQim)DMmjSU+p=JQ$c*9LboA-_{VT0NE0j7JK$-xX{50t3X)uj|9PLFV_4 zcc9@*AT1}ITVF5yQP0;GLpN*9#r>|vWokxEZ62sTdIlB};1kI1_f}AOTHcT*gr9C} z`0!hKC3f~OH&3>HKgLAeUmiC<>~q70cO~^)Ce_1UbHj^}c0O-E-7UWEoNIPEaZM8Q zfDq1DihkEn*!gS1i}wVYzwAB^#&=+6qK@l7lASsw#=`xr-SvQgp-Rq_)fFRCSq~ka z*JK~FePA+B?baDrT8akWJQE&?&^n*W49v`!0OZ(i%#w zg#;bwdY2^|zeU%diuC)-jXY-K>2hMepC9%Ekf2PjeclH6O&&t*@e)85cg6&1U1mIteFdQZg1V z2rrqxK6~o4d!*@uwf*hs6YjUzSQIYX7PxXFIvV+Y*p zC_ZneBEY^;Tf;K2JdIwdzM~gvw_a)PsJ3-!xlR((-9hiyg`COQ)sJfnKU+pv3IPD?;vZTlE?gEG{ z8PAn{e15&_0`~MV0MQpynYR7UK$r)<@xl34C&AMNXA7SBPAWqVK;h?}&@)yh~`X!P2#Ahf> zjRXbxMH~CF0kjR{xb8=;tQ^umM&`LV9A&O^21kSm&gW(WMV+!^UCz`cNn1K!4Z-${ zbd#L6CAsb6l_qrCCWkPAa(N+dVer{wlL(py9@^~I-==yLr{12G0PtOh6_7LAQT-Jv z7bi^cG~GsC@RrN9{%PWh?ItlK%AW?sdb321kd8(@dQ{KVvvo_@smfVdIh(2Mw(E2FC|7(`-fx~e@ShfjiS&wBmCK?^hLYmuj#6Qq{aUgQzTqcInm#G!7{GW;3#Pi)#5xeJWL?+fyeWi4LrPnjA#3p{|Ej8MoC49>E#ZN zWOR+`P#v$&-Kn0q@>pn0xrJ?ls)|bg0I@$%-KbhvmF;xg3H8tS<5i|Z(o+6^7C>EA zMTJdLvLAD2zux2m;e_ynm79C}Z+8yZQ_$GjdgUvfj~(d_M)p8RM)|4gD?G1fUwKRk zc7#5|{_4IyoB?GmF-!^d3eEnTWA6Kl0bK%qw@i?C0w>IYc27jGfy9@Okq3K?Z%Oni z^`2K;n2~M@*#a@*bi4PP+tLLv;Gd$A@#pKj@3?^_N3s2O`TXGEprEZSI|w$e-gtlu zkdjpaYnoADRj|dCJsuRgjLfWtK{HJ9L&3>vYYdkJEVZJ}@9ysGJxSgGk^G0hab3GX zcU>lXqeGJ;;&b6Nzr1M5BaH`U?5EZW`v7#mQD&r(-aWP10Q3O@K@+=YiKneCkwKd` zYWNbSY{V7K@HHS`v(b(TodPP@!`Q|`&P|fFIIbU3R3Cvgq#fVcnH`CuuG7MaS=by2 z8F^@;Y<8C)n-bGRt=4D6#7UL@!}WG`L_Djrx|Grn-I0e5cX*uR*swTI3y#?-R#!>X z%C{fWqmG19l_hU~p9z<7B(_sA<#Vx$hOV$Xxi-Zf-g;^9h$jLOqZJe&7YbzvaV&l( z!SzZ1&v19Os^j~ve8+YpUjFvCqQO-F=e z(Grej`R3>E!m$VLLn~qG%Q@=QG8t*(WG?94(UN_9l=?!rvKw$b{WkB@mAv=V2={LB zf$u{N4-~}HRIDbCLIDF8s>ByWnEvV4VOE#XGxk8F7W*EEDC4g_Xsp$vxs@^so}y?~ z3BDkHVFU*wASXyD!0H}> z&TFJ(xO`x4BVc&d%XiLIGNm-5=W~b3Cu3LqACLq}%5OPpWiv4c$PEX?u24k`2zvu@ zRSwT99y>9omz=b?3YyraTPJ~3s>PvRC%eouDF0rM=C z^W8eH7oAw5w!m-E!7WJ1m8l}eV)T`^2+>F}mbQoDWH=6>tANFj9$H%qUsPn~;#w9j zgM`c41B0yrdt{yQa1zy=%IW>C%kNdtZ{1rfCqb8+YF6z~MOOXGJga@T8i-phJ#AYS zDa1)qae_%1EyN~TfX`KPQ2XmNwOr0eF)tY*bU|aY=^Yxs$4w}AbT&_~0X*kz+QH+;Ee_se*JrW zF7itF(B(@(;HR@JC((ZI_^hA56z4+Z)v&op5Ikw?(n9wHlbM&U_gcBZ1Na zX@U&(5@s}iY#ZKl`zsLU$-17KU_q+3*JdAyy;g2@4+LgEOuyaz-VhYcbcA;y+jgNU zJM-(PUaxDULk{h)gM7?;JT-btWzD=0HnF5Bj3{hSZ#3E^3Lc$KJ)5^%-fie$6 zieC4;Y_Z)g8LASoG7|sY(~Y#T-fE_(fm+FF+c4KKwKUCZakk8K-oH4Fg9fLIF6yiN zULv9wR{ciu(He%KBBOjqlSiAZdcHUm|DPQW=MS-hOsA zMa=GW2gF#k5%t<^Un9} zcYtuQFIAHf z6(u`6)+GS34%)L2XV9em z@mSc%z~YmvGk#Rc_$R8lVnQs6aI(y}7k>MW*N?lVL0O|qxX@5g-nmLHY>qNCzd8j& zW%73vMCtIkm;UDK_2iX*rFv_#vvs`oL)p@mZG(*I{ z0qrTv@-M#K z*0=gTae3dp{-)0HQE*d7q1QN?4+Z+*_J2LqXy5A1#|@2*#S|3*)!39KNyhE;F(5nJ z@0WqDE}{S16E_Ff{N+{@v-8Qlp^(R$Sdn5zNMRDtiMQIUJYvE(V*oZkNVy4ZmRENc zb>zPICgx zQ@wq2C>e0}%d+?-c%f5lI=pX@Oj6bgl$E?ma4PUkhUB$T*CK2AMXaSCzN|pxN=1AV zi)Iex!fM!2Q*rdVrzwRcvxBqy9=aSLz#fJ|2;gEwHE?HW{$K*eGUZkKt zyFvewGE4vmb_T0Uc+T$HNH=oO-@+I6^5-l*`#j-*W6NQMbv|Vm)|aQ=^AYA8oBLNI z?4#I_UyKq1XM%~{c`7dCkz}FjRM!ncIyep32-H~*4GH-_^k^zD zrX(hM<31lMZq%5KseEX74A0>Q$Te*c&_r+5`7g_)C?hLdS^+wbG1}q3UteHxcenr4 zPuT6>Y_t!{GIz*0{L|F)dst|{8u#whP2{@QE#X@kKYM{x_UC$QzU@!A!2p=GZq+GNqnFHU}T_Z zL4=4z7zvMwDbA})esJbyvr5DcL(LK)n_{#;G7V+W70MW|vIE@+!j9j&l}a{}Vq2WkYPOQhOB3bb-awkmXAV z>cRzlEN(&?_fHX5(Z!X$iM~!PE8Thc+BA-$a z$cSNfcaLDv!y*o|Ta^qg6rQoMB(u^jzo+-sZ7Y~h=aNyS`v6D`e_?; z8|vwMf7l8nYF|aN;dv%489ZfI0lpTKgK~BEH6eCMRj=~z$uhk8*r5g%X2E$)$P%{N zIga)2d6|S2*R7uL}tKY(tp)>MJ8SL|p1Ke+e zzXlL2`M#fwS&`+E`+1!HBXrr%Z6_KUEmJVhnc|w}3&H&+`f=0P-ry^J1AUu=Q!V+c zq}Rr4*q#2~@Tt8L4c|lD!fPPOCt&0KnigWS*bae+$o?OH$o7=mgHYHjjXGN|Abc<) zKLz*nJR~CnLw$ZPJa4d3+q;!8B~Ydic!BWnv`VVV$eGTF?1;uQ1wYDaSuueq_UR1t z$OJvb*8CCid|nF}G2|Vx29ow_8r%$Oz9!a8Quza+}l8SN8uI3;53JXHv9}!A`1nt~7m9 z4>npAm5kwd*y7zUPT*d8aCRm#wH%_d6ciD`s_*CYt^W}V-F_FzirmgvLGc+7nxt<9zk}?}b^o<3~tF9_{GC!Xv)0 z@VDD}JG(5r(d$Y^Yf_JIy@l9XmC}!uMkX*S^BsJI{MfQ~Ib%iTzW4h|W;7C<-*yY< zA`AMD>L5V&jNMd%hOIO)lb>(9{mBCMU7i5XlWtzD<<$qwLJf9vRf<2jZHJoIUUJ`~c03fXn$OERbGo0U1yEK$ey3gGf|hsa)yLFXtwM9jU#GNrnYP zUhR$3pP-mgsP2rIaLt_^iEI_;)4IDkJH`wwtiBcIQ^w{KvedKVXUc#2;DEn9Jgk^} zId()`GUVwpAEIZj!Yq?8f?H1$-k|!TfPq18EQ$@IoTwzzO@3`+SoE@`ueBo>Sz6#S%@!zhtz3x*pGK@OGykWOyd3J=a)i{jj`Bu$Ka06{+LR6 z<0{X?v#hMYATC`(yprP+RcrhL5<_%?bd>dbay#7BKGMFv?D$-aoAYD8FtL%{`qyF= z4VR;F{DkhY&nV3=R%4q%jqK#9Lw70wfVc<=bwPS4KzD;s^3!lOvEm0TqQPX_5mru4 z!>t`S9bK1-fC7G8ioRpA$40IA8S3g<#}T6{ooQ$*$l%b}BCwO=hsPb&=YR(N{KzPm z{hOPs0)R@bQpiGCcsViRveOl`NRae8qwFy9s+z8Uuy;}Ib&#C3o7 zZBeqPu{nP1CiNrW^}(w2`=v(LJ$`#<(STQ_7m;7u3a>o7Mf`WJ;}ur_#Zy@S&2)nV>x-cXZ@!OUL^R6QXsLBWBOUPUWS7q5<6>ikN>*;^)s3G4 zL7({OJ)Dn^CP#fy+B?CI@I860%b(mGn|^rdd%;%aE(tTi3M zc-}Z;Ep2U^Ae(Tv@s`E!{)5-=88gS{a)03H{ab(6g)r`a`I`<& z+!*!1+G>0S{^V(o9T-CBx$xzHiqNon)rPK`IQ8<3ze0n1_kReQP!p?@-Ibk%K1Ret zx+MgD$B{WKi=SC5`OVgY`X0YtsJFhZH7j`(VK%bLaGdk|M^=M+EphsIr0~RroaV-i z<@H(Bz;A^)^|3F33g0^@8w;4%lGGW=j&3-jvnp}X1S7|X&4v{z?##jnZ3kT(H}pw2X;YIXSqNn@q-7@c>*vkd?$UzvtD{M>zdS=ZN7_Ll z0p8W!{R{C$PmR5i8E@$9h1W7ndsSTb6_G_JPFymc)aYrLFOa%&ejNKiebK;Mh$Oorm!_m={9Yhz1)YgBlRH0kipZuO&|1tj9P0K`d;uLF0q}jHj;=zTHq+ZrDq}F8ztYKtn63zFP2GS2wz-FSy)(q{!*R8zA@i647%e{Ts~T9 zb!YIE7RI$m^_eC6TsZsPukcffLicL;ggEqHJK$k7_w6}(f5>agqz zm2!0BB!5r%NLC1m6l21${GoSBxB2lXce>1H_Nl9P(He`w_ zE3O@t?CySC?aT_UtmG7a^MUh!QwC{g zY>(Te;_uQfTMY|F)j+Wu0x%GZi>aWE91k?pe)op%ITpUc_!0zQYo#=@>$vSrH0yBq zXSop{Y{b}MU|@VMFU(8ktgskTCxYR(!H}OE*b@Yv?uZM(bhA_rsA;--A8)kb;NbrD zqHb)1^kLr5pQ&Jx7Z@3d7Z~&&k~WZ}u(dQsy*03=hPC}+uiR$k_FW-m5(qv82g4W} z+QrIL{+aH{m@7|l*!lMrN~C9xvHZd%&SdWBPeEZe;1uVP4gBk^5_568{(#Gy+<>Y3 zD=rE?zo;m{pbJ{y;+oFQ-(6=TRs|$922-c#S-#`ec&@NH)yqf&&m%lr!6Tf6BD1*> zRdAlg@!#hmD6RCjPhL)>wv~h}Ej%pd-B8idNXq3L1#7fFo62wzot>kR`@vvi=bFP$8T*n@Jope9t)ra`Z`B>0wKZ-YY{crp$Xb(QaW5pq{=f4J%$6*jc84lVq}czKyj>f9P;XaJ0HC?$N} z7Ue(4Aw03`;J*qbb9B_!oe#}pR~{YYa{US&mRox{H_nj$-9LtxV}WWWBn&^Ge0$=1 zfrBO+Bm&_Y7do#6J;sT!76O=oJUxzl4n{jcs6G1_vI`YEVtUD_VA&^C%^J=~jExP+@&zu0jK30+MvlTG zBEjrW=wI7x-)Sfo1Bq&AND}QDp_O=J!8z}ANdv*6YZ9m8=wAgLE@W4ycAr%^+~XJ$ zH04rGn~i74^?V&mOB?foVtnPP?m-ikKryMSrIfDC*5Zvn{tb6O-BV&3Iqjd%a4{=& zcXpG2v>;5U%J~@wzf19pDWO$k(S!#~&CSp*!J>P1t>G)UZSc6=%WT;D`%;lmRv7qLG?C4atUrkI*>Lp6DO$C#HnG+-~d|R=`lR+-5 zD@8Y4QvG9l%SzGq3;R2C%*r(i-38o(N=Am%E~<2GZ1&o^I)m3E3y4HQIwutw%hD;{ zGYYr{wPxdUBQe>Sz*cqsyHxUr?cq|?3wkysYfSTU^A84&Kp=DR%)T9Me$CWA}Ec~j&!^Qn(v1j9b$}1<$^Kp zsLdgx_EJ^f;Ht$SL8tz?<-gmX&;dYqIH|*Q-o8hW7*| z99clUl(B`8^ie6ptRP-L6a3yQvMz$6HMXp1N+?Mr8MNacn$Uxn>lE5tVfLF(SV^Tx ztlcv{ACL-Wcep?J^AN_!h&^A(Mav<>XBiYTaIpPzZUV@`K(lSp9$q5d5Xc2FBqa z2TBqzquJ<1s*;v?#zYB!QEKCVDIZJNDy}I`a?Hgbfhq9=oxR0}H6SFa_%QWspo$a? z$-$+8+@(TTJsFGU*O%wRk+;8V&0Tvd_9(~K9oI;h7#QTbWt@$_vvtii8(i?1#uau< zKBDvW$K~8*O3)3qxZHACbC2d%Rwg7Dxlt*^8k|?v`)YkXwbeaYa*ZuzCx=715&I-# z@D0_N?0K>ISO8DH>+B~Mk2hKDjrM-sU0D4f6fS-f0< zCqg0WV8`#r!?)=4U?f2HPJ@ZE&S47ae`q@Eps4?^iwh#6bazWjcXxMpceh9@AV_z2 zw}5m@NQX;zcX!A0{ysB5{$_@q9X`AFo_o&gjAgb*VcGSrMw<|F~X3r7*l)p zRg>RnbsFQoN6N^nl<#64w_985imw~kmP_UP?%25;`29PSqCh>c$c}ApZi?&a#VHI+ z#z2TVt7@W_~UI zcmI=?9vsQw1}RBJ#Dmsn{g&6R3>I@1eSIGJ*5%gD{;A#|-^UvOofeVw#(v3{G_^J# zy*_ky^Pple9};s|ozY({k{_Q~D9Wj+!PVupB_k7IW@n{fIAK8R`j%tl&&Q`%Qc+<( z+<^IX*Q1=Ny56VXV5cjry^^@5D=2R}CTGzeiaguB{2Vy267rI?yObN3uIpmX;pnvIP?F?iN874iMd8_4M@i_xINl zHT`6bjZyje@i^>t#))6=Xl_rj*ETnMfXQsz(Qtq4-VrhRRT~8r_d(;eGbChQ;Du_< zzrDwt#Eb(g;rYZHP+YvcaPp`pym;T+_cPi$@S(kq3TNvShVAfr&dDQ?969n@{TwaW zdK|9%gne^*nZ4(lCo%5ixurm6?>Sw!y-&Fcn?yMmc`0sFkCOUhX)a}vmUZVESFdND{`!*E9%2rI`kt6-gTVq=|=f{wMi8vNpJJv z7?jNiZ*#8xud1lt#Na-VVd_K8oqR6E0TKGC6FU>D*cD_h78PujBAV0+j&)s_k+(`lN8XNVeL z7(NPPz$_drP)pN_PW>Dx*R64>$!o1frSg~518Awwj->Za3#O6q2SkW0!i-dYD71#0*o;;n9Q!Jt|sB;js=?qcs`^( zJb1ghOb5q^1PT{kY1}+KF6S+YFZ=Kv;}R1`e{X|(LfOV)Rp??LMu!6|kz~d`X73X*2EzzR+C&puOL0+OR%n%*=dVd? zMuz{XQE=Y6dHwHMCx#P$$KfHJwj%6ZnA5eYy+`4v zK}ko&Dwy)?e_wTKe)5|d21X3EAfV2%3o^YT8j_cu#lUXxqL7k?8;_-VHBh2)h-x9H zhao4eK)>rjwSUO=)D)MlC1GH~-JpOaXMi52K_2H<_zkJ~M zu_caj19=Z&2w6gej#nM%`~tr_>(uHeRHn;htH?3W5L`{CzA|d~)}?HbTQ5EI+hbgZ z^=ECAcuz?o79dZ{#N$Yv;q3k>&BV2;S6ikl-f^JG!48SSlfGV7@xqX~P%J{N;|Mzv z9kf!9Ce7hMsNl0x_9)*kQT?Y}{D*t#?XDAYnF`UV?<%|~t7wLZ-T>dsxXn~qy_%)k zI^M|(V`B02PqxH*qg{T$ea!6bTMlkZ7pLB8xheLv(>L2Z2a55}(G^t zNB!{98|iZ!T56)9HV=2Djs0*3J!)~V(TD1AA$pxjy}uJ{!CaCRb)(?WU-;W%*#{{p z`;czDZzgPE0TyfAJ1O|VLME&nd_i_iPNoj3c00Se?nGyI^oH}k4*X7J4Ot55^ndkM zAZV9q&5IAa(3wy0(A4y$&-q3uw|E$CPec1A3B43S^ zbb(?l+wfLxq48}*Hn^~s%+ZtJ}AE_5xY{Y>@CxM#?X{_gTclMFsPVtr$!^~z1a zhlrT~A;L^f3+JaA<#y$gd|@ zPH!BUhE,DJ$lG0c*mIPs{?L~cJ2>HkR}5&9#>XyPyDM-6XIvQ_^vF3OzA*c4{4 zpG6rdMR7QyAczq$_gBvM)(|(-kIvj^X^s* zmXZ3{bFt5}|3pS7!Tt8%B4DX8sq!m)X!d7}FKP0hW+<~P&!_vS`f$t+RUfG(SL`Zh za%;zf9KK4Me*!GzxFA9UGlmyAr4*)7?y6!vt%EnLV?}LKP_Oa5wv#*y)d6FLp^&L# ztLE^G+Dh!~qesu+cveRFeH|xKRXSOf1Nrt>ShUhVC7}RjkUpuiC?V`KNPamgTL7I; zxv7qfe3$KitqZ_my<^3z z#yb_~Z~;P=me^>aLUv0AE6>lGAP6IQ+B8u(^7Pnv>hiF~?pJ?FxUl%%uvIK3){8M@ z%9|VDFq=}Cd*yJ3S3BMwqes@!=!G&^EzEZEXKsJ^D zhcE1C#4mj~HGWpR#*4#};WaZ;v3sU*`t|i|6L_&A*7N+pC%>mb z3m(@5jO6nt*UsEuzleaFxW=^D+1(vf&{Kf;+(j>XdTC{4VQwxe_!i8_%%o-*1Nd=z zAjwh6r~QFvJUVi1;zIyJ9T3+OKv&ts!~`xcWgMuQ+ZoT61zc2?QYd9e?9+Mlsfo3< zw6ilVD4?!&-K7I(&D6$hz*P}e@X$ndIEkYCqM{}C#$biv>3rG0W__@*U}?0d zQ8UzlZNxe0bNb-TXlHJIeqcJMO3ZMfmbR{m18M*2D*hW+S8iWl-vmvy+-VzTR!-4E zHD`AI*wv>Sao}1IR4PSWjfBTWzI=J~-+8*H!@x{D+loH~{oPx`j2?hZ7YQme!C=xg zI2cN!Y5~gG@+IGI?CtgKj4A?%>_~a%3%zcG188w}e>$>cRMFA-sm3GHvMihgd<@{= z@GYJy`uypV@odA>LFdT69>liNKWPiB;O zI99daGv3PAO??>Q958%o8hAd(y1y*G*uOH)z21EbHySCgz!o;)k5MVvp5TXR#%LWh zjnPS+Of(26YBm+)7|yTLMd+m16B~4zdLqBlAgX(DJaAZK_h1`5n3WocnV+2*{kkA+*6y0H zvU3v4E-q2#Kj$2vOtlNSS#uw%7;(zR3z!m7kW}W!v}E14J`z!$57@16Iyl|RKRN1I zg5ZU~5sw^I%9&fWJXkT7h)%DtRz$`A+B6qoPgc=k1YG*{{f$ ziyTpDdzZg4_A2n)QTfZ~_?xC>GE=zF6olrZQk5fTS?IwA`T1*32h}XZm@-pu5mTpw zDl&y^r6;R*m60P1@Z=$}Y(1{r2=kmv3&XnA@NW6fewQ)F0+WHvwe=*gd;H`>4&R<( za!w~nYJKX+F>>mEN6rj!xRK3y&M{k9e+p0wP$=&A4i1TBcOc?9iO7ZR$ zsVZ&5Yy?Rfh=mg})w^4$uv4HJgu4XfQU#*OLm2+emYXfdhjV#6P5csU!763Ny-(Lrz$FlebJywsm|GWgsrE`Su>{x(y8SNSqOk?BR;BVnHzOZL+ z@(Z)e93J?ot1bpO)Gp26#B%@1b9O#o1IJPk+W6mo&pI2MjK;RM@Ngw+ct=M^+O1#M zEfuoKDYzrS@ei`FAS2R^NK0pX_k8Ms=gJ{#ZDV6R+e+;GvSeOSQJKo=&p|VYdv!(q z0UjREQv)B(r;nEIiB3)&>=xRPl!J~&d;sArOpR>arCVO3QYX0i2X{NajKK5mBc(hk z%D+Q#8@$tttD9Aq^(92Wv?q}&DRub7!GXu=p-HI_v2k&~2qzUw(lxo5_>F}4!E5^I zp}x}RW|o{_C0$5e{4LtUCA}=9Iah^w82GkyzX;f2INP2wwAzfJ(LR|`t`rv*p;yX;G&d6{GqPNsQ%}jz zC*Ky3hHbpLa6<|3`WgHN);=k!&jAhDoRl@5#o@)O;+Vc<$U3J{HdKy*)F}h|#gwmv z-i{1{W3?|SfGlZ=|F0IAET1AU8n;&f^$o8j9eA3&v-qV{t>HDk>_q4b^ab(E*t)S{ zazYFs&}2Pxbj#P7Tn}@T+Vd8)h7P2xFxmv4A+~N)MH))W3#KN<2oBlp(Qn=R-bDPC zlwX0kbOFh~kN)&74#r zYW-GD*wkA$96wZxJ87pI_DUkxK6Bq4J93r+VIB#EgEMHX$ic?-pmeO%aw8bW;gl2R zwBCl$o;|Z}$}Mf|aC~{yFbD~%Q8_9?7ez$V7CAmCnwdoIv0huOhkwTE%8l*Iq{^ze zw<)JgVem+Kp`13>_rP$(^T$a5kVj;yhrKqIwWkWp5fJISLqXZ;s#l$d%j@k`I_SjT zQK9i*z;rr0NO$wNNy}LDa@!M+T{xg*IZgUEUnvw2F|k2Q)(;EOT9xq4Twk>QR~wT8 zjc6e7OD+R#H1_TJo6kBti8*ilha&b(`o!MFBzqILW8L`p21ll2xgPHDm(d-DrgJ5U zJ~Ds;aBxFJ;iQS{{teGpe~*ZFxFA1*0X{2T;IF)5+3~Sd^pwWt(K(^!n!sm)IU=>U z8V0r+WO+UWWCo32hPCU=c#5M}2`+r(QgFI1?iooErJaFj%9}s+^>iENU1Z*c-&>U} zY993^Sq3ul!i0f6qrAR%mt%*9F}_tWhJqeMhWyC~WfCkZG7+1>L7;q4yVDv<^45^T zMGxgR{6LAWo)X3#ScE9Y33?1W9~3+8w+QSJ`K6edUQmRm%m0F0QlUto9HsgF15Lut ztjkM`F;Zfx+R&Xf=~9Q4Q&Ksm*KdbJ@?2=9JwJw zd%4ls*9cjZJ%^LO^UFx7B*M{BLIqR;qzrlw42V!&Yzn!7cgv-p=b2+=SBrBGrc<&+ zQ%RVutFO{YzNHps49X&Y{<#JJjvCYE6P%WIIz+jOq`hN+tpRjKTE?)(Ck2zU#*;zS z=@3re%THl(Fn@7iQgCQk;!EIWf<6C(!($}{{;@HZOFy}20O!##PA6MN1pGS*tf7CK zk_6%J{#{!)wR1*>9`-3`>4m~Ty*e9w{m~rnxsWq`ks~o{q=An>C~4z@|5KY#{+WdN z=A~Iru!zD(m^!kMo-MHsp(QKV)O_q7x*IE!bhV`U)@Z4)bL32XeF~EeVkg%=+eD1A1p4=H@VNslp^>d&$$8!-R z3}cC@DDFdB!h`AN%R2xEo>qbyUC$W~{=U8Mz$Tf%|;>_wE>nt?F$F zjZINe32vy~P?KkV&F{vX(z48qf{!pT&}4jYnQOAze*DQd1$peSw4aK;wFgxcJod^V zZrl|5n9c`xc=;T%b=>u6w_x)3jv`Q;olENpq(;qfO~}UJ_7UX2#f92p;Ra*{LH`?g z2mN8Q*T(aLPgo>-hg^V}+l-er>Kc8Z=v3x~EAVqjEl&W1sYy?Ow>Z zhc80G!}?Z&&E>n%5}Q~hN}EWQe7v!B4x>@2FQjeFPSdBRB=Wj6ws#87XZ^FY@S!Bz zhyH{Vz}Kf!nFVj@m^#6CU8|MgYx96X8$~GhXL2}kbWuYk#W2eM8@BeX40uklUf+lw zl%yR<7(C2pH@OLX0DDJ9CP8S})t@d%(!c;p)?7=FA>ShuC?6j~dY4JaU&rCDYOwS( zuQi!jxr?vN^D|4a;{oyUOSYu(kcmmg+n+oz z!a~tm;~idsTfFl=x7X4dmD)cg%Ec>H@*!5rwrW1LyP{rRUY`E5#h(rM-h)}#r8zgc z;Y4e+LOXuG<`@(D?Nj9T;lA?KZ_CryjnP$qDbSjhh{?Xx9^X|v{uGv%r_xO>!d3ms zWmBI9RKT%}(EjPs(B14+VNflJ&1kTG-mm#@dAa9&Gi0vwl;pJSk*L+`QM>9Hq`O-Hsf>5u+Pv){bG7>Q}BVpjRuld!}3pA~z|Hm*2BlEuT8SW>3&5Ra! z;MJb@+}cfE+uD*+RfPxBvhi!jW>D}ubRr@d3kwD!B8LnCLPakxtp4as$>Pa%qf;rT zGitw=4UMIxjQx`%cBbCge+vu3*3Rs%K#gNzNrU7!tb{gD5A z=_IAo$&q=He6;C91PG01jLg-T-fcem??%q9k_%RS3w$3{WB-T_?g*%fWyyVgUVx|q z-}$&)HQ#WI3r2{sC_>$@x0!mS#?YcC5hS!!n9^o~Rf_eJ*2IMDL7do`7iwF&k{+6F`0>)Nsa1yOb#x-*h7JX; zU@wwHe9C+;LboJNRX484u?wuv1eK-D+7Z8f&9-I~nOSw=M~*)$A(-4#BOT8za7dgGag~36 zJsm9GIF`cj$*e89%Q*a}LU}P)YueWEJ2_pV(8zX*^AOcNZy{bll{2xn4UNpCNNTXy zbMv}bygA=!i2i4Dosv4NESOU@wKDS~Kb|nYNFsMn`Rw_mmJ&l*Umo3H#bIh{3KSNA zzG7+&e!kZc+ojgzVNgLIEA>fDa~5N|E0A^qg=b~D`{z|b=$>Ic|k$J#oZ>|T>T*-;A;gtcHBpuIJ~1$%&<6K zPzN4D$M}p483hF>ZEf!V;BWpfmvnjg`P{w_(5#knn+x?~JiM*{(WD>EOQi}`EXK6D zviL)wv^xDLiWT(PU}a&lyuZNvKbm2e(xhTwB%u-e6Berc_!iV5Kp`2e_XdGxRijE< z4g}8tgSkSxaju$>CeKR9!*RX?8Zb)bf}5M)K|^1&kLragN)%3z{6qsConu?prm1}V zaU*qTG9M8m-kN9Q!H0ieD8ahQ|B;S_v<7{sr3+&B=&Sfcxke@V^3N8esPi4p z_l;|~N8P{74P(C=nMn*w-B7m|cVY3-zmatG{#b=IIk^xn$6!8^=j1ZJt(-h-)bbIm zl#P&I5!yCz-BK|BtlikKIUzbLGM4h7L4j}IR(Va3;*G1Vs~at%y2mi&3r(awUNa&C zY8Kn>G~#@by3HVehQwCO`BwIT(BiFAW&L}4H*Jg`mcfTAYLqKfPQo~80*J?$f_#=A zvN?v4mk&SZI9y+4ZFmhH&MK)42~CQq-3UgT^;Z zTY-%9r52;XKeTjpU7pU&d0<1y8XMi$_pCsk5&OHaK(E5jwZ~=4H{iN$DL3`zVSaS^ zgQKB`0wF7xZh+{MR;w|TBr-0_U%wZk-t2aJT5q*)*s7L&G3n|<-}$jWe7KZkh zVE-g_hQD2n%@_DTFF;oqJ1gkas2t7wM70B1S&0luMn_eK0t@Olzzb8}3^==R7A3>O z@igs&MPXV9&w;=yZxlTsU9iwKIWvbh51R~(mzYdcI57|@2Ic5XCX8X>8OKoXI!3hu76X-PwHm9AF_1cNzbvpqId zy4l^wOrEb&qW_1ZDuQrwyS3Fr-5ifLWS+-O!N%CWub^<9B)}( z0*3g3jII?md)p>j*B_$GXeTPKFHDCXW81{z#O6a~Qt<+rVkk=2HhcSfq7aCrp(HUs zp)Vz+qo_6AibM!E&Xqoq1zIU+fFNitB!HLYw!m^3`MjN?JGgImWC0nj{i%=pS99?; z)`e@cGlN>#UXGbpt4*H@4|?ACQpBoiKc}?d9+l$TZ`n|Z(yqQySnJ-O^R2bV z4Fv1|?xFaHh10%C0a2L`$qxA{rQA)Y1hLBb^S^y5sG_Mr2eL~kx2lEM=Kj8nt}a!v zqJelmBv09v+w(IN(95&t>Ohw-t*S4nF%$+S0#n|>VH&sJ*2nP|J49apS2pli5eQ}o zc^!OHNQ$oF#Y>d()rXIC4`%-t*I(pnbo%b)VO_w4D#-c8E$_SoZ_<&hYkE0$4aE?A zd@BiHWqyO6IFg`F6b(MGsJZ8o~>JUM?(eIeW25NXEC4$CX{h#6=%9<{W$9CS2% zp|h}18O!VlmB|-jNG6T{Ffh6$RTz_%1Zt}bD=N}%8j#dz>uIKIQh#Ll`#tbyW@dg` zkrD3wQ=#|Uj-z8`GnI`Si;hm##uh(jc-x8%)=9^}09Ci4qVQJ-D)6LSY{LWRU|y?k z7hP4G6!}=ofBDvsH9}1Y{|K{cfCJJS_JTIoI zcip-I?!S6_U+$!zo?XwbR{Jh$fC({JjJB|$AqjVKH*fmjXE=UzVj`yHST8z0FX$(F z{Q;1(l@k+7OWk$*s^9`DuVV7CkOH%*g{RhNU5>$^3EV^wYc|Po@oQ41ZLwXC2E;dg z<2Sa<#^;<-pSDkV2ZyM)!WEHOIVhpOMQOZK$3#rPQm@^ru^!k`Q6TO_!r76hO-%be zLEB9pQ0-A&)F>&fQABEgQIn57|1zZmkRc?->%w=B-mW`t&}3eq)ZpLY^-@b}L{%p? zDd~4moNQujJO+xC;XWb>Ra%=(6udJtGXwbmFBm9LQQh?QoaOlV82p;+*%~Su+OHbV zOC+E|R##WAwcoB3ANhfV3n2{8``=a&m9Vg|R4(SI#?=>oz_KBS)qRjhfk7gA%F=IL z*&Rxh-P+y;y~|^+gB1l;#w9)XT>?tiWnB{p z`lmgF)GW5HZADQMHkA35IawFAfrNN(?XgC-OA>j+_?HB;qEhU|Wni7tmAdxm9Y{t45?4n`pL^sL5nLjXaz1o}fcZJ)c1r_D{m* zI{PoN*qmAZqNzekmU3Jwf>HHo#lR<)Y_VA&E^CA~+I9$0ZK49<0@b&zWs4;($^i^W19(@3B&g(`LLL38LBT)Q~HP!ybGCpu_Z5* zP_*==a&U$s(0+O7WuS?&_}|)1V*n(PoB4E z6|%yLjd8zD9CXrnx!liys(}RT5M-v3#uk*4Y!)3@s5NyQROMGpj;|-I4pizU#uUYk z{Z6asj)gTA%OVPyb|%Zg6kyWt$pxMdmj=)Y4~Im|LK4*%9lbVOCAc+`I^1?~p*uA* z1(d-ww|4y7+3z-q{JvV<^MiE+#gq%riQGCV&LKQmxrU;v^^*MIA> zB(d+vSZ0-~hQ{Fbu;$%fzTkQG>pe68eT|o@?#{JbYyUFr{2PWj3>dt9%ggb1clZT` zJHI`Ly$pP>#aFyfO$*R)EA5Z%md=RPG-gon@gs{v-tUeZf;e$Xx;D5~=n)VeHMvq{ z5-u8oQvg|XrPen!GAbHoOyQU`oX-{(E)90tJ@w@tDL9v0m)HusTg-v+Dr5s-Hv+|) z5vv_H2-ohT6}smviMROgVLr!_id%^F$x2HPQBlxj&ow#CIO+%)8&HIu2pk>TIafED z-aO$Hu+ZGb$w;@Vo9H3H2T9yH3w9#4qmB7ykEG1K0e!V&h2++I3C~ihp{V|hIENf{ z!YH|w9rzxMl6FU*weFYH1Rmy5D?X1Xc_3S%Uy=WjAFxE&o9>dbS%*@qYt1GnjekN# znSb38SL3(Q^C37RIu@}PCZCoFc@Eq~oPj|J${k61IeuRB$!`aKh257-mm!B_a-7#t z9e$Q(GaO#n$fTktFP)DE^0Q#jK8JHBx7o)z;yX@xK7dwu*+BVkEx0O?kNElh280u? z1lPfRjfN|g`-wGoCf1cYk{N%4nk&^>WIFnad!KQbd?-EXk^V|RETQ#Ig%p)8Px+=y zne9vTSA=hp1=#wL%hVA%rlJ?mxB0=-Jb3WwXAxI<0*wxH*#6Z-B6CkD3pTC6KSgC> ztf=kGo)(;^c4qQ9i@c5`DZ;;Tl^`_#h}c)`bFo*X-Ma>neAAtxbG^lQi?Y_&=1E)k zx@q?bGnhAfVzCs8@@Beo?|bQyHg{_5ObLUB>JY4atRvg^H>^W6^2wjQJ`mD>R3(w1 zx?WxOWhBNtTv{dDMZzjGQz1_t(E{7|ZQ$ z9<(1mUYQ<@)Eq7PBGIs1Q8MfBOWsgbd-k)?4joFhC57slL{(+;0xsg*94^66s6E zvk@7xCI>vZKts22JMX21D!VW?|DopSe&%|S}4?2u$uRm;e(zP>R1Y{9>| z{`#BojZyg;2f;PBpYmWztx_IuqMawP#Eq;?g`aNsbI@Z43*`)nq(wb>Gvz<3Fkqx) zvEt*uUF&vEqBnwzAt?0?=hXC*sCyBS`4kpdEMkxWwb+ksp6A>h_uC&RtHKC$W^+2dGKu7~ zvE;L1BV__LN`>dAB^6b%@d~k`g{T(Fd1GWKdMhHtpi8`_)K9LZCWAP_y7 zDG||y-&5%Gl))oC4;{6I?`0)zRdZk^vij4tQ%#TUBJF>d|Bwew39R1BT4GQwI$i@(pGEU0CXn%xe?s$^ zazCHmZ~agP&}7IAQ_lLke>49^Ayp2)jqE=wKK1k6_{IuJ1rfW~%V!9F!OmRy=Tb`2 zKh%v@uL7p!&872CZ}Ln6wJv-4z;h)g1}Zs?#_w4ht*lR&BKa{35#=(tlIpgg2?*>` z*}cgg!T+%`LzcA3-?DkDX&%}kTi~$C&9Ch5Rr)-@Ze`s57?M0!=g#di@BL|ch-AM{ z=%ZyRi6og+>_-=#g%HrY0tPF9a+si>vF>x!YrI zoAPw45?kYgE9a~05-SH5CIwwQUT0U2ywVy((BJtm3NPK3BTrQL#Bj#1ilBl=PYJo~KwHx~;L4e{0jSQ;wljRe@$u-!#`(f1dxxql_6uq^zMa`i zOMF>AF7N;q&UZca<;%$vVmhZIzy<=8jshTXLce|cA8FIEvmL%tL)K&i@#Q>P5n@%( z*I>pB6lr+CM1}fucU}WDJ;u9H$Ca(A(#zhzqvnHg_Zb41;~RfnJvSpY?{?DPQYX@y znB+AlX9cF0!>bneuJ4=-X&MrV(GCoZ3{X*W1Vnh>!v(;+m-Gg2=Ef;=GP^Cd^TnL{ zlF3FXA0g4PUZYHmxi1?aL8+Y7wI*705PhZBeJ0pPf zc{s!0H>v1oIZ^PTsH4f5JZm@Wk$ZGBa%v{=yz4#jZ>M!=7FL$jP9vh$FYV(iryj1L z99E4M^Za}_mB*cOZ0tm|ud)jl{lR``1Q)!9!9+UE`Hp96o(0|%u!aoATcTlL3{01E zdOjWtIz3#y1IL9y%j{>w=A}0SKcf|M%F3c#cQ>>3VjZml`#1>c3NF z6Ip1C9a&mI<297DYbS^qK%j29_tz2KAZAo@S?@Q@HYgV*i$_2Y^82^cz2r=6>a=A} zfE$(bYuqtMpcAS~PGWC_WNT)pZq`jHo@yxgg0meW<@J7@!dYtz+VLVd9&`IbC5n}`|m#4)P&J)Fn+Nep33hHD=tnk zHO>BSaZwDg&}`}#{z&W}n_lga9NF1(`8`2bR)Wo-DGYEITwKHcgD&4Xc8oasJwlHQ zT+#uJLqRvaYaNxDGU(<;;l{@!;a`l=7ry!|T~5R_Lj!{o02>MkT+J@5QVb=Ls&2r; z8Sm>0Ld9iIyV`>GySd`c;PH#(zNA9K#vTP#R7#~pL|UVAbd;=>DSIgpA7>+~?_CCM z)!U4{*$Tq>L{fhz9e)ws6i{H2vMMBBoT|GBc1BSgQmLe=ODbz1u0SzNB_R5gFZmGQ z@Y17{iixN@qknjR%IsCaIU8-JtT{6j~Jk>+$CeQ4ZsO%!qUA#Rxp$uYnZTA9#A)HwH zeD%YaG->}B@#4untC8~Js(kF!ztjTRw;s^N?-7OdUSqf;T#E89*6q;SH56~U)beH& zbN2L*%6^3yR;AYCDhM-dWsi87W!@LphUyT@I{QEkq1LT@J^~0)C(756fxV|Ljci@X zt2AdeO!ho~DgPggaE0wHfe!(FsJE6`qozw2%%23i*QtTE$#nATuVZ;u?swwtQjlet z?&3%?&YGv(UFZ=lLivNgWISmYTdTiF9E_<;lf#I-p62$yFSV-)fp-aHYc?E2pb+bO z+(|Ypf@8df*UseS21rSIJ@3)<^jX#uQ{GC69fW?~Hz;7^tarUyGv_$f3Qld#n8x3kn4a&+ zJ!K>f%NtyW1BoJLPGauAR+g>ZYfZB@_ZRW1)Q?kE>^xvo$yKqzskpu%Nv|yZMJP+h zN;&#-O;cAOzquiPKODqwm?R6;Tu(Jsi-m~?3XLs>|5;><>z{9=`e=AndIy{dzey$3%jJaHam&wASRe1I&U>JK`3vcFHOEkn$hDU4_adB1%HZE0_MBnSLDeZP=*R zxrWk2foaGA^HyOuZRZ}>^1=z;#dxR>$L3>N3CJ`Hu+Njvw9VXL_0l62=QpPZweN!k zH`Vs2^s`mL?;O;2YLiow(XGG61Ec1^zUktSJUKB3j+!kO8f|a&oZM=KA@h=+#(~y) zU%oVw+f@+HeA(%nQs>F*dv9WID!ly+tAYj}TrcTBDf;*=`qQJqhviJ)5p9f~aYLPP z#_Z=9Yu0|?mv*m@#MnxLOizottG@-_(vdX$eojLoe3ib^O-=1aXH-*Dk-@RgWM4#J z@}b-0A2GuWkdAp3FOENhpYtmh_QF!16imznRW+rtG(`Bj{@tq0%}0v+W^=vJPTL8Y zn%@mMRg#0t1$J?cyG)LdPXw6+OMOq7iV`PS_CSn8#o(qLK-ct;+!)7m`^SbykFBs`KK;N= zz{}_KvT3{Pw9|{|#>1axKv5i}zZp6zJKs6`=fTb0wR>hP__0uZPn>?$&pqK-v1()O zrPj^eoz-V6$qW>*3={h1?kSs&!Z3t;2HWeenR^Yg5*E8`g()8 zddfcpA-9C=BOdcRt>HxTH^dC8nn=rz{$~ZpWi29!mC|Z-zyz0OkPmP^n8F1^^H}O+ z@%>*$gEi#S(+!X%P594wesn|tM7IwgJ{S)r41S_2c6xq53=5b2x9_%h?Il`mu?huL zvCzasc5Ur>4D4hjP0i^1eDra_S6Leyyc8aHG(<%CyT`|~5msHm-0SY+`34vru3H1v zBcq=|lPOxZ?~B0nv^yXV8RD=Hg&YjQUR=t|wVAWy-d?2gI z-h2J<@Nf3Z6JFKxi6}q_A|Z@8fAPQNe0ey>1~erkWMoc|pYCnBrmL>4HNS0qF26admxdY;G=TxQcv8@YZg%Bl5p@5rm&Drl|b|o+b_NuFI=p43&b)%i*uD&D)+X z98(1Sk&cfEL3gyVwRP8Mx-@XypkQGsNJ>(H`lGJy?f}E~3uwpAT6D|eHDdMG&g0b^ z|JMI(Hdl;NR{a7Rt=$*58v6L~ar9X?!<`eW8DSObN z+I@yxlQR;VH5tK)Xnp0$+dnE4Abqb~&N_4dW^wEL&Fx`0fKkuV)TezD=HcQ{kIwB}XeU&%$z1TbYBj>-=)X7G1408_HIUkNvDd z^9vo?Db*@mA-|A&TRwH!$#pR2ROXcYAB#sK~MojalT+;#CVoAH;`D(=;~rT3S%+6b9#^-|pF~ zJ6+bB!U%9A^<91R!Xt`GOVmv_T{nyTkFaUIzP5V9 z?L>@fxD5;yM9Lh2BN>hn@A4o-&vCm_MURZ{+z>}v`$-Y~J}GUu`rN(fPK^@T^zy3i z8nQSO9@z<>DM0I(Y-OOZ1EPtCz8-nnTPn^-%>~RJ=XiT6*Nw`$6>o# z#CY)d1AGhFdB$9>V?k_c)`P8jK?=wU9Z0>E99z*GTR$}rxQjb~b&c0A>Ge&qL)5mW zT`$+ZQAX^4-CT{Le0RezLvEld==v8jnzlboF5Ri!-JVWy_oJ0G_G8A1ce?g)9~paK zkm~I}K9rpF+D}Qg*eAKzR|L!cKd7>G%!Ixm=5bdovSkzJ{(=3U7eKWi^d~J0%@h-D zwmK>(si+x?=u1YzZ~Wa|?HZg%dR5K>UG;rm33&uwFOZ*hhZpbv!go?V8*r$U2EBtX zicgI1pDK0s={#js$ZGp@SaqCNS4U6^1FG=`e{aJN4AK})7S;RQ%qPRVk0zs}Oq-eE z`1mnQtHJI+A}(;uB?vwlV^0>3?+j8k=0L0>JSty1q=TPUjYJ8xdQ#~nETWy!qODu~ z1|s*fD_*aw{Efk*d2=c_P-7ZWQ&(s9H*ET7)jvl6^aT|k-}WQC><2`|?U(0|KzsR8(q^P{#>-d4`<)L?OxVcCmd{uFalbz7yak^?pum~PRBr?a15A_{GC<3{ zn}<(VruG^bqcwhAxs-Z`8w<%tjd9^8CB(PI*Qm%674@a___e#Su_Gj_`W_msAb>!Z zm#%2!XEz9~wM%RbM=MUQ71hTYPTrdxItsPv2EM7ZQE#)#V6LtR9FX~Oo~XC zDwvAb$PD@Uv=av&FP!no8X>=aH*9T~-k_k2v}?=RdPZ7Sf9NY1-G z33=M>na%OAf|#VWHkov;7(lE%QMQoi(UwT5{LPAU)Zlhf?++g>I z+2IeL`Bzu9*R7NC@nOPKQ98eL8Esn(QTK{tWjLq;z^>m_!AiIJ2rlA5*up@g%G!nP z_Y%9Hlb$t|vo$<#4OaJRs29vUP&VS=uope8iY;|5$JD9dPbs+h(QjXr;$hYzBi*Jn7M3h~+a_Y_qx|6&E zRd~|Mn$%pgdBI8^#)KPH>q;^DQ3wIbKb+~R#ztl=j`5jrDo3k^jiaEN+8)4Ve*on% zB~;eE>GW8J6L>ZsOB)KSLgyOx;GRFUnquNK1zlLF%SLgqNw9cg&*@wIwN1_N_>8;C zCos$W-%l;5n5-@7tnt)_49444Cel2Anq*B9ApOSdFoL^q)h*(QE08Ol!@2+A|BG&O zsW6|S9Q2#FyLJIaXug^iV0-$WjuoX>T1r+EQ1TYy7Ne3wC;&VQ=n}>A(Lx^q3K{Ru zdC+6Klby?W8|4TiYjJ7gG4V2b+x+fEh-n4(61%8;rk0!t8(~f`n-M6DilHqgXG)aR z&_cB{39byl10rtp&V^uBMJV8IO)psr2O?OWo-|SpGB5=%7Aj$?h$5XERoGUY7}D;B zUX}SPEQ~_PSsAKr^uWapJJ5$q5VoNA#n}Dk*4gkO(fQa$-Qh!tiz^#H+`?e#0SrLG z3GKHE2mzXynpS^HZgyc)TV%stA4kB%{h4r#W}6v&Y0QQ|#R3u^SsdWoPjF&S1+qED-jIj+=qZO2 z+1yAt+SD1Dt1k<%1hfDC#dLJQ#v2O*by+}3mWm6e=L%ZM9dKA6P94{1^r2D`6p~0I z*zC6R`C9P2_xfN!oGuq`@i2NLdh~Y=H?1gfJP^XhPM%^JdTKzP#%-Nkjdtd2Jc5y< zbBoGFox1s0f^r#}nO~igRMZ2Uva*CHV(2Jjp^A!H^4iudJF6ncHp+1x#F4{GH2eE? z(v=#VsWm-3R?D$Jv!5?(J$Pc zZB-s&&+mUK{oadfg+;BcQKQOaGn=!bwpBYD=%Vor=Jd?|pK$f{_KJ#%g8;xMAoaMjcs;jW<=Y*Yv@1s3is9de`M0MhzO||T;4H&$2n?UbFuH<2B{} zJ)SmNG}@dXW@qbA_c564&cSJDXg%I<&^)}n9FHD#>GXJHfdH&>$%OGnyXwHOe*gS@ z_Qe|8&1Lo0%{eoD;d~?zJ_mTHO5stainL1wCVDDIHx5K#~pi-NFLZNlzD*$-$RZDgbGgJ zSWdezq}Ax@5^UO@?AC3geqbu2B;XJR{9Z=|1wp1G`7I#CYS6pU`m|ZK*zAE);T&&pqZikblxycXI-^r&uFQH>i@on^B)QI;PIk^gp|zjeAy7+ z>)7!9JIde^^v>sc{o8 z7|%0|lSY$z9b5|T+KZfY3Vg5AaHQmg$*X6(|E<#qZSbsP6)fQ}N|1(a^|2v}f)rQK zZZ-tYxRg`!CI%TAh|wkH&tp+?WeCn>jQ%TC{oxD)*O4n_to2(hItCT*J%>;Nyl4@I zi%Kg_ixO}inT$mmRX<&oeK9t#$h#Ci7mX6KGeu@o!8Kp|H3zxEJCl%a%3%BW@OG)=k!_xU?h+)>eKnZ>0{{ z2l|ZChM=-4RGy%^ToTGsk+>z zF~7;PTFzlEi&|i?|1UNC`1OZ%a`BG|Z8TX$J=P^T(}KptyIx`DG75Xb3p++4u}T{n zMXgawJF8&|OvE2za=7iIhZm6?jYmvkQ9QMV`0jQ^^NUtqHF9`8eHjn1oSx@Y1r~&4 zY@puaIPmA(lYdEXfbfCyUOT0djZhxDJns#)kIy==VyyHtK%%3Q>wJ3RueY2>Ip4UW z#g5MC50wLI1C6>r4~1c1BTweHdhQllqhdnu z>G2CX%6;Qxx8F4D`wKC0fR2iaj)ILXV{VRzj*ecb|HW|C^F`TWN4B%OE2VRe>gL;w z5iK?hu#m<^6EV_Qtswyn+&7Y>R8?kkJ02k67g`<1` zJ>?f4UW3R51%JOsriE4NLsqu6W%GA^$^#Z3pwp(VxgM}#z+jl0lR?UEKk)NUFGlwe z@^>`q4@j@}Sg(|5-zSRKW>(Tz$ngI(Ir7ZpaS6bLODHEV2R zoKz$hO(ZJf~zHWK1Q$jEIa*I2`;!$ZCKtg!Oz6zmSE4bk=%!kt@-mqa@#BCoo%;xmmyKExF$uR5Ee~K!aQD!YfsL*N~6%m_w z;8dj%EJK+m<_wKFwIKbTSSo6Bc|pnvV>Y({o?5SG0j%9mJJg&p#?;xoxj1)<0jk920R^w7v>fz>+C9)iNX2-C7&&gA z_x3G|6hDUOa)iP7W_~nderpmdTNchzXK@H8ING_9+mi)IEvhv~=!d*IhqyuHW}d8+ zIdo_I;J#V!-Z0+d392sbsr!q%#*~&H@d1pZn3KLFDcn%ZGuHQoIiZ5Ti;OuZHo20| zyyqaFo>FJ&$MDi+ggoWCB$cZD;p1Jal1O6*=9K0o?ORIp#CO4;vtX?$wvf#@UACmFNss{!BAAqS z!5Zf>Iv`PBuXH^@U9tSW=lOntAwJr!X64qHHb$1_toYzkR_9t<(BkaDM<(x2UP1>? zc3=a77fodnDDXMSR6++w^m1?T8I-TU`jlsNnO~5bY;`^o(A-@>D~9t>I`TXXn6dX^=%1>RV!*I>&GUgxA|yXYWa<$!HQY2K1g ztzz+K9j1vZTs9r1mn-TP)~<;9$aU`SXY%O)#kXBr@9o!7~a z@z0%GYl4*RE7_AP^;i|jg}p+dsiJ(U8prit+FZm(Zp9sTS{rZ3+`SffcyFaG->yLza~PvIoELvbWgg;mP5ZbM`&^Sj~6%=wMY(BhBnI|2mc^xtVvL^Jmm zZQb0#Iq(mJ%92FeI0u3g?G%XMQDVdkD-SHm2-OSVdFsW3e^>wN)Yt_~$z&Z$d+TDj z!$+AFXme`M&#p6{bN)kRQ&e95t=~xQ+#+AhQN5ET60H?EHx$^7U)APMfa&~03k;A#^2G;6$5W#DbNYk$GpA?e?VKMx$aF8d4u6${ z9KOta>dbxBA`%UeArmzu6}Geu|0@(DL|59qNA~ry>kUvd zCP+N_dXdqh%i0&tH}5b$-(QDGNX?XVHw4_&khrpQ@(lP>XuVK@qF@tbECBoYtG7tf z(8L@=LBk<7DhgMvT5F&{v_YfG3tFihJgBc1h$(0`yPymXK7EIU-KiVKH~oBH+27xv zSzH{-;e{F<8~e%M^9zb#{V#^TkCcZ8X71H%0^maeIu!ac?cd{bzjh%2mX18Y9@p-? z8OqhHH(>-CgW%!uAHv)umGg_p*g>IJhwaYO0z9>hr7RoiwaAN9qIMs z8i9hM=45_QX;=*WQM`Cdt@TpJ?-0nFo6s%5E)_#45iezm`5>l*+%O_TZSs&2OtLv? zu=#E|Fd%}Af+8uX#|hzS`dz}(?z9&OZ2`fi|N4~=Bbg76bmP>Az|IbLE_Xz1b$QqD zH79dwV!?nqiI|oes2wChU{!6r)^E+(`b7d+nDg-lB#YO)9?v<2ES5!RXwiTM)(}9m z1k%$>)f>Czr38J0rbKHk_WRp?{T$rfxBH3H1u9g)P6X4=&Q3#%3h*un5lK8x`hVsG zN21THEDXl_-J<}=D9tV}Gz8vzLN_gZjF#?@}R)Lu-IIH(V`E~PZLE%MVYJ* zWe%tHC;AcW3!9p}# zc`Q>ZKW-Xg?@q||GqwiDw8Z~iM@@Q3~H`~X&a@0icsvfJa^UB*1)LyG|pQfev4 zAq!hlQH!o>3C5L-O-+C?9}xIU*@h5?-J8Xhmqlj`U)}1&pVei2tT2>0-BB>k!18qJsF~%@yEf-wIHyDBY1`6hpEhZ)Lc6I=j(DmK^FhqU4MV z+wsPJ_NUNtvP!!&Y8qbkS}+PeBjO%|>(vQM#x#&8<}ykhT4Fxgc;EtjoVxbht7C z5$j!?IQl_&y@_IxlCixjjL;1bE{@0&)-wM4O~upoU~ySlPyBM>Q+*r84AS3a>2 zJqJSq8r%*}SR0qz_jb<&uHpQ#saIR;+#A6MJVrYGVm)!l9Uo>4IJ?N(87%Dx-KX~F z=KgV>dvs0xvXQVOQBBQ2@xI)}IUPI9zH4))&1~f~%;Iq|UiQ?@<}D&atF_R?CzKW^t*gg$#YhPG%X?gJ~s!3M4gYfEqQpd z(;10Vh{fe@?wJvc&2a`^AE-4tJ?OpxlYDD?+x6!b|DaO&_DudB01!%6tzbg|()0mf zTgZT>e>k~zb9)PXW*;7&K5^yu1aoqNrPJ<$MNUp$-*B}x^yQvcRP;+--xt^g$m;5% z0k?d#)Ixtn%_lsNrUEYSvZ|^*1b+{dbQv*wdwL)|B}OFia(agF0yq;5HeQo4;fM|n zlHYe0QZ*XP+Ezf5vNe18`JMw)Qs7}=q&(ikp*WonsT5}o*IRSGr@^6jby>;fyx@9! zYnu()?*mOVhZxo;^=;=Lhv2^0v}f!z2Nm=(k;vhM#6(oz-9tH_<*$u~QO;UjKIx(# z3Y)g^vd_Om-xZ2440q&q_V(4#-woM!3zS~6>%=k}%C~F&5+SNJQN@+AhESI`$-9_G zI2+4ew+RnN5X(;rqEJwr={>1QoOwK@l&LXWY36WBq$;Ds)z&lRXBXab%V4@TyFW8*o0%Arky|KX3K>356c> zT?*J`i+ANHvmeNWE2BGTousiYlJ}sPq96*VBo24rjGBiM+Sws;G4-{iwH5qBckF0X zN>x!BT>p&5SF-~#;jEzq^o%RtFI-DcjL0x8bg4rKlpqa6gGb^z61-9TWEvj|I4|OZ z^d|7Z7o{X73d)mX!$|v9?v@_B4*B+W{vb4YnZ1c>k_OQQ`hU@{5o(Rb5^p-ZDWmI9 z1@V+7sOAfZ+~jG_P|6{A#EH_-;g9|91vp}Goj0?IIvhEFGwFSWz1M!p6!mrXwlp;q zbd0NPsZSNxJG6!Krlzt|Ja9SNu|T<c3;cF6uq`o?CbJ5VRQ1Q5i5KJ2q^;GwU` zyrh`F{&vFTc)!|K>q`RgYYv)Z7yvsH-qK)ci-lW(P7^LnmRNrj*>Gr!F-=x)^B^Nf z&}F&V{MiR#QjDgorzLJFNel4C_qUgV>W#krM-Z=P{ikBkgsdc0SD2ChTj`Pn& zwT*;+ZX|M3Zr>*K7@!3iIQ?p}WJTwhdt-3*nPe)K94~ChkV#|!eA)yA63^qiliz*s z7RSxxhT^m>NfvMs=_7{-TAM6o9#Ke?9}b1vl+b?f>stu9Y}T8rPDx7wL5%;YkftR2 z?846+Bu|8t*2RbIs!nj!BZ0pd`tV>;*NCr8WlJJd`Ub2sreAa=B@UEIYT(IleuvxA zCQE+Lz7!ughyM02wOJ`ck=+VjFHJ#mzf)jt>VZ4qoF=`AGNbWM6nH#EuY^W~0i|*~ zc&Adfv(Hy$>S;Jk!BGhVJ4#jM!_H|>%Pe;1a#%+bg1;woCA4kHWr-7}FmyV^pZ^-v zPe-R%VMBL`$)6y$(U%9KZduTi4ZPgW=r1Z}>kdcjLd$3x8$Euyzr9xZ>&go&qNwwC z1}EnB*ZQ{e@%r*=u>fCG(I@uF=&rFt=OmP^Zn2Woe`}v=NgpiWPp>qj;Y2r^yhUi> z*r1S~MZC6APNpX9l_sO&>lA!ivdRYgOtP?g@WG6Hui@NCKVSPimF1m-Eu(H?9ERyv6Nl>6{!5HE!u2k$WQ5$- z4fp)X@}g=u`yO^?-kdG3&nfMw_G2_PGOdXUS+z7{?Z}BSMzQBnZqcO?zQZ(+~?lM<{V1IP=-ClqwZ&v2}{^2M>09^0+l|><>)MmH(1U#X7_C-at5m8A*?XN3*i)>OhHkE1T zJ=vxe<_@RFw%D$3K zbB!iP;JEyuVzC#8R!)fI`ILz9JdWcHc!lVQ#O}So{%qp^>%#W(_9`#8+rPY!VZp{5 z?(X6_$1boi7_HY739dAn+h+i7S1M|&$;!gCWeWI9_Jh{@Tc?B3QXmIBp(@l*=5*cb zcz$k^#%zxb*jWI#Prcm-j9hlRfS(`Z!a@@ewgnF1l2TF!AT6dcx%iR6!BNgfbO0zI zyttTjb5rkI=l$GxQArV#`z5ZM{{v@D=Peb1-!pW1`AHVHe?Ur#7vO5$2By}4+|PSX zR2T?=$8#{u|A_#Mh$G7K7yE^=n@4rSIeiu^w^Q6#iAhNzrKwPUeq^JZ)YPOuf1)6P z2Q2CNrvC0Ir_tskXwpIp%gFw}7XVm~m)s~Kf~U~tMgoo(^J%@Ke>c`Ds*8^2+KE2e zE-sjvEp)<&MU72vb&hAqum7+geH`snGP!+s$+&ZTeoaluP33e4h%qnI)#yqZyb)V} zhs~9+l48TdE8$d7PyNqNyI83k5>!a5f5G>?H=Q~4c{Y{+C<_X%P`965SsBb17GJ3| z=3ZP>d%pwTM|*ptC9*gU?(W8Cix)PVo$fJj~BJDGMG@P+$ZI=z?xnpIHDaCqp{5+JFUn zWLo|x7(-=WT22Y;;U_@&xf^<5->q;Q>x_VUQz{J5p> zI&8Entj{!&VsYOALXD68XnDS?<+uBOqUzVeSTv?U_JO$jDTr4sRgbCf1H67jP41Vo zYb=E$)?0+HlEe!Ud8fE$Lqj zhd7TI5V8U{Mpja76PeST6_TD^ z=6d>e&~mxM%N;gmy=Ofg`&;EFv4J6lQgGBCZBoGNgIvI>;6n!G?N9!fZCEK&M^3z_ zZi-`97jx2uv2RXLQoh4WB^y4kp*k^!D={8$?gq`UCL%_Q{Yju=0A0*^e4d6YDs0cL zbi}27@LtmU6WK?>#5k2I{$KnoBMjom=37 z1?@$M7>j*VM~i7T5k;+iF-m)6I0kd<4A6c#Ba!?y~F$X{B-|u67_TMW!S?0 z%H*rNkOGwn;ME+fKHZ*FyK^`_voM?PTTTdX&c1hpUx6vQn*a!}f$2Ad8JiOBG$_!9*xad2tVbSUJ?z?j4 z1zch&9*@ef`fRYG_HnSR_}@XKisVeJL=ND-=w5y z62(lwVZ_c23BdpI+!bDQ-Ysq2CK7zW7xs;Gc_-t(JrbqBkfzdanoYKoCZ(w4FW~@) zA%LUo{NThCNVxN!zQ*%@?DcrXDGMBn0j_#HVSal-0IzB(3+#U2_5=V}Ac9Djap z8%LO5r7HTjis#kqUV;RfE?aIV;D>WLrS(tRdJfnF0y z%Cd@4*cYZlCdwdXVSP$=qx2KIsXAAmcyLH9T&uXax-mIqj*ZA%#^AyDh9rkNucD1# z2oGdn7MU9vyb_pQSm+U@sW~CD15o^XBwvGxz(LHaqDd}%e){TW%rdbE`@stHWghs7 z)yjs{%aeTA4y+1FibwwnF3zg;6inKr9WKM0jKhpN$EU+v)LV#2%q{f9#T>J7jJ+P1 z+DMrj4=yAb3OTeI;g1*Y4Ma3~RO=t2Df|w@E$!98dK_&$ULF%1P?GD(5mfe&h^Sm~ zTzNrg;fQJJt$gW!xtxjg04a5qRCl+Xh^j|NawGzuBDaX?0y!VMX<*iqR?YmGMRTUY zw?j?LcntRsgEg9|HfCUi;{MVMjR}^rSx(A}``^Sey7XAM4hvB6rGo^96b@#}U|Ta~ zZEz{9Ts~nd0LYImDU7zN9KbMmX-<`vM-b-@CQ=x`Chn}!Y6_EzP(qAmFjonk^~tm{ zu+8)&2_{Ag<}P={WGhLbY!3Ak8@$s;=X=g>aB#7tl~4_{LXz@iaDRCiCXxtrs$5CE zjW2FC9+jQ$n4o}Bj7d&|0Sr5x2_cH?)nzp73XKLE+KCD!Cswfp1a!Aw4#~z80a;ga zs-~o^DGqn8-f&VYB1s^eAY!Y!&R}>@%fxVS2xQ*rjKfWmq*%YuPjXZ} zQ-?1i#)e8$11-=aY1*2(*f#3#e3+%!XBu?I#aF4F{A=Z%+^ z4_zI|!k!hkY-e3wrJkHKApR)*L7sIdT4SJXgMJw!wPJ!f_n86&Pj1X{#*_j9K-iNOxEduZ2e_J*js%H|L&{(-oNp(2MgUM#ur)eGmT+CBxi?*<-Tz?r~y?C*x znJFX3->+XUIfBLl_NehxCRrYPL;z_LxCYaE#y#r(J~cRUdaT?mG=$c=H4qfN{!zExHebh4AHy7wYexGV_80MNb#_M^{$8 zA)?w0jn}rTaG5=uwo8Ls(-6_{^pAszE$@0;EOWmOh7}6;5Q7*)R#haca!ROTie7&e z(u?Vz+tc)Vo~T#GSIZ#1BAUXK`Y0{%K9aLzjDyi#0-&MXKE>f>9vm6oTv7iYi`5kG zzcl-Uq9X35;ekV(qnDJD1tjKFTX^>2v`-jl=;x;Je^?=y4mQc;qDdMwU_dY3&EVW0 zwsmV24+DbgI#j#Ya)ZSS%Of!E6ex5NX($9H`k9maB9g^p*wn#zC-z*4=}?UhQ+$XOGN`j(CI>+X^u||5M~v8cokclm zmPjVWDQUSozf_i!mJwgQTr1OWm@?gIibz^g_?i|w{l9@Cv+;4It_1L#e%_82ZFK<= zHmD(x5^gbPJib~}bjN^LW^+YU(HB)z47EoB<70bRujUJlzGheYy~CY>DRTDuuS{nP z*No4-|K2N(2TI65I~NM#@!%9Wo3p`|CE)iDL%#DWs;*A=^_IK6_5Tbz^1lIx3C>zv zgty!56jo1#QDgyx)G44S_&=3+R-6C;VE>RH0qx-10@#@5oIcOsIPBHCGx>!!%h%sJ z+~mj*2g2l zhzZl!IBdLB@v)0oMury90XjT4mmnM}XT*XHC{4(Lgx3|Rxks`7KIwpyBi8-vmGM;X zKgd4Ns1w@Z&ZJ01tJ!VD*U{~fssHh+$yW8j=;}%a6(th)MDD=OTl&7Pbn7gAbM0W> zpECIV*i^c5cYw86$$pT=Tx0pRR5)KEUU$=1%=7k-V8YWb>cg7D+#HJU`I^=5_53O< z0*0~XLL}<^^YrTdWbz5f`9{BZLP9{?e!kh?EE`WF<8Wg!T)!NB?Jw6Q0x(U&2(ibD zw}}7t>8{pG*92cTDF4ml&(ACWc=hDHy}5hdHmCu;&Qro0$MOny6U+B`ho8gwkOlw- z3JD1jg~DH$-|UK3YInpJORMkh?FFT_u;b%@R_e56MPk&{yPlzcJ`cB))z}M_t0ZJ+ z$L8kJ12Vbc+2TV{ss3Kw@F$qNI|8EN(cT*HFUTutuk-I_(|Onl-Ea70|9lcg9W*pv z`C59;RY{3|PIYg6uL%impk4H%qtLkkOd*A8v0Eh`I_9DAAFGBUK}eYb?onJ|zEykT zh3~ln`V|ooi6;~r7iqP0DVyzX$_Y=b%Cn763Vuv`JsTYlY;O534Z<7$ST7lwiXrT7 zP~tT;^Db1Box2c?d;FSw!^m~fXiJ!KSg}5{3VpxpFk^LTiEnIpZ&8E1dnmN8?)Fe* z?G~OKdc%)odQQXtwO$mlvP+&>`tx_DRM?91UDYxC{x9Q5_TwCxRLoYcqru+6FRLht z^N8`6=P3kXs>C@Z2DgHd_-lQ{z-o2rQ4Si!Dk&l6mQO$?yma=u`2aF@{N1+D)aLQZtSfX~AXB^$tnr9VfL!KI;J%(PDy(n|L zFRzv!ZFtW^4r1B}GGMSRs4N8HU}XFlQb>FBMIU!u?7G|+vSPR2gen$^)W;a#f4L73 zFGKW5>S5lC(fKAw*t-+ZvStGtLBl0 zkGn#vneA;}EGSKE2VFi_WEJ77QF^6 z+W?dRSeB4*GG_0QPtC2b2ln(JJV{9b;vCQgSL<>DN+uukUlH6SEPdxhv#s_wV*9QK zu2g#6pTxWhP3~|UGe?jhXD%)Lv_@ZlP(x>MfP@b;a*R*X?mqB$$Er{j-|LZDmU9B# z@c<%FQdyb$?I~ybhP=hW;0w!aI%a1snEQ~4owdpFOpGeCnWi6bpb>}CGg&%)M*;PX z8{5aL6m6&QvozdY?dyqe^j#mMXf344KFfV z_>mTfqa2B`?RRhDVdVJZhKC^*c9+v8pUs%nKH0C?M=ni|O1l3<{#Aan$xd3w`w3=h zNjki;hR;p_Ws{Zk;YxTr)iSN1H`A-H$0PH%*oVcJtAQojQDpMi6>9ygwlNH$edD4i9Lt+(d!`GA#L_RQCfHy(Y_h{Ve|F16Pc0HHz{gZpvDAQ0LR?(D%s^<8j z12ayL7SI(0WY1xH zzPXo7!jx7OM*XzMl|YTQY=YQl@xf$oT#in9k0vG&VD2pv{X~L z5`QgF6)6tZyOLt%D#QZ~jIc#t>TRTH@)LbLk7nk1y0&$vE+z4k;BdsVni`ryt+&j6 z3KKGnC6cZgF&sy8crDi(oS|x+wYM%$pJPt{%5^SGqKpiZm&xZV1$Su#yy%T*F;4|`L#%1tseN23Ew^Gt=rrC;(z zP^_L?{G(lwJ;Z$tU}X|DKW_ve8LbOPIFiNpcM)lloc`3GcE1r36E?*m*HQfL@KypI zm+7C|sK`(72!G}tPG%oY6q_D1?l;66r3I-BrwScAaUb+$^pNCMNBcf?5d|!32Bsz< zuN>Sf@shvKfe5b|G&Y=plk@%Y3-;$}kF9TH7fH)x8Z(!PfPxboHDQ&>`3Zf8-TD5NX;HaAjQT@?@OTbA4v<257QMzn;fQjKP! zaVcduHP^wi9T8l_$Oy9BJD}PP@>w7(fCUdA&|omQ$^usUkTEu3d3l0&>v!A)xeqh{ z^gU~T^tS{;JNLhJ&h$vP-!K6cv0y(`gM3ZQtr3nMOSaGL#{Yzt&aTc3W>b@uM0B(e zuSk+@~op1RXs`zGc_ymdPY7GX|Od}y*$}9Roczs-dV^D3$*vQS^-N~*1a)hyWV>NuB zibYLLiPRVgp^SQg!XFe9l%=hC2~kNxIy!h79hQ87gbrs~=v-a+#mRxD6=pLV#b#fZ zux8Ctnv%4J@t9=jlF=kfyZZ*lHoNonl={EaC6MVf z{(Sd5et@j3ssajKh&VXDV_;zLy_jI6NRdK7hytnAc>qZn@?#Cas_(6s=k9E{Zw>t2 zgd!F(o86 zP|)Kw&I4i*(5DsBQOZ0Soqhg#{Jlz6_uo{iNEC@yIxS zMFW60?sq%GtSQiAS053#C>s$R1`AhKz0h%~5@ZLvT4<>jq8~p+8W7MQjam5K%?^*) z($*n3^pDNs>*m7O3@U=#=7{Z94996uUh828H%mwVDap=hkNG6IEo5A5(uToth|T`> z$FWsVnkaFXkM|n@th%?NbqzN?_6niPkXfpKbS*gb+Np(hFn0S9y}~*|bKo%rBW72X z*U=tb61BtfY534m6zAc6O-5pfMm*fB|$PHJQbU(dkNxF-O_wS|3wv zWkHZFJi7(VcLUpto7G1hKfO-Dfh%-oA#sG;Dncu9tXRZ0Jpb8-&Nut?suSqVX|6{H zOzsx+INV;#L;dhu=>Y)ulY%Rgn~FTTDUWKg_!D(oaO zr12rjx61X4a=B_u<+W9x^Elh?`FF=_*Sw!S@hJRXDRXC}&qFVTE-D%OFiKP>R@iF+ zY%GeFz{`h?Zt-4qV{6vXvVzb^5D~d8={3O&`867Go?VXU0ZINbL4j>6O%=`Y z*~0F&P5&;G(a0p--nIG?W8U7}i3z@!6XP2{0o`Q1(*?~`cBizpH#hTf8A5RdG1QjFszcLI(MaoIp3tUbgcnl13AciU@FHZne3{s$}0ge+H z5fg@3{x&oW45Kss+ zL3<>(VYq#!O+|C#tkqY4&~W|ebo5#bcPHXIlx2ZzcaTvCDGhr@No{3ta(V&?92t7N zZ6^oM&uz$P7-7LGF|!s$BpoS{p>uC{Sl@NHlH{IM_!s%vGOfw$Cx&_gcp&Afn@w0# z;pOpZBS>Zi~$T$V%kQ4ld*@YAqp(-Lk%CSgT@lPv(LUyZkExKXA`gOdxS zAo`wnqLS!NM*vdms)Sre0^TNMWi&vRQb=Hw#K^2Bf|M?TnZiHBy@-$=ob-pgxX`IR zDrydYm0;2A-!|&D%=7E$KK{6n8D+l(L(EtUlM`-&)@a?6Q}5<&wx$W>`a_DAR6NDQ#rpcVVbual6iC75CJf0J%?lQ$tqOjMggIOeN=c zK&TBv*x^OsH?C;F(i$3Fm{5cB*{hGgDSfR%5CTg@Hx!{9mw$P>(<>2 z3b^Gr{ay`vKv3br?jMdV{@9kXRK&#iY2tuE?mJOJW5A~MxFPG>b|qo35yB-oN%(<) z^i7Od{JGdZzSJI=gf*1%VbG*}vZ%Z`_K%glsxKA_tm;B@MYFBkSHB&~#_=AI>A#(PHf#|Nf~p z-p;c3kiEF^dGmGrQZfuyW43Ups@$54kTNqpkXWdQ)#@@~ zf||+WOT;)YY-xW&c4GyCOfn*ZwTYsW#>O5swCW~zA$v|A`wI@*a!D$!jxewT<2H^^ z@Sl*R7j3d<^zxc^1LZEOSxs0`M^)<3pQ+D|rzh&bUn+5Me)twv-&GD-3r=PkJ?#kP zJDU^a{XJp&=3}50@qwQcGB;elt{i+!>(wk8TbeRT(J^vNVPNn>Rr|!R`@dg*1h-I! z;S(W18gsk;+we8fJ9ak`^}0S6&m8IUi|yDl+uJu3_cWuuX!_W?E+5<03CQ)OuK10nI)1Dmi`%swOW-^(JU|6-{YU?te`DKMFE4kS~kA}kJ4I02q=0Kkhkk}Fa?*%ZL zu#Pf6&FHpd3J+yw3?qA#nXPgXI)qAeuQFM76vm=Iv`x#IT@N*G11eKxV^c!v)p&$9 z%JAa0QS&RRQmdQwFn^A7I>;7hgHl70Zgu;GH;2#_r2K|+79$jr2D(Z}C(AlQxc6`E zlTrBC<0kHcpXDF_vd;xIHoV-st#29fD&-qcK;|SCH)TCXCsMSkiUBPsO6k9sS>s6v z#`CSh3MWR#W5OT=M_z-TU)xz*9A=)l<174*F2yzr*FL9eD4U3S$90q?>HXK$td;wu-#4VIO5Kt3B0_e9pAkv)SC&zVa-O7In%89MiGMSR5);-h>u8-H4-~7=~xpA zXb462bU4~>C$%%<00<8InGh23KLsNcVJ+Pw(i<$8pw(q#%%PEu%!6mNwnTkBGt>K= z@6WVte4Tzm@%M!2*$WJW1w+V$|2W)UQkO9<`ldcr!tAYx>Ue`xM3!F7Y3qdwbX760 zb-sEv`aG;ivf1lPSt-$de(J4vC5J~Q66YgF0+UeZ&5tP>=ncDpa&ho2IEVKmvXr!RwQh%~rsj{j zI%R+*M8Zj#_;P3Nc(~3Ebm82c$NG&2e3T-I1dNOrh>!p-a1nvA#*@UbT>Nn;f-ih_ zb@kOXt~Ouhpvu>pz;AQz zO(4(L6iwf~9NW=B4YY{8zLEhDj3E?xo4x(fhUaIG z#GD*Kb9M4u-$w{}{;tGwW%8R*a{cYAqyEMd$M;ip`rBh-?paIM^;XYhae@s=nF$q8 zP%=aU{!BnY>|;F|>2r>9tgNq3TGI2*mgjqkx^INb%EFbDmp9w$2J^Y@iuHJ0 zISPx35vo|Ib2-80;aLY(6F#pe{Lg3lUwz(Jz7uuE=Fi(7)5mA?jK+s90IQ!sMC|v? z=`Mbz99TDXwerN0RH{U1KB z3aw+BKf)}S!wz$Bf306osbY%>v7;!~@oEw7N*ZcYQugNzW3bz*NFNRLS_foVa%;{Q zISsvrHRJsCH8?a3agJk>GbItc2qWZ|HpIm(QD|4lun=ImNr%xtuxcQ7RC1;n?Hg_! z2fY0#kkeh3se1ERXOx%Z+-0G-7OtTyy2XPk{p&*sx48x}tm&ady5fhDoL*ls4)!<` zNtjMrJtgjax&BnA6_^6+XlNe;rZA!(lxY1$y+eW1Sq3iHyrxG^m)^Jq5)aWvH0Mbo z{A`hw@{@yO3n^pP!T(C53BuXXP1K&Iqm_K$@N;fJJcgbXbNN<1O%AMtdv_foQViLgb< zCVmjT^}35s#z6Vz<{TD?@sPd!kEU~sjjf9Pp5fjo@ej-zOE_d1$x7c-N(iQ*EH#1S3j93VVC!yM}l)Fi^VOPdcdEt+ze(Tjg?5@;K!2SmiVXe zuSA-ufuU+-LzPoQ!D)>2ks?;?D)S(EGvW&n>@YM#*Sgnla#pH?)nM09|0g2R34`Jr zlZt9{RnI28s6#2lA{4Ik9TL-|Wl0%>*Lnpo3ktevha`yf3itUV zg917viG_B7A1eK{cS#F3w%Z$^>3d)&m5yA zRb+ye7059H>dJVzGJT_*6h2dIxYL_cbpcLp;K~Z5pWi!&*SJtJXq3|6eUJ?JZ~&wj zzb!Ob1HTpC-QC3{q+EYiKW{dR|Ha(kp<4G_J# zvHp&>mnx9$M)HeZK#0<(*IY(nB$lRGi6gbOnZ>1Jig>E^Bo-&rvP~p4=*n%B7?}JTsmxHuM94W3k0zU-Px2-D&_++;QIssOQ>< zAUSK&U59Pi9WuqZFD9sWps1J{+hC=TE7v`?jhGjw@W7yf!50 zPz{cb;6TYho$=robg!6@L+9Yn&92S~>Pv&CX-@<&3HPu3`QY6lSu>Ixa8F_nH2$<5 z950_>+RGa5D`1zi&5v8MtZ`t!k1*8rf@^+h%dxA@+cU$y=ZqX*Miw3HDHk)u0a|a6 z6~4YvHD@BoA#SV@*^{3T(X#9~VH&1Y@v7NIs2910k>s}Hhkn0<3LCzGX7NfumcM7K z@;h>IJ2rr=R_|X%UDlL>M@Ur2d>A>j317~{if>w$?{^OHvMK5$4YL-l+z;KWTqRgX z^HZ~&-KFc!A(D5-6SFXyTz1Zq!VUejsV?O+)(PKvDPj~%yS9usSN+S<{hzrTL?m=3 zzwoZVC!jA}FIz|J>z3}_#jXN7hq}E{Mx%gN8yYI4_z|HQveL`UHpaLXIO35J+Wan= z$cjw#T;$HDZ*F$);usZ=B3YSiiBeB8j|HuI0q8jdb9r*7jH!}BuV;VfTU#=Co!ozW z>l<4~T5l;H&_Wm2S4WjJAD5KVR#(dsLkk9w%WZA)dj>M_arRMkaYP8PKQB46+Rf68 z$W#rE%ttB7kY3gCUlQvIP+~?EY%b;(w&fE-8K1&rS1o6CFI&${o8D!-+#te?8GR?X zl)1THgTh%VOYxyOwW&j155jgKS0F>AEB?0 z;80fMSew@+5lIA1%7-jwZwTcaweB5Ji9Mxj`hNbVqxchpv>c(hrPkk=m(Sp0FtvbS zOjMVOf@m;2W|_}tuS+g{RY>D}kGW-H-_iwAhKWM!z&d>(v#$jUVfUL6h3LsN4+anZ z*gY@G>CnU`_Tw+i+8`cb$u<7zuYzar+!A$7!!E;#%z29ex~y1Y{BhtY}G zso0(dU64CTLwe2k<1MYgdXpg)vgG}}=2UAsisGq0=$l_SXFq%(?idev@g)XBJ?g<{ zQkt3bv-*pTrxh0-etjnDax^cabeKVkwXxXTJN3J!`9D7)RM8DXXcloY@@_z#+Dbll zK77qfg3>?KlhX2HVSn`Gw(h+iPr1Gdf9NN1fo*y)Onn!LghXX-@gYJTJku~%V91o} zICy}Zyf-|5#GKZg7I}C^xr=Ai61nWUlti*3Oajb3R!Ybe*e?OHZ54v z+Meq3U1qH#!^HHAm~jr(99P1sI0C;63tlAZvSR?18`JJ;jPzF=3b*IcLxAN*bK1n2 z>ozHUM(A&+>*ikip4@wtuTrvp>@C_Oh5AmyzHXUdDnGnRHO( z4gf}iv2%TaX%*~bU2gxtfDMq|0CL)cJ^rFpG&IIQ54Zj1M1qvG|9Vbgl97?|my#n4 zxAWOftSAP+R0OCqpK#nxXT1h~6Y1jtF~)m?&5rnSdnnay$cjEVdR@6BMfmO$F%$i=JUW$WYYeTPFppzwSg+%-5miyv>Yw=+Px;r5D- zf};0)o83i9N(vo6;zJq6b2~n(*^xHBEf`!{WxaQ{Y#$IDX!m@h)M&XX4REP*b6NhI z>mwj+W}!m^s0!GRo8&HeP0ij)t;w7BOYh{TX3n#fdtz*C=VgGbPv~*Q2WW4GoV#8z z*4KGGp7&Ke-tRX7%@yoe60fwPB3hGG=3!s<8%qB4@PI@xhsP5dNV*3I3S@0;cqx}_ z_N%x@y$M>rQha;{ioI2htb96ed&_GK?s|Ln3e!_oH#7{oAI>m^qUJAj{}qI?EZtA3 ze}SQxCPgeuh12Krk9`h(?UhZlPSj)kqeOzg+#soeFZJ0$;GhMbzW^>+1?kvIYRaZ* zSX!^N{e8#R-ooek5dmDiRU&;tUaM~$?~4Sc1|Ha&Y|BbiYPVS{FVAD+ohtcU6rsPPAlnCL@P1h@JRUX|k;p8rqgst`nk20%0E$(QH_q`AxZW_!zmQ#pTG~=`O zlbm5oq7pGsF@WW?yEP`M+85`9?@}IKx?29(YR27sx2v$^#+7qEpL47fJw2KY-}e|T zt^cc9QEv+CDkLi?zKbR^(Gm?0f5E-;lT~eBPr}=5!gJXu$coKXwAMD2FEE6zMsdBo zpx8EVE_H;I+0BZ@&7B$weU=dBH(KtE8>jy+7_uc>ri+lvj2wTxR!8V48dVI{@V9n- z&nvO30Rz9FGf4X>gq$wVUvdAizhUZ7c<6T^OA!}RH6*N8X4!y*yPb7Kb4iVQcngF{;ZKll zbtaaqa`s?LZ!;twZ~owDdy4v{X(_)fEYA&OD|%L~VcF)T%2ip?J#{j1>m)_pkr+B( zAXc+IBUGF`hs&3+0m0Mk^76=aezMEF2~gA4e;?e>;B@u>&_*bZ-rQ=zT&Vjjvo~oFNvcfgYmjgbeuLX%oolqeDxuls7qr?MZMqc#HnPJ)YB5|2n%_x(YW33y z*c?meSq-lf#&eL)>!D1aO0w>;&91Kvl^5@h@WuHHu-Izk zFXD^zr!k6GsxVKnpd5|!Bn^!_#u^Z`b~$%L@5;LA?&tJ!JK-GXFNkrcNWCSgtvz$? zYD81~PKE%0<{~Qk?0_k2+>0w|PLLC;eh~RGb9<8jB!yr-_P2L^G1Ptk{LNwhkk*4M zX>dl_E!fYzZ+CDTBAf`()%nX;xh%y)c7?S0Uw<;#ZwaD__8qoEF2hsrN#CP&SpDlI z$PQkq_zTl&&mfhpqVg--BiC5PE)2qwdGUes7qxZ^5wo)z2S~w!YP{6wVQx{ihAB#7 zh*=cgEBFJ>@0WunvEpW#9 zQ3V`>T=YiV@m>#t=Az`r4mK-v&y$|#lp_9!(`lg&ZTSq23z?c9k#}3;+|TD56h{!@ zK;-H9h1x8OIrKVwk*|zED0qHxzuF0k9vLgwJ1_cH|MSs?!qgyjT3cbpy;KGuXAsk_ zK*iL&K4OkE%Z0Tiv(T^)+OxMLWP!d06a&C zr=X$G4*_Z71XSdQ&E>luITkUEVbzO_%AaCkFe<7KU!@<1ewLg1usW5ESRZHy?qSNM zZFKh*>y^-$lIUu2aH@=9AH6%FL=(rcDuMQyjVdz)q_k1J>WX6B41{o0$s;^hkeVEy z825B&D9rXFm{2tPpmlig+o*o-Wzb}?Qf=*=|IyHT{Ii2zGHTY((jS=`9Te+n)Lg6G z`(&FddWGhI15T$TFK_ttmKLH=?ACr2-ZLf8@r%5DGeQw zts_U$PmDFLcp05XA~6d4YnaU5Gz!%3$j290TNmf@^=7=Va=v)jVYwd?XhMD@MaYbO z;NPds?h7`l4>}e14fcU_7CjEdC#SY$_n5H0+S+ zy5A<1r+Ka=E|w{wR7Cn4aew^!JW>wMK{sr5a>Eo=qn}UKRq`=P1B=;OdiOys4h{FS z8!Li`9ojE$g}0d=@egG?~rkm`_&I4u5-$p`8-|7 z9qK|sKzGK*p|Njb9og8KJ0s&Pg^eNrpP~HVJlRWB(=Q|>^rDi_%sgGJH6c`_Y(V}Q zms$Q+t(i0_eT37Y{*f57;1(V2Ov=?1A1Bhc4~l;0cz=*((u$a-?mG<)&72wCwA?np zTG8wM{UP&C69=ApEr_xi32fG&Na) z$ronl$IJKCCVnyVQ{K+U4#Mrr%b^zgWYsn&1Y29UkPvA7%@2Q|w6?R4K0X*}{(Li5 zB}bWn$K??BxbaF~)m|I^^h8#$F|rMC(SGrkY_GM9Su8zqC@WK+ou31lB{?T=*ASqq z`U9F7kj(tDl7{)#f*uegW&8?40LEDPvZ~*i^|?a8*ei`~NT||BZy*8mg{hf|;qi?S z5b+w3q=_BG$|s$Ny)Bb9pDTCQV|s}C=~4FzPfw4y#J#+AcIJ~GPv`eV%F^`h3aU$Q z_JD2Xok?gj8yN>c zE#PMHEvL&nW|UuCpa8^b`oydL`>YG>)D#o~Npj-89)WoFQ*(I0`PRZLs)&TIU{q+c zDwns;P0}6hXA(z{%NExd5*!qbp4U~1tE-eKKd(|ny^-R(pc)^y4yJ=A4$EmlS0}23 zJI&hen@Nj?{pP(S7kCHT`Q1W9#TnyQrwtJ6I=!f=rPxHEheOB72>XpUOrBT)rxuqo z#)I+`9fELC!mQka-^_~Nl_d3lsobloK_R@s?>}~A|H(aOg0sX z?`X^(gfJqe`eIV@RIQ!XRhb`*tm_p6o(HTRDBz_Mr3Npfj4v8)RQ#V?VVY8pMAT3; zFKHAq&G7jh1%VGU7+}euUzG_8UZv2}lsoBIf6mWGp(?rI;WQ-9idOX5=Lr(?6J3=_ zp#iRp+WWOgrKbZ3?+jInnB0G)+}E1<4|yN?`>=V3dh|$6PYJso){7=<=-Nvk8$@bE z&%@V*1&k%>roI_%wwA1$l7Gfuel6Dv05DCKxB3LN2+nZlen1)=1auWao0Hw4S-|zfRSK@4R?j4RcZp+>qk^InuR>WRZj}{w7|F?28dc4tYlJ3wJ ziC$TCv1kfZ5w|udO8Ux!!9={QwFZdA-%z#8;@5CjM8sxXewtjHhKBQRNABK4Y-H)P z6mi#gPP)n#Scrm&rT~6XadC5No$xJADt+-U8Uia@gKUhBq?`IrfK{uiu5MFR72$MZFN2JYJ^1k+%;9)KOZfH_EQyo`0y;gokWf&^7p8}= zo9@BF;RM@-$=XB!>K>@`1EYDMXA9Wsq}x7wKKc8zc)brFyFS4Y5F+t-TtWyxuJFBX z;*nfVD=uRb69*zK=V1urpL22b4 zIaR<(k+Y)%{A}GbsW?lmuT-DCx>h-tAOTGKf&c^oDWxBl&f?bLTP5=WA(8k^rs6pU zH`#vL?CxOHo)cCN)qg~quDG-k++9OsfsZ#iZ=7osP6Q=PAXZzGFOKa;%;NmY(D8by z5E-OR&F*H48zpXFAYRA9FH<-C7WOg`KSRI0ct$+5@n%`S@M2yXXEK{ZgRk$I`elEL zCv0{fV%vk6b?$J$zb%f!Xkm3T%xr*dZK`-muf*2G>3%llUMMTrgyMOCt(VYR4Gu~Vv?n4D?}3#rh8>xl zGC{2Y&ybC6U2%n@gM%;%DpMoMI*$Z^%m{n_(}T0 zPOg#mC?K|vo25Sd(WNDTCR{r^s#Z&mvDsZZryMm5KcR*-xXnBAC1c4s+_dw;!tDUL zR(`CM8vnFmd;fH_e7T3{m(&O^h(J>C*I*dM&L5d1l$In6jDCKUi1<2u|97sLs>B@J z1kmMrfjkBuUwoNpU1%ES9|b9>^N9{r*4fwA`Hb~U5raJbv8DkO6c#DHlvK&R^>X6J zRz;#B#`G0wj(+_d?5S8!wKScPZ(pO2E610=19wN4eSUVktNby|C)Rz9^sJptk=hA`TZq z>?iqmK*F9*yG#WM~oy`v41iF18pcN1cwvW zO=ms8|L?_tb_8VnGQ)uvqe&zs-H`OMXOKY+Y&`XmbSr<`CdpD{*bk8v6V}8=z&(}P zK^0a{63?=x)QIskkv5nK{`mM$l0Q!3ZIDv_q7O^VMUPx~k>=PkeOL(VY#~SK)b^pi zxX$#(^9t6nk9R6@HF&VGhN#ppMA#RNl;7n8=v}3>QH8CvlY7;kO@@%i4#p|-_-UrT z_Dc$V<-&ERlBr^0Q54B==O5V%G?c?IqusBRVc8>JM z+V_!x^$sHz0x3Ph5M`PyGuUx9sdVZU?+rT4sfPn>uZ>(|fE~UQVah;DiV~Cw74u zoN&ZfH(9^6l;DOQ$YhqR{Wn5pe*1c5^!5V3wkeXt+aT_xw{bly%~3$)=Z-)8?OQZ| z>M$xC9}(?Jw7sZ8?3f`(8yDliy6@5QY)u1U>Mm!?ie1f>{)YFqb@>t&doCThE(ehn zG3iWtG@pBxv(6h!r>_E&u8>ecSy^6`#L9PNim?YTS0LKn4ewoku#32B$N5>f+{F&#CnV5#v-a z>JS5fu)&VVbBI`|&>78I54Lr7HoQ+GJKLZe(f54b=ZhlX7WC5o8W}ke5FEUVr z8Jza>Z{szMjlBR&B2#)2j=|cnr`M&?$}QepW#+pua%xUNQxl=PJMKxONTsHvaBj?P zPgh4TT$NRZ&1M+Z^AY=}Uw%HmmX@c3lf%r$vH;L(dww1ORA_+5l{`LlCQkh3R)Q(D zfGJ*{>aet;s>XaV-oW_KzN!$w#H@i%H(itCDJJW@KXsMMRsGst^|Za7IlXSvKf8N> zi}QHhj9kWy8J?{+WqZCp06+D$y`wlb@%|jkv(LuHrh9ogH5`*+7QpNSqyCzPhW)4O z`1YqAn!N*z@95~EBKg}uSNQ2ka(Anz>c7M=!1ckVqA~?6Iq*l(vXO*txbT2k;K<7_u0>X{Ym+;NTF%KeEhw>I7#>XFlaUZdX1a^ zH(Y17W{N4w!vLd%V9c0}6m;H;2^Ud>lvfBbo3Y)MI=mXutR4`s9WgwOMJw!Dc6(J>WjMZc1Yw`>*qkoVqH3NMZO&4eh^U`AGqa zL%zvJ{$aQ>XaU{MRYB_}j>b;tGn_8f2h9zAk7l4rcmAV*^&;qPlOv!W!* zeaOrhSqYxvxGJHPyBZC(s5xZYoGMpIwIiW;(NY9P57A!irz1c%7rI9=V- z`gn9oiz|jwlL&SBCr!xGcj1K%c%k^vko#$a%QpT#W31k0_OHG1h9m zd5`as9*+~zCYI(y8yiVLso%uRtcUbOt=)ity|Q>_WkvdL4ANxR723~*q%|?A!;y+p z05#?7D*#kQDHy80xO3wImHKo1bD%a0SUrG6*EfHEe<0>3Co4M)D2xLEc+`JK;iZ;a zPGHX7cJNL}IGntJq*K@@HUNxgcgqNdx@2S~i2zp9`D*q~eze!<$`HG}vO4Gk9P0Y< z5%4l>>h%RV0(Bwhr=9SsDclIa7njuEzf7yun!x|Iom`@54dB^(POG}cBGdn)=+MHz zFaZLPbbuEt+J1K<&FAu|4_xrEzH~^F((?hwWjskp7*Zj|u4Y z4Bms#htX$lm8;mVH==cRPYMHny#I?jD$jS)__; zZfTiW<^5wd@Pj_9#b1m9TdQf~G_Sllt3G{TST3(t(e`{?i(r)}y67K07c1|9PaZtB zHlM<9hgKjw_6Z+8#pBu!H)*11%k;hm63!z>kv%`W7LFaY99c@}sGDAH8(3(tJh{EI z%~?vxikZ7eBm^ckJ>Y~R@biSWn< zC1FpB#KM6sIAKUeKlUt$rRA8vIwowE>Q1H)jqs_AkE8dv1h&dK6v8`J8O^ooH?eul zBb@#lBllpC)^v8s1P(6BupW9HHPwnamy7atl|Gd#h@gSQHMN-``%+#S&C|{XMyEwbO;DY*Jg<rUgA4qZ?+|z|5x|;V zmS&gN*c~q6l_(MGiWub-Y@+|=86{bS9P}|b-Hfp#POY+ZN6xmG1W|{7GZ+s37pg#y zR`URmv^HsK#3WOyYis%k2h%PVzOvv7_X|B_!j8h>EVt`pJ6k8qYHdWof3uVG1z38w zNg{djYO)%R(X+3j1x_PRn=aV|)cU!uv{bj~N>_HDj<9k)8m@6@*wtA^3~w4wt;*&mh^cdUb;WleHQL zwYeA~{i_>iQj)j_*qW_P^)~37IFz3xe*0wKC%KD8`l3-E3uD8#vfR^_o?rDHQ+%d? zbnZxK%!ZH(I_@oZRNhy>IAe>3Ev?15suq9Rgw#X#%OSs1Zo|KLPF#^VT&ex@In0KL zSp7H{lE+B2aRSrgkdVN{xPXRj2i6BkoD9g4ajS0r!SI{AnwyT@AvF>IKT1}pN`ePB z(gY9Xu9gI2Iw=#!GFI~Os{sP$F$dIK;BFOnIxHo{RT7Z`#t9$wknmh$c`~{`hDN8u zxJ7SFXw8QV)4=&yc;zS!`@p_J&s@xIa{hAnWapjeI0*1`6~Xtiojo!;A+wMpa&(VhNktlbZ|c?k zFd^kVI_v-h;HwK(V(NW;w1idkN8;L;A?+Hn=uL_J&o_79n%Qc{TH<%b=_xl7^G5c2 zl!re=#SpJ7B1&Z^cdwzYnAbKs_=mzU)|s+` zLz!DdO$WzGlW|3suYmd9if1L$F_xHUX>NUFsepnBZT!Ksc%on6s!^MIbN3p7n^ay95pP8I zwlxU8TIN-0O++flPcPI;)d)?df(;`dPn{_93uVWK}JC# zTA4XnR9~Idkd7&K?B;)Zj}bC0)6Z!(6el))g3ogHI60MI5~sfcH0TKc<~O;%-5NZE+bOp1>GwP~~F zv)h)L+0OMKbplYo?w(mpM#L;zEZ0U!B*%qDh5iL)82*>gIhvySY2}gOy!q~vkl+9; zg8>|KLL}~@-NTt-ZQXxD$HAE!%axTCTRR6*65e2{N(B>3QxYE91OP~>56bKsZ75?` z>)Mw4($2$M@~>oIqbI7UNZIRk)!XnrNNL!>j@66~+q7k^Jyy(J1CxRG@hfnR0z#z% zRqQtBc3hsk{=o7_pisWXZQ?gAZGy+mDR{vKH4%4504PfP))f}!@gULIOGH=q+v!jG zgSBJQIrY-vQBoY$W=db0WGg`7CH|K2Cu{A6BN#EOe_}nbsK`A-ebh#clRBLxZ_Wpb& z=)BETQEMMOEe_rSw&0aVBO`uW+~GhSn3<63Lt_(O5_4`QAOUtg>LmifQ^ z{AH;V-iEy2f|@ozet5sk9;QgzA>wg_0R^~+a}Af*3KbZ*?4GhJkL-%otiLw067n~e zcJ|>wT()4XbF9^|ECv6QGAb&HbwT32K(Yw0bu(xPyEfPSGaEknQ;hLP8oKm<)Aauf z>lm^^nyUj$^z8;)#0gBhsmBeSzB_@GMy|A=+ef4l9LRbHjGtRSjkzjH;}s$aAqq2L zvlC+#@kYML_2(=gH~&Z)MO8yO`$gfudGf~$bSU+rr6B(8ql|dk!5quNwVHjD5uzoc zdnliZm-O4PaQvV77M_gXMJV;U7>UNW1SbRATc^KeEQk2(2@f`tVO&5DLvCUCD;EM6 zA5@`HweELwPCGa!0;0!#QWQgdoWqefEc*8az~n?pB@DnXKLNZAT{fm`Fh;{5s0v|y z8nmH4(CpXf5>sG$76FMmFJ@@cI)4P^7{Eg=^$P)qS4z#XgquP;9@x|;?be4~LZ!+F z)pgN;KIo6w+zz@LAhJ0>QXEqyifT@jJ`gypn!vi#NB6OY4%YYX{j;%EZ(%D>hB zrr~-@lx~@^wHiuyj(i+22U}JW&SUSq`L*3Aq!FhBQ;A(vbUu#K~aIRu4y*xSVSzh*SjB@Jj1rLox+MO9#1;lT)FVn&R zJCczx$LKnalUD6#bi|$H+M4Fk#f71j9$sf>7Ca*SP4?&W<=X+f_ul5m`64_b;?~~Y z@XNhST#{4rMEYXQV>&o+Q@%P#-!wdp*BBn@7y}SDlHT6@&(F&|*ZmlkS`s@))B2ky zZ|~W}?Ci;{t!}_hjf$3*n2!%5QGCGf+bs-i8mMlP56GvB4v*0oELLU$28UBhG;u%? z2h1CQ>;Kml&8WfwN>gEh?u{OTRLQMb{`bs}4*@VRPv8nbw*R1Ya+;pX;*3ESl~}IP z#8YW;PMunyj?7p;k1(d2vQ^bjC4nL~Iw+nWv^X%bicG;E3QI3J zr$HF`Rwq2ZjxBSti2aD~Cd`W=ecfQ^;QuJ&#*VQ;vKM;{e6r^jwp;c-UI-{ur|U^< zC)SEB1U;pA zNjtjI*ZPci4eGJ1G+{4sHYuf*blv zy}o0!kC7{)hUfhebmZRnYBi@K_IMEHXq&;!9LotawOM>{bwO&x0B^V-1mu#Ja%G2) z&ap|4JuuWK`ry8ghMiE+#KqYnM*Vy{O6GR)7~|P+y;ex#Cs!hLc6^wYT?cgpNy9^u z+|O6^gAfKs2jeIj`Fmq|7nvmEe0XXeF;=xTN3X4|wotbQ*H>p8Esd>(|CV49%ogy8 z{+tWGcmlzC-DGyz@4H~AH+X^J8ZxKEv{ypD)@uSaA1v&eGnFz- zGnSt#_4DG08|x#D=oste%A<7fq|E&|NF?$RokBxd2qGCSfN+p8=bu+YFo6;k;|b4O zhN1wD<53q*1(~!iL>grso#{Cc*)TB4uRR;{K_!Mgcl8f-mpTlxv1&5bt6!Yx7Ywr8 zt3OAc^1{BY>NUF(rBiK0H9vDIWNC{kDeqz#ja^A_W14HW<6pyMhxPt$RWY!`o_yB@ zPyWd0J>Decwc-CnzH5B2e^mSm=R9cZz8O-ixb^~FJBcAxvX%u;mxwQU?Hs!|7Gz+P zuN*X`xFT+T--jLcO$-PYX7P!5(OCHMi};7G(LC~lIFrW!Nq{7%Fmy5~CGiK=eG$_L z`!p$Wdceo>@|?tp?eR;UZN1(>+_9>vMvlrURjU?4UPxv*8%%U?yl3fMr$xqf3CL9M zBYv7SsbOc!NMbEb*6M8RcU7j##hj=5D9cHxI))I)&@|h)3XX!m#cq7*FHdWlJCm^V z!2D|L!wWLT-(L}!mX7QCdxL|!+Kv=b^Y{RdN_P;Cu##{RO5pFmD%99p@FR=M!;_wJ z&(zB`)Q zR=&&;Y(I1%`M0~_r?c&?I(>R0!@)4S7z(bTX7=fsnG7)GNunkL-jlOCW@h;?Q|t5X zw@~hWP^y5Y9wlT)?A+e(RxXi)U*~kZr1W8oUD<7vc#-O&PAkJ~rHk0j@tVUVH2KY5 zOqep(m?+6YHZIQ0kR3q9RlX9V*6Y=y4r1SgRuw(e?bpz=KMI`bei6qBwFX55ZZI;& zu7t2INo2!0-unyWY2yS5O@##*F0-ySumxMVLVAnh> zC^8}nBj(b=mEoz0-~9ZL;dwoqH847uUSIeBz1`brnGOgs0baYjyu66GI9Cz|HQ&?L zYx`>-JFt6Y2MUi}U_^FC5dX#CSKT8VPnEB&`Q3wqf{beGU|Sqn@XcvxKCTGcLPKE= z??P!z8n_IYztLAp*EdNBPX{Ar031iZ#4-#Nyqz)b%dYNIhR+O|!x^k26%y10&5jgM zQN-u^m_NqfT!?==)}d@nNMSkh@+vykEaKFR{ zNa^^%Y1NPwht2*F)MLO5Xkfdc2;TzQ+dVMo+ydt2G=Ohm=hCXG;^yW60C>stm?&PT zH<`uYx))0ZNP?yp7l$gf7y#{1v*#;fqf;YgqPUf2mz2p7{M!2acL>hQjz>=bBF(#J z$LU7|E)1sedq1FaJ6q+p{si~lbh&dwg{jl09MATM zc$IlW{jB=mFgn&hXxs;Z=|{6t&V;a`6O)(GwBxcEzp&kRH4*oyl)_RWo2+9&l>y#* z@K&f=2{&pDIVs2f6=PV>hI7=;>@!}U-UZm~c@`?}3?|Y;hAHo==oND^2rKcNx21I^ zquWPZ;?O*wTX-b5leVdd$}jj$ngh>Ze(VEsuJnZO-F^O7Kg@x{Z=$~!9$j0-9zo{( zxumxPdBt<2Lt>L8j?2$bFsIJSxphjGY*ZJH*#XdMYU%U_aQVQQ{f8}y9micQpNBg) zt2x!*v10_59IQKsQzD(l!O^ADy(d5mp1&cqOcr{LQcVgGC@wbNAaCE>+dG}+OOKEr zUDYc-Qm?909z>n!p6*83p~xemK1yeXGx03NdccseC01o_1k~IUP13@cy$QbfEt6v;b?;+?j z1(x^YUMtO$>c9Ve31eiTF{-wYIeW(*S49=ju}6wTVr+q;sxHBwisa1Nt%{s}d@~98 zGnmnkdf#smrTb84&+*!W9Y&9le?hQd^x=e#LvC9xI_v*;S5I(whsf>X-p-k_1mjv2 z%dsVL&VY@Gavx$6sT&yA^bjBb>r5s|c{)ti)#S5VBt&K-Em|@oCFl_1#BYxws#`Ml zN>JyKyn?Un*G6J|X?<}NdB?|i{WI!4$Lr2hse{rSj_Tk^NhC_v`9I=e%GXh2>t4V(_WyFidf30p*Vs`dIYkW`!HhO@Am{unRzXl7P7@Oe%c=cz_~0I(Um^vU^tDaV#y* z9UOkz-W}OGaN(byp92$Xc^pM@ox|f|XS=hdYnWGNIeuqK7jhn+kO#(sqN3}A^v~aN za!i?-nehMSf#%KRQr9Puv2^x+&Co)%^QFq!S`A!ga zOaWQhFF>4b()FCXt-Ah=ez9_6ZzT~8Fo#Z=I3y%0<;G|*v)f{rFVOBUcDZL0er&0D zTrUcSkYh6ogc1!OogEp5mCOoyP_o~FnlSWh18-3+ZvdX+!!}}~V9rU7NCe4IH58CWi_SdSA zy3=0et6bT2!556yVx;U02azj9KKbEvvwiJ0woRf{OjpYT?6OEEu7)Fol-Efwf6o?YcB^7b(>5s9&uY((yiw#q>tOv_ z2t+xsObaFYBhsPdjC*v6hj*hM%a~yj`*pT=&6L(k;Cs*#r3mUbOo{IXV7k$gL!kMf zQSSNwDwgH^cdLk2PInD=Qh&Q6KIniQ{u>IotUA>+!bwS&LZFqV{QUG}pkKWFFLv`! zEx+W+ZqQh0Ydw&1eZ1}UtC@Tl9wMgX(E9tJjVq$13@+VCKfZ=02%6Ru`*-tWm&_f> zo!UwzdimqY@Wd|d$m)XR<5(34*YxDD{oT(Y{#!}tjAZCdW4dsr@J)!1Kmau22h+vo zSxHDYpBX219=(^C1Tt zukv>iqq!x=bFw&-3H%Hj4SbWFTki2+wiMw3mJoe-Kmsf8Dn9t?1*KD4cL=!uRk zDmis`k1WEQx^TCrzf$hY6B-rD$7+9K^0~d5Cskm_2FCKVie&At2=JOBcpohCb9L{g zqkKKOoR(EulhjqONbnIEJR8U@hkgF>?rE09OAxGWO!ORKuwZ4B6vAwf2j5bHwUQjW z`3zXUPmhKxY0h7r!xiJi$JgT2$CuX5jUd~mFRbczC3i@jP$*bX?RF&3BK+gUc2a8A z$HxmGnOIm@5@9c1MST^Cxf#kCHq*`;>PeN>-B0H@53|}PH(p%{W;Y2sLH+dbzlote zu3pG8*3YYzf$!5+pKTa*Qt}E6mVXl=OQ=4rc|X&{xm4@vaPF_Lu#-o}OL!t~#rcca zO?VI@r34y>_fX>4MSP$iqYr$gg{YyA=G4)|Qv)9q>|KM^ai>PAHpWF+2w+~~9k1|jF@gxx4(R1(<7h5b z{cxa0l0j!?6#T3BebD;lTl7GTZD&BNE<)r!KJ9AyA2m1LJW6$Fcm6-Wwp00yQ#B>jn2-N&R*L?;EB55-2ZhYa{OP0fNC;oe z6XV%7?6q20e1k0UY>iI(udiu4bVOzIkb=#;A|f;6y53LKK;Bn?nj{=zYBJ{-jEglN zr@R7P1Xc`Y8^#MFpv``#gViAq5e5vYDv{aS5Mo+P0L^fo7#ZOsqb?oaGqZ0P>+xNx z>y}_{i+d(`zLiPH&nB8L&#F| zcfY=NWZ|QWvqMm!N4QWM8a9fYUru~nrn10KV9UvjK_5OaB0Mm)Mfqrj#>`v*+2JE8 zTWw;<3f@72X0V`YV&*HLKuNijZmg{?qhLuv!7mLCVK6xP^~mC6XlN+XiDX5BIbzk};~9lqmviQ9i{ zAZ#@WLv#D^5+rBC!Mo~7K{h?+q9pYm1GP?(rV%~UWO&C0_A z0=QQl?pOQS?jMl7AMeaJBfpD_Hsp`$C0j_6Wk#o&jkdZ4fA;Q>o6|5>7S!jbcX_)5 zn!W8s_W4R1RB{aC(X`>f5?@+vS8Lp91puXZJGmkzN*$8r{C%#A%Xm>Kx~2@@NOba!`ub3Aq6bGIpd`-VfP ze7n;@?Xg>auh;I7x|8t3s{>J5Hv;tSn-N1_9~c56QiJ6!U5!DPn6@Qliyf{~Yd}CZ z5H|~1X?37LgPj(7MO$6xG`aqMKN)qo zo!_2Not&IJKi`o(FPaQl*x0`L`a(QjZX9m7ZvnN7sfKU6<|Za4zfx1D0o*mftS5kg zfbeA)y?r>jPdkT2RJvpy&VZ}^E3DK9_11rE!)3w(`BL%`5WOwJ)83I@l1r41#*aHekl-zpvkq-vF8-~gLZj@{(Svghs(Nx5!};hi2Tn+c z{#$~iQ#2`L=fh%uPC^UG%0sMI%c|RV${)P zffp6j_p=|0i+}npyTe5Og<4ch=|W?dWEQbm^ZG>{k+o>d=q}4!UoMEWdpB~QekgmL z4%1iJtgAr^p-DJv5DG5tE#}Q{{0E-QQ%6-Z$kLWHC6iwn9F$#bVgpYNQF5z6Sypn_ z`zDCOnx~%e`_x=qH`q41^Po*!v*%W z%!B}CFREi`pXA`E><+?@+anSf@N9L$MvP_@paJkVeKF(&GUy}^v=Fgiw!qE;A36Aj zO9rwHFWOfbjmEbu?)vp_@kjJsw31&Tf#Wx)8O}k>B9)9N-Cg&7Bg!Wm&u-%zKprjIe)W$d5N0!~&DD%pd*n!M0YU%(c-UeglWzuQjd& z{9XZ^*4R7e=Of9LEn1yCA%SmbDk^*B6%{4j-LTBe+`pZj(uIZ77ZyAW{NJfN@0YH4 zo%VU2pPzx%6HZ%O8-qb-xNeIbIy$;Mkd6mX@Q68HR>Jl55f~U+1$$;PtvEBpB|Y*1 z!eU$D5_Tquc?Ic4a#`&}Q3avM!f$Cn^yQ1YJ2xDBlvaZmCQy_tB%8`eDI^p-70Xnk z-y>#X!n0hvWp*?r$?LEU(S03r#VSxGfgzrext7MyjZ&>JJ@O9*duoe9fGl_?AC->I zN~_UA2)LpkAjSeawQpi#^mcYr9Nex>k8V^X-_7mE`$MGl+FWwmNIw|#(t3B8nKI~6 zu$kqHs;i^M*dPdVDx=WpHA1iuNko!wJQMUgUo&z4FC4&5(gs_)mxkG(Rqdpm7tHiSt$ zo+~@YHW2elp{r#{0KV-ojZyfWO z8UkWZnQl3cD4yq*=cd0~_x$msqoxdi2M1PN7SNLA-bz4^OEsIgvB=L6c~*>^=Bz!t zot)M%ZzUJHt$2cTmo*ny>}e@Q6Ad;zXS`AZV;%*OlROGHSp?o;CuPL~=`4><%_3@; z8I=V->;69`Dj~u9*|2Iw>geqpE74ld6*?Zyzus~1XJl4H9p0>1jkXG9bi zUinZjCIb(iS;AbgY3cYoVtS`~MC&vK<(u2oYh_6c2ABf}iK@OBuxM&-OE!K!q?mtV z!gUg|U}44-+Bb7@k{<(?z#HBUidh@1%-ex5jK-ek8+$qyPsoa8TfS>wINEW15u> za(JkxKJ%e1l(-m(&{21+6f2)7GcR*@$?*0+^&1{C7~QL_{;`T4(fK~-DDice##>8R z9NU^tb`wRkZ&GGqK5xo~uv%IVf5_pJ2GGGvkI^UnIWoRdBfJ9a(zH(t4t;swB;l;c zG*;iPv;*f8%ahXj1*ufBpFx?Cy^zFC%&FQGyHvIHXkeY+^kC)w9em6RP@o0uGb#%R z2z4K}f8}GRUc!%LXUr#LYi)wuxbWEa0&$Dd9 z4X_5^(L<^{?T9pmm1Yo5OvhDX#pgJl_An$lp`EU0}hH zrkW=VQAZERwXu9#{oLuerw&*I$|OK>8Z&rX^Lxbm3a4{03cilmTO`;?OHMaVbTLyt3}eLH?vgHEg#I3n9a+N3Lsx$HyozU3Wt<#RUN z`M3#oSAaxK{S|O(%eg6l!NSfG2s+_?{fhbeaIxR@C}cXm)UH)?cd*uUX0u)wLY=cR@JCkD<971% z`*ICoaM*CZ%IePPX<$nWHy_?fhDz*h&z~MbWLf>1{mp`ts?P^_0uCDCgTb zdZNA`xcIp|$(kvl=G=T#?LSigNgU^pfP=j@s;$~ZGn1|y)07LpsjFHpoE=lvP}Q}R zNvJT;24-zsE|kJbYRT^1FV6h!;Dq4NPBDLXWuO4{7WixoRRK6+S*u;hhv# z{@=thzSKCg?_~R1bKuLvDt=u4a8AZ+^k;WT*%PF9^%RlF^3&R9s7K>UM<`v0T|ViD zQmSTx8c0jQ7gG6`ZoEP0gPZqcSfYC;YgftJVO_cGYYD7YS84_6BMtl~0?D=L)v1w) zedxv=&}(5M!dWqjGGBhw`vLwE4ifQ_wou6`;>kAo2D3%#X8F=tRkw0TU1V>K&gO`^ zd*zXfBo0$;kq*>az?@wF40Pp2+IK@xST zdPh}d*JTm^Le;a8H-Vtm3)lsLvf`GVar%lc=Us$2L`v)e5K!7neKu%rlq!x5S$(j{ zPV?Fmhd4Ki*jg5)a*d&HX5iRRJ9sIumIW{Cn|lG7Co(6?$F>TL_FSMqr#D^41oq{d!*(t3oax z2%;h-S5L+7F=1U`4J~ScdTe((Fa@Naq%rN_@Ocxg$!4OhMtHTq2gI^zdy9W% z%`C8_Z7!O{za%7mjV28^-oFBk8P|u4h$+K+RTJ@R>e^)4)H&CSAK1jGF=ZO&+rC#X0&}5fXD0u07En~K1cMdt50OKu$V8(3q;=%vwj-O&5^%b{~%O%mbr@!-h zqE&zBhVfdDFDHOV@cQ;}cW19R;IXCvoq;>!detr2=5qi8 z^s62nD@zgyjO+uc7&?0E@|qelTH1uESR{(T;CfcX_xE=UY<%#oX@Oe-AeGIK%A{{L zUxL{A{*Vi7;*u>m=I2+Uzv@z`W{qD%MwJ&#G~)giaNjl4N7;XRey;a@HSYX)u?F%c z+{eT?B!YWF)QUM|^z>oCnS5qOX$Xj=+5`XC{6#BTI=VlAFL`fxYJPrxd`SKb!0rk_ zybqMAHQQ|d4$b{I#~d54;PpEPKS74~a1j1lPO?`|c-HFnM=9a}2;A2Q;)`Iky0Sxf zdt(AsbP}cW&fDl>ffGrPZT=lUsdN9z`Ko^fIN+|Ya6*1p2x!Lr<(*|z65={X?^p7Jh6rA&ca^}lAGiN%Pkhy|5ND3`oUD9M3fLLCz z0L&ked&hXNXa%Z=O23rj+~oG>0vG}Zx>g=0!0mGBO!CZE2ppoN?%1hysZMcW0)KuZ z6 zqS6@>wmt+!Ej&r8XOPyRrkzWE|4m%|$F>op#pvpXq^ch~THnuj_$=a|YE0rA+}{>s zoEohd6Vo*(gyODS6bp#&wGmZwmM8yI14{+8M-MjfBe+Qpi^NG6!3eoP$wuzgFsHP# z7Pi$;Z%I!NlBgnm*d#sr(jHf6LLT zKMNDM!~0izUS838s|q%*A{tu7ZE)6LKE}%eLDwAL$GCGuAVt{vH*CoZgJqbL)JC$% zPz3lcw}jKtyj+yAnRS>#A@!pZ@AVn^2(Mw_Ujp;0i)1ySDsJc&bH3H^){4vip{dA~ z;y#Sc8Y-h4;bq}Twy%vQKe15p`RN4?dG=7Zqt$+ZQgQH`FU!@C-d^w!DKFHp8>6u) z(&K*&?KK`MVo{N@Aw2Fm)Q0{Y0_CVslABuMa6QNvc)v;`^*Bc%@*fpq-!G^)I^L=Y z0TiZ)a>4&l+C;k6){W#|MFmOc{K+Deu~T$Q_Ss=-O!*|0q3t(ZAVL~bjWU8N?QYhb z)8AMMzFB4^hrdXE*eFG1S0g%!3WclJps$ab_6(~Mh))S|cfG7wX{W8&w^ZO8t7y)dUGitcY}f{Y*60)H5R7efdgQIk%j5b} zAxV>^TYYEJo)64@wy~1mW7==U%V~0}hnXjltDWjbczVu)c zVGDQeNV9)gMAl{MYHym&HAJcC496Bu+hIiUD*LN~K~%5t}V>v9i&hjq_Qg}=nuLu4}i8sK8W zKZ=;k5HC31ZmXRRMrb4ee52pQZOcQJ`99w^($LRBNN{G%DIcvSU&DhJ^Gyus3OkB( zDLeLXh*ai{eIB9_;#k=Ppb;|Kd;6z~<04<~NT->EgV`U-{V$ zJop#GYDXdFzl771L2WC1G}kaLhnwZ!Zrhp2c8^Pp?5dEFYMPH@xXaDtWc5Aye>nP0 zz~1k#)!V$ZhYsBrfn>Kh_jGV?HO0{qapZouA+nVtbV-2dq@>fZ1MPp(^C>G%14E94tK_1>w!G6`$Xp|^E&flaw;U^+M$7AyreZQoX9ME zWuk$Dy=gx{oK{ebF^k!aoLd04WZd&D1oQ1gI2IMfBJX?=o)74@qM@zW>AN5U-O*q; zUFuC6UmQM{Nj7qDyQK|Fhe7M=;!A{b!USRfiO^*DN3gUOnv?uR1-h|}gj~2bdTEIXs6AA$l%~wi?mA!Vn(VB79yi?jFO5U}*faQWk*ORP zGrO`PA!`lW+{`8LaGcorxe4|Kn9*sfZGe5lz~W-aFtL9Eup)3g*_8+4oWaS-f%x2) zWT-{0?d<@P9?z@&^$A!m3}*jD<^@WizSJ<)Fz6)>@?X7EU-h_$6Y_K8VX%NS7N^l92?~`1A&E55_*PU%gws*|D=FgmXIC zurN>Wb$|noZZcvA@s^aOBc}XhwLojGn6Vf;8bx^ELg!~?rFBtp@qcTKYamIA_R~D) z8LPw19zuElqQ!su{;cKX@=~l6-*~y^0s}Mo-w?h%YlX(`9&yi5i9G(lyMH3JfXXsE zI&1tN?}Ee5&Y()C>DS8(G$2AA{l~q#uZfe8)`1v)VYy1Nt;a&r2dr-jFJKi>?q zczt7g-Y*0J-@kCZ>lqdhUVVNRA31;%5Y&I(xcUg{HW+9J%I$kgbGs0G>1*GD*-M${ z7ZxIa1`iHuK|@Ql`ZI@_jwblqIbV$Vtx%a87ZGc0Sbj!1v9JfbFOesTx{tV zKDh{~(BsyKd?{`eEcYJC!xCI(Q|Ocj`t7aWPNM z@00j;Ty_541uMtsXGWt{|FSp>UtZ2H3>7{aM|73XCY zXVG{WGf>YLsRNZm296o$@~@KRt=fGnBbptlcRGTc$W~xt$K%vfVXd~TFffhDEsD~y zE{kq^=zFFLts@vJWXr)2N*>)78aXb?`{PczE=%__+RH)NrIGgj&B*0?VtkDXEnOHl&I)$>#`?o+f@xL0GvN}rPaB#CKcGyFd3p?UqO2rxj}@YI*5ZH6_VKP&-9i+-jL66H)!#y)o0mLSYit4)M7j zRuFBgl#LuM^Kx=OrT|A`Vy04Yv~&g$g?=Gl3Ak-iDs%<3`W* z+wJttX{GS~qUL9Es^JG0P#N`?`6BaEcM0&?0T38TIyySQY){I{8u0YQW4GQq`u>XC z>U6*t6eRXv7lrJ2f)r$q??Wb#6#wmhWhWy$=2+KKSX-N01l)4S#6*M7mgi^~7$li; z{Sx73R%XU_g0NxWZjQG6ZpgeJ?GL%_eWYB~Au?MS3k$o#Vw;HoEEO&u!OmTMrj4Hq zZgcYz!Silpf{eM(F4mzsYAVf9dab>g!}p|>L6pu;{g}nVJ$yC50Gi|B$C;{F?0n`# z#Al4Of^poap_5$4RJ`U2bl>24t|O!%l+>`?r#s#+c9>H$VzCU63k- z2#ws1xD_Pn58C#y2X#q}zVk)SS<%W=_DxPFyzFv)|CVPJ$he6)3@B^Ijb0LAL#@}+ zRQ2OQ*RamikGm7oYFjjlcyQf5FhEXK<@FfHr_6DMMq`LJGjX*}Ira(nEt9dp z%q(+>NV;M}5Qdt&ERBL6UP)8DJ0LmY7fQXFcomh57CFH#J;)@v$pEAD$_jnGn-VY^ zEzM?ZrM%JSb~^nUoKyzRA_|paf>ok|RX=PzZ2GTQheA0I%|-2Hg(1Kcf+vuB8E4YH z4JU|v8qcv|V~Q_8jPQqN{(jMSw|^%7qJ@C$5SAiCx7SB{X&4tbO!VkXCypgEf@V|# z@WY(aGq(p`N>xW&H56Vs8ioAhETgyN>5?4|8(#MX%f9`fJo-pB^6D^S-mg;`E4668 zb3=C8vEcK%8>IMJ|9lNa!Hi_Q+RjsxJASZWZaEKq(o2$*)y|L=#ywolEmq)@j(<4G zY77pwy>?>LEZmXAp1WmiqoV#2x>26R&-0*LQ=^7^f_v9oR+giKCTfcl6I?NY=+Bf2 zCaW8r8GxbTj`YL4=tzByPHGdyPUJa@2E-k67&{6%diNU9-mjr!-R@~(PX^Ueaa_j! zWX&Xm5cBcth2z(9`tZBWW@#vU`_tv7 zdHBzAfN@W|%mR6z)?e-P1TOSMYjj&9cPjhv?ZpuPe&+t5igO8I=r+gbOCBlGs>A?Z zhRYGa6>NNEBx^3lT+@v-pTj;^TT*Kb#63j?g7l=4@RoFxF)Zn>_BZPTX(QCElQFp- zG+bJ6;`7{*4(e~pO^CASjE?E+z!)}hrzas+k2&~Gqy9>15z0&@pIli+sP*4aqtSHg zis{O8k3S5ua~0%w)r38?uSRV{M*K8v${+1@{bp)uGw|LYI8uk|6>b8 zTUb{3zYX^D0=I{#rpgxM_$mBQisbU#A~;z5+??Sk;jNL(PpA0(gZ$9Pn4`2I-OBmd zznmcZ=`YD4F~QVN4M%?t?jDgE93KThB*I-8onO_Dp~izFX(G)UXH1-3H0mE_)h-Pf z^U7<25dR(}yw?3%4@(BLo;t@PaKPJPxeRx5LDa}oYo1{q78Zv-3O^7pQ`E@e;&{Cx z_O0-})sHVMp!-KkRZMaB@0fLOb=9e48A`0OioOrjOMOPJ*F5LK&eg{Y_5W0Q#hwS$ zN_UF<`BTfP%e>~!}$2pxJL%|2jdVp9o;3&Ckgem9?gE8rkepELCcpZj)?wjIm7A_>rX})r)t%)1c*l^ zei@mf6(LKg^Khj5027LiMsR*#(|5b_3h;hpTWPjs1gd3?zkmNJ*>X|ZRE_EGuDNiE z8W;!^rW_v~q#7DMUS7O?Jo=lsxFo@2PXnHKS_98#Z-MJ4KZR_e$;w*4xMhP^TA+$C zw@SYwV1J(?g;96xzo!MgAATGCaRMNdnjV*{*cNtnqE;&`_G3t}Tr2F${u01Iz``127MgD`TM`(dl&QPCw%JHM|NC*1Slnd_A zCbD$jp@bF2W_4<`1RE?{YIaBNTl3(2hW@aKaop;2LSSr#LK~_8+?qlEFik%tM?kC1>o}I+B1$P4J!_v6c*)ynus_j&0fucSwVE+`&2w zurBM^;WO63Yrw~8H#GJW_VA=}J#mdjtVkH4fMiDgBV#JQ7;}S5?tdkOHR^oZvqU7ADLg`Wzj6>aa6;pKDZYu0FnXV-)v4~ zt%ybimUZe17Isg9#`%7Uy~TP|Txra2S1XTwG##j?$@ z8-2Wm$FQ3CvKk=TWRS9N&=)U{Il?-TnrV_jQQyv1G#&0W9eQKk{&_=t2WnM8rL)Se zwV?^H#yrnL8B!Ysi;Dh=C*oz}mIX}1+j(BW?WhflO35pKS7i0w$i)Q7fe#F|7(Ah} zKc3zcL!T*I{ikPvJeFm+iY1AM{* zE}5K_o(S?VW&l1l`GOdyq--Fjua91TonNK@4w++61MHyY*Q{V10Qfp^lAeG!^!~N= zc8L9Uzv%VA|D)JK0UwuTS!#A*~@*y?|E6wv>4*(d>-<5dVL^7BIJ{^ zv0>PH8e0Ajm(;ZE_ha*?f_)pQTQOzkXy!H9W)g$hJmXuCh|k5*c)tb>Cg3ui4n4mv*jr?Pb&U7WTbCc_Ax z-gwX=5V8&Sk9VBEFz7eO16LPXrYaCn@rQ{i0aUA^?Xfp?cgG|S*EsI}}x_(VO7r6xCVKICzpm(XJ!RNRAYV^q;qxrXC%7!;6kI=->mEx?#&*~(dmDl1}bLm zN8-1+mt%&;6d)-^CgR<|l!N)H;T#^FO>P@*M_ctGA;FM|B@3{j$P(ZdFk2kQwL)yZ z<+^a+p*GOO-@M)rHRDXEF%kh&4yUI)!Xu80jvQ;quC6+d=W6|1IR={oHrpDvRe%lH zKSX!xJ&z9zlkwnPzQgL`i(VH&{xX1E{;uhz3ynjRCd9(=yjIf0`6!3#j17g> zNE08~u{T}b3*|f_l*3(o0jCSqcY6e^ioTW3tEO&9EmG{9m+W$N_6wG=6a>EThn`&F zjLe@Rj4KS`G_dbIidaw2k2XK%34Pw{kP`Neaw|hA8%YB}5@P)oEB0RY{6{J}WfH%mmX3#GvYSL9UQ zW(#M{`?|H(pRml7Q1|Ee*lGcznega$ofxESg*Z7<J24Vy^jB zMKd%XTbxLbHowIj<)SS1jM@ok6lc&vk4TJ)jOIV!SaxOge8&I@%Ft7;q0R<6Z{6Xd zQ2@qgbb;kCU~8|E5^P+pR_FIBFeK50VYWQO6+zZgSfBemUNGTBD;*`KtTo!|#o!KC z`xyd(YxB1Sm;vLcjnJ?|lrlDc+JWqAz`xRXDMf|VqVwnIjiDADav-J(m4( zr9=zJb6^H17f8UfM8&7)Yjv-ONmr9Flw>Y^$J`5j%Msn8p?Dc11Np-zYtkhg2I!})N@7dWP`RnqL~G)Sx2H&s+vwsHC8V@eh#8Mzy_ z5CUl;g$KC%a)7{0p&~X%VI`dhR$Z`|==R%TX%{n*7K3fU>Y~wa_FrBGJ+b+(Iy%TJ zCGN<1s|bDE{>3A zb}Hx#@JpJd7i)W#rt(6)snM)AQ54W;e2+#bE6pR9H^bXIE*5R%ewb5Rl~y&SuFRD` zcq!Fpr|NaVBh1J_eQ6KVes_Tr{`)30W$>`VyQ-9=!G6KJN1$t;`6QT(eh$y!sqInYVBiuLt;= zC!cX0Wdqx6O`KS&>r1XNi@+bIxOm#j($LSvrHYshU#}&E-uE!+A~VXEEc2V1v1!>L z(dqp9`2^QXhi0c@f$`e;n^|9^)H#7I??)dYU=$CH-uYl9IJd<;CeClM4Tle#OBgL; z(8CQ0YGA~qjKMfs+Bw~o@=q1zA6lFb*cbl+{Pfl`yjr~k@X4c?(TX6Uyqzyhki5D^ z(iMqVs23716dB2{eqeGI??DkODA0v^NiZ(C{%nQndxC14RonP;X84+QS81vzm}Tto zAWiuM+4kGPlw(OINC>k4EM`G#v2TMNs%k4$MsfIyC3Yli)cpYS!eacJIH+(|MSrdT z9zFCSoo2|7<}D_QdQQ8M4sTfs-Y@-A$^S@H9|H-B@WyXCYJ^F`@U9Y}c=XG!NA5o4( z3I#GC?U;pVt0iFT?ZjK_ua>In>_qYWLPY}fZKEWww18={7{{}Ge zVeXsH(Y~+lHy^M5-#@!+(W~GnczFW=)eZaM${$R50so$teAdbZh~uH5@HlLvyaGva zN#d^Q$L>c6CcRdWx;p1_&Bk`N`=;4=iaZ5HQG8HxpXD~VT`8aB0O7?1gI=NHe{T1hgCZcD8^sC10SB$A3a(|^SW`wd!} z%IMvdWcAl|=B<+`@hRH$X&saSa|7vS3XeU*bP7jktyFO7Dhlq!q(5;wg+hPteR_|g z{=AHI+kaT{7<`#ASdcqT;fX|=G#Gt0<(gTS+{u^w#swm8_*J-k0=tCEqa3@{6Q z(G$@>?YD!w?lKC8Z&>DQj2nb6CC$FAr$;6DaH|>12|EENJ;Nr?o&I^cR z3ccj`$wQXcCBKdEa=a3hwHXFU7GWoxk<)gwB)@9gF-jhk6!2YCMkImn6HQWH*7H~q zFU*-2-Jnr`C*YHfKHXhqit$Q1OKqfnyPPFxEYu-el2q|(+m}WCo>*Pk9<@1SVAS$w zHeOxPT)p(qs~xGGhqxyY*Fe-pTrkB0cQI6dB62*e7#UsC*c8oFrdS%CPFRswmNG$e z>u$nKu4L36zUjsQ<5>05eQ~^NF0Cy0AM-ZIx0{fDAV2bfeV5q0jlA>vPY3Gi4(q#2 zPYf)_CzlrH7h(n}Q(Tyk8i+F4_}CG(#2(Bq^G_8M5$yeGLZ7#{ff6Mln7UWwP^@lQ0*+3FijOpOSK*@=Rn1{0J`oitb5 z5HU4HBqJjq5CgP=U%>jy$r(P4n>j&}NE=A5GMbtmKte<3Em|p;+bCBq!oUDqv%KZA zbZ+Kkz((>-jC{4hoLi>&*X(SMJ;JA=%|Pfq2s8+6mwHV8Hdmi-yi({?rx3p%hXGbF z=ZAABAcZnInduJff_A2|y{mNEvQ$f%91d=50aUECbd0%$N7@kdc(As=I_R^5Tnofs>Jv&9PsS2+5L#?sj zL?VM0f$UnfUVFz2DwVw!`oK!(c}F9MTZ8AY5mT;oX`!t^d8e5yUFtNBi-CfF!cc}S z?TQwCIStowz|+@``OWnxFOc!31J|P4tS?2P?KIQwO9TNlUuZ-Q@yMU)lG4e>Ce8nr zw|VAiS8vP46b#5akA}iy7lodOBwH?v`+#g&mQ_{y@6W5GSKj=wCEZzC^G!#o=}+BU zllb498Qslb6{WK$JObuX7j)e0*XDM^-`M?_Qzkc#T8->u-Fy(8Z6f30cT3tJL6( zmV)QCX8NDEHbv-CXEYYXRh7?Dty<*#gsqPc+$$ zFnDsM{glg9>b`3VFhhO*`lCpZ;9KLNGbWv;J#KoP1DSK}y+MM|&71)6Z6-zktuhEK z=JF3SC>v`pk0p#zFsu-SfXH?pPQc+^{J5Vha)m>G5X-NpRnL0E^xY_|S^? zU`kR7Mx=a>+JMM@s;IpZuw*b4Zeg5Hl7V)I%WVjdvdPAj8WRy~6}g5CZ$bnZ1p^Ei z!n?le+BbDacy-E2NJ+0f;&TOERb*}VaYmW}xe}tqc(=CrgUr1)M=ES;P0X5{hy4iV#T+zs=2boh}D!^z`+I0|-dAnM7!rA?89vgMOySVTkWM<-$;qz}TnLgcYL` zWhW=;?o6DG*tNo=Wn8Vo@~I3#{Hip~()7$|SW&CuQE>5oN`qdY?Sb5<2WZHy^+N zFZXe_1Tu@KF{EHM#J&L+Mo*)L0J-D;y#R|Yd#J~O%X*qRbo{d?!?e`$hxj`Hd9%3M zD{Hs8vL5-XJEpVhdzoBry1ED%rdB6)z!|aj%eAHCjn;z+8@JF{S~9$&-EU^T>YR*D z$H|z#U!Ap@sdFlGr(*LA+k_*+%%gD6ar0Ze(}4a|hil*x>sc|)&z2`amq?NIH6-+Vg8PKcmoVW*FkJIPI}sW7lxU|e`yK(Z?DYWmMD|znNSut`ygX&= zHt)_a#WH=nlE#2(GSRc%1dWXdX#ClMDuCK>@ElZ!%HIJpBlbm!(-N9HD3lT4NyNcXp36#r3Q$e@a%8dPoO z1Op}&7V-2Zj>WjG#B}#DDSfQIN$0i|{7U2s&wx$Nb>=QXo6%*E$6&ydpqB}u-e#1*VgWf7{pC;d3{LmlT={PQJvX^ z%BJt5GY1|bC+9s#A_NuZc)GWj7OMqZ#|7Fc8|Lo_<;c$R4k$3_+n)X zm{zwBtA+;LR8}{_&*bD^xo>x-2G5u9KCimM2mbYsOS6u8t80(7coa=(>6B5k;0-2b z;j8t=)Q-Ebh_{4eatMZ6G38}=Z}IO!m3h^ zQLO>O5C?8+EXp|OJ1xmEy4b4ms-Zg7tP9CdQH4_NMVZ12i;WI6+4-<_LA`lAAzdeX-F9=6s z_6G++CVWKT$iN${BfZ}5&*enXQx4{ktP7xOV_(y$S^Qw*VQ-gK3;u<+WXyN zera!Se_m?omX()hBqi+w7UqEG!_4ooW9xQ|e#>O5yX$QiTX?VMBI-ehVzP)#OT1``NSaGtgu4G;9KI042TS5&C45(=;fa*SnKa4+H zGDw6hmLBY_KCM_OG&4iKyiG?x_YQF253vPItlKzb2?m|cuX@x(<~`i_E{v5IJnj~q z=PPIO?GT+cg17upc4EVikQ<9eRK_5lk0@1Wmh5W0#(m6zWmj@THZrmMW+;X&$eF$O zka@TweHI83v7!*Sq7buU5Hn*i9;$FC$jKQ<{^X0$C>8~tHX{>@7a$Y!o%HB1n1Ddi~o%QaQQN}sM`?`#j-IQTCJS}gnJ@&t0=Y{Cv-i0loU;Zyd z8N(xRSvCpy;+WD1!5{sU&%MR zoqbvB+4|=G{0evg0|KGC+W7L1nM7}liW2>DY**R_d~3Mxuf7C=0m{xuE`#iAgpVxP zaEUUk^)n}N7K=J~@VXZM2&X*h5z)ONANz(gP~n_pBQd6+8pPtRl5vtdJ}RFo=Q0Wb zbj2I$ld^km?i>}lA9iwsX#RHouG8@cRrC6Dxnd~ND+Hpts?5){$rd2Ss1^yw=d!8t z3eg}rCQ73m=7*`2GI37v)h4x+Gn%jz+w{>tdnXg&F2)k!{G~`+GnRNUL4(#HOpT?( zs!g6u-BI4B2?xp(8NPzNzSTcS*xb5V`ULS~6oW%yH|xvI|N5PUC9P3%mj&a?(_#Hz z#%rI3=!K2Hi$v%Y{#VX|42X@L2M%{QWz>v^0pWXfrfE9<{q`#DT|{lS4$n;}9GIj}8<% z42+Bf-`z1hTzIEo8+fFI|AR_ON^0k_NneY-p}Nt|Nn$)!LH^ zGR76lV#g=sNc#A2XlP(%33(F6NDMSg+wP1{PZcaiN+mRSU+Hwe?W5&oPGqFhuiWgj zDGM+O2WyIQ>MK;PWqe(1`1Xt!npSN~5xkhA&Qx6K^e(R8ztnIDBUtob z+553x93P*`w!2uadEWU67HzK)9Q)bllB3a|!|4z&e=u1{E^wqa;jV+T(YA*2>=hyF zS*clBIiH?bUoIOOpKqS~UMQvE&uYzBw3c+GA`&?o+;Kf9RZCh4Np--H_=rJz8XhRV z_<9v>mBF&XDrb_FkCqj8{SK<*%ug!SC^**;`j-}_JQKZ{SeyuzKMt;pSZ=`t;Pr>G z?nDzRCUhDB1@oi(%W`%IhV2^oWI(o6JWX<@5(9RI02}oCU(Lw?xMd);Z|o z01XJKmE=j6R4vRsnR zrf3CT3nv&jC$avm_=xJZ`|C?koGJDZJ2$KwxA^q?K#nZ5z8uxlGI>E=PEJR=jWIS# zvPAI%1rqE^gc|(Y1}iJ)F17#K=&OBBadSaTfB|LKM$nxr^4u0D$gl-%vX!EIgtt2y zp%OOYdUr647CPUY-kRNpkg?8@Wq56hpxmZW5yj)aaKmJa!T7UdnP#%Q(0?7rk`3Hp zw1mbkhe>2X%o$3wcXd3a463`4`|ek^9#`m3F%m~-$d)@DwExj`&S7;vd>G%VEnCah zvR%t|%Rbq*TegkmRwtXwwry+K^*+Bp-ha*&uY>Es7x(?Szf$F@3LED$F2o!l+#U2kabK}8nwE&+JuG+QdK=a7P6Z^MB2e#mmNxt(XR*UN6O0OQ3E>bLLET!)dY)1fg zc>77+aUazK&V2lm52^?zKPxC2iJN#yioPmjp=D0liTQ9garBK27^TR!vN1arVq3#! z*}*t&z2?W|M2Fun>G23=MA~q6>buzIAukBJZJHTBB~=MR^<%=lu!0iy z^i-L<)xnL-@-F_E4URoM`b?lGe=JKk)}#5|X0r2YvA^M7=`GMOo`g55(aIYVNmPVa zxl6d^?^nNCFPXYO+2`;y3r!W2o`wUkT-dM$cL>=a-{+TIKX#Q{Nb~_-s(2KJWi! zYH|CX)c)UM!^vRie5h~Qw%VfS{_4Dy7-mctC$I=iLvwh6+Qk-k-6IZ>zlL*0bTE-DoHSy{R`5)`+jo(@ zW@GQzM8XO7maQhBS1$Y2_cQ)=`^N6y0kU90iIqXr^?2T&V%lCaeJvUHdcjTKZMU#| zNiPXb4{kAMmphg}On8{+l4fSe^FLiG)~jKXEq~pZRTW^)1Jsk0Ug*jEc}r9=`r=|Z z*Nf#Jva(!6KK7sBWt=K1oQHqFsem?KR#)2}8;Dr=ScLsHKh4j(sH!hs&8cKgTQ(FH znV{pN`HPYY6->uvI^{MuQ@6Hy)igB~<+o?>y4C)>yXzZR$T%DGqSIl6R#0%Oq}nuD zI5U^`aru%iD(x6Zl5RkYo?;r>jAu^Gnks2=BJbyEX{uPaw7;~E8>(bs?g z0dE&NoX@b7a3I%n&G7&QhJ4)V2!A9EVJCrk)Eg3;Zb_w$dqwyb%)!37H>_&)lQ4z|Gm4{_w26t_;?XZOCB(o zp6_8zWvw$i1c00@+O75V_5I@9e8t&(UXVFku0sYySvEGH`!gX>uF;cu1^eTfpRQ+11HVNE z?Oj|AX~WQGW^l0IAs2N2#xR6SWw;`aQcM6r+W5Z{AIG0jqc9p8eeFfDi`DiG$jw ziE>rnWD^vfTwwx|Ks9iI`P82V^Pjk)4Ok6Y1x}xiQgM^t-5Nqdl2~@Sx&pTeDNOYD z4Gzr1i4#fVPu~l#Yd!|;GPB-UmakA7t*|bfUYnnLK}*nW-|ll4V3`r2Lrg`ZJvE|% zM^laH@P@$ddtc8J9-I@kd>rN9gi3;{FGf6gME0=D82zE)U4v$ZpZd+qEmATYMYeQI%1Akg)BeyWeB1Xr1ilW=zRU-U!Y#%Rb`)rBCFiV6nFx$);Z zPKh`cTNXh}2dlsqkJoMg=b%I%CwP?w8@<2SM7cnK;A_yjgOgifV`acV2*=5( zOM1fRZoN`fOM&-)-&i5qxtyLO-U(e6qr%{fkMpUna<|2-tayiqX<8kxZ?;B~@yr`6 zO(%1Pwe3ElE`2UB0lc`2%iZf;6%jyZ90Sf30Be%d;q~yZ8~SqlY)4i^gkMT((c=!g zYiDn`Dvez`)Df^wY%kU9BGWbb6}2=s|BJS3?>Sq(Y4PF=25>68U@+MGkarV6o5yS$ zVxoor0yryp00;Fmr(JPEf@3N=)dY)~JU$_ztt2@FDk{mZ;Nv5cl~vvr=PMq#U}mXB zTa^-tcEI2WsB1>&N1JNuSq_Iw7MKJ{LIhv$;n{GbNvfUC9dRR52NRvS3Cz@aQ!2s^ z|59NiY6j<1JD&YO({`ob-YQ8&m}K!YBrjW}T4;*YFGBrxGJLQezOKcb0t0}&_B)^JJ}`c1xx9m3J0H z9q)E;2N$Hv09r)DpCC0yda1WQ<*NfknD#8-axL6|bx-QY{twrJ-s6!mo@u53B0|{Qn@4CA{v@n^!#Nr zCnV@8!U3ApJx3bGswXnYH<2VvHUnFWz~BZNtcBv{=2ehw(U0#0=-ZfL@rwe!AyooW zCdb9*y^WofB&{nirSw*0AGXQe$5g3O@pz*{ax`WW*C;2_+Eh?Fl$olOLIn%*_Fp*` zogHh6(W%_5)c7!E)Mbb?)n!Veh&n{FuVCGT$`=yc>H-NnDC405@_E^T)}gQg_#|c2 zVzBxu5%yN7aDcMGSD8D~bug|%g6h@Ve4_@iG2)= z9T(n%&U`J|Yk_UR)EajpZEkTa zw+97;6KAN?T_Q9zRxKk|VzU*c4?&R11VNWTQefdVY(U-B!YuO-A0>E_n|7M4LT=Ed zZLnDwdJ_>b`KHE3OhFSOgRd)Fk^({?{Tiy6p7PT#gGh0VcsK~on7#OB`iMeEkQ0Fr z%6|oMxxTTSIq!+g>d`5#@w`)AbF1L!KVOjg*Z3qBAU9d(gZOFg~5{9YxnhZDt#TtiRWU4_4^C|jKtVKCv*1twrey5T8+V1BR zQ#j(Myf&XtGTH=kXU2!Z_EA(hpJTF~AMbw|+!}nK6dw#A+{exnMQh3UYGJOhtv`ww zn)U_$L~Xx+Fyp!v99|o(Aa#%?mnGj?_}ko;p{vM!d7YXxv;Lmb1$b(MZ2MAb0+a0z9sprj6so+3-o* z3!c>Ms}ab`g6lt8-Q|ZnqnQGg!^N!&56|F%`S9XJt@|*3rJhv(`g;04E&Ai_Zh`mx zFmt1=cK=~60p#B~)$W`UPIUARG;D0>ghV@#Y4P9D(QHgw?3&$Ssx)>l%BuEPeedUC z!`>!Z7_|KS-ez|aoKJp!cCP#lu>K`ED}CD{B`rDLsd$Sn=4fTA($+d$$8Og{BXq>P zrvj0wW4}wQqZakv;91I&(QwNh2PS?oF+?C#E> zas!vtmE(cP$nf#cH5#oyTQ)@e=j~fw9xjp@_8)5ZxLR7C1ic3?w?6=>L}m{%d{2A- z`2&H8n4z)pH*|E6qvJIIBLT)$-~11AR(oUpULo~-?$|fHZ#ahvSyC9advi+M9Nu3k z?)ly@;LxoWDz)V_HM!x@(c?zPq$FhxE;smpg`C_%6)EEYL$kAuHwfV7-#6Hg!q1B4 z52XEhaq(~~YAFw!%X70oo&>m1C+RDca5Oyt6aH9GX@6N&I66w(;Jhb#5wyyGycD~+zeFH;@)Ou%$sl0U;}0Uz-J8=5+?#$#Q3AsK;aOb zE?es|Vs|gTc_}gKtcs~pHlPZg`;Pc00JZn|SCJNPaIN`u$Iw_*%gx2liZ=ope%^z2 zPmTRK0phyv<~~r|`h|(ln^M25BS=4{9?ypTVyFEYGc29LR8TTx|+1MGy@nUhfo>S5FNeJv^{UL zU)(3I2j~|vuM5$>@|Ik;C~$yb7=BmI?Q;sCeg3TITZa!WofW;xIh46uw`@Ian~vZS z6`r~#PSTaW?#$q!@gSBK`!xncW}in;yl60x1$`Gz`Qr4UTq87V`uZj?rm8DFgKUc4 z2BLg2yWAz*6&fIi`<7mV5ZnNvV)X?`WWi8_D`Y7%T;ugcpo<`8kFVLjW7m1vMKmrJ zFAY&GP5Q1XV)<438O)zuEc!%mnSxzI!LzTnTOa)oKJI35mqOP6LniQp#4kbN4>K5c- ze%C!36GG^1>Je?RUs^wRz^Rle$f42XSkouiO+*&V(43E}tdt7CU_p$e29{uABNv$D zbeBS+aZqiQ>bDO^{{RMxXbKysvHSeni*Gh@ML{@_{L+y9Jx7JQtmBFE7!Abna9Ndp zx=oXM1a1y?RTIC9eG%HV^e2f!1tg8;i#6vKo8mI{Lc&|3qIuDlKBmQbw_Z+yon0?= zd$Dt~7EDxO(S&$NA^Wj=_21b(MfyxpqP#}?kk2H-@Ku}0ai{t%$uU(W5B8U`gZBJ|Mno5cF=K3g|gcuC)^m8Z`$+ROhA~vTi?2%wp1#2iI_Czh?=I}5;a*_-FBhzAge2G zU}|d!%6Rn1ahXJ8|5^YB5Gxs}8Whl2Cwe@;*UKx>xB6wVxwb(N?#WC@}`znJa`Fs zzJfI%ktOZ=#XV9VPxxTD$Dx%FbPS)Yc~`IMT)nf*H8Y7hU55NUMxM0i;3>|xap<3} z#oeHEUwE=MZD4RR4Vg6N>BBgQg9^EwfR}$;YQ#6Sn3oIDX{N6P;|VDc`M6OgEOXzZ z4cm;-z8I>QaMI6f(rprsPQEuLI=#$ty$iwhdo(=X$gcU#!OdERMct8|uc%6thvq^u z!+tKLz>IfofPzKi;A0IPdBytL_7lPNVM=(iKI~Vs*k``fe_r@H;G;{W1VQ;z1-Fk@ zG@|)vX$|y=bEk)IM>yNJp>F9-lu1)uG&Ciba`srUzvZDsTB2=k zcaMF|N;#T>hA*WqY!5RWG~GkPgCYEO-~p<&V8Jf;C}3V~373KROvi-TLK=~WqfEk{ zAV1Ak^WRidjwu@RTqkRQ8;l2v0lFgJ)8Z(s-j)bR6Ysw{^3(2ZC{Gl7ucc$+NSG#$ z+1^Ue}#; z0->*aG~~ci_tWT_xR7~1k<|0ng(@Y?ddL`U5#1`fjEqPu2~%7%eZngc*@o*`d{%`j z20&e@M{S7RbDBO!*E=uD+7gbN8S5y|95H8u-*h%|himz3)_8JaJw=0R%Chc@LwTRr z@+IvCiMba?(wn%mG6%22_0A?cR_Cejh6B`)OdloMaHv0vp=NyNmF!X+YkP^YzY!Hs zyElClYcsS3SyH!8r1*Zn!NoZu5H6S@WlliDKMhE1LZm5yQ@mHG@+hX2xe9m|phsLU z)ctPs7J0MuoGt46@M`Eys)Go^Y0#1Zt}NN~KF&?|N*S|%BT9C^;VPqIoJ!4fThEbY z)Z7m+sm*5--&oRIjY3Mb6PSKHI2oc4hb83Coj2ios6D?~#2$H*9Ut+kya@RU5>&)EZc(28ZMef?s;nV3!N?O}-Y8D-_AYl?7%@nxxsr2g#=1*Wi|a0+G*4*K)N*ywGe7xG3`AnIVR#d7{!x zEnhXpe*aZBr6Q_#Oy>dY_HY}QtR$+gjy-;NuBtk}wS6wS)5BG%BVW`~hKP*JdF>=q zR#8eq)fRV$mwMgw;gPtv$J_q&oZI51zGyeEy12W4EF@*Y?cotzq00fWx%@}JN z4xth=AD^(kA1`C)Bcdx`3xR)6j}EY(mbc5T?5e4)Jy_lJ4es#LKUk`%0}2tK0Em?R zzPr{!3n)u!EM_hL{ILWg0e=^@WZSHA5XTQaJ|=F0OfAI$liKFnJsvsL=KgJX`B*w< z;!*bY>!O1G!OHyVn*6x%kHFGJHI=lCYS%Z?96!VIfN1mUtX)B%$nWZZ&qZ#2Wj$ym zj{6-WuyV;cqdOfjc>?oiLJklUVod*GH=oD-VUmZG88ZOk9C**VAaSKMW|hXRwS%@R zww%uQCNRs%5{o|O6n#_7To-cj$Mt#j83u4nY+qTk#cq-2Oav}SDCX+Pb@}G2`jq2u z_6Mj^%3+T9>fGoP%8tHKK4&-w9mYg(2y;rzrtxwp;hiWcyNXq1l4071U;ni!hW^wM z&Cj;CASbp6(~|^|FjCYk?q#rD7*vbojG*XHFy^m}%TCK_<#`+Qv{G+*!eaSPAHzRB z9aStfviM98$V#U#8+{(+dXTtN^gejpVjYCmX4HPvYq04l8^D9hTDqgUuD`3%(P?&Ak0Cq#z<`kv$- zTAt_hVUDSyzOjX*0BHNX2e!KzR$E7E&iHNA?FhSeY~BwqvS_h!o#$Re)m}>iqa$WE z6W|6IrbiGJ9Z7NSiI|o?3fbbY)t$az`+n~(!F9?N8_=4drl<1{T6QeT!M@4py_MUv}Gdpmsrs%|1h4UN8-^GqrE&hC+)G7e5oyG5z`h1JzC(P~uG zG>Pf2B9pJN84V5Wy1F(1{x1{2qHb~n%sx%c<#r$n7w}%rtS%1EDqQwYPNt^n`-VT= z9M)Pb>irn0)YX=fOp~zxM+dyf;gyC_2dC)2tE-6}ll;S1ATtNY+C$H48}h)cKO;QW z))i8dJkg1X{9X^QaeIZ%&z{h6Fn|RMu|z=!`UmMyJe;HHWTe5>wYyqn_Gr_?Th3i3 z`lo<*0g8s7z`L%`SF^Avwd$Q-4moQ6l$CYf>?(k6rR@Yzs0^%)eu;yDePmYDoDsRC zh0O^mS;MdHcM@{RxMRrgF$^5;&)hWvXNT_4Ts8K(>`-_!SqWF zJS0raO`&sEf&JVVog7f`<*8X9#0+0iT8hEhssa;3V5vX0ju9hDs+gq}y(#N<#$Peq zre*rW5;t?C#-X8aVjc}%yN=lhO2l6D2Y*FzTTATyiTocHDuj9fi9pLAkzM)IJ+fF+M5Y7=gh=i@(vw@)0{Qt&0YiHaw>$PpH4<9_L7`B<^( z`BQ_Xq?on`?*k(iZs1V&Xpp-&v;wZUt~0asmC|@XxhDlW z-s?cX<8ZLkCiRDesV$5M3e+4K?w{HdglF1Ba8W*_gg$S^paoA_8XjsVAIe>I$QkP_ zv=*UhZ_xJ({PEt2-i$A8Mx{d)MV;kmKc z{*e8i$oEex#&$uJ;_(!PRf^*Ev-axZdKkJYPigUN_mMG)u-k!Tw4SO)_M83b`8PwRa!&$=nMzuSVixScdT1NA^Y!Gh?$fK|XbE|=NR}M7@#&@V3H}i> z6QKJrQvafqqA4-+ZVfz3-D0pk0CuswjO8|WNwR_9V8C(@;W6Zv0-c=tZT9p(Tsodd z%F>-V!!jqvPwavlis2=QwAUc;fmSQ8H7`8i0{Zk0XGDbd1eIl)+%G=ZtkgD3JzLNx z<-Ig|p|>KEg3f~{rBZD@%k^S_iNWvH9VU7&h?{O&C189LLtaXpz{W-8^xWN9{O-;4 z;OI^#aEEWWOH=AYBu522<9K6EXw}IPTGVFbzB|llpJ^Cdis^!jRN$9iNynxI&KZCZ z4^gdOaJkuOJH^5M_M4>(wo6j|Q|sz8O{?~cB4S0(eE=+*eqK3|P#qsI%|}7G>~`DS z9O0cLB6%`EvOE_I>G{TPW~beA_%gM=GWpI~rKr9#GA=a-3RL|I@OiYU;Q1i%0nye? z-{{Tbv!7r$?+X&En+-K?bP5o|tM!K$F@vIDVRKb7|S%&Q7Akn;>I1IoA>i zG(G{S7>N*+1qUZ4gB27)g*xpL+92foyrQ-OB4~B172LKm28-g>LJwh-1dt3Lmz(W2_o6vnSrF_)!qMkLdPpY-`|yc>(dlc zk5Js`7{{pIAW_BR)z7-s7c0A?)^cg_7 zC8`)AOF9OTAg5Y|*5BMsujF`C%&PWBcn&+=FZp3%LsS2lx*qpA%c`t)z?>h_#;Q#I zw(l;Na9zGHj6fVsFLy(LG;B@JfcbtZbBKoh$6ZLJAvugTw8R z2cX~f@p;1+bVUV$$gs%!Kz4SKrPF9Ad!sSgr$FZXVPdQ^4Bls&#l#uSPD=r^&Q@FZ zi!b4TN}5=ef*RaI09f;Z${uluopgmV)O6H{JA z1rk8_l9rXZr3v~W>FMPFb8oe=F^t!3WIq!2JETw~0+Y>7Gg#zUG6q{p;5!Ox>Ns{Q z4kJ@jc@qavn$SI6DDjvz0wMq%y|V+lT+@-EFg{yE_Gakb#7_e@Joya8Th8 z;vPtBdWE*H`E7JP61~K}wJmkgZS9<&%gK%RNzKIi-jV^PMt!^mD=RCH{bY4XX=&l# ziq%es@*5t91W{4Nm)0L2)zj9&5+qvUsf04ZN9E^vbx`M8NHQ2pDg6@xrh?!XrWM^SM%Owi-c+i2hn64-LC!g~m z4E%9QXB9R~DGG%8m)yEV0IP%#BT;3 z=1x?^yJZ*ElAnTeHM~0h3gPlPiX;S^t?@9cgU*Yv1mvvV;+L?mqEU&d?7q{sFv_r6N`*D~+1mQ+BIVP#ir6`Z z6Sr=(G|lB!L?WhMXaa+wl`*~msL4nbSu+rd41{xHhzKN+iRKEGV2TOS<8MlFk%T^OxdDNP#ZE}XJ;Ls9yDXB8+ zjaImH)tR1-j`mRdre(Fk$~;t-)!z{)>stXcUs#2SR|=kuiT$MlbGKk^Q7-sSo`3 zb!{zBux9~R(a{v!gR=EiCf2&XiHVq)7zQYzAHSLQdt*0D##f43DIsA2QJoHtAFv`r zpUCZ)_`?pb*=o&jIH4l}&TzM51qH#v-2SdC4o5oi8V@I&0@o$BUaK1r4d%>eo0*F)6>HXdKBUn>~K}o17Z8*wYb&myWu# zvU8elpHRp6Im5$3G!%gm?n;+mtsxEtWJC%k53;)`qpsH|dGMYQ64$cu_WKxMiMa-X z5-M72to@)&tB^?cMLUsjNTVhN=J-!b>m*R}s=&EzgYZnutVZLDhgW@W=ro8x zQJoX-R>2j$kOT z>DV?K&J|0mGoouDxOw>Bi?hwb=^dS&fv?_Eh9%@IcU-wGS0q$0Ix zr4o@}e?r+{9BC{acHZyAz;oCQ`Covl%^Sr3FY_Gn?~kU0Yk&iBhqP9F?JAu5bxLst z*w3KG7lfs-f|3l7oro1CGKgXwZNTTnE`C_=4uoS~j+D#Tk@oP8`IV)~7cs}#0R<+h zsXFpK6X^gMf~BxT-{HEUmvbdrJCsPC^J|>Ly+GuBUxFu_otEXoKML07_a|d;YPcje zJ&$F_Se;n&SMKV)vTwHd!~Gg0X4Phr`h!py2Ln(OSAA<*0o1}~PK=tV(u#=Xh?io4 z{yLOjqKE7+VVb&T?rbJHUFkMagVZpFWx#phPUzuM-%q4~AraJqYFV`K1MhphbeJX= zq&Ah)3T|tQEA{HXn6Ir#8k(6(x=XSyzvcbs=T~DewRcdUvV)j78+uUw#=|KaKU;4u zj|SG%vr{|)tG-^#-g~7}+w(zH!>FR*z;3A|X$Ul(c57fwwKY)YEyCd>Wy zQ4^?s_pKv~X#c-MaS=PWS{LgTJ=47zz*i$IC$QOva(fU&UtdCo6)Fux%Q9H>F0Icf ztOF*KIEH!GzVN!y+UC-^Z+&Ci6=t5Mg&gJ*L}g}sdP#2(ND8=!p6!$2%= zdDSe=Aywe~D)C*2RT{IH(JZ?1uesGxy8qFqFfE=S^vjJra3!7)W%uwR7OT}4aZ2Re z75Kov3NdHDkL2001!a3DX20HrF>ovL=L2$`lhnk8pRKhU*NOf0^R7-WqMuoUz1Pz3 zcF`ewz7!Um=Tav)=KH(o=f+x!_RdeTGS{(-k)k`RE-S+-w_v2pHenb;07YM!4iM2K zRxs_Dzw094ch2&?;cKoWHl*(H(mYisNXS1H&Ua|};gUFB8Yb$FX>Ikvkbc4^l?7c48eY^&j1BH!a;waTz z`SEd^2QgX^xCL8A!l?p(Tv8xG#6g@M^8qitj#<`C@P`~=<9*0L_}o8z-`b@f-qW-6 zBl-yMBG9jpR_(!>s!@sE|rR6rlp#ZUI;Tb-mCL$K>zvk&fSv( z4P|Tc&(BdHO^+HCH694(_&t4F=X}fq zMrO>)CcrsT-#ObEy2CSL=H%QB74(i?$@mJe8q6&$4tt)A8!z1<{GH4a&8^P!%4&k9 zrf}MyPnw?YAMSUKw+FK4tndAN;rydB)r{=SCfmQ%q`3IKe_ad0oMLn-*pO<@_h4Jxm#1AVr+=U8FKzR;HLqp^2 z?ELR`R)H*n)bIT!_anLKs>^hvob0H1@rS+*^e(JHt8}J=0zzNUY)a=!S-NQ~3&={v zTm6@^JGqnafrTFkIXZnFz;hQq&auH{3|8Zm_fT`QG6#vV=97FVQhqM)J^FKzcmA0# zf0uqQT+;GV4JVF%7kqDvX_#4XTzM(Z{%DYPV|ycs>hd$uqJFvx(2|^VcNd zj^lQ!JU47e*4TZ(V>fY2;_O0GQf{w4rC!nfVgqDy7n32%!Cw>xti9h@9~3oc!`w*| zHj4HB*ebwb!0=(+N|GjSp`8SRQ|UkDi_54uz(1A1Gr2LDecV7F+no-Mj7RLyBFFp_ zJgMnf47n~z_Um z02C)2*5v>JnSL#JYF}ur>-8Jo4GZjNSl>b)?rCn-OkIT^`9u>!@@&{md|T$(++VnM z2=}EIrt#VS3{GN|PgE4})FHK`XZ;oRGlt_PVAuVy|0jh)Y%PWoC`x>8KS6d{td=|f z!bQoMg4)24R2f2OdpbHqHIcX-fO>L`N2R!KA9#3&KTP}kX65#6T0 z4(fI#5VU%~b2J4bi{&pCn*TW=KbIvT`##R4G+wsPz0s{~-xLwp_A_nyJ8(UO3)dm$ zEs7dwMUtTu>ixeKfbSK*tZb@-_rriQkgP+|O4WFshJwDqe>PM_qYZ>)rciit>8F~d z7!0V(7`?5~^*<&ORn_O~97fR~;Y^d9G-yvC!Y=(P(AT^kvXP%=i3E%5>a;)F;C6*5 zYM2cR*Q5(7+Os@vj6Amc&47v?2#~#Dk={p9F1vWj&cX*Gtn!*mfAM?e>;v*_I$7DR zzTpB@b#(x9|B-}F)yV>-{myB#Y@b4v>kS9^!IAJE1G_%nd;ku2IAGBr`y-_1 zzHO3~h3|1(gsoX^K&ZffN7vc8K~6bwxYG~h2QpPa0j{4?S5PU~_)YvV)J#Pn}C z7nS^3-NSn)a=NIqKNV#$*Iob5Gaw(i#SC&*;(#mgve_KUdOmuL0XgpS3S zCEpjDo0U#`Jg%Rtr%FiL(t$R?UCjL(wP@Gao*K&xGI_jTV^kS;axc9Y0aVfBwDH&9 zP)5^Y=ZU7hX4+;}fLsM+0SX}gVK+;BZ`(+>jvlL3R=iauR_`5b`TpF_p+)QY_?&x> z_M!TX=ylhEPh{;IUY2pGRnqTDrQ&hL0X`n3vDQ?TmOCW|f$fV&ard}}u$%=QFZ+rx zcE)1+mtCF2OORTqqHmXBK*yN2_D{wRdXWkb23QF<-jnN9jT%lu0w(s#LYDIMtL-w6 zTj2pp_JS{S%UnOqc0WlH`#zzesfVy|3&?GZ;})AvnJ8cB9$lPD&WtG5YY_xLoDOyH z6T$LLu|{MzL4tbgFc-4NA)PrQyV2Ddq19|+MQlkx*6x5Ll$dQI^eE|vqpkYvY$I3x z-TRX=2fpO?$zk!s+{SQ561$j5*zXIXsvtil0#;Ue*-r^S)vgJ>IB{!k4798np z=n-J$Ku*{7pyNjKS_ajOqmTOe+uHjU@)Nj2!QNio-96{={6%9dW#Jv4C3~i1e!Hrj zS+}Z0w+_!~FD?)w1;H=MXGL$j_ob%V27}`iYN*eSm1;QDS@|=NLkk6m6*hDL!#WTg zlvYpExoGewx@49l9wx-!UG$IOXQdoteWoh8S-sUr{a?K2?E01bEzirMxRJcv4yPRH zyuf^du%M{@MdksLS?OiaE~kHHA@H?)9>_)j{1jMNz#|O{yw6Ur@Elrg<1CfHp0bWN zzWc%X&#aeNXwfPd7W~;CGNWf2Q^(zNXa(%k8-98s+AfUI6xrsgxT==S@dXQ~>6WUv z#Z*avwS~C!QzWj3pv)`#SO@%NWR_Py>obpOhg=+rP$ z!NfN5#(_{RMN#Z8=tHfFLj8%R86&M}xavT> z0tPRYmH6`jP0ObL${3FbSUFSdt9UW=7T$@thy@j=0OOA!q$*-;t#U65aE_0}vsiPT zrCWQqon6&&K}|(uO}EsUt~E@|-GEs*e6)$~+T)sY2h^0}%5W>B6eTP+B2OVq9|L^P z{A&Ctk!iu~F}26kkDfm$(u8b)+w9nuuy7Tjc4A~BkigD#=gcrxl(gDbKmT`bF=bM{ z+QZa5Uzl3CNC*_W7Tm>Rjj0(#lL97c&X$CEAfwwPX6F11gn7k@kyL$C_}2(kO2gew z4EZ;Yh0D>-pTQl8h^xq^%IUMhy7N1-a14a^eT83)Ovtc4KRiS^KH0}evi=FGOsT@! zOmATT%^o|e9yBPcuSgvfQ|mpydwPqkJ?<~Yf-bE=Q`=fYU%dwHujpRAhNQ0uJ= zLE&*16_dt7*WAL3hQA}DtVMqLam9PKd_B2mn)!^6=mP!~@a58HNldb`unZKBmp>kGzGnx#lK>!Y zuE%RaE$vmnCAohLKDBqQ2YG4@2SIbMHNX1y28t2Cd#AcsI$3<(N=F(bNKjs&iMfk$t9;fClh_L!}13uaS1~cg<-E$l+3-%5ny{ zUL0t=a##N@FSLb#N*E)%1^;HU4qp6L3%^xos6^7~N(&M%=@Fbt)O}fmh`ZCE3#+MX zG8|W-(a_RV)L-n2pJZSGR^90;oEkOX)01gu&8@8s9Ub9ltz^_HWXXvCMz*d{ZoDsa zT|GK5P{rg@v9YB=LgxsPCfgrP+5Nk_+PTk$_I^Hg7#JAf0yL&9=}|$@x%&?vcQPrA zlUqQjJmbZt-`L|L)L=|DIVmZEmlv;m4&Uh16w~x{{IAf^>rlbh5FopT9|?a6(qD(+ zFj3*X@3%-OVD%~jhUp^_TFyLiFlaoyZDn@mMMY)k3XJOQeEi|DkvoEZ4}fSr;u}$> zX!$$~dy%oHXGVCq6ge7fBD%`slLzXzJ!t>jTx51R&M?GHal6DZ%DC;## zaw%0--Gozjf9GjUc%W;4(5Xmh2O5a>zskgI3g0y{SA-Ez7TbRwF;! zWZe8lQ5D~!Yubj*CDMgoGrFr1Zn}cK9iT#dNz%h3@4=VR81xTkHVXCch^uUvjk{=D zvL^w?*9utllEEyCJB0ePi8WQKSQLT z0NS9!+JZUdU@?v*r$RDn8+Sz6w1p#fDV$!^hx@_v{I0ZgWkjTH6ESvzYk$G~vH6gt zX`$EH-m|k43PWej#$&&yif6|Po!FA_ZoNQL^j{1=+#4)k!k&~b+h@B!x}V?@gZ=bJ zQ6}CezKX`x(3GgwC%et6ZP=7n&K>pT6-!jp!k+eeyuA^8%6jd$VE_=2vno3^?BYQK zKZ1<6J};`9Ngb%X1nBkM7^C6}$;?EcB&hwmj{WEiihW=FNxJ)5R%yAvb46v2GRdye zRi38$9~NkC?@V}Uy*HhHHT7njXyV_7g5Y-WVx!~PKlXZ7Se!R~u)G{V?VmjVzyiQ~ zI&H48V(`g-5_q2?!vmbE-o?iiAZ+chAlyE@`MdcW4SJ_&|)8N;~Daj*dlZ ze_Fl<@^X~4wIv)KdF16|L`4B05&l4NG+wjMDbmHo#o4--e}2Aly%s$Zl04vLj+iZB zgn%FS*r4&Ysce(N-ae0r_m~W?*JRp#Tduxo7WZKl}4=d#{|L22HJVOHDU{=44{>E7{!olst+fkEbn3Q@@}# za|TCxBbssOM2CgfeMCYjTm0QNgj9*32{iTch}>Z-UTR%UXy-~um_W_EWB<``gg0Bq z=03tHaW7K@(Fxnh{mcW&EXXY~-r=P-Yc*%ZP^>`<#MqNt`lAVObTndReU-o#y_FEc zRCun=^gOI-`61c!2d88p1>vOJ2n$YN>F-M7l?z5(EXFToOZkd&@V}t1nt!mf3^e?Z2lPCzSI-0Msv7!&y?Kdc>F8Zg)UcPf6?K9>_$S* z0JfhTDdhK#A+0ExSS+cu(zdd7bS$hXL9FhTnUdjHKCd6HlD{42dg*Wnz1Z3e6O+y} zOU-VgUq)=~&L5{3A%ae)1Aq3zmWB=8B{#|~9%gHA_osdlG-vDr7&Rrv+3UUAM7w{S zwf}^f*r&qmNuRk%O={G&d4^gf08=Gqff5MGXjP~zyvx@dGukzfJ~*(TuiA$a_uSb( zjFu=Yto03Vql!cX7jRyo?_EcS8uXggHWdsPSQF^>?XYmSkw6jRd7}l^>hk=~sk^r~ zGe7w6e;8LKdQGhs;q{pk96ewp{deB0GXOLflV19O~yxykUFVAM2w^ z1ybTNK&4Q13ySHXX&05}5i)4U{HQoN5Wl1Y7|U z=b_p&cue|L%s~ON6&40ww1r>;Tl@ZfWaooter*?oM@54}t6r(kzHIX)7i0KVs4gkw z`Wp2arG??$C`{lzsdvhg`c|T1RW@v2T>C?A0JrNKwAWy`K7oFLtPZeZhfLUR`SwK*uqTs;N1Ga|9|rb3`AX@9+p~V_6Xr82}VGxRuuH z%v=EvZPR$i7Yv?^D~?&i-I+fHK~m5;@91>l}dLcL*3Hys*?Un_xz+-MXOc}`fO=FZ*z(*lQ|Ab6k5@l2ThW- zOZp~{bvFhed7Xwq3rQvxQGdr{{g?*7DV?H`WCqheakR5=^~G2s9cPt*ys?DNEpz8k_2xeoTs@6jkY_{Kq)4Z|_Lk>Ct{TTkYF>!Vv$`boYoz zMl4dSWNc{}QXG%@H+;+IJ`GJ%;zoR&AAyolj&b)4js-hRJe-NMa8!b^z;?ac>F z?-QhofZtX6JZ-b6(PA=nHpV67I|6{jqYDr@2SWnbrb}QN)E2OCcCHhb0LQw6UO-J# z)6*}QfUUPSyek=ka2H3CHp=}pVh7Q&aCHX1+Uj`DvQF?$uai4=yxW`rr@S%=!HT+knQtW>N;%n-$HRFHJS#o)@4(;u$u`p!T?=1M5$Peuv)7WjP%TA0Bvac-jL* z_DB#x>#4RC7} z3ur2FC#4i=Yt%`bQ+LyjqB`1!%q!I^Ea{Gm`oodNv$goNSvYuY9VEO@U#6%z$S?Ryc;Ri?dAYqn#;@uF8`Z&zYaj-ANFSA_MMFdg> zI}%M1W-%!p6w-XVKp^G#5yaa&u@%x#wMo>CK~`g%XZ%Kq2tXsWFhemM4a~sLDLD{< zv?8-2(80#r;S!(GUJzfX>ta;;O6t3k$bJipEve|e1Kh&6^)cxVW;*jh^WKFI&j%cQbUF+S)TyO8r3O?Z~Cy zBh|nlmB;P)B0$!_=e@&KRi$;iScBuGk(PG!xtnGIlaL&EURl%=D@6ykGg%D{yMg&z zp-Q<{n;q`w+d7x$E1r;vm$tOIWE{*S5iS)OTgX`QAr2vq>0&3MoMJ_bF9UMQ$lI-n zC58Fz?C6vQyDm>sj7)hhRUqQ8boB&R4Fo&scodYK?g4>vz#tnb&2h1zVB=2`bklA| zy7TV%hz5|siN996PA&4t`C38?`RzIrW-|=-P9{uw=;QyeMfhHz(kCqJKM3O*axPZ< z#lX}$z)3q~5e+-F&x0%h4hDvL0FxcVUFlg#&Tb6R4q}Nn0)7>Dq&Smm{7KR~zLPDr z-B~||6or_bE&QeGK)f0E60h{ighink77 zJJ6^&bs_a~oOhOvMwDaaC?QteWHeTlqdm4JD5*6avPt>0*n~Qt?+~j+D7i62m(7b{ zA=i%{-xyB?q{nRjbA&_a>sAZuGXvdEJIp<_#uKKYR!#An5(oNo`r$U+{=T#)NaC+N z9GOg#=?by59zOZmcjF2CO+pc=Cxmu{bS6eFFS7R{5??7Dvn9RRtOJST+j%kE^(8Ya zy_U8`ti9UbaOCg!)gWtzFA6`dW-!$UiaZ z(=jie+rD510tYW$H<|FXQq%m0P>$>SP!SqnvqlGctm|$XK(Ut6B^o%|BEJvO|KY4y zJ;%Jp7n_ww_I^&Lxvcfu$ew>cF7v2Le~E~x{l{R1!1dZ|&zwfeQF%C+%0d_*B97{iOQH*fz^!$f~VtWm5{cD)RCzAFLd{Z-pMD($y0ke zl-$WCL_6F1ctlEieXh+927GVZ{q6kwp!(76>NYLT>3xv>UW1~%(l2U4q?o*4Vt-p4>alkq~fV{@&c%v+Qr}72DFPpI=X}X zGZG3rCnz<(w00V*QwnNcU=fwysB?oxvP8@Q)WO1q?A}cn>0i0(8HfEs{9Hd*nr1}| zRvun|JMA{11R&fL%g~ZT+m3+F-96kY4z}ppLx>}HMjCvfjZmhNsAcB2?QAW7jeJO7jVi&XfPAYT+ zEIFISugo4d(mS=v0m|m&IzNBX|5WXnT3ah%VDqV4PqGa`dQ&H%hz_&UP&I9-)j<`| z9^2vADG)%==JAZbM|CQwOjZHBlJp%+n&qF-1iTA2kYdcEro*zcPy> zgAN2LRYU?MO8Y0KGaK)>hZs!QlieL}TaH1(1*L8mmUtzlwm7gmK9~*c;ZG^DV2*Mr z2kf((JffO`$nq&pGn^8D0A6~f9OUuA14~n_9tPmEm<3pP$CGq0%f4`I_%T*3XAb?X z9tNsiWv!K-B<}*IUs!z~c|3mqt7Jw-`)oO^E+#D8mR2aL;|aGIA|+*P1RUmAQ0od6zq3etmyW%1RrZ-)$HfDFZA|?*40-R8mz{l$RIC;;ilM@6Q+;b2&Kyc|0tygW(Il zftM=k@40uq{=B+EVf^uTg07Z-a&8WTN+H|S$0u+t8-kTp)$^qMJ75}ddVA7RqjikN ze|}>J0;Ops1%<}DgI;-@_7IEs%~ZD;G_s0FbUhJX0EDc&3PCobFZ(7qY|7 z(f5b5&9Q5;wDe4stKs|xoAtWPx_DSMncMKbuGLQgvtRP>U44!E^@LBKvma)#Y0aB{ zSwPhQ1cnZekM9HNIQiw}5kM({^7G=tj$c4P{=w1BZJ?(o@ZuuGa7yU&dGZs0gMaRjcQ8^+$7P*7VP(3;zSN%9E>(a6Q zv+lgQtiBYgSTAI2Mx9laQw{qAGgQ4g|G+Ls8f9a8GvgrJjGY&UD7)ZF4OrVk>bsOL z=yLpbc5OCcd$}v7s)wgPa%t44@9oL;Ufo;uF^E~^L57aU#TUvaVL@kCxAl7+0l(+aV`4Elkrn@QZH}Pb(rWxV}ctEu&d32;sf51X&7uT9f&3R2n z;9poH0neusYX2FzNr-S#sA;XdeToGQYH3&cb(DyXEW~+nTV4Ld@$rU`qFVUFi(;e3 zz|?qZqTG$72;!fj#lOgFb7Lp;fE%{%cXEUACkS8#dfX}L4vi6G@$tRDz}{1l(xzw9 z)+wG5*eu`N(FzK>fPM}STmILOMj{p07o^V3c@!9b^ElM^n;6eR=Jq?ocY9bUDy7=m zIT`@sHu&gFp%EDh8yNMLwaNuyeeG`2j z9%lrcbKI_PUnh_h&Xzj9hKTl`)A2;dC>UHC^xh>W%ImNJ64qL0^5k8zO6@3Vj(8`r zNaUE(Iyp;)o=xp#X`vp%2E8|JsQtSGHlSvHdK@CSPhhH6V0-3{5-^HK{!02OA!$F# z>|5={D`VEEC|2XHO_Gm-_YQl;zs8}{~ip9M`gE-bH z^tchP3s;%8U(}i(-MhlD)>qh{t|JYCG(uV?CB$BX$gvo)%q<-^QfM%3bPi5b1w77e ziGPI>ax?W-WO=Wm9t)d_&|?(##vc{02Nm>Dm}l4|`o}>@Jno&Fzp}!>&dM(GJN||N z(-xHnD&<#TGewltO%)>!Ig3)};6+(c0i$83SnXyqg@uEP8Y}xGuDXF^**OvN_MMU% z&`EC=EN&)JvJiDa`Wj0!VEm~qDsFADr~=i>wt9FXG#_e$HU;I4QIrB-veg(#$d}{d zU6g|)S;`9-n^UF(mVd@eaGfghwk)GHP(uBTd_|1DinmwO>5ui|gDUmwMt{!gH8<$lUGT+bjxX7U;VV((!nJoDQ z38MQeS1~A}Z&`~DY2chdnY!S_$|-4R$xwRaCqUs99ET8L_&VHe31_zedH~chuG$V*O~zV*$gdpEF;+fyn>WQW{CLPbStT%sH^Ba=+& z_sw#aFMu5-aMjhuhbLvAo)LmnpvAQXEJnMH`mf=EdqS$rCEM|*7j#>E3up3M7RMdv zIU91lu&)-0rMzd6dOjIv`eS8D2Q3LTxT7H*#{brQ^|xbVL6>uKmOjRKVM~@ZujcO& z|3Bv-zyo4jsJh0V7&oUfQsH|Il-bH3MZ;6I1KmGhAwVw4f>z{Ko+zfyKKuVH6a$Ug zTki5LulxtR_#|MWZwLAp69m~h)BV%=0$B9;=L%cR4z41r%offRe^t7Mv#^C*qfGN1 z^BJ{#IOY!fc)i|=E(qrJRV&IRQ4W-0q4>IgS}0!NQe;AV4GjI&9S#jDr<9Ir1y7Qn zq;ft_(q)%WYf5Ql5HtOX+Cb`|7bqGOJI++(bSp+;Rp`rZg@}!0T6cesaFI*TDJ?f( z@)Za}>^;hcdVgAC*IK02>R?J}dm-h(X7Wz8kJ|2TWtBL<_-fI}3l;H{%N~|!Pk&j^ z*$!VWC%O^}vmxLWU$;&3VY@kKvdO84C*a(bRqZ5H=Yi?kP!^^K?qZlH=;+6=)JxhvXBv28;!PYdL+4xV~1SZuy=-{Sxc&9@qKN zmE7FVUwohJG;jH)bf;~&jFfJuhJuTP|hw?i03xZN$h?0<3?Y4;KPfcT^_Xr ztrSq$QxLD^{5cVvf^l}yj9$S$8LnoEJUF(TKWGA&U$Jd@WLdeg;yl%)k6s*TB7t(G z6n37>fLI-ksF>i|IuakBEqh5#Jkd6=(Wz3NKUBs%w?3JWvTE%3=(-m}Bru*&q_@8Y z9hZ@-HeMi_fD`D+=13Ny5UEDRcC~t2yhj1U`{5*#K7Pz*2 z|7KM}iMiIH^>41I=ct201O+PkGF5?=gq0TxJOHNa{A{f`_O|r0@LNzw2tKw3wC;NL zmEwb;v=p(>%Q4q;zv4$UU{?-;>~(RwQ`XZSoJ)qF8zq{Vnvw%X!2SL6(J`@Pm?puY zU!5QBTwQnxB$4%r$=TzBYR^nPEHJ#ibso+)L)9pYYu)2Vv5CUxf~~lnPricX=Zl=J zezFG=Pc1J;>Dr0d*pSoEuwY=R0aNDhP(@NuJiIYT8DgOdRLng2d(#4r^punm3Gw)p z1zwH6Z5L_5v`@UtXssnC)nXLjRU$CJ3GkXtiIb#TTwYLBWgKgyrK13mj4nBCzHrtO zSbjQ~G8fwJ(8u5D&s#bu})fm_s=MwWx^l>H>KK(%}9Cp`d^ih_(chFv&!3Fg8&kIV6c?gZ<$E&4H^W>RHmMj_$c^y*BF@F z$@-DkylFaH()87rA%b{+`Oy8hU$4`K$G!eigME}AGA{b=EW7*0E^zopqYE5H*}`3$ zM4eCIr)gb=ny=%gWG`*+>mO~)1+Z!Eo4${-Nd%sro<$`kH|O^Lt5-jKeE26OCeGH| z{$HtX`TG~51izMz67DPG8(7Ef1mAx=Viq4l0)qZce?#!=t`uo{li&-5{0|@0lP@mP z?0=X44Moc%MzhWE{?u?H&iQhXfZ(RMSttbN`JQWD;^RZ@kVYGO#VAu8OW*K!vV`DNmGhI>Ng3 zyGG#6FOF&8r8j(p`k_5iW{^u|L;iq~LNsu)NW76XJ!1dsDS`lx7v)JEK3$_6serYM zwIeapDaJe6c2xedc^Kw$<@ArM8@gQY$kWRu6WZTLOi`X`))=k|pI-R`Gn3P(ZNDtV zs^NvDH-~I)t(xq;72_rrn;s|K{m$(l-$>HV7c^SnrN*@3@O6CY=caxRRkY?o6&J^A zS{q;@I#DOO!zpQWXl0Ee#Q7((($v4N;~rcXY~;YIOhcAlp=*X5DzR(I#-@u%SyfjQMBqEi4&TiQ0D$F zIeX^~cPeb~vMHkDnwwB$9mdi3^1pPUv{XI20)pieFm%g^iMydcahTwkG(c#~QCg}Z zeBCsD?3nb?8#fUS=F$~H99j%>X3b-=Vt6{vTG;Z%IWTAe;idtAu~34iy1*e;^9bRu z!2s|fH?)RfxOX799mCbBV0o+|S>lW7ec7R}qOLx1JZtXxyuV02#I%>=-Z}aCDzus3 z(UAiXy9wy&>C37a4v9Xmb=1Dk1KZUB)zt*!wFY;p6Au(tDoo~uScEMIA7`#7Q@iVXQ;Us+GR_k;siOpI}R zr`4Mt_PVsLn>|B-m$y3u-Tik%v)SoHib+kR`Cx7n|6iT4oXU{sIC+xUj8gopOf>^r z>j)zwzv85nm@jm|v&Yt0#L^9YbLHK8<;45?%8A6;7lT9md@hYiucwF~qM1&!XH%jB01i#R;yBbxU{aIK{>V^(fs zno5yf;I=o5OTx2Y-^L+5#604Ch%@G}RRGL7Iz;08bXij)<{#X<#t+4QY8|*03mOYD zA5)n8(IA>GEn{IEi5l4Amkl2{Qs;*~3vfC;nceGY2uM+8w{P4@y{gH0U%If_Vq~J! z1c@k2Z90_+p{Smf^JYbDW6NtfXV?_>ZVVa*IW`sm)z3m3%&mqL!pO%0PF4qARQ3G| z4z)bkX(Bbk3lbj6l1j3)uD(I{cMd0#I=wGtXlM`81yR;LE(I$K7%NvkyFh+Xbw%1A z+S`;Vw}}OhudVS9E*Nx=R5w>9u!sK6c`tzvo`acq#H{8Mxes51vBTBMd9Z2YwMM1A zdC{u1WiL`_lOvzQ!6Ve_4Zwl=vdBL2A0U~w<8hES&B^_g?lQ9|znGt8I);h8HhK>* z0Xvc9v(Wq3?0oM=?D~T{k_K~mv9dF9VKCaVi5F0UEm=j0m-$vvGIruF(YQX2HTZ@) zv|?6Z#;J&zSy;y%Ho1KXdgszy#=Hli2feOy#{G?)Od`WE{AGwZ{b+axhSyWKJC}df zsuxn68d0#es$qCGCq}^5cI~_f&$&eDf_?^Ng~NeP2zNK?NC9Ind#Vds;@)TwdjIVK zyeuBi0#Ygv{kXkj8s{I(xA36;RcuY@t=1feAbqRQze9B3j|K0^t7YY>4hDg;OLK0K zt0Bf3TAnvx=l$NcgL8(vJ0f`i*$awM7pfWKV@fiHyRlm^*fkiwsb;xrL?CI7H#D{% zjwE177O*oab2sFKtX8)!7&WpXaoh;*du5*Cn#e&Hw`k&Z(I$Aj?<~z~CL49{BTbRT zA<8XyGfX0p5(sj@J;JB(`yM{*xU0b+LYw6Dxwj)|v(aSrr@b>7@L*)}j{@n7P!gWk znsH^>A~|DAL8`?zegZkCMEetMj5?BZ>SwXLFN3$JytE;iZ`K?p7ts{fB#k9%2K%|( zkSl#l5-(I9PUV5)wMEYFv+bU@lbOD-{Ja`wShi{j^Kx%D21aRLlxvu*W{(=_{k6}& zIa6Z+!H31j4a+YpD!`n_)WreK9GP#;7r(Xn-^(wcI6oM%Q^|#c2C&Y7QGoM!+VW8O z(-+g(rGdiM7Yc}@ZC3xllEl`br#A)W5vV_>yQN3!GvyB`IJA|5(B8^M zthZ0hOU6Lj)pi@)1V@Cs*Trza_JAbapZ4T|MgRJkI6s$|iv<$(%NX-2|HzsHaIe*{ z!{bQ6y^MykE#mDfboxL!HOo0RKj}0+;OJz(@EhQe$5a+m)hzuiWx3n#MD-S2Mt8S&6y3fPUg z6gR-AA#E&91r(vh6~9tKoo;#m=&RGOFADaI8-LMU9$Nk!pKpI+I)#nC+qyAtHA|5B zz4xWx#Df3V_r$&*mxW8n5(ksp_7JHLincG~L;RkTEp+3t z@o+xw+sNr|Y-~N886yp(c_+S?ML#TL6s_A3)#~L1W|fk0)ta$!6SGq79jeFwWe;u7 zR!Nq@{E_49;`%_6BCCnE6BcGniN{qdTsg0ztzt~g?Cj)bVB(RymW>7nPrLLn#+wX> z2w*HkNfU4mzL;Z6_Vfm2o2`@i!}vlv$WxP~w-Zt%-zKFqKwvoFrqyIW4Jl{;|v zf6LQtyNPFt)hn$0*3Jlv)@V^qZB5MU28(H0AcT&ED=g!MfhjKU^D+HhB9yAdjRZbN zf?pEIR>x~DB}?X&;@<9meU!vsZUfkW?p@Oi4Rjk+vV>18- z?#)eQTZ`u|3j;$nkk!u2N%>Hol0vcSUL{$myt|#*m)ilPs=h(!310LKh;Lt9j0Kpx zUv=yI^^ZaW9JzPW_hyAsGHULhKoqj~+nM>Nh^s3B35m#&3vYeHt>??}J=B*k4hLft zf7`s5TdnD4XW>>>d9^y}3Ah%SXJ(U*PcDl8%G|9Z6Rs(`%sG*g_F7ok6qiWIA;>@_ z7}1k+2LX}fP6v12zd8PGC`6BqeRw;x7nCSg$Gh_fpj{lNsrAOAI(-8nj>kO$z`0Qo z3Dsrn6}6LAH4Y=$zHxtTdv|XZM`zr88sGxNX>)7=VI`&b!0IBF|fO54LRi~w`ZDiScWpwvB2jyF{k=~_iX4{>ZBdwOlC|o%8Ghf1BAzHlj zkW|ZSqzy)oC?qBh-I$=4@|E|AXFCT&YG2D(aF=I=(TtYUe1cJ0ha$juihD&B6?;pw&)P}s_?mqm%__Lja|5Kr`-!=j-s5%HEm$lQ)aKq1t z;}d@!^lrcI`tGuLzl(P$-_uE+S)YY#gDV;~ge9;umw#2aK$eFjAH|@;1PVXj)3QgYAx&!bsct9h*Xp4pu+Q)*9H+?4 z=u45k9{DteHU(j#TK8ay6^&^s_JRfKN<5t~S6pNk7?=%Yxfel05|GKIYqg{|>{QOv zOT!ae`L;+K&>MY+nUBj<@)ys+Mrl1D^2wAuxE)U3EFbqSH)Z{LZ~`@!?kMC*@7OOifhR)B%v17< zvhquR3xo)5{*IjhY!;d4oo9Eu@o=>XcgyPbmR+1;G`5p$#xRfk3MYU6NSaEWdvl>+ zZ3?s`)}^`esU3)ztUvDM?fHli8kr9W{+Ru~I#@^+VwS*6TMUw=LG48DF|07k58RfPn}^@=0q!%fcNS8X|w3Oku8OM}!)OdhE+I*!|1& z{`?&Tvf_n7xHZ@;@u#4l$s1Tv5EXrw(#N7uNywkx)Ise1X1uqbdfU@&tEnk7JXvWl zIN>T)tO6&+F=Epcv_X>mkyw`JNE?L2j=*b|QZl43T)pyCWb%vn3A@ zy=`o5T6|wo1Btf_zYTis#$Z3~?W&$_G)d>Rpsl`N`GM={+4-EGLc_o!ZY^!o*(|jn zNJ@GGtvhh1|8nO5)&hrhQRAX2$&l@_8{Aak3VYF$57=2bd3Ap9?V2>JJ)(h5WSbHs z!tH<24UhI@?|l+J zdW!mG^ZrmB7wdu$wJ8YU_a zLFg|6)k-mut2<#B!&zM}7G|p8T8@nq**kB33zQ3#DQ0Oy4*%A6;uj>9-$a5BuOka` z(urTyo?7H=Cl*DCe#38y4U>e|{P2N878)gUHOC+C&$*j>%(CI~Mwktn$S&k;3)xch zKXKN%UnI|rii4cC7PYKB+5SinZFrq{vlnJ!N~X_HQn5;wl3B$Xue`K9?5-oFCF00m zut?AzR*sa34(M~uCmml-SRQ%JIAv&E6uzr4kQukAr8fh2 z+-P~>y;?@DQFUpH?ZIm*5+I21kH+@Ys8puo2zBIYPTX87WFtS!>6~Im6ioo?SC)8{(RYOikkF?Bl2`c^TMpD~zb&3Wz|mi_t%qGV5ppeVqZI znEYyZ@0l_UL0*fvJFS%f8hLWBmXUo3fum>W4^ES#Bzbhgl<_t2w=+;Hokhjjjqp!y zK~hzyEFZQsEL&s`F9o(K%8yMg3<42rOPx<00;G2=oJ5EBf)fL3>O6;1?wN|N?)M(0 zH3>%6lPG}f>h^EC(i_w>=VSc%k(M0Q933v4z+Gg4dxT3d%zzQ2K&Ku9-RkgZLjzZM za?z^(Qk0Nx8h|0h{HZ&{P*k;qN~I!^L%%bTVKl=fadRZf;{;FRIGP$?CRxm(?lSpJ z{@yKiYtPnRH~}yom7kJ1Jp3-~Y)q=mJIq)!uKx9{+TPlJ5vIeuuPLgd0a5z2_jhAz zVY-s?&98unX-gm(Y43?0>yHy)oUd9TP?Yo)LM+y=_SouPR$+A?z=@{^-zJ0-^PGV9 zvUcHxe37o4cf2%#rF)=oczm)^SzPFj#02oxAJaW|9=Otnk0Y>DK;*zxPPRFEoGr7`P<-4+gqVFVP zC9kRpvw$anY1de_ae+y$Ed+@Xe`M!4ZFaa*efZ{_C42Go53stqb8sGBnI;fx=SCUc z=`V1{Kj`nAR`I4zf6kDOpTjA#j&niR@NR1(Yt#WNdu3W?9}Ott1@jiDPyrlmyRFvA zXLZhXl#cQ+3oku|3oC+FGAqibVtr{K1`*|4vC^+9fXBFha*Qk&Se}E8zAdQfKD-4ATH#sEvLXZYSSr#VY;pqM3t+?{5G~%M*I2k8f`1oXr)1z9Qv^Tj5 zEN_fmcL8LMg4|75-}6re$%T7>8UAu)MM&=F$s8$->Dg?JHHQ$m+}e!~w+M8lW2J?- z1lfBlsMpUrO>DUSazWQ=Sue3I5KM@Q#4`TWheO)}riXTkhL>>9ZqlR6n8 zuaSkWqzQF3`BCTXnUhT1=d ztB<}Qj<$MyAfbuGszV+sY!37S!PVF6T+fUC-tgsWUwLsrpzYyZqX7vjfbOc`>lo8` z$F1jOip^CkSkmmSw8;~gFAtWhS7WpEJNn>2A=SfvuRJD$zgEzfS0QoAV;}-c3g>oB>TSg?;kTD$u>5*%q+|dr&e1(E$dufU9@=*PcoI%iGZl8 zs;fQjn@S_1b;X=i@FnANy8*r~P*Tjys5~9(Y;MnMbPm*;%F^G@t*P`WZoDDdcfFh6 zc?m4mmfoIJPR=N8_S`br9L^0#H8#7eXsiN1@r(O!q7V?QpZUFeA`$S5+uI943kvjK zEan+czJ>vI^_`4E&f5=tWYWmrE?TsJhr`4atB#l3|+On}w zV!>8(q`$#Efuw<0XJ9G(!yUc%!}L=ZJwqVl>@)a%Q!Tap;or}wtSme`JG;-R5NGFN z>8$2vE-*_=OQ59@Dr{<+uRq`Ej{^AIiAhPH`QC4AHqn3k4E!V)+&H0X^JItf>HA=V zE}we5&+HA=OM_s`+SO#vVlhS(_DC|ZDIUOUJo=uMdPoEOC`UAW^vQ$wq~TzYu{9v))= zBNPK%|A<@=5cq_10xD?xlhs}R!uT~|2fkRWCMti=2G&Z0Lj?ZYkN`iyG?_vfbZZm7 zx1#r%z`1hUviykB`a@gw+S4rqEArmV=8eOLOA_}F3=gXgPK?GGr74-KH(>}>NSZD^ zaRAw2x=7cp9SWfPbl)hZ4W`Lwl;@>4GIq2$q~u6FCa(*wY$C+k3OM4uD{zXnMb<(! z8+&;pnNk#a{dbCigDoKbl=>QnwkwR#64vKqB|YPv5`jDY%F&&~422-VnH9x5|9Wzv?xn^=5CU zoWFqE;M@LoZt9=t$7*U|$n;~d-}vN(B>0B^J{)o#Bu?`*wJ9j&>bA@Nf*X$?540qy zTJcK^Lm|No&Ztl{TkPm)=3^y)@-py4)Zusx%fY!lr0^dJ=GWJR^w`TU$kIY&dKz+i zO>$|?u4^#tF2-|%4M6ipxYd`%##p{75zP-UZruVyUp6%rU)n+)kyEFF{-O$u?-RHz zJWi|#g1cx#28!AZ<7=#FCpD6UZtEd(Js!$ga~Uh>qFOMX{$m;mT4~R~{$PbdD3qw5 zke!2}m87^`6u-?u&K0R;yQ-Wd*z4(}r_r&W@ib%MzkL|UM0yKcFR#UOcNyAeU9i#n zDPq5MM8!1~!Mi4qjXP~2-Ss0Fw&NKz(`<}!&&{*U=0A<^2c)=zT|F=fZSBUz&Md50 zPJ6LrAYfo6Zv#OwW@g|87JVZlks9uodt6=bB$sd7zN`&SK(ISHaRKfE5WDIK;5bLy zE<593P~HVZ2&lK{t5dS)i5zQNf8fQdW}EBcKA@mA>k0>09+ItDee&Z(R| zdtK(5?UN>e*<<%;dKXx7n0!9fe*_{XeX=NIv5f66f9l$Ws8<@Bs7c!A?Vag#c%cI! zIedHjn2w)*j2#`m9xdKiD;Gbibebc5z2k1~W>@JKKWEbPC>R+d)7*Sx&R6pcY^s2T zjDilju)O!XIR4giM<~N=BVmm0#mOiQ{Y{C1b2sZBeqiQW%%+!x=ShnZ-#x=jV zGwSxWf!@~KhLkaFxSPF`n`zRrgugUnDOs4alR0l@?CZ(sN&-BqNuU92qZs8gI?8c? zotol9ij2#_mwE~?YN^iw3l9WsvPT7sLZzXMM-PkzTI(Cel)_`8rgqf~z%(mL-S$1k z2O?!j?S)VzejwHRwO)D!Lsrrin}Omy_1y{gso!%}cj;wHI7$vo2V3VY@lAONpq>Ui zfXgsy7)(jmI2TTfbsrmH{86;z;6VL!|xL*2R|N+L8L)U*(Kl zD7F7CVWb{>+qk(U_m$;D z9yy1qY5pE96C~V{(#sDW)tWFw9+Ur}GylHP>qQqBzabv#_-$)sFhpzHa7u5_Y zZA}KC%Q;S4rj~jCW$)+X5GFKmllJHRv_QV8)zCR=kSh>tc6v7u>mkyn;HL> zAKA@o-&pm9M=sU%StJ#3ODE;z_FQwyU1o37+yuv@y4|BF23suvQpUsGqA7- zhBW=`o_4oyxGQf3vj}Z;X?jrAni2JHHdE0---iJ9U=6Hm$qno7YQ#`SobfDy*z3|U zOmW$tB9!Rq&9rEMe+W2so;G*<5F=5L1x4wrhtByq?%u)i^&=+AMfXiHP!w$PHB?*E#-o`ehtR`#}^cA;PZEj!Hxc=N=WsM=*hP zNDR|O`L>I<@5%^>(FQ$YCnrPF9R(I>$2P~MttF#qzZoVfsOX2Wa~6c~nwRXe7Ka^TUdC1z%r4;T^i$s2NCU{_dJ zp&&^4%W99(7h>Tq=2gDW^<*BZQp?pAPsoK4@+^kk1eRF7ONq5JiA?K(sbM!e`H4DJ zYJ|gwWVm9OE#%iXQM!J|0B&Spyhz=mV{NI()`S_q5)9BzqB#3lm$-Ub6&ol??%`Oi z!n28lb2FT541|q6-N1lF;#8aLpf&B->YPOX*Y%{gw;09Yzv?0bm=WVf+4auRCD<># zVGg$rqHKnGq>?v}ChLq;k9riVdfMG_8-5|5AM48Xmuam0MNQ=NIz2jp9M}rxzqcby zvjsfyl#}bset_KV4hjiaw5O;{`7y_;daB1ggYO1H9X!&6|Xml;;vWo&cD@ikP?40b9-s# zyh~&iO6`f}J$6hmG_Eu`KTy-oYJ0BLC(N&J92Olk!?-UyR}<@licdz1p-zA5)$i=D z>(yv+*(TJ<)efPS*<91?!eOI|zV!KYoyhw!n)hi<^yLdhbo5a?{0#5m%=0S$^V}}J zfLkuMo9+JE@+rVECykWQ^M2P7eA@ympuSnTFn>Pk4T_GAM#BQh*~qaM7pIijo&)(p z#MB0aQCOu;XGdB<7`38MLx}fdeOXzV@ob5!rjD#LBo&pp*DLMwNLuIQ&3@GMvCEyy zV?v%r4|dlb9GJI|U}U#J&&CE}lJwqL#;MP3Rvr)vA^5Vzc6N3iKUzgiTV*s~A;G6|}NoGV>qH9z&365lroYKlprkaa6q_FUQ)Sj47lAd}!LDyHa) z$iFzw?&w|r1^^DG+17%T&5Ii9lO|w|T8y3To3cR723!y-5cG3cfy4$=xJR}}rj7Q= z@gXGK(7dWXe{dch-0}GdezQP(8aVyyFXLieVi^)X1(SasPZfrcLT}x1rg)-yMNbBS zk+Sar+I^JS(5CVIa*TzSq~`lQW|58J))Vps^IBzoYgtNYc30ehIAxYXLO#I);KT-N ziejKy-8r@=DB4-LJ8N6|j*6k5n=$BK5rbsa>d%}OGFj?i?~f#r6YxcmD&YgjxFNVu ztro1!n0gL?Dt%Jr1AmUM_l%`bx_;C)w?*z10I9eC`T5g>sHW39uB341{@%(Q?`9%dJJufzeLH&L`{Fl^9E_)H7*~pYX-m{u z?G5Q!`uLmjgDpeJp?0t;3?~F$vhNv)$(w}8>hkw|Jf6#{R#*>ncQH0rj1N7C)E?pqgx>!o`L^IlRI z)I(( zzY{Rf;W4YXrt%7?lHj88dHT@gD-B=n>E{*}(D3m70t~@C{Q0X2-FLr-_vatd$#mf1 zIN>6qi~eXZW#X`mH5XOe`&v5eUmu{JByU z8s03728&-fS7C~49c&xEA_EX8-*NjlkS0DeO$kH>6r^wa;CpuoueEXpQ^XlsmXMh1 zKup*maxPUoP1t5{t%v3^2HQ=Ns;Pkg+?kj4|1&JJP{VFXN>ugK}9MK2%^GXt9A2RB@S>x>LJXVG;&7ACa!xqX@+Gc z3;-Q10PZm?bOX7CeY19(!*)nvS3JpzcgX4yKE7N@ zfO1a8$AuX%Au$kDj$NicIL_CfG)mq36lPMCh}H)5%0oQajB=<7w}h}!BK)a2b=eC@ zre#8PlCu08&tPAz&N?{VmJ~fIpu~}QGQ03$q%H+b$a7q>slpLlkY-o8f7+f972xm% z@Zn^7g^Z(!V8%Dm0|YI>J0VCVlU5aHy|haMBqDqX zPvY*#T$4HBl@tsa&fO-XEBM%e8byJ>`CbZx4?Dz0M1DW<@0bdF^uzx7w0OoW;$5`e z?oWby0v9@8in#M+AK;~#={Txi03$e|gb&CH4Yys}9XN=(piSR=9ZBC_r?Re;R7VM} z>WcT%`9}B#{*u%tyY^W5smIPW**YVF2o39SLBX!WLkw;*`IrI2HYx+%?lbitrpZ$n z#*xwzvM!$)A5bg?E)S$fmEUM41&w2RXd2;g`fqCVwaUCIn`=*p8)uPW6HQ6R8KBttyMF2GzxPZ}^0f{u&o=sfnU%=$RC` z_Dz2xX2z)5$>S!diO!UX@DjALaqD7xC}P{9DmF_UiS6rdE9qoct=~wFDS_h>LD0GQ z)5^c5gp#m9KWweZhBmu|2M3tZX=qigB3kfP=ed6x>!9_qOhHG%PR2mO#U}^te&6a} zcO<`c2FdiW0AAe|C1pC0a3r{qnj zD*GAFQfe!5YeR(3iUj?P-}X+kkI)Spmb;V(c;6jp)R4gW^M_XvcF=;k+n-4;(5!3K z`l1RTy=*60A}yRUH#0_Fn-rJQk1!~s@zFxe5~xU8;;*_~bGGL~ju7snayZfNC3*Av<48M>V;_GCBIs4&+921jm}U_y+B~cKwGsV7A#_zQWQ36OO1xv= z&-H;|K5Rt76mgo`D4~Sn1CwRx>EDTg;6HXq{I7eED;XYFaCW`4e<1~9k=2a3zRlh$ z7po>V2~E_?USWL`V;~sM4rVZ~Jnk15&l)VBC{wHBJvqjgoJ(xHe(lt)KPqCa_Dbdn zGm)b}vwLtRVH!;+EQ;41>J1sLL z!}5|zb5J}dFIECkd;a7;m)xkBOj>1WcmVBSgCS)B%1u@#EJ|o)O{{I}*5-?k@NI<# z&IW+9OL64=F{JIQ0`NL9@D<4v18e@U%^b1R1G>F-MaDJFwIjWng4$fAhDEO`wqOxk zk*8d}l{h($m>v@eJT4Ko1pLMPi?7wVSe~8}w>?0PSQyB~Pl|IaKuwqy0j6}oGd0qq z1q!wC@SUG!3k8zh-{up{Ir+SQr?!xNNto^rO2Bqqyn7AvjD;*Bmpvw}gm&g-a%nQ3R4TVT~^!lI_F+U~Eb zz>3;6lL105(Y`KerH9Db-rKMi<+vjgbm=0i)ZrwUlj{KW;}U#7@AbCIh=z44?QBdM zf~4JV#;S>TPc&^iy2l(ThIW77T&bQFu2i=5xP5}Yr(PozoVg)yAEKFYg11gro+rswK4&1G~C#rcqllpT=GUOdk$%wxNMUrj^w% zH}^IcPR`+8dHKt=8!g4MM6c^B6fvEp*I);=5pt+v$5 zT0KNU{(+L0n5(rL`T7Sm$pfeP@}kiE;qoLNEIh3I(o(!4CBKFUG=Bcsy(7@DL?)utP_3iGC{`UT!G#x^Q0*&7%yYs&7jFr84_t4CA+6o1NtDry= z&N2q|=%K&T`c?P8Dc9m7@lS+O8F;HVpz~=z0|<$J`TBLa%addCd7*`FXn434#O)U_NR`f_}^e&qWmXcoQ5bxTc>=20V+1!2e0o^oxqX z(UKR}F7S?}tr{#tF3#6Opb&!=Uv>vOCT7#+f{i{i<60sVK#9yct;a3bOHt~q)+50l z8MLcOk1x2v#q6VXQ>4H4wT1qX4#g!<%-;Q%eHNgyUR^f@C({)6fO9yv1wII^bJ-ss z4IBFAB)3==M+^Fn`{SMKLq~5t#0ZF$-O7vj*;2-LMI#Z9>~0$k zud3aRvZ+L7Ik+uPO~${U93F_68h%8Y)hvwKXwr6kz6`gcG_Oe9UeKPAlQ!=NwEH1> zG3Q&2l$}={N^dWVx zZ1C`8jon)UUGR&^f)BRix!id`@rktt^Zmfpsccg~IHY|4)btu^ z0eRmz-&9QCO{NNda9=++Z*w*Z~`;X47f2g=F5sMf*BHlR_B{(@S6#O!p6m zV(@t4LP3GhoQwj+pII2`gMkk8^fF&{U%?`7tAj>5M1{%%ofbc#r#NnKaIm|TF%ICF z0rtjM(;*=!KZs$N&o@R4M&em*HYfhh&!>q-?4uE6N5;fp;&N2)cRla}ff(Jt3kz9O zv7h!q())u^89-KLbNA^Wd;8_%>i0x8-w>nklO_L?5n)+b*;10@$*dSI{YX^i zNw52Hfa7t(wR_}%{{iad!BPnlt^aK`1}4gG-W16%}@=VU(7a~^vv1W z+WPA_X}dS&#{!^_W~LYVs#CIe5@O^ukG+PX@4Q~8sXqa`Z894hPOWUO$OQ4420KY! zsi64XkQ!1JQ&7<+oypNC1VdK3j5jrrp^=2R^ly&r4F+IMczt3^kXzOsQ7F1SEP|a? z<&9pnXgGySIUNX_&m_6#gqKIMg?1X=(LxH971uJ^89l1n`@nud{9(ezEXWk0AkQaH zlMoTY_lDm$J4Njv_!GHsKx?8+$;bgatb$a5XL$>AulHzkGd0)>y8t~S)XwkfqUu`p zn~(hlnN?`h`hq+dx{jo6vEOS7C2@KfF@k60B-Ml&oi%oEBQTzYaf8Sfxc78=soz_nI1Q(;0Zn}0 z6of2wmrlft4j1+h&bmzHmDa8hd|1nZ*5_$&8L_y>c@$0$uBrJYakZOP7N6pSCf8rP z0KXD!;0mnG$*QBk6@-)9eYV*Kxwa5V3Eu+H@Twc4#3@9Ap~Qd_0R@P3&qpqkwFdeCAP=455!w%OkbatvrXf-O3T(C?UoSXr1_by=To<~f_aM5m zp_A$kb?{^O5+odD9~$4zedNe0VG8mpv)~Ek-zNrF2aW7a1!DvAYY2u176b?U=^dw{ z4@dabOzfv*Wtdn$L(LWt-wamPc*nk&N=sb#) zL_Rq6XFoq0(X7r@MWdV0vMsZfytmbjD|h~IxPxMvB`OU8Th%|Zx!h)@y!{99&X&R0 zYtuBUZ1IK!ut$9!#48{fHfDxjPhC+Q;AP>nx*vdx5KEg!=Vo57MQq9n-_E|`vUz%g z8ol5^ZXpYNBqs*{uE?*@aA++89>RYiX$?^Bj@2rtSZ5=KlVlEOKeHjpw@|<`(_QTv zCrgxbNn4z@VAYwWl|?R*=Qbsux9bwHZViRIGejA#;V`EfcZJJbzYC?>D0Z6uncdSY zUc8#P-hqMecHqy-fC&1r?C^uz>|66^+y}QD;T?r=$6PhD3h^eS3bR%~Gvq}+jQ&~Z=Z??X7$ZuW3bgMWaCKA#McW`3CjR~m3gE=5pd}|cjvF!h6 z0a(bTIgF|qdw(b`c!?Vl5`J7Wt05ljoS%r8yL`27$XzpG0jh@Yw^a#LiK;4Kj)K}c zF=NB1nL(VU2vYX_O*q^Wb4Tu`g76FPSG

0n$Qi>_t2gbnIioq8`gszjOWPj*w~j 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

H= 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

dvm`^$Qw z>4IYOP~9SxBlE`ux;6EFS z8b0gp)~R<~vHMg*BcU5rScq3Ih&JHh4(hkyjzB^)^NEXYlV9K03l4lB2_=Ph7DYk9 znL&wsSbnjcjSxfE56uLD@I{dvc<%N$i4xb?33Gqgk>tzR4cu1&r zS6P}DgdkzSMgRo5Fw@}iI#CRixKmiT4*T363w|8%R)wZw?N6^7#Ec;}!W!wWLhqx8ZNP~J=}RdgdnzCYWh{DAggD*cNLpOtM!}6vF`*TMu@Z^D?QC<- zmoI^ki~;+4kHf*K-eJx~Fs**c%+y*^F=z;Znh6RvWiV6~v9LfQud2Q;daO#&J>@c^ z*;6l|k*OkcNMwacs4)#tQBYv!D}By~9;cx55l}5-(~CmhX(Dse`iEy{6nu3k6z8{( z|Cr>ZfLW)QVi#Td8#RhjfdB3vKhj0y#ido)sB!Ff@2K*T#}{ODRus zh?_0>YQuI^l5eT0EzQfKYoj443FWgwU-tK6_b++7Lvq~K?IFKY_NvrB=ln(0&>%vV z6w$68&+u5{5%f3`SsykVn;nyt^kJ>-FDfjyGCq4`{Vw1C+EX@F&dZMot+QUZ(;VJVaolGjO;%C z!{<R^wi;0XRgT$JtajON)D61leY0mNie*nfJ$7q$tlv` zzh2~goB(ECy{Yzgc~B=K!9-XwLySmRSel_7;s5|7`jjOB=>PXI5Inz)jZT~St7d%E z2fT&qZBqt*cUvKYtGAz(TD-*{wojRm7&lb!46&It#!GGIKq@)tp)H0%C_VkE2s86~ zy|-X0Gy>qsE&yT^gv6AVb_Srxf&g`~_ugMnzr1)W#RMJW%Jz0|QS!Gii=CTTXtx2` zBdNrgmJ2X3pz}c;zISjUMe}nlC;FzVunx86wk{4*MigJX01G4oEV+S|F8l1+BM26R zBSX1Rw$fr)4DdcsOLlb9KekRJ0TZ67nV!Z`)z)h)>~KFRiMg$Ak=Xey+n0=dn?$jJD`@(KCf9lkO$ zF~#J_Mmw(d@v5o~SAlvX7?%okailO;?*dll+w;{axO8cbBt&o+$WRX3usNBL6=r4- zagWo}n!uB%W@7R`{yVils!$HWnBlRpkIEYlXh2;}F7!4qJc$D___ngLdd8A~Pe=&R zldyt$NP&f!6kb>$#J&P-Mi%4&^PYe2ft;LrjHCJtyj z#wS^tmtO9BLj4b8`;f@r%F4>a&lx6>!DmXeyh3pPuZk0)r?Ireu(#&~Kv4=mX9&#h zv+KSfAf_PVFQbQk26m)787C=FKmGq-tv9$R9H*(kXafEz>}+aamjXQ)w*3A%)Qf9_ z*fe5dv68_!V-piW@SETlyj+zs#QH%T{*)nZe!f3aNmMu^aq54z<4{WurTu5H~K1bkEPAcC}@#jPXk#84BgS)u}PY( zfb;3@Ea{y) zCpa~VpG+g+Nmo)j0oH+x@hRmap1%)Cc*2e(?qdW(1Pf^1Q^F3mVi#mK(kZqb zoSmhp2}c+B{j0*?dHxz7Cw%e3byZ*4-yd#Umj1smK9KYq=AxXB!@~;H9jZHrO4YzT z$JM5g?8X4SF21(&TC?W*cJ~g6^)(ujA`#2zxQw+4p+h}(YtIPxNSk{vVOY5a_mE=P z(4%(f`VS1Ms!9uyQB=Gs-lU=GaeLBLb%}aXM*8PH-`WcbiC zGsPd(LgGV`bH|m}-2Bd6P6l3YzZ)7E$!lr?hS&V()U2|@hGLmH$;kMxA`xYp2{0oN zFlZ%b=5fd{;p5@+rG}t2i(HO-{TC&oz>x&wRvAej9#_{vSdAN*@CW=GNQFV@gVu}RP!sre|8+;KHaY`cM4@O-Pj-{gsw3`xb${`Sylg{-P7uYsyg z<40BI!>zx5Apt*lGJ%|&!d5WJ8;>@}5uCS=2(hf**f6lOD`?+lI!Fb7ICnhi(Q|n7 zF^y;}kGZvDW=3X|)3l1|4J9*kl4XJ4+wo&^DrG1_>piMqmLX$f!v-?dA6{!uavgMh z_3?lMz*R}ACY8@=ID6_|MHLZo@9kPj_gkZ}6(Fwk#J2CdyJ`nYfbz1!cvWI3UmuYv z>@F_$KRlfWIM@6C{%K1%$jrzNAtYo)Mj6>5dpDF-Mj0uT9kQ~DB9U2U_TDs*M0Q0+ zve*Cq{D1%7|GK`{xxUxA&T;Y?ulMtHKkxf-&j~j1TnU{PN;Kbtf3d*EtSaNB^vvvR zT5fJ+j4_ zT5V%omQ1ooH5a5=IdynF#Y0M+y=TRr_nb}$e)v$#{!*r{sp+GH1mWCUH^wf5@9Kdy!SUtWzF)N8G6$W z9r-7J{J$s9p4BEx9S*K|qU9SLa!dPihSMqIE0>O+>Uo55-{R`)2t;Agy{T$xNdk`r zh;R9>)26vs5JFc_m`cmbeB@i>Kt-+l^ya<1<>i&pQAwzyv=|y_6nqw2|E+{~`WqK} z5!;sVwJ?t6y)R6;p!J-hIf6&Wp#OrQAyJq{Curfd4WEg`#qI677xBT^W6yKXfyW4n zV@nKwKT_=+Vq#&lv)PDK{zpj(-X0Gj-it=`Di|=|q3`zj*FG)bwIq`oMA{F=%UXG6FV370#odzI{_Muop^BmbvYA8@1iIKZ|>N z2d{trenSK(+y-VDO`Fdqs=@qaKCiTlR#Ly68%d`F}z#xp6;!*j&7}$XqD2 z>-v1sEb*8GDC)N+lYWoNFp%==UVp>ba-rSxszt-q?>E#=laMF2Ms82f-Jl4NtoUj% zZ$VP?_M?e>zxC8=z)!b$$ZD$v_`rZ7}9etVD%i~!&uN(2cy)ZoF z!cd|*|HL)@G2(%fOpkC#HEteCED*INyF}S(q*JyoIsssdG%(&Tx`ur%ib3 zK_WWQ!e8^O=QPcOVa2_B_pJ2tzw5VR^qmBaN&rcSzB?clD z_Fj-hp9}OV@bxO6y!;RK7LQle-BUcQ#E6Wmzt=XZeT9WW1fV>Xdpw};0Mvqea(H&O zC>S5;oakZAR6}DMKF5cYuhN}k>#4GkN5NB-1b4I(>SLfy!mnHEDVqBE^J#P+YiU!W zoTfgQrZ>lsvXjo-s~%YHn0}D={M?5lO<_jK`&=kK&56xyoDvqcwRrxk>r$goOnyDr!w@M|%|~ zr{i|xoq$cF0a_QcO+GxT&{+}eba8P>kiE$W0Cz8IW;d*!%9@%K=vR7Cm79XY0_F$* z1d5#J*4nc&SU!^Smxdm#B-c` zWj35kls_?9Y6UM>)89!oTmw;C$rmAA7>u?aYQ{4W`0e3AMA>#9EyOQs1_pWMCZ)rq zqy*qM1YY>XtWmZOn}X+fn4Ioqw`1_NKjpoJXdkPVw)Q9@U6BAaU`&EV1wn8^;{XIU zef=*YK63hmJ<;vowAO$c5Cr`NrYC&VJ$STf1?;Fy!MIz^qCW{3B5a* zt$%!MRLA*=zIzNd*lm-;?QXQYmOeX76H;7EYiY@b{E5nmqayX*i~z8rm$zeU-Ewxs zmk1nnZjD0Q`oQJ{&`7|lPquD8`s^xq6W~m@6Kb9lip>atMwJK_4j~~{{1U^J70`qw zRKl6Y8-lnm6*6l;)wyA{4>POJ>mS*1?UNtYr{$c-mC2jKc}3cQ z8e#&c5iw1CUb%2RvQB&G8?=4)`s-BZ+}#}AzoUK!c01-M6g(FEcgY^j3%wgTG*nPf z04Fyo?3kU2o*tf_QOVx>-B%f)lp+V)21^HQ7-0K!%;fDx5;}}+KI%h~Z2vpi3w;~a zZkHg4V?zd5e7@TsModYlb4GSBcW7(czq_;SB#fy18Oe$^-xb)2Xk(AtzHaez+Aq&{ zSkSutAOFnMbWOPV+U!W3PjuDJF`}o{^bPCcO;Vr$B47(cKR)*0<-mdm{|53y<>iM{ z6Y#N=+bJbOR4_wBNEh7Fq3;ngiw(L6Zer*_^CAN|`3f2ad_jau1P(Jc&#(!1z}K%| z$#J7cV#K zwp?MNc=!Gt@d?3lJWKYgGG9WE4pXv&WNKQ^RqZ{3dnjQ`BX}PN2bsXUb>P;p_!Vq1 ze0TYVn-|@|`;V?N5^XYy?>bcMke6;v6I9>+Z*a*7?KAnz^`;{@DOB?*f52Dw$0ISY z4=%;KDrYs!_1gt`eGVzDjAPxWrz~Q8`^Y<|)SD58`ij0IL~)<~UUU4zvbWSwD&Er4 zy6%^5T=S6i=cnYy{E|E=&7@cU?GZFDy=e4{8E}@?5Aov46F%=8Zhe})dgIT_F}JsW zUpT=juza`@iR4FjKaI#;P%s&!e?olx zgbg0A>Gp%Ff+`SoblGbZW z8n3d3>7Rjr*sO>#F}*D)PPh-oY>!rI=e&%jw<$GGI8U_8iU<~rppv|L$yu>GjJs$| zHv8AbaZ6+-78aLq*SCT#;NLrk-zq<&Y+6{}+_SPd9sbpIh=%=lvgykVle#aRk-y)Z zJ#u8Zph(b)rT2fm07c4zak@G#iP;7&tWG(O9wLEnN9J_)9LImbldTHTgebQik;zH@ zHrF_T2>6N?g}u9aduizm4*Dxl!tk*;m6|#oFg?ODeva`c>yOJu`^(SjVCluu)A`us zRK!@CF?}Mvu=MGM0_%&awRess26=dP6A;3mKdW^lj9=_p_DbUU#?S0vYWm&Ae)`Ag zsPaaD19ydlg{5!`Dm9+?j0!R*fXZmwq2RW4+ew`nKhMhEzLSZS0t3HM>4|;!HH5YT ziu<|_dR(I6ehyMOTJ7NOc#+Ow*%*Am%yZp)(i5+HTAfI6a9h)%k?ibj%A?XDICn#6 z_4S2|?8-!;fAjE2rFh?xnd#?0arWFIbGXaL-G86x;ORzeg%u`;r_wpUuU`j{f{MBF z$;T*>GrP<4a>w@noEA^KGh_8w?oME3!6VkYDKRnovD8sUp&V!eXC6M}(9_^JW*B+l z!c{};W4r8Eb02c@n4?QH0=JCoGmKcL!%y+3In}VUb}tWD1@X@Y??!cJ;E%7QX-+3& z%B*mH+tb1H2+|EX-V+J;3eMP8cBlNg_<77pcIYpSZAsfjRn=F%FK-cHg?B=zI{oE| zPknvt9x1HPp8dA5HOqvg9Rwdd0(6rLQE@iv9Yx$gHDwY9CHnlRa(76giwpp8l4GM`-BQPD+Fh1 z193X^pj=Q@wVG0QoCStNP!KnJV)GG6lZv}xK&);}Z4_EJU&4`URO&?h{rh()aF}b_ zTce%vY|z1m8Y+mWojMOceZ>`g~D^5&jU|=93 zDq8BZeE^<0gO4dB|E0;@V#30m5|%skT#+3nb?p8AJ^gw7?4QPg7Gz7MK_(1);U^3C z;;WJpO%k_50l@)DRVgf_vm5m=F|C5ph9#E5fyx`wn-djB$jNxSvDHIy&RIVG zH`i|dIVTubaJ_Sn+aHO*lq&LJ(eFJU`xFJ^v<;m?hLX}K8TT+WH5~x8FUn<(O2h^k z#I32jRt{DdH0}sw@y7M^Mk4PQ{qW#8k>q%%2H@L`HRo8*r#q|1TQsqrkyZ8a5w`Ds z>AdAZP={{ccI)jOmbbT$a|zYIPu~m2sDiOEDIJ}P+q`T;PY)5Elwb(u=3>HR#zNh& z@N`s9&pG@*0OWx=9I625oJ>@bFxnbRvs66LXw<2#!H-I|C~NmZHs&@eB>s3077d zT|i}Q+`X4yQc~~a@AEssKBWnY7;a|4Fh}xlW?-I2U`yB_*JKiNETX%@mJcLxORO2K zSNXcKO~J{@iEsJS?StfFGc)yX^!Z`EKnTqreW*pt-{vo>>exsa8LAWf!}x&+NHk{9 zr4q_kFzi0-H}f`?bR-NtMc4N)W>S4cehdz6+}0>Vz{oDcpxm*xXh(#V4mu@sA-G!D z+lM@SDC6TJn`1^@54{%uEX=lYnVPBk4^G{>l}msw9z6_w(RREk6D=-6Rt1l9a`+)u zK7vE`(j{`jKJL?}^LICtfe*Tlf!f!Y~sc7Cm!G36T zdir5ekth%rJVHX|l3j7J!wMLlUT8groJTP1LQZWvD!#QnO+{Vw05<2SC>JwH7T=w9 z9(X-euK!+-oZlc{npSZV9;d=>;>9Q%R7sdqx-e3;$0`-w&SH1^fwz;5jVR#D!I^1M_9jU3^!0kN;U!FVe^|)wb8m8UEf!&D8 zrSOp7>fd(V?dSuC??saH9k!AWX8)KtaO3mU!Hhq4(Ve#nGZKnhGv;m;9;4R%@>=`k z{lo0+%-VWdSr3k1n6DJAmLor6bKDKjB(5CMCc zs@m);y!p)@b{tfcJE;6VC&#HB+wvD3#+fxyW_ApaoCfFf>-l9JQP ziR|z;(A>Kxbt$z=S@*n_{wXoh$;#Co@|s7iJGupxgytr%1wr`09U(NU`TELTzy1cu zt|z`_MDUZ4Gl$EwNB$7*2j+`nsykH$w_ifv5xY5VTa5_EqRfd~P|(kNlN`9nM~R8Y za&tcoyq}RmJ;uUfLNkm<_+d4$UO#z41m6xSE*>n;7`QHu*`oc&`s&pS=W6ymjj^3D zD+LCG6lXl_L^J?z;2H%NB`7YgpF{c*G!pwk8S3Pv`4s}zu|+*ec+gs+S6AL{>2+|DhoauoKf((^O4gvje?W^=pmoICOcAN z;x&_VuwiMncRKxI_P2FNFDG-?tEW1;Ur$?( z2p_jHJl$bZ&HGtT%=wRMCA*~zC*!mH?_r^|H2Stv9f_gExd-b1S_&rd%IECU%`lFP zeflUe>x?q@-Jid1uvvLUX)~P{%zTx_+`TRs%o%!tb5G>+MniogO>OygG9SJr3EJp0 z+JUoyK^poR0WGhp1_lzAdgf!DoqX97emx*wPQJyg!gFJ1Z8~gg$KCOi2zycqx>M60 zWFI!CAz~f*itM(o*kLzy=i)}&K3lmXW_$f-_LMKLc)lY=7avSO=_2}`X&C$0sp<%95Cb4ue&*=m*dbuELka2nbcZ! z!P`5!&cf^@E#L?b-oE8J5O}xbA0FqVq-we-FE2CGZ;pv_AbHBUxFJQcB zXY0?OY6}O4nimfjlhiw2zI*pzqg)x0ZyG8~B7TDa%~KcpdwUUZCE~E&dxUJc_ftQc z#K5DTQ*ziy1xdLDM_I||=2lil!{<(LKU}-{s?zjA6@dIGcm@L38QnE$FFDypJ%Z~T z&zDvy829HG;m+NQEWfC2;oiF&XQ?;lr>8rCjQaI!Jfj>)`Xo8`pm6e0uf#KXcKuy@ z;dClOniJofpY@A}Ynp3oW96imk5kCL3m2*$IDh#vd4Vv`(apRo0`$dMuUjC8HiEe) zbq~o>H#T;5BH%w{*SpEPLZ79NFm=o9?qhuR+rfL%yRmXuYvjVUYx~8-mU9dly;Dx%G@;DiK%caoBZ1~8B4G;^Hq z8F;m^C3|=JyyVZ1|=h9)X41kJ0Y=g6E7KI|^o z=YRF66LITXGfC@^mjwaaS4AvC8=WcwI#DMMY{}&3EE{ZD`3-UjR1)jvF~joPy!aTN ze`FQe-iXcX9;Mm_|m_yP~=9x0M}}rt)MxTVU((>2s_=u z=bV?>xi>ifQoiUE6x7YnKRxPUGIdp`c~hjd?P)?$CcYz*Kc4TAh!TBJUe37W zJ%px48p@D8>p!+N%Wh|Bol31XQ*&OV0X`$LUB&6n9c6v}0C*1wi;=p3C3 zjtDk0fMCEs2}BU__vco`s=D!TpN4+xGHdvuZoHwcjtSOIm`i)V^iE~T$+pG{_`WDC z3^pjKlE=gL&mU&I7-0zsynUB1b0%GQS)6g1IJRTiX_~^<17#W>0WifN9C$(~?>Hyt z^k{y%Y?~s{AaI3SBgwKY#6w6;=PIa z@#EascsQXvCRWh64h#n|Kduuos-BZEbVwa>2nZzOs)sn?1vNDQE?f2VO`AJD1M}>v zci9wmw_(>lB|)OL-QKw4wfTnyuR0i_@LbcuRI;^A=Q66m0%HWkO4pTHNd$TES^?f2 z3u>LyuaCCyY$NS8R?y61xiq!8-tAkgedUTW=4@1yjtvxeU?N4M?5o$W@zFGemie_r z=rF>+u|mcK+G05NG!Zf@QUpeY?CzFYTRT5)xn~JInx++jj#XcQs}lh*jZoABh@LxMk zXl!f*>V*=H-MthJX*oHeab|;WB&Gn^hJBa!?Abc{?}9$%3F~hy+9=cnx3#ENn|U%F zy^D7mCYFRwT)d+>;Wfv8O_E#gjPH*0&U!b++Boa3BG}O1zblB9yniqD{{4I0@(X-@ zQ9yQ{;7fh*K*6rV2~PFLLqpP7l0YmbxOyRyJj1U7D#tA&gB`n|HR+}#qe#p?HZYt#2qSML{nj}!*_Q2ys|MpA;xm?AU6J2f_V#WES~ zpb=G7EU1Md!cp?yQF`10h2xFm(?N=X6G`a9f&o!lx-~w1;n@c5AO$GlgVt~M?ahg2 zkHcjZ95sbt*FI@nwGXW{QPH}*`~v4?2V^Br9bMB1Cyuis{8mSqJ526ErM>%WC-X9(~W7d$<=X8QAN zM%;VhvwV?}5nK?-*3=XjAOGxm8hd?z|HI{DaesgDR9w{T9KCKtMl;#Zz-a0g{&q4c zQ_}K=y}Xx0-_;OhV!A~Kq80J&1EpJj7)RF<|kn~vHW2XNAyvp!GCGMqb+BBY>co>$thM)E}T_#Nk|gABL{Rnx)Xz{{K#D-O(asgW1@nM2M^@C+&QsX z9g?_^4E^=<(EVSZm`OqmTlDPj4cVP7a(6#@Ez6#lzfyVq3m@Y#WA0gT#~lYfJ^c&n z|55!YnpSUa>Wg~q?HsH+lDH}A8O+SWa?8dh>AbNq2)rC)<2oS!HMd+q&6zj$?bnJ_GJ6P9vUw}}9yaBS)f^IPqQcQJSk?`)EyqQU9-?-Lpt)XfE1S$JTm*41qV zh0BH)L=r129~k&*T;%kE?uF&f*5-KL1x>m0`uYO>+1D`!+Wz|ZA6|);774Yh0}5Dx zJeKwHda&xQ;Jy}!Nlsa!~D+XCcBhkQFS~lVL@3W1|SAL4)rPxcZ z$c$+?^lOnRO~*5gZYJf17*L+-XVVq9HWNc`e{90k@FhFuWv0f{CoWF;mi0}OiYE`( z)b<9-$t>}8b_#?N3p##Slr}D@YR4A|E!MVOOa`zV2L%P8zeFE{Ra(wTTSZv~6l$M6 zJBSBuRMbc8?H}yy_=t!$cjGG1`C$Jr?8<4N@SvBjx0jkh2V>M^I|qK+i{fH(R#qV@ zs!L$X`GXPDgyOB&uk-KBxT+TxT5Q@&LEAdf*2ah9j&L$OR+66`q3hJM=P@zOWTOf~ za-B`)&uRD__Z<-Yv9_pt((p%s-wTxEaM;+U)D92Ra&d8mvuf(RYi@3)#zh;Rw1ALy zJ;q~+Svfg&7>Qv@fwe9;U~TY@8VT9*^pD!~*+Cj5OL-F9MGi;MiI@Bu7*HR>-$sFP zzJ(uMr@-5WW-ipVg%XBy_J`{m*_G6WY@+t%r*00~)P}tJ$0xfa^SazDEI9b~zf56u zT*~oC!dmD_WMq&!cYR-9FaTNDX+n7QG#mI!g~o`(yw4!H;AxB!jkl+o+?*50aZ96_ z?lvzC2w2b^@84&_;yGctvly|u-d`XilVB7W>It7 z;DgYAr0Cj3xd-_nGY+~gnoIGCmvhP3uFoq{yJ-rEa~mao9OzM1)#=(dB4TUHI~w8z zTnG2gg#(~^W!uH&7`9A?yrS-ybtJ!elWfmyoDdU?foaB;!K*23v=TQFnb zB!`}P-n7GttvvTE_cak~>b)5n?#CA!Bn;uOe^J4t( zlSHI=<6pi?wzIGxLJe$&M)vyFk|WPMT|Rwwz$ck+3Unn`KaPr`x1VmE{qFi7&@PZm z_t$G{+*3_vLcXeKmG<5;4gW}OIg9{i@}M`>sylf7fp#;owu8oQV)gioEaSR6Z~-lwi|ng%TECMI~myo+vdmUzV{~GVRUR~llrc= z7h%MWhar`c&OHe_GmDp#=;n$NB`{t15A^355N64-@d)&%cEXn6`8#XGb=^gl5Cr;G z>>UW5^wup=3AdB@INij{paCcsmh2EQB9oF-)o-6viC{i&WW<2=G3L32fB!77r9&=< zUzzMW;B-{d_n%3CZnB|_j#q`#UIjif&?K6P) zamdNB;&1PN@};j&SylD-YRZh+9>E%lHMt?Fn*CLBejC+vPL!HMb1a-(DElZVDVfgm z-6l22eHxW2r|q)zwq*DRyu|?4d%+0zIxlZmdv*Rhv7qXq?Tty|I99vlts#2Hhl)8J zEfE%Hoi(@!x

3oIEe5o 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 literal 0 HcmV?d00001

8rHTP|-+1=e!s?4!*St**ic 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%0DUBUcg7(KDl(|5 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