#1136867 pysph: FTBFS: E TypeError: only 0-dimensional arrays can be converted to Python scalars

Package:
src:pysph
Source:
src:pysph
Submitter:
Santiago Vila
Date:
2026-09-12 19:35:01 UTC
Severity:
normal
Tags:
#1136867#5
Date:
2026-05-16 16:27:53 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202605/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:pysph, so that this is still
visible in the BTS web page for this package.

Thanks.
--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
   debian/rules execute_after_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
/usr/bin/make clean
make[2]: Entering directory '/<<PKGBUILDDIR>>'
python3 setup.py clean
/usr/lib/python3/dist-packages/setuptools/_distutils/extension.py:150: UserWarning: Unknown Extension options: 'cython_compile_time_env'
  warnings.warn(msg)
/usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated.
!!

        ********************************************************************************
        Please consider removing the following classifiers in favor of a SPDX license expression:

[... snipped ...]

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::StratifiedSFCGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/base/tests/test_particle_array.py::ParticleArrayTestOpenCL::test_add_particles
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'scan_lev2'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_get_number_of_particles[opencl]
.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_remove_particles[opencl]
.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::StratifiedSFCGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/base/tests/test_particle_array.py::ParticleArrayTestOpenCL::test_add_particles
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'scan_final_update'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_get_number_of_particles[opencl]
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::TestZOrderGPUNNPSWithSorting::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/base/tests/test_particle_array.py::ParticleArrayTestOpenCL::test_add_particles
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_take_elwise'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_align[opencl]
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::TestZOrderGPUNNPSWithSorting::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'arange'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_align[opencl]
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_set_indices'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_remove_particles[opencl]
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_fill_if_remove_elwise'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_remove_tagged_particles[opencl]
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'scalar_comparison_kernel'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_device_helper.py::TestDeviceHelper::test_extract_particles[opencl]
.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_particle_array.py::ParticleArrayTestOpenCL::test_extract_particles_works_with_non_empty_dest
.pybuild/cpython3_3.13/build/pysph/base/tests/test_particle_array.py::ParticleArrayTestOpenCL::test_extract_particles_works_with_specific_props_with_dest
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_extract_particles_knl'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'axpb'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_box_wrap'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_translate'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_multi_group_integrator.py::TestMultiGroupIntegratorGPU::test_different_accels_per_integrator
  /usr/lib/python3/dist-packages/compyle/jit.py:199: UserWarning:
  In code in line 5:

      c[0] = floor((x) / h)
             ^


  Function called is not marked by the annotate decorator. Argument
  type defaulting to 'double'. If the type is not 'double', store
  the value in a variable of appropriate type and use the variable

    warnings.warn(msg)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_multi_group_integrator.py::TestMultiGroupIntegratorGPU::test_different_accels_per_integrator
  /usr/lib/python3/dist-packages/compyle/jit.py:199: UserWarning:
  In code in line 7:

      c[1] = floor((y) / h)
             ^


  Function called is not marked by the annotate decorator. Argument
  type defaulting to 'double'. If the type is not 'double', store
  the value in a variable of appropriate type and use the variable

    warnings.warn(msg)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_multi_group_integrator.py::TestMultiGroupIntegratorGPU::test_different_accels_per_integrator
  /usr/lib/python3/dist-packages/compyle/jit.py:199: UserWarning:
  In code in line 9:

      c[2] = floor((z) / h)
             ^


  Function called is not marked by the annotate decorator. Argument
  type defaulting to 'double'. If the type is not 'double', store
  the value in a variable of appropriate type and use the variable

    warnings.warn(msg)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_fill_pids'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_count_cells'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_sort_indices'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_domain_manager.py::ZOrderGPUPeriodicBox2D::test_box_wrapping
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_map_cid_to_idx'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUDoubleNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_z_order_nbr_lengths'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_aa
.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUDoubleNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_z_order_nbrs'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::ZOrderGPUNNPSTestCase::test_neighbors_ab
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'elwise_map_dst_to_src'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::BruteForceNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'brute_force_nbr_lengths'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::BruteForceNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'brute_force_nbrs'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::StratifiedSFCGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'fill_pids'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::StratifiedSFCGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'fill_start_indices'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::StratifiedSFCGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'find_nbr_lengths'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/base/tests/test_nnps.py::StratifiedSFCGPUNNPSTestCase::test_neighbors_aa
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'find_nbrs'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/solver/tests/test_application.py::TestApplication::test_app_stops_xml_rpc_interface_at_end
  /usr/lib/python3/dist-packages/_pytest/threadexception.py:58: PytestUnhandledThreadExceptionWarning: Exception in thread Thread-4 (start)

  Traceback (most recent call last):
    File "/usr/lib/python3.13/threading.py", line 1044, in _bootstrap_inner
      self.run()
      ~~~~~~~~^^
    File "/usr/lib/python3.13/threading.py", line 995, in run
      self._target(*self._args, **self._kwargs)
      ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/pysph/solver/solver_interfaces.py", line 56, in start
      self._server.serve_forever()
      ~~~~~~~~~~~~~~~~~~~~~~~~~~^^
    File "/usr/lib/python3.13/multiprocessing/managers.py", line 187, in serve_forever
      sys.exit(0)
      ~~~~~~~~^^^
  SystemExit: 0

  Enable tracemalloc to get traceback where the object was allocated.
  See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info.
    warnings.warn(pytest.PytestUnhandledThreadExceptionWarning(msg))

.pybuild/cpython3_3.13/build/pysph/solver/tests/test_solver_utils.py::TestOutputHdf5::test_dump_and_load_with_constants
.pybuild/cpython3_3.13/build/pysph/solver/tests/test_solver_utils.py::TestOutputHdf5::test_dump_and_load_with_partial_data_dump
.pybuild/cpython3_3.13/build/pysph/solver/tests/test_solver_utils.py::TestOutputHdf5::test_dump_and_load_works_by_default
.pybuild/cpython3_3.13/build/pysph/solver/tests/test_solver_utils.py::TestOutputHdf5::test_dump_and_load_works_with_compress
.pybuild/cpython3_3.13/build/pysph/solver/tests/test_solver_utils.py::TestOutputHdf5::test_that_output_array_information_is_saved
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/pysph/solver/output.py:257: H5pyDeprecationWarning: Creating a dataset without passing data or dtype is deprecated. Pass an explicit dtype. Using dtype='f4' will keep the current default behaviour.
    prop = ptype_grp.create_dataset(propname, (0,))

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_equation_with_time_should_work_on_gpu
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_precomputed_should_work_on_gpu
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_should_handle_helper_functions_on_gpu
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'g0_fluid_initialize'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_equation_with_time_should_work_on_gpu
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_group_honors_condition_on_gpu
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_precomputed_should_work_on_gpu
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'g0_fluid_on_fluid_loop'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_group_honors_condition_on_gpu
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'g0_fluid_post_loop'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py: 90 warnings
  /usr/lib/python3.13/ast.py:422: DeprecationWarning: visit_Num is deprecated; add visit_Constant
    return visitor(node)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py: 90 warnings
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/pysph/sph/acceleration_eval_gpu_helper.py:115: DeprecationWarning: Attribute n is deprecated and will be removed in Python 3.14; use value instead
    s = literal_to_float(node.n, self._use_double)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_should_stop_iteration_with_converged_on_gpu
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'g0s0_fluid_on_fluid_loop'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_acceleration_eval.py::TestAccelerationEval1DGPU::test_should_stop_iteration_with_converged_on_gpu
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'g0s0_fluid_post_loop'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_integrator.py::TestLeapFrogIntegratorGPU::test_leapfrog
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'stage1_fluid'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

.pybuild/cpython3_3.13/build/pysph/sph/tests/test_integrator.py::TestLeapFrogIntegratorGPU::test_py_stage_is_called_on_gpu
.pybuild/cpython3_3.13/build/pysph/sph/tests/test_multi_group_integrator.py::TestMultiGroupIntegratorGPU::test_different_accels_per_integrator
  /usr/lib/python3/dist-packages/pytools/py_codegen.py:119: ExistingLineCacheWarning: Overwriting existing generated code in linecache: '<pyopencl invoker for 'stage2_fluid'>'.
    return _make_module(self.get(), name=name, name_prefix=name_prefix)

#1136867#10
Date:
2026-09-12 19:32:46 UTC
From:
To:
user debian-python@lists.debian.org
usertags 1136867 python3.15
tags 1136867 patch
thanks

Hi!

While rebuilding the python related packages against the Python 3.15rc2
version I ran into this FTBFS [1].

This issue was fixed in upstream's PR #438, although 3 of the 6 commits
are just about GH workflows. Applying the other 3 makes the Debian
package build again.

I've applied these fixes in the sandbox [3] to verify that it builds
successfully, these should be applied in Debian to get the package back
to a healthy state.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4645848/
[2]: https://github.com/pypr/pysph/pull/438
[3]: https://debusine.debian.net/debian/r-python-python3.15/