From 1dbfecfff53a4102606e852e4332156f5cf13c86 Mon Sep 17 00:00:00 2001 From: David Hoese Date: Mon, 16 Oct 2023 12:01:40 -0500 Subject: [PATCH] For strict channel priority in CI --- .github/workflows/ci.yaml | 1 + cython_test.pyx | 17 +++++++++++++++++ cython_test2.pyx | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 cython_test.pyx create mode 100644 cython_test2.pyx diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index cc68ae9..f4688f5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -33,6 +33,7 @@ jobs: miniforge-variant: Mambaforge miniforge-version: latest use-mamba: true + channel-priority: strict python-version: ${{ matrix.python-version }} activate-environment: test-environment environment-file: continuous_integration/environment.yaml diff --git a/cython_test.pyx b/cython_test.pyx new file mode 100644 index 0000000..1a843b7 --- /dev/null +++ b/cython_test.pyx @@ -0,0 +1,17 @@ +# cython: language_level=3, boundscheck=False, cdivision=True, wraparound=False, initializedcheck=False, nonecheck=False +cimport cython +import numpy as np +cimport numpy as np + +np.import_array() + +def test_func(): + cdef np.ndarray[float, ndim=2] arr = np.zeros((5, 5), dtype=np.float32) + cdef float[:, ::1] arr_view = arr + _run(arr_view) + +cdef void _run(float[:, ::1] arr_view) noexcept nogil: + cdef float[:, :] tmp = _get_upper_left_corner(arr_view) + +cdef inline float[:, :] _get_upper_left_corner(float[:, ::1] arr) noexcept nogil: + return arr[:1, :1] diff --git a/cython_test2.pyx b/cython_test2.pyx new file mode 100644 index 0000000..ed5b8b0 --- /dev/null +++ b/cython_test2.pyx @@ -0,0 +1,34 @@ +# cython: language_level=3, boundscheck=False, cdivision=True, wraparound=False, initializedcheck=False, nonecheck=False +cimport cython +import numpy as np +cimport numpy as np + +np.import_array() + +def test_func(): + cdef np.ndarray[float, ndim=2] arr = np.zeros((5, 5), dtype=np.float32) + cdef float[:, ::1] arr_view = arr + t = Test(5.0) + t.call_me(arr_view) + + +cdef class Test: + + cdef float _a + + def __cinit__(self, float a): + self._a = a + + cdef void call_me(self, float[:, ::1] my_arr) noexcept: + with nogil: + self._call_me(my_arr) + + cdef void _call_me(self, float[:, ::1] my_arr) noexcept nogil: + cdef Py_ssize_t idx + cdef float[:, :] my_arr2 = _get_upper_left_corner(my_arr) + for idx in range(my_arr2.shape[0]): + my_arr2[idx, 0] = self._a + + +cdef inline float[:, :] _get_upper_left_corner(float[:, ::1] arr) noexcept nogil: + return arr[:3, :3]