Skip to content

Conversation

@serge-sans-paille
Copy link
Owner

No description provided.

@ev-br
Copy link

ev-br commented Dec 16, 2025

Merged this branch into gh-2371 and tried to clean-rebuild scipy:

$ git clean -xdf
$ spin build
....
[663/1255] Compiling C++ object scipy/lin...so.p/meson-generated__linalg_pythran.cpp.o
FAILED: [code=1] scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/meson-generated__linalg_pythran.cpp.o 
/home/br/miniforge3/envs/scipy-dev/bin/x86_64-conda-linux-gnu-c++ -Iscipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p -Iscipy/linalg -I../scipy/linalg -I../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran -I../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/numpy/_core/include -I/home/br/miniforge3/envs/scipy-dev/include/python3.12 -fvisibility=hidden -fvisibility-inlines-hidden -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -std=c++17 -O2 -g -fvisibility-inlines-hidden -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -fPIC -DNPY_NO_DEPRECATED_API=NPY_1_9_API_VERSION -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_NONE -Wno-cpp -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-unused-function -Wno-unused-variable -Wno-int-in-bool-context -MD -MQ scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/meson-generated__linalg_pythran.cpp.o -MF scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/meson-generated__linalg_pythran.cpp.o.d -o scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/meson-generated__linalg_pythran.cpp.o -c scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp
In file included from ../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/ndarray.hpp:39,
                 from ../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/tuple.hpp:8,
                 from ../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/builtins/bool_.hpp:6,
                 from ../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/NoneType.hpp:6,
                 from ../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/slice.hpp:5,
                 from ../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/core.hpp:52,
                 from scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:1:
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp: In instantiation of '{anonymous}::pythonic::types::numpy_gexpr<A, S>::numpy_gexpr(const {anonymous}::pythonic::types::numpy_gexpr<Argp, S ...>&) [with Argp = const {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>&; Arg = {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>; S = {{anonymous}::pythonic::types::cstride_normalized_slice<1>}]':
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_iexpr.hpp:362:22:   required from 'std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > {anonymous}::pythonic::types::numpy_iexpr<A>::operator()(const Sp&, const S& ...) const [with Sp = {anonymous}::pythonic::types::cstride_slice<1>; S = {}; Arg = const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&; std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; typename {anonymous}::pythonic::types::normalized<Sp>::type = {anonymous}::pythonic::types::cstride_normalized_slice<1>]'
  362 |     return make_gexpr(*this, s0, s...);
      |            ~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:122:39:   required from 'std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> {anonymous}::pythonic::types::extended_slice<0>::operator()(E&&, const long int&, const S& ...) [with E = {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&; S = {{anonymous}::pythonic::types::cstride_slice<1>}; std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  122 |       return std::forward<E>(expr)[s0](s...);
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/ndarray.hpp:695:61:   required from 'decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) {anonymous}::pythonic::types::ndarray<T, pS>::operator()(const S0&, const S& ...) & [with S0 = long int; S = {{anonymous}::pythonic::types::cstride_slice<1>}; T = std::complex<double>; pS = {anonymous}::pythonic::types::pshape<long int, long int>; decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  695 |     return extended_slice<count_new_axis<S0, S...>::value>{}((*this), s0, s...);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:202:867:   required from 'typename {anonymous}::__pythran__linalg_pythran::_funm_loops::type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type {anonymous}::__pythran__linalg_pythran::_funm_loops::operator()(argument_type0, argument_type1, argument_type2, argument_type3) const [with argument_type0 = {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type1 = {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type2 = long int; argument_type3 = double; typename type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type = std::tuple<{anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >, double>]'
  202 |               typename pythonic::assignable_noescape<decltype(pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L))))))>::type val = pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))));
      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:227:84:   required from here
  227 |                                 auto res = __pythran__linalg_pythran::_funm_loops()(F, T, n, minden);
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp:310:13: error: invalid use of 'const_cast' with type 'std::remove_cv_t<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&> >' {aka '{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<double>, {anonymous}::pythonic::types::pshape<long int, long int> >&>'}, which is not a pointer, reference, nor a pointer-to-data-member type
  310 |       : arg(const_cast<std::remove_cv_t<Arg>>(other.arg)), slices(other.slices),
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp: In instantiation of '{anonymous}::pythonic::types::numpy_gexpr<A, S>::numpy_gexpr(const {anonymous}::pythonic::types::numpy_gexpr<Argp, S ...>&) [with Argp = const {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>&; Arg = {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>; S = {{anonymous}::pythonic::types::cstride_normalized_slice<1>}]':
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_iexpr.hpp:362:22:   required from 'std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > {anonymous}::pythonic::types::numpy_iexpr<A>::operator()(const Sp&, const S& ...) const [with Sp = {anonymous}::pythonic::types::cstride_slice<1>; S = {}; Arg = const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&; std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; typename {anonymous}::pythonic::types::normalized<Sp>::type = {anonymous}::pythonic::types::cstride_normalized_slice<1>]'
  362 |     return make_gexpr(*this, s0, s...);
      |            ~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:122:39:   required from 'std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> {anonymous}::pythonic::types::extended_slice<0>::operator()(E&&, const long int&, const S& ...) [with E = {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&; S = {{anonymous}::pythonic::types::cstride_slice<1>}; std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  122 |       return std::forward<E>(expr)[s0](s...);
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/ndarray.hpp:695:61:   required from 'decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) {anonymous}::pythonic::types::ndarray<T, pS>::operator()(const S0&, const S& ...) & [with S0 = long int; S = {{anonymous}::pythonic::types::cstride_slice<1>}; T = std::complex<float>; pS = {anonymous}::pythonic::types::pshape<long int, long int>; decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  695 |     return extended_slice<count_new_axis<S0, S...>::value>{}((*this), s0, s...);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:202:867:   required from 'typename {anonymous}::__pythran__linalg_pythran::_funm_loops::type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type {anonymous}::__pythran__linalg_pythran::_funm_loops::operator()(argument_type0, argument_type1, argument_type2, argument_type3) const [with argument_type0 = {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type1 = {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type2 = long int; argument_type3 = float; typename type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type = std::tuple<{anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >, float>]'
  202 |               typename pythonic::assignable_noescape<decltype(pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L))))))>::type val = pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))));
      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:291:84:   required from here
  291 |                                 auto res = __pythran__linalg_pythran::_funm_loops()(F, T, n, minden);
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp:310:13: error: invalid use of 'const_cast' with type 'std::remove_cv_t<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&> >' {aka '{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<std::complex<float>, {anonymous}::pythonic::types::pshape<long int, long int> >&>'}, which is not a pointer, reference, nor a pointer-to-data-member type
  310 |       : arg(const_cast<std::remove_cv_t<Arg>>(other.arg)), slices(other.slices),
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp: In instantiation of '{anonymous}::pythonic::types::numpy_gexpr<A, S>::numpy_gexpr(const {anonymous}::pythonic::types::numpy_gexpr<Argp, S ...>&) [with Argp = const {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>&; Arg = {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>; S = {{anonymous}::pythonic::types::cstride_normalized_slice<1>}]':
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_iexpr.hpp:362:22:   required from 'std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > {anonymous}::pythonic::types::numpy_iexpr<A>::operator()(const Sp&, const S& ...) const [with Sp = {anonymous}::pythonic::types::cstride_slice<1>; S = {}; Arg = const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&; std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; typename {anonymous}::pythonic::types::normalized<Sp>::type = {anonymous}::pythonic::types::cstride_normalized_slice<1>]'
  362 |     return make_gexpr(*this, s0, s...);
      |            ~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:122:39:   required from 'std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> {anonymous}::pythonic::types::extended_slice<0>::operator()(E&&, const long int&, const S& ...) [with E = {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&; S = {{anonymous}::pythonic::types::cstride_slice<1>}; std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  122 |       return std::forward<E>(expr)[s0](s...);
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/ndarray.hpp:695:61:   required from 'decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) {anonymous}::pythonic::types::ndarray<T, pS>::operator()(const S0&, const S& ...) & [with S0 = long int; S = {{anonymous}::pythonic::types::cstride_slice<1>}; T = double; pS = {anonymous}::pythonic::types::pshape<long int, long int>; decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  695 |     return extended_slice<count_new_axis<S0, S...>::value>{}((*this), s0, s...);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:202:867:   required from 'typename {anonymous}::__pythran__linalg_pythran::_funm_loops::type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type {anonymous}::__pythran__linalg_pythran::_funm_loops::operator()(argument_type0, argument_type1, argument_type2, argument_type3) const [with argument_type0 = {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type1 = {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type2 = long int; argument_type3 = double; typename type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type = std::tuple<{anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >, double>]'
  202 |               typename pythonic::assignable_noescape<decltype(pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L))))))>::type val = pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))));
      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:355:84:   required from here
  355 |                                 auto res = __pythran__linalg_pythran::_funm_loops()(F, T, n, minden);
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp:310:13: error: invalid use of 'const_cast' with type 'std::remove_cv_t<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&> >' {aka '{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<double, {anonymous}::pythonic::types::pshape<long int, long int> >&>'}, which is not a pointer, reference, nor a pointer-to-data-member type
  310 |       : arg(const_cast<std::remove_cv_t<Arg>>(other.arg)), slices(other.slices),
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp: In instantiation of '{anonymous}::pythonic::types::numpy_gexpr<A, S>::numpy_gexpr(const {anonymous}::pythonic::types::numpy_gexpr<Argp, S ...>&) [with Argp = const {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>&; Arg = {anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>; S = {{anonymous}::pythonic::types::cstride_normalized_slice<1>}]':
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_iexpr.hpp:362:22:   required from 'std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > {anonymous}::pythonic::types::numpy_iexpr<A>::operator()(const Sp&, const S& ...) const [with Sp = {anonymous}::pythonic::types::cstride_slice<1>; S = {}; Arg = const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&; std::enable_if_t<((bool){anonymous}::pythonic::types::is_slice<Sp>::value), {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<A>, typename {anonymous}::pythonic::types::normalized<Sp>::type, typename {anonymous}::pythonic::types::normalized<S>::type ...> > = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; typename {anonymous}::pythonic::types::normalized<Sp>::type = {anonymous}::pythonic::types::cstride_normalized_slice<1>]'
  362 |     return make_gexpr(*this, s0, s...);
      |            ~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:122:39:   required from 'std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> {anonymous}::pythonic::types::extended_slice<0>::operator()(E&&, const long int&, const S& ...) [with E = {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&; S = {{anonymous}::pythonic::types::cstride_slice<1>}; std::enable_if_t<((bool)(! {anonymous}::pythonic::utils::all_of<std::is_integral<S>::value ...>::value)), decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...))> = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >; decltype (forward<E>(expr)[s0](<unnamed>::pythonic::types::extended_slice<0>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  122 |       return std::forward<E>(expr)[s0](s...);
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/ndarray.hpp:695:61:   required from 'decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) {anonymous}::pythonic::types::ndarray<T, pS>::operator()(const S0&, const S& ...) & [with S0 = long int; S = {{anonymous}::pythonic::types::cstride_slice<1>}; T = float; pS = {anonymous}::pythonic::types::pshape<long int, long int>; decltype ({anonymous}::pythonic::types::extended_slice<{anonymous}::pythonic::types::count_new_axis<S0, S ...>::value>{}((*({anonymous}::pythonic::types::ndarray<T, pS>*)this), s0, <unnamed>::pythonic::types::ndarray<T, pS>::operator()::s ...)) = {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>, {anonymous}::pythonic::types::cstride_normalized_slice<1> >]'
  695 |     return extended_slice<count_new_axis<S0, S...>::value>{}((*this), s0, s...);
      |            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:202:867:   required from 'typename {anonymous}::__pythran__linalg_pythran::_funm_loops::type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type {anonymous}::__pythran__linalg_pythran::_funm_loops::operator()(argument_type0, argument_type1, argument_type2, argument_type3) const [with argument_type0 = {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type1 = {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >; argument_type2 = long int; argument_type3 = float; typename type<argument_type0, argument_type1, argument_type2, argument_type3>::result_type = std::tuple<{anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >, float>]'
  202 |               typename pythonic::assignable_noescape<decltype(pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L))))))>::type val = pythonic::operator_::sub(pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(T)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(F)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))), pythonic::builtins::functor::sum{}(pythonic::operator_::mul(pythonic::types::as_const(F)(pythonic::operator_::sub(i, 1L),pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L))), pythonic::types::as_const(T)(pythonic::types::contiguous_slice(i,pythonic::operator_::sub(j, 1L)),pythonic::operator_::sub(j, 1L)))));
      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scipy/linalg/_linalg_pythran.cpython-312-x86_64-linux-gnu.so.p/_linalg_pythran.cpp:419:84:   required from here
  419 |                                 auto res = __pythran__linalg_pythran::_funm_loops()(F, T, n, minden);
      |                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
../../../../miniforge3/envs/scipy-dev/lib/python3.12/site-packages/pythran/pythonic/types/numpy_gexpr.hpp:310:13: error: invalid use of 'const_cast' with type 'std::remove_cv_t<{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&> >' {aka '{anonymous}::pythonic::types::numpy_iexpr<const {anonymous}::pythonic::types::ndarray<float, {anonymous}::pythonic::types::pshape<long int, long int> >&>'}, which is not a pointer, reference, nor a pointer-to-data-member type
  310 |       : arg(const_cast<std::remove_cv_t<Arg>>(other.arg)), slices(other.slices),
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[666/1255] Compiling C object scipy/speci...nu.so.p/meson-generated_cython_special.c.o
ninja: build stopped: subcommand failed.

Exact commits:

$ git slog
96d9d4a75 (HEAD -> bug/2367) Merge remote-tracking branch 'origin/fix/concat' into bug/2367
6c9f17b25 (origin/fix/concat) Fix np.concatenate when receiving negative axis and/or matrices
278a39e70 (origin/bug/2367) fix-doc-test
3cef58bb6 Support passing package name as pythran signature
0a139e59f Fix specification error reporting
abdfcc6c8 (origin/master, origin/HEAD) Add support for numpy.concat, numpy.linalg.vector_norm and numpy.linalg.matrix_norm
561fcc7c8 Silent in valid gcc warning in pythonic/numpy/median.hpp
369012115 Update gast and beniget requirements
8f97a5c03 Don't test float128 when it does not exist in numpy
6948c071e Fix handling of spec error
7c3c038b8 (tag: 0.18.1, master) 0.18.1 - an amzer a dro

@serge-sans-paille
Copy link
Owner Author

serge-sans-paille commented Dec 16, 2025 via email

@codspeed-hq
Copy link

codspeed-hq bot commented Dec 16, 2025

CodSpeed Performance Report

Merging #2381 will not alter performance

Comparing fix/concat (3740eea) with master (abdfcc6)

Summary

✅ 58 untouched

@serge-sans-paille
Copy link
Owner Author

@ev-br looks good now!

@serge-sans-paille serge-sans-paille merged commit b00edbe into master Dec 20, 2025
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants