Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

META: Python 3.12 package status #6421

Open
3 of 4 tasks
th0ma7 opened this issue Jan 26, 2025 · 32 comments
Open
3 of 4 tasks

META: Python 3.12 package status #6421

th0ma7 opened this issue Jan 26, 2025 · 32 comments
Assignees
Labels
status/help-wanted update request to update existing package

Comments

@th0ma7
Copy link
Contributor

th0ma7 commented Jan 26, 2025

Python 3.12 package status

checkmark: ✔️
xmark: ❌️

Packages formally using python 3.x

PACKAGE Python 3.12 migration Published COMMENT
bazarr needs numpy (and TC_GCC > 5)
beets
borgbackup
deluge #6423
domoticz
duplicity
ffsync #6429
fishnet
flexget #6427
haproxy
homeassistant needs numpy (and TC_GCC > 5)
2023.7.3 fails to cross compile some wheels for python312:
  • aiohttp==3.8.5
  • greenlet==2.0.2
  • guppy3==3.1.3
  • lxml==4.9.1
  • numpy==1.24.4
mercurial #6422
octoprint
plexpy-custom Ready for migration but BUG with the package install, to remove?
rdiff-backup
rutorrent #6404 update to python312 pending
sabnzbd #6431
sickchill
salt-master
salt-minion
tvheadend #6424
znc #6425

Framework clean-up

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2025

@hgy59 @mreid-tt @SynoCommunity/developers Considering the following, strongly suggesting to migrate to python 3.12 which would be a lot less impactful and wait anothe year or so before switching to a newer python version considering impacts on older DSM6 archs.

python311:

  • newer pillow now finally compile on all archs!!!

python312:

  • newer numpy finally compile to the detriment that older compatible with gcc-4.9.x no longer works (now DSM7 only)
  • armv5 no longer supported
  • impacted packages: bazarr, homeassistant

python313:

  • greenlet only work with newer gcc (now DSM7 only)
  • armv5 no longer supported
  • impacted packages: bazarr, ffsync, flexget, homeassistant, sickchill

@th0ma7 th0ma7 added update request to update existing package status/help-wanted labels Jan 26, 2025
@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2025

I've added a first set of relatively "easy" wins for early testing: deluge, mercurial, tvheadend, znc

@mreid-tt
Copy link
Contributor

Are we considering a big-bang approach where we prepare all the packages for Python 3.1.2 and release them simultaneously? Or should we prioritize quick wins, releasing simpler packages first and gradually tackling the more complex ones?

Regarding the current FlexGet PR I have, should I proceed with that change now, or wait until all the packages are ready for release? The main advantage of a big-bang approach is that users would only need to have both Python 3.1.1 and 3.1.2 installed temporarily, rather than having to maintain them for an extended period. However, this approach could introduce more risk and delays, especially with more complex packages. I’d appreciate your thoughts on this.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2025

Are we considering a big-bang approach where we prepare all the packages for Python 3.1.2 and release them simultaneously? Or should we prioritize quick wins, releasing simpler packages first and gradually tackling the more complex ones?

no I'm not, I'd rather have a few easy wins first, like the one i started with.

Regarding the current FlexGet PR I have, should I proceed with that change now, or wait until all the packages are ready for release? The main advantage of a big-bang approach is that users would only need to have both Python 3.1.1 and 3.1.2 installed temporarily, rather than having to maintain them for an extended period. However, this approach could introduce more risk and delays, especially with more complex packages. I’d appreciate your thoughts on this.

i would be tempted to suggest you release as-is first using python 3.11, and in a week or two once issues if any have been found with your 3.11 release (or the easy wins above) you migrate "as-is" to py312. That's why would recommend.

@hgy59
Copy link
Contributor

hgy59 commented Jan 26, 2025

@th0ma7 I have taken the octoprint package.
It successfully builds the current and the updated version (1.10.1 and 1.10.3) with python312 but it does not run. There is no error shown, it just terminates and the pid file is gone.
I have the same issue with python311 (only the already published package runs).

Tested on VitualDSM 7.2.2.

@mreid-tt
Copy link
Contributor

mreid-tt commented Jan 26, 2025

@th0ma7, thanks for the feedback. I'll start with those I've touched before flexget, ffsync and then perhaps look at sabnzbd, bazarr and move from there.

@hgy59 hgy59 pinned this issue Jan 26, 2025
@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2025

@th0ma7 I have taken the octoprint package. It successfully builds the current and the updated version (1.10.1 and 1.10.3) with python312 but it does not run. There is no error shown, it just terminates and the pid file is gone. I have the same issue with python311 (only the already published package runs).

Tested on VitualDSM 7.2.2.

I just tested with deluge PR on my armv7 NAS. First off python runs ok, basic testing showed it being functional. When installing deluge this came into the logs:

2025/01/26 15:19:28     ERROR: Could not find a version that satisfies the requirement libtorrent==2.0.10 (from versions: none)
2025/01/26 15:19:28     ERROR: No matching distribution found for libtorrent==2.0.10
2025/01/26 15:19:30     ERROR: Python package installation failed

That can only mean one thing: it either failed to build on github or failed to copy it over to the wheelhouse directory....

looking further into the github logs, it was built sucessfully:

2025-01-26T17:22:49.7727317Z Collecting git+https://github.com/arvidn/libtorrent.git@v2.0.10
2025-01-26T17:22:49.7734237Z   Cloning https://github.com/arvidn/libtorrent.git (to revision v2.0.10) to /tmp/pip-req-build-oyf8bquz
2025-01-26T17:22:49.7754763Z   Running command git clone --filter=blob:none --quiet https://github.com/arvidn/libtorrent.git /tmp/pip-req-build-oyf8bquz
2025-01-26T17:22:51.6474808Z   Running command git checkout -q 74bc93a37a5e31c78f0aa02037a68fb9ac5deb41
2025-01-26T17:22:52.0212517Z   Resolved https://github.com/arvidn/libtorrent.git to commit 74bc93a37a5e31c78f0aa02037a68fb9ac5deb41
2025-01-26T17:22:52.0215494Z   Running command git submodule update --init --recursive -q
2025-01-26T17:22:52.5070351Z   Preparing metadata (setup.py): started
2025-01-26T17:22:52.9431697Z   Preparing metadata (setup.py): finished with status 'done'
2025-01-26T17:22:52.9461118Z Building wheels for collected packages: libtorrent
2025-01-26T17:22:52.9487882Z   Building wheel for libtorrent (setup.py): started
2025-01-26T17:23:53.1898128Z   Building wheel for libtorrent (setup.py): still running...
2025-01-26T17:24:53.6521239Z   Building wheel for libtorrent (setup.py): still running...
2025-01-26T17:25:53.7688651Z   Building wheel for libtorrent (setup.py): still running...
2025-01-26T17:26:53.9019848Z   Building wheel for libtorrent (setup.py): still running...
2025-01-26T17:27:00.7920473Z   Building wheel for libtorrent (setup.py): finished with status 'done'
2025-01-26T17:27:00.7981113Z   Created wheel for libtorrent: filename=libtorrent-2.0.10-cp311-cp311-linux_arm.whl size=5034100 sha256=77e258ce31e09bddb25ab91caca247550f86f67f41d6c698246a131a74122301
2025-01-26T17:27:00.7982868Z   Stored in directory: /tmp/pip-ephem-wheel-cache-7rpjsi4i/wheels/67/90/66/613c0360108c8f1fabe47bc78d60c59f6520ebb48ae96c8592
2025-01-26T17:27:00.8002042Z Successfully built libtorrent
2025-01-26T17:27:00.9452691Z ===>  Installing wheel [libtorrent], version [2.0.10], type [crossenv]
2025-01-26T17:27:00.9453510Z ===>  Adding libtorrent==2.0.10 to wheelhouse/requirements-crossenv.txt

So is the file there or not? indeed it is!

root@DS115j-armv7:/var/packages/deluge/target/share/wheelhouse# ls -la /var/packages/deluge/target/share/wheelhouse/
total 10116
drwxr-xr-x 2 sc-deluge synocommunity    4096 Jan 26 12:27 .
drwxr-xr-x 3 sc-deluge synocommunity    4096 Jan 26 12:27 ..
-rw-r--r-- 1 sc-deluge synocommunity  188352 Jan 26 12:27 cffi-1.17.1-cp311-cp311-linux_armv7l.whl
-rw-r--r-- 1 sc-deluge synocommunity 1624032 Jan 26 12:27 cryptography-44.0.0-cp37-abi3-linux_armv7l.whl
-rw-r--r-- 1 sc-deluge synocommunity 3146827 Jan 26 12:27 deluge-2.1.1.dev127-py3-none-any.whl
-rw-r--r-- 1 sc-deluge synocommunity   30302 Jan 26 12:27 GeoIP-1.3.2-cp311-cp311-linux_armv7l.whl
-rw-r--r-- 1 sc-deluge synocommunity 5034100 Jan 26 12:27 libtorrent-2.0.10-cp311-cp311-linux_armv7l.whl
-rw-r--r-- 1 sc-deluge synocommunity   14496 Jan 26 12:27 MarkupSafe-3.0.2-cp311-cp311-linux_armv7l.whl
-rw-r--r-- 1 sc-deluge synocommunity   65767 Jan 26 12:27 rencode-1.0.6-cp311-cp311-linux_armv7l.whl
-rw-r--r-- 1 sc-deluge synocommunity      15 Jan 26 12:27 requirements-abi3.txt
-rw-r--r-- 1 sc-deluge synocommunity     125 Jan 26 12:27 requirements-crossenv.txt
-rw-r--r-- 1 sc-deluge synocommunity     276 Jan 26 12:27 requirements-pure.txt
-rw-r--r-- 1 sc-deluge synocommunity     416 Jan 26 12:27 requirements.txt
-rw-r--r-- 1 sc-deluge synocommunity  211536 Jan 26 12:27 zope.interface-7.2-cp311-cp311-linux_armv7l.whl

So why wasn't it able to install it? Something is odd, maybe you're hiting a similar issue? may just be with newer pip?

EDIT: Getting the exact same error on my x64 nas.

EDIT2: Was missing PYTHON_PACKAGE variable defined with python312 which I'm pretty was the issue. Tested on both x64 and armv7 and fully functional. Will now test with the reverting of the #egg= changes.

@mreid-tt
Copy link
Contributor

mreid-tt commented Jan 26, 2025

Hmm, I've just completed a test build of FlexGet on DSM 6 in #6427 and everything seemed to install and upgrade fine. I'm attaching the install and upgrade logs to the PR for your review if it would help.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2025

@mreid-tt that's great news! In the last round of wheel build update I didn't change "anything" in how builds are being made, I just changed how the makefiles are being processed.

That being said I did one change that I reminded: removal of the #egg= portion of URL based wheels set for deprecation in future pip releases. The wheel that failed to install is a URL type wheel, so that may only be that, to be confirmed.

EDIT: I just noticed I had not updated the PYTHON_PACKAGE variable... thus libtorrent wheel was advertising a python311 version (actually all cross-compiled wheels which failed to install, starting with libtorrent) libtorrent-2.0.10-cp311-cp311-linux_armv7l.whl

@hgy59
Copy link
Contributor

hgy59 commented Jan 26, 2025

@th0ma7 I am working on homeassistant

first, trying to build homeassistant 2023.7.3 with python312 (before updating HA I want to know whether it works at runtime - or has issues like octoprint or deluge)
Initially some cross wheels failed (added to list above)
Then I updated failing wheels and found versions that build successfully (but I guess HA will not accept those)
But I have still an issue with numpy.
Even when I use numpy==1.26.4 (the same version is included in python312-wheels), and even the default-crossenv has Cython==3.0.11 I get the following error.

../meson.build:37:2: ERROR: Problem encountered: NumPy requires Cython >= 0.29.34

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 26, 2025

@th0ma7 I am working on homeassistant

first, trying to build homeassistant 2023.7.3 with python312 (before updating HA I want to know whether it works at runtime - or has issues like octoprint or deluge) Initially some cross wheels failed (added to list above) Then I updated failing wheels and found versions that build successfully (but I guess HA will not accept those) But I have still an issue with numpy. Even when I use numpy==1.26.4 (the same version is included in python312-wheels), and even the default-crossenv has Cython==3.0.11 I get the following error.

../meson.build:37:2: ERROR: Problem encountered: NumPy requires Cython >= 0.29.34

Having an early PR I could chime in?

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 27, 2025

@hgy59 when invoking make WHEELS="numpy==1.26.4" wheel-<arch>-<tcversion> what does that gives? Assume all cross were previously completed...

@mreid-tt
Copy link
Contributor

mreid-tt commented Jan 27, 2025

@th0ma7, building for ffsync under #6429 I get an error for the hi3535-6.2.4 build. The issue seems to stem from greenlet as the logs show:

Build Log
  ===>  Compiling wheel [greenlet], version [1.1.3], type [crossenv]
  ===>  make WHEEL_NAME="greenlet" WHEEL_VERSION="1.1.3" crossenv-hi3535-6.2.4
  ===>  make ARCH="hi3535" TCVERSION="6.2.4" WHEEL_NAME="greenlet" WHEEL_VERSION="1.1.3" crossenv
  make[5]: 'crossenv' is up to date.
  ===>  pip build [greenlet], version: [1.1.3]     
  ===>  crossenv: [/github/workspace/spk/ffsync/work-hi3535-6.2.4/crossenv-default]
  ===>  pip: [/github/workspace/spk/ffsync/work-hi3535-6.2.4/crossenv-default/bin/cross-pip]
  ===>  maturin: [/github/workspace/native/python312/work-native/install/usr/local/bin/maturin]
  ===>  _PYTHON_HOST_PLATFORM="arm-cortexa9-linux-gnueabi" PATH=:/github/workspace/native/python312/work-native/install/usr/local/bin:/github/workspace/spk/ffsync/work-hi3535-6.2.4/crossenv-default/bin:/github/workspace/distrib/cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CMAKE_TOOLCHAIN_FILE= MESON_CROSS_FILE= cross-pip wheel --disable-pip-version-check --no-binary :all: --find-links /github/workspace/distrib/pip --cache-dir /github/workspace/spk/ffsync/work-hi3535-6.2.4/pip --no-deps --wheel-dir /github/workspace/spk/ffsync/work-hi3535-6.2.4/wheelhouse --no-index --no-build-isolation greenlet==1.1.3
  Looking in links: /github/workspace/distrib/pip
  Processing /github/workspace/distrib/pip/greenlet-1.1.3.tar.gz
    Preparing metadata (setup.py): started
    Preparing metadata (setup.py): finished with status 'done'
  Building wheels for collected packages: greenlet
    Building wheel for greenlet (setup.py): started
    Building wheel for greenlet (setup.py): finished with status 'error'
    error: subprocess-exited-with-error
    
    × python setup.py bdist_wheel did not run successfully.
    │ exit code: 1
    ╰─> [160 lines of output]
        running bdist_wheel
        running build
        running build_py
        creating build/lib.linux-arm-cpython-312/greenlet
        copying src/greenlet/__init__.py -> build/lib.linux-arm-cpython-312/greenlet
        creating build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_weakref.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_gc.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_throw.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_leaks.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_generator_nested.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_extension_interface.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_generator.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_greenlet.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_tracing.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_cpp.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_contextvars.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_stack_saved.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/__init__.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        copying src/greenlet/tests/test_version.py -> build/lib.linux-arm-cpython-312/greenlet/tests
        running egg_info
        writing src/greenlet.egg-info/PKG-INFO
        writing dependency_links to src/greenlet.egg-info/dependency_links.txt
        writing requirements to src/greenlet.egg-info/requires.txt
        writing top-level names to src/greenlet.egg-info/top_level.txt
        ERROR setuptools_scm._file_finders.git listing git files failed - pretending there aren't any
                                                     ^
        src/greenlet/greenlet.c:560:55: error: ‘_PyCFrame’ has no member named ‘use_tracing’
                 ts__g_switchstack_use_tracing = tstate->cframe->use_tracing;
                                                               ^
        src/greenlet/greenlet.c:621:23: error: ‘_PyCFrame’ has no member named ‘use_tracing’
                 tstate->cframe->use_tracing = ts__g_switchstack_use_tracing;
                               ^
        src/greenlet/greenlet.c:624:15: error: ‘PyThreadState’ has no member named ‘recursion_remaining’
                 tstate->recursion_remaining = (tstate->recursion_limit
                       ^
        src/greenlet/greenlet.c:624:46: error: ‘PyThreadState’ has no member named ‘recursion_limit’
                 tstate->recursion_remaining = (tstate->recursion_limit
                                                      ^
        src/greenlet/greenlet.c: In function ‘g_calltrace’:
        src/greenlet/greenlet.c:105:51: error: ‘_PyCFrame’ has no member named ‘use_tracing’
         #define TSTATE_USE_TRACING(tstate) (tstate->cframe->use_tracing)
                                                           ^
        src/greenlet/greenlet.c:654:5: note: in expansion of macro ‘TSTATE_USE_TRACING’
             TSTATE_USE_TRACING(tstate) = 0;
             ^
        src/greenlet/greenlet.c:105:51: error: ‘_PyCFrame’ has no member named ‘use_tracing’
         #define TSTATE_USE_TRACING(tstate) (tstate->cframe->use_tracing)
                                                           ^
        src/greenlet/greenlet.c:657:5: note: in expansion of macro ‘TSTATE_USE_TRACING’
             TSTATE_USE_TRACING(tstate) =
             ^
        src/greenlet/greenlet.c: In function ‘g_initialstub’:
        src/greenlet/greenlet.c:903:49: error: ‘PyThreadState’ has no member named ‘recursion_limit’
             self->recursion_depth = (PyThreadState_GET()->recursion_limit
                                                         ^
        src/greenlet/greenlet.c:904:51: error: ‘PyThreadState’ has no member named ‘recursion_remaining’
                                      - PyThreadState_GET()->recursion_remaining);
                                                           ^
        error: command '/github/workspace/toolchain/syno-hi3535-6.2.4/work/arm-cortexa9-linux-gnueabi/bin/arm-cortexa9-linux-gnueabi-gcc' failed with exit code 1
        [end of output]
    
    note: This error originates from a subprocess, and is likely not a problem with pip.
    ERROR: Failed building wheel for greenlet
    Running setup.py clean for greenlet
  Failed to build greenlet

Should I mark ARMv7L_ARCHS as unsupported?

@hgy59

This comment has been minimized.

@hgy59

This comment has been minimized.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 27, 2025

It could well be? Can you check if there is a cython also installed?

@hgy59
Copy link
Contributor

hgy59 commented Jan 27, 2025

My problems seem to be related to my local environment(s)

It could be one of the following

  • I share the /spksrc/distrib folder between all my environments (> 20 clones active)
  • I do not run as root but as regular user in the spksrc container (id = 1000, gid=1000)
  • also the home folder of this user and the toolchain, toolkit and kernel folders are shared between the environments

So I will restart with a "clean" environment...

Sorry for the noise, but I didn't want to create a PR before knowing wheter the current version runs with py312.

PS:
I already tested octoprint with a non-shared environment after encountering a problem. Since this did not solve the problem there, I assumed that it is not related to shared environment.

@hgy59
Copy link
Contributor

hgy59 commented Jan 27, 2025

When adding output of maturin list-python to cross-compile-wheel-% target, it shows:

===>  maturin: [/spksrc/spk/homeassistant/work-x64-7.1/../../../native/python312/work-native/install/usr/local/bin/maturin]
🐍 2 python interpreter found:
 - CPython 3.11 at /usr/bin/python3.11
 - CPython 3.12 at /spksrc/native/python312/work-native/install/usr/local/bin/python3.12

can it be, that maturin uses host python (3.11) in this case?

This is not the problem
Successful builds of python312-wheels have the same output.

@mreid-tt
Copy link
Contributor

@th0ma7, building for ffsync under #6429 I get an error for the hi3535-6.2.4 build. The issue seems to stem from greenlet as the logs show:

Build Log

Should I mark ARMv7L_ARCHS as unsupported?

Since the python312-wheels package example lacked support for greenlet 1.1.3, which is used by hi3535, I’ve marked ARMv7L_ARCHS as unsupported in the PR. Additionally, I revisited the requirements based on the source repository, cleaned up, and updated some wheels. Everything now builds cleanly.

@hgy59
Copy link
Contributor

hgy59 commented Jan 27, 2025

WARNING: just found that python312-wheel package (and may be others) did not included numpy, greenlet etc.
fix in progress...

@hgy59
Copy link
Contributor

hgy59 commented Jan 27, 2025

WARNING: just found that python312-wheel package (and may be others) did not included numpy, greenlet etc. fix in progress...

python311-wheels is not affected, only python312-wheels and python313-wheels
Started #6430 to fix this.

@mreid-tt
Copy link
Contributor

@th0ma7, I've submitted the PRs and completed testing for ffsync (#6429) and SABnzbd (#6431). Full logs are attached to each PR for your review. Let me know if anything else is needed.

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 28, 2025

@mreid-tt thnx for your involvment in this, it is really appreciated (further as it allows others to learn how this works). Although with @hgy59 finding and my recent new understanding #6430 (comment) we should pause just a little in order to get this last tidbit fixed. Hopefully I may be able to fix this within a week or so (bein optimistic a bit).

@mreid-tt
Copy link
Contributor

@th0ma7, understood. I’ve been testing a Bazarr branch with these changes for a PR: master...mreid-tt:spksrc:bazarr-update. Everything appeared to build successfully: https://github.com/mreid-tt/spksrc/actions/runs/13002372904/job/36263335064.

However, when I installed and ran the software, I noticed that numpy wasn’t included:

Installation log: /var/log/packages/bazarr.log
Starting bazarr ...
tail: /var/packages/bazarr/var/bazarr.log: file truncated
Mon Jan 27 22:56:16 -04 2025
Starting bazarr command env LANG=en_US.UTF-8 LC_ALL=en_US.utf8 /volume1/@appstore/bazarr/env/bin/python3 /volume1/@appstore/bazarr/share/bazarr/bazarr.py --no-update --config /volume1/@appstore/bazarr/var/data
Traceback (most recent call last):
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/main.py", line 43, in <module>
    from app.server import webserver, app  # noqa E402
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/app/server.py", line 13, in <module>
    from api import api_bp
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/api/__init__.py", line 7, in <module>
    from .episodes import api_ns_list_episodes
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/api/episodes/__init__.py", line 4, in <module>
    from .episodes_subtitles import api_ns_episodes_subtitles
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/api/episodes/episodes_subtitles.py", line 12, in <module>
    from subtitles.upload import manual_upload_subtitle
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/subtitles/upload.py", line 25, in <module>
    from .sync import sync_subtitles
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/subtitles/sync.py", line 10, in <module>
    from subtitles.tools.subsyncer import SubSyncer
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/subtitles/tools/subsyncer.py", line 6, in <module>
    from ffsubsync.ffsubsync import run, make_parser
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/../libs/ffsubsync/__init__.py", line 21, in <module>
    from .ffsubsync import main  # noqa
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/volume1/@appstore/bazarr/share/bazarr/bazarr/../libs/ffsubsync/ffsubsync.py", line 12, in <module>
    import numpy as np
ModuleNotFoundError: No module named 'numpy'
Stopping bazarr ...
Mon Jan 27 22:58:45 -04 2025
Stopping bazarr service : python3 (31711)

It appears that it's not being included in the build process at all during the run.

@hgy59
Copy link
Contributor

hgy59 commented Jan 28, 2025

It appears that it's not being included in the build process at all during the run.

This was my finding in #6430 that numpy fails to build so far.
First, you have to adjust spk/bazarr/Makefile: you must not use TC_GCC before the include of spksrc.python.mk.
Currently the WHEELS += src/requirements-crossenv-numpy.txt is not applied.
When you fix the include, it will add numpy, but it will fail to build numpy (@th0ma7 is trying to fix this, see his comment).

But IMHO you don't need the conditional include (and can add numpy to the regular requirements file) but must limit the package to DSM >= 7 and exclude comcerto2k (limitation of numpy).
For all python packages that need numpy: if we want to support DSM 6 we must stay on Python 3.11 (or implement hybrid PYTHON_PACKAGE as python311/python312 depending on TCVERSION).

@hgy59
Copy link
Contributor

hgy59 commented Jan 28, 2025

@mreid-tt maybe we can ask bazzar development to remove the numpy dependency and find an alternate library?
IMHO a tool to process subtiles doesn't need a huge library with support for sofisticated scientific math.

I don't expect that for homeassistant, the other package that requires numpy.

@mreid-tt
Copy link
Contributor

mreid-tt commented Jan 28, 2025

But IMHO you don't need the conditional include (and can add numpy to the regular requirements file) but must limit the package to DSM >= 7 and exclude comcerto2k (limitation of numpy).

So just to be clear, when the code has TC_GCC > 5.0, this is is the same as saying DSM > 6?

For all python packages that need numpy: if we want to support DSM 6 we must stay on Python 3.11 (or implement hybrid PYTHON_PACKAGE as python311/python312 depending on TCVERSION).

Hmm, I guess this can be an approach since bazarr only just got support for Python 3.12 with commt morpheus65535/bazarr@43a5841 from last month. How would you suggest I do this? I'm thinking:

  1. Include a check for TCVERSION in the Makefile and based on this:
    • Adjust the PYTHON_PACKAGE and SPK_DEPENDS conditionally
  2. In the setup script check for SYNOPKG_DSM_VERSION_MAJOR and adjust the PYTHON_DIR conditionally

Would this be all that would be needed?

@th0ma7
Copy link
Contributor Author

th0ma7 commented Jan 28, 2025

But IMHO you don't need the conditional include (and can add numpy to the regular requirements file) but must limit the package to DSM >= 7 and exclude comcerto2k (limitation of numpy).

So just to be clear, when the code has TC_GCC > 5.0, this is is the same as saying DSM > 6?

If only this was that simple... Indeed, all dsm6 uses a gcc compiler version 4.9.x or older. Although with dsm7, almost all archs were migrated to gcc 7.5 then 8.x with dsm 7.1. however Synology seems to have forgotten comcerto2k who was left with a 4.9 gcc.

Thus we had to create a new set of functions to compare the gcc version as using only tcversion would not suffice.

@mreid-tt
Copy link
Contributor

mreid-tt commented Jan 29, 2025

@th0ma7, I've modified my branch to create a hybrid python311/python312 package based on the rules you outlined above. Based on this logic we have the following build results for numpy:

Build status for numpy with python 3.1x

Arch python version pip build numpy Status Details
x64-7.1 3.12.8 2.2.2 error NumPy requires Cython >= 3.0.6
aarch64-7.1 3.12.8 2.2.2 error Exec format error: './sanitycheckc.exe'
evansport-7.1 3.12.8 2.2.2 error NumPy requires Cython >= 3.0.6
armv7-7.1 3.12.8 2.2.2 error Exec format error: './sanitycheckc.exe'
comcerto2k-7.1 3.11.11 1.24.4 done -
x64-6.2.4 3.11.11 1.24.4 done -
aarch64-6.2.4 3.11.11 1.24.4 done -
evansport-6.2.4 3.11.11 1.24.4 done -
armv7-6.2.4 3.11.11 1.24.4 done -
hi3535-6.2.4 - - - UNSUPPORTED
88f6281-6.2.4 - - - UNSUPPORTED
qoriq-6.2.4 3.11.11 1.24.4 done -

For the issue reported with the Cython version this I believe was already covered in the referenced #6430. What was more concerning to me was the Exec format error. This was noted in the same issue however there was no resolution to it. It seems to only happen in arm archs so I wanted to do some more detailed testing. The results are as follows:

Build status for numpy with python 3.1x

Arch python version pip build numpy Status Details
aarch64-7.1 3.12.8 2.2.2 error Exec format error: './sanitycheckc.exe'
aarch64-7.1 3.12.8 2.1.3 error Exec format error: './sanitycheckc.exe'
aarch64-7.1 3.12.8 2.0.2 error Exec format error: './sanitycheckc.exe'
aarch64-7.1 3.12.8 1.26.4 error Exec format error: './sanitycheckc.exe'
aarch64-7.1 3.11.11 1.26.4 error Exec format error: './sanitycheckc.exe'

From what I can tell there is a sanity test executable which is compiled, then tested and fails. My suspicion is that it compiles an arm binary and then tries to execute it in an x86 docker image/platform.

In our codebase I see one mention of this as part of a patch for SynoCli Disk Tools here:
https://github.com/SynoCommunity/spksrc/blob/master/cross/dar/patches/001-disable-build-of-src_check.patch

From what I can tell it just disables the compile testing but I don't know if there is a better way for numpy. I came across a number of promising URLs but this is a little beyond my expertise:

Hopefully this can assist with actually getting a build of numpy 1.26.4.

@hgy59
Copy link
Contributor

hgy59 commented Jan 29, 2025

From what I can tell there is a sanity test executable which is compiled, then tested and fails. My suspicion is that it compiles an arm binary and then tries to execute it in an x86 docker image/platform.

Seams to be related to using cross env instead of build env and might have similar reason as the wrong cython version...
As you can see in the log details, it wrongly assumes that it is not cross compiling:

2025-01-28T20:56:11.0971107Z       -----------
2025-01-28T20:56:11.0971734Z       Sanity testing C compiler: /github/workspace/toolchain/syno-armv7-7.1/work/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc
2025-01-28T20:56:11.0972322Z       Is cross compiler: False.
2025-01-28T20:56:11.0978382Z       Sanity check compiler command line: /github/workspace/toolchain/syno-armv7-7.1/work/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc sanitycheckc.c -o sanitycheckc.exe -I/github/workspace/toolchain/syno-armv7-7.1/work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include -D__ARM_PCS_VFP=1 -I/github/workspace/spk/bazarr/work-armv7-7.1/install/var/packages/bazarr/target/include -I/github/workspace/spk/bazarr/work-armv7-7.1/install/var/packages/bazarr/target/ -I/github/workspace/spk/python312/work-armv7-7.1/install/var/packages/python312/target/include -I/github/workspace/toolchain/syno-armv7-7.1/work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/usr/include -D__ARM_PCS_VFP=1 -I/github/workspace/spk/bazarr/work-armv7-7.1/install/var/packages/bazarr/target/include -I/github/workspace/spk/bazarr/work-armv7-7.1/install/var/packages/bazarr/target/ -I/github/workspace/spk/python312/work-armv7-7.1/install/var/packages/python312/target/include -D_FILE_OFFSET_BITS=64 -L/github/workspace/toolchain/syno-armv7-7.1/work/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot/lib -L/github/workspace/spk/bazarr/work-armv7-7.1/install/var/packages/bazarr/target/lib -Wl,--rpath-link,/github/workspace/spk/bazarr/work-armv7-7.1/install/var/packages/bazarr/target/lib -Wl,--rpath,/var/packages/bazarr/target/lib -L/github/workspace/spk/python312/work-armv7-7.1/install/var/packages/python312/target/lib -Wl,--rpath-link,/github/workspace/spk/python312/work-armv7-7.1/install/var/packages/python312/target/lib -Wl,--rpath,/var/packages/python312/target/lib
2025-01-28T20:56:11.0984421Z       Sanity check compile stdout:
2025-01-28T20:56:11.0984643Z       
2025-01-28T20:56:11.0984799Z       -----
2025-01-28T20:56:11.0984974Z       Sanity check compile stderr:
2025-01-28T20:56:11.0985188Z       
2025-01-28T20:56:11.0985344Z       -----

@mreid-tt
Copy link
Contributor

mreid-tt commented Jan 29, 2025

Looking more into numpy there seems to have been a change in how it compiles from v1.26.0 onwards. According to the release notes:

Python 3.12 dropped distutils, consequently supporting it required finding a replacement for the setup.py/distutils based build system NumPy was using. We have chosen to use the Meson build system instead, and this is the first NumPy release supporting it. This is also the first release that supports Cython 3.0 in addition to retaining 0.29.X compatibility.

Build system changes

In this release, NumPy has switched to Meson as the build system and meson-python as the build backend. Installing NumPy or building a wheel can be done with standard tools like pip and pypa/build.

NumPy-specific build customization

Many of the NumPy-specific ways of customizing builds have changed. The NPY_* environment variables which control BLAS/LAPACK, SIMD, threading, and other such options are no longer supported, nor is a site.cfg file to select BLAS and LAPACK. Instead, there are command-line flags that can be passed to the build via pip/build's config-settings interface. These flags are all listed in the meson_options.txt file in the root of the repo.

In the repo there are some interesting files which may be of use:

I hope you can make sense of this and possibly develop a cross/numpy solution for seamless package inclusion going forward.

@mreid-tt
Copy link
Contributor

I was looking at the Building from source documentation for v1.26 and v2.2 and did a few test runs in Ubuntu as follows:

Build Log (v1.26)
mreid@ubuntu-vm:~/Documents$ python3 -m venv /home/mreid/Documents/numpy
mreid@ubuntu-vm:~/Documents$ source numpy/bin/activate
(numpy) mreid@ubuntu-vm:~/Documents$ cd numpy-1.26.4/
(numpy) mreid@ubuntu-vm:~/Documents/numpy-1.26.4$ pip install -r build_requirements.txt
Collecting meson-python>=0.13.1 (from -r build_requirements.txt (line 1))
  Downloading meson_python-0.17.1-py3-none-any.whl.metadata (4.1 kB)
Collecting Cython>=3.0 (from -r build_requirements.txt (line 2))
  Downloading Cython-3.0.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.2 kB)
Collecting wheel==0.38.1 (from -r build_requirements.txt (line 3))
  Downloading wheel-0.38.1-py3-none-any.whl.metadata (2.1 kB)
Collecting ninja (from -r build_requirements.txt (line 4))
  Downloading ninja-1.11.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (5.3 kB)
Collecting spin==0.7 (from -r build_requirements.txt (line 5))
  Downloading spin-0.7-py3-none-any.whl.metadata (9.6 kB)
Collecting build (from -r build_requirements.txt (line 6))
  Downloading build-1.2.2.post1-py3-none-any.whl.metadata (6.5 kB)
Collecting click (from spin==0.7->-r build_requirements.txt (line 5))
  Downloading click-8.1.8-py3-none-any.whl.metadata (2.3 kB)
Collecting meson>=1.2.3 (from meson-python>=0.13.1->-r build_requirements.txt (line 1))
  Downloading meson-1.7.0-py3-none-any.whl.metadata (1.8 kB)
Collecting packaging>=19.0 (from meson-python>=0.13.1->-r build_requirements.txt (line 1))
  Downloading packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
Collecting pyproject-metadata>=0.7.1 (from meson-python>=0.13.1->-r build_requirements.txt (line 1))
  Downloading pyproject_metadata-0.9.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pyproject_hooks (from build->-r build_requirements.txt (line 6))
  Downloading pyproject_hooks-1.2.0-py3-none-any.whl.metadata (1.3 kB)
Downloading wheel-0.38.1-py3-none-any.whl (35 kB)
Downloading spin-0.7-py3-none-any.whl (17 kB)
Downloading meson_python-0.17.1-py3-none-any.whl (27 kB)
Downloading Cython-3.0.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 6.2 MB/s eta 0:00:00
Downloading ninja-1.11.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (157 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 157.0/157.0 kB 23.7 MB/s eta 0:00:00
Downloading build-1.2.2.post1-py3-none-any.whl (22 kB)
Downloading meson-1.7.0-py3-none-any.whl (990 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 990.5/990.5 kB 24.4 MB/s eta 0:00:00
Downloading packaging-24.2-py3-none-any.whl (65 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 65.5/65.5 kB 7.3 MB/s eta 0:00:00
Downloading pyproject_metadata-0.9.0-py3-none-any.whl (18 kB)
Downloading click-8.1.8-py3-none-any.whl (98 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.2/98.2 kB 19.4 MB/s eta 0:00:00
Downloading pyproject_hooks-1.2.0-py3-none-any.whl (10 kB)
Installing collected packages: wheel, pyproject_hooks, packaging, ninja, meson, Cython, click, spin, pyproject-metadata, build, meson-python
Successfully installed Cython-3.0.11 build-1.2.2.post1 click-8.1.8 meson-1.7.0 meson-python-0.17.1 ninja-1.11.1.3 packaging-24.2 pyproject-metadata-0.9.0 pyproject_hooks-1.2.0 spin-0.7 wheel-0.38.1
(numpy) mreid@ubuntu-vm:~/Documents/numpy-1.26.4$ pip install -e . --no-build-isolation
Obtaining file:///home/mreid/Documents/numpy-1.26.4
  Checking if build backend supports build_editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Building wheels for collected packages: numpy
  Building editable for numpy (pyproject.toml) ... done
  Created wheel for numpy: filename=numpy-1.26.4-cp312-cp312-linux_aarch64.whl size=9616 sha256=fda04f2e506a482bbe4d2d8e1c646ce6342fb1c4e13d0d11b67f5c15659e716f
  Stored in directory: /tmp/pip-ephem-wheel-cache-a4hwf2ff/wheels/54/39/c1/39209721004db7deab483a5ac2e45fee7b06142f2d1d281147
Successfully built numpy
Installing collected packages: numpy
Successfully installed numpy-1.26.4
(numpy) mreid@ubuntu-vm:~/Documents/numpy-1.26.4$
Build Log (v2.2)
mreid@ubuntu-vm:~/Documents$ python3 -m venv /home/mreid/Documents/numpy2
mreid@ubuntu-vm:~/Documents$ source numpy2/bin/activate
(numpy2) mreid@ubuntu-vm:~/Documents$ cd numpy-2.2.2/
(numpy2) mreid@ubuntu-vm:~/Documents/numpy-2.2.2$ python -m pip install -r requirements/all_requirements.txt
Ignoring setuptools: markers 'python_version < "3.12"' don't match your environment
Ignoring cffi: markers 'python_version < "3.10"' don't match your environment
Collecting meson-python>=0.13.1 (from -r requirements/build_requirements.txt (line 1))
  Using cached meson_python-0.17.1-py3-none-any.whl.metadata (4.1 kB)
Collecting Cython>=3.0.6 (from -r requirements/build_requirements.txt (line 2))
  Using cached Cython-3.0.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.2 kB)
Collecting ninja (from -r requirements/build_requirements.txt (line 3))
  Using cached ninja-1.11.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (5.3 kB)
Collecting spin==0.13 (from -r requirements/build_requirements.txt (line 4))
  Downloading spin-0.13-py3-none-any.whl.metadata (11 kB)
Collecting build (from -r requirements/build_requirements.txt (line 5))
  Using cached build-1.2.2.post1-py3-none-any.whl.metadata (6.5 kB)
Collecting sphinx==7.2.6 (from -r requirements/doc_requirements.txt (line 2))
  Downloading sphinx-7.2.6-py3-none-any.whl.metadata (5.9 kB)
Collecting numpydoc==1.4 (from -r requirements/doc_requirements.txt (line 3))
  Downloading numpydoc-1.4.0-py3-none-any.whl.metadata (2.2 kB)
Collecting pydata-sphinx-theme>=0.15.2 (from -r requirements/doc_requirements.txt (line 4))
  Downloading pydata_sphinx_theme-0.16.1-py3-none-any.whl.metadata (7.5 kB)
Collecting sphinx-copybutton (from -r requirements/doc_requirements.txt (line 5))
  Downloading sphinx_copybutton-0.5.2-py3-none-any.whl.metadata (3.2 kB)
Collecting sphinx-design (from -r requirements/doc_requirements.txt (line 6))
  Downloading sphinx_design-0.6.1-py3-none-any.whl.metadata (5.5 kB)
Collecting scipy (from -r requirements/doc_requirements.txt (line 7))
  Downloading scipy-1.15.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (115 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 115.4/115.4 kB 1.0 MB/s eta 0:00:00
Collecting matplotlib (from -r requirements/doc_requirements.txt (line 8))
  Downloading matplotlib-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (11 kB)
Collecting pandas (from -r requirements/doc_requirements.txt (line 9))
  Downloading pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.metadata (89 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 89.9/89.9 kB 4.5 MB/s eta 0:00:00
Collecting breathe>4.33.0 (from -r requirements/doc_requirements.txt (line 10))
  Downloading breathe-4.35.0-py3-none-any.whl.metadata (1.0 kB)
Collecting ipython!=8.1.0 (from -r requirements/doc_requirements.txt (line 11))
  Downloading ipython-8.31.0-py3-none-any.whl.metadata (4.9 kB)
Collecting pickleshare (from -r requirements/doc_requirements.txt (line 14))
  Downloading pickleshare-0.7.5-py2.py3-none-any.whl.metadata (1.5 kB)
Collecting towncrier (from -r requirements/doc_requirements.txt (line 17))
  Downloading towncrier-24.8.0-py3-none-any.whl.metadata (4.2 kB)
Collecting toml (from -r requirements/doc_requirements.txt (line 18))
  Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)
Collecting scipy-doctest==1.5.1 (from -r requirements/doc_requirements.txt (line 21))
  Downloading scipy_doctest-1.5.1-py3-none-any.whl.metadata (14 kB)
Collecting pycodestyle==2.12.1 (from -r requirements/linter_requirements.txt (line 1))
  Downloading pycodestyle-2.12.1-py2.py3-none-any.whl.metadata (4.5 kB)
Collecting GitPython>=3.1.30 (from -r requirements/linter_requirements.txt (line 2))
  Downloading GitPython-3.1.44-py3-none-any.whl.metadata (13 kB)
Collecting urllib3 (from -r requirements/release_requirements.txt (line 5))
  Downloading urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)
Collecting beautifulsoup4 (from -r requirements/release_requirements.txt (line 6))
  Downloading beautifulsoup4-4.12.3-py3-none-any.whl.metadata (3.8 kB)
Collecting pygithub (from -r requirements/release_requirements.txt (line 9))
  Downloading PyGithub-2.5.0-py3-none-any.whl.metadata (3.9 kB)
Collecting twine (from -r requirements/release_requirements.txt (line 13))
  Downloading twine-6.1.0-py3-none-any.whl.metadata (3.7 kB)
Collecting Paver (from -r requirements/release_requirements.txt (line 16))
  Downloading Paver-1.3.4-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting packaging (from -r requirements/release_requirements.txt (line 19))
  Using cached packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
Collecting wheel==0.38.1 (from -r requirements/test_requirements.txt (line 2))
  Using cached wheel-0.38.1-py3-none-any.whl.metadata (2.1 kB)
Collecting setuptools (from -r requirements/test_requirements.txt (line 4))
  Using cached setuptools-75.8.0-py3-none-any.whl.metadata (6.7 kB)
Collecting hypothesis==6.104.1 (from -r requirements/test_requirements.txt (line 5))
  Downloading hypothesis-6.104.1-py3-none-any.whl.metadata (6.3 kB)
Collecting pytest==7.4.0 (from -r requirements/test_requirements.txt (line 6))
  Using cached pytest-7.4.0-py3-none-any.whl.metadata (8.0 kB)
Collecting pytz==2023.3.post1 (from -r requirements/test_requirements.txt (line 7))
  Using cached pytz-2023.3.post1-py2.py3-none-any.whl.metadata (22 kB)
Collecting pytest-cov==4.1.0 (from -r requirements/test_requirements.txt (line 8))
  Using cached pytest_cov-4.1.0-py3-none-any.whl.metadata (26 kB)
Collecting meson (from -r requirements/test_requirements.txt (line 9))
  Using cached meson-1.7.0-py3-none-any.whl.metadata (1.8 kB)
Collecting pytest-xdist (from -r requirements/test_requirements.txt (line 11))
  Using cached pytest_xdist-3.6.1-py3-none-any.whl.metadata (4.3 kB)
Collecting mypy==1.14.1 (from -r requirements/test_requirements.txt (line 17))
  Downloading mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.metadata (2.1 kB)
Collecting typing_extensions>=4.2.0 (from -r requirements/test_requirements.txt (line 18))
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting charset-normalizer (from -r requirements/test_requirements.txt (line 20))
  Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (35 kB)
Collecting scipy-openblas32==0.3.28.0.2 (from -r requirements/ci_requirements.txt (line 3))
  Downloading scipy_openblas32-0.3.28.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (56 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.1/56.1 kB 5.6 MB/s eta 0:00:00
Collecting scipy-openblas64==0.3.28.0.2 (from -r requirements/ci_requirements.txt (line 4))
  Downloading scipy_openblas64-0.3.28.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (56 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.1/56.1 kB 3.3 MB/s eta 0:00:00
Collecting click (from spin==0.13->-r requirements/build_requirements.txt (line 4))
  Using cached click-8.1.8-py3-none-any.whl.metadata (2.3 kB)
Collecting importlib-metadata>=7 (from spin==0.13->-r requirements/build_requirements.txt (line 4))
  Downloading importlib_metadata-8.6.1-py3-none-any.whl.metadata (4.7 kB)
Collecting sphinxcontrib-applehelp (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl.metadata (2.3 kB)
Collecting sphinxcontrib-devhelp (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl.metadata (2.3 kB)
Collecting sphinxcontrib-jsmath (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting sphinxcontrib-htmlhelp>=2.0.0 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl.metadata (2.3 kB)
Collecting sphinxcontrib-serializinghtml>=1.1.9 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl.metadata (2.4 kB)
Collecting sphinxcontrib-qthelp (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl.metadata (2.3 kB)
Collecting Jinja2>=3.0 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB)
Collecting Pygments>=2.14 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading pygments-2.19.1-py3-none-any.whl.metadata (2.5 kB)
Collecting docutils<0.21,>=0.18.1 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading docutils-0.20.1-py3-none-any.whl.metadata (2.8 kB)
Collecting snowballstemmer>=2.0 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading snowballstemmer-2.2.0-py2.py3-none-any.whl.metadata (6.5 kB)
Collecting babel>=2.9 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading babel-2.16.0-py3-none-any.whl.metadata (1.5 kB)
Collecting alabaster<0.8,>=0.7 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading alabaster-0.7.16-py3-none-any.whl.metadata (2.9 kB)
Collecting imagesize>=1.3 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading imagesize-1.4.1-py2.py3-none-any.whl.metadata (1.5 kB)
Collecting requests>=2.25.0 (from sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting numpy>=1.19.5 (from scipy-doctest==1.5.1->-r requirements/doc_requirements.txt (line 21))
  Using cached numpy-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (63 kB)
Collecting attrs>=22.2.0 (from hypothesis==6.104.1->-r requirements/test_requirements.txt (line 5))
  Using cached attrs-25.1.0-py3-none-any.whl.metadata (10 kB)
Collecting sortedcontainers<3.0.0,>=2.1.0 (from hypothesis==6.104.1->-r requirements/test_requirements.txt (line 5))
  Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB)
Collecting iniconfig (from pytest==7.4.0->-r requirements/test_requirements.txt (line 6))
  Using cached iniconfig-2.0.0-py3-none-any.whl.metadata (2.6 kB)
Collecting pluggy<2.0,>=0.12 (from pytest==7.4.0->-r requirements/test_requirements.txt (line 6))
  Using cached pluggy-1.5.0-py3-none-any.whl.metadata (4.8 kB)
Collecting coverage>=5.2.1 (from coverage[toml]>=5.2.1->pytest-cov==4.1.0->-r requirements/test_requirements.txt (line 8))
  Using cached coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (8.2 kB)
Collecting mypy_extensions>=1.0.0 (from mypy==1.14.1->-r requirements/test_requirements.txt (line 17))
  Using cached mypy_extensions-1.0.0-py3-none-any.whl.metadata (1.1 kB)
Collecting pyproject-metadata>=0.7.1 (from meson-python>=0.13.1->-r requirements/build_requirements.txt (line 1))
  Using cached pyproject_metadata-0.9.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pyproject_hooks (from build->-r requirements/build_requirements.txt (line 5))
  Using cached pyproject_hooks-1.2.0-py3-none-any.whl.metadata (1.3 kB)
Collecting accessible-pygments (from pydata-sphinx-theme>=0.15.2->-r requirements/doc_requirements.txt (line 4))
  Downloading accessible_pygments-0.0.5-py3-none-any.whl.metadata (10 kB)
Collecting contourpy>=1.0.1 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Downloading contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (5.4 kB)
Collecting cycler>=0.10 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Downloading fonttools-4.55.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.2/101.2 kB 2.8 MB/s eta 0:00:00
Collecting kiwisolver>=1.3.1 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Downloading kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (6.2 kB)
Collecting pillow>=8 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Using cached pillow-11.1.0-cp312-cp312-manylinux_2_28_aarch64.whl.metadata (9.1 kB)
Collecting pyparsing>=2.3.1 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Downloading pyparsing-3.2.1-py3-none-any.whl.metadata (5.0 kB)
Collecting python-dateutil>=2.7 (from matplotlib->-r requirements/doc_requirements.txt (line 8))
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting tzdata>=2022.7 (from pandas->-r requirements/doc_requirements.txt (line 9))
  Downloading tzdata-2025.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting decorator (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading decorator-5.1.1-py3-none-any.whl.metadata (4.0 kB)
Collecting jedi>=0.16 (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading jedi-0.19.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting matplotlib-inline (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading matplotlib_inline-0.1.7-py3-none-any.whl.metadata (3.9 kB)
Collecting pexpect>4.3 (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading pexpect-4.9.0-py2.py3-none-any.whl.metadata (2.5 kB)
Collecting prompt_toolkit<3.1.0,>=3.0.41 (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading prompt_toolkit-3.0.50-py3-none-any.whl.metadata (6.6 kB)
Collecting stack_data (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading stack_data-0.6.3-py3-none-any.whl.metadata (18 kB)
Collecting traitlets>=5.13.0 (from ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading traitlets-5.14.3-py3-none-any.whl.metadata (10 kB)
Collecting gitdb<5,>=4.0.1 (from GitPython>=3.1.30->-r requirements/linter_requirements.txt (line 2))
  Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
Collecting soupsieve>1.2 (from beautifulsoup4->-r requirements/release_requirements.txt (line 6))
  Downloading soupsieve-2.6-py3-none-any.whl.metadata (4.6 kB)
Collecting pynacl>=1.4.0 (from pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl.metadata (8.6 kB)
Collecting pyjwt>=2.4.0 (from pyjwt[crypto]>=2.4.0->pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading PyJWT-2.10.1-py3-none-any.whl.metadata (4.0 kB)
Collecting Deprecated (from pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading Deprecated-1.2.18-py2.py3-none-any.whl.metadata (5.7 kB)
Collecting readme-renderer>=35.0 (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading readme_renderer-44.0-py3-none-any.whl.metadata (2.8 kB)
Collecting requests-toolbelt!=0.9.0,>=0.8.0 (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading requests_toolbelt-1.0.0-py2.py3-none-any.whl.metadata (14 kB)
Collecting keyring>=15.1 (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading keyring-25.6.0-py3-none-any.whl.metadata (20 kB)
Collecting rfc3986>=1.4.0 (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading rfc3986-2.0.0-py2.py3-none-any.whl.metadata (6.6 kB)
Collecting rich>=12.0.0 (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading rich-13.9.4-py3-none-any.whl.metadata (18 kB)
Collecting id (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading id-1.5.0-py3-none-any.whl.metadata (5.2 kB)
Collecting six (from Paver->-r requirements/release_requirements.txt (line 16))
  Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting execnet>=2.1 (from pytest-xdist->-r requirements/test_requirements.txt (line 11))
  Using cached execnet-2.1.1-py3-none-any.whl.metadata (2.9 kB)
Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->GitPython>=3.1.30->-r requirements/linter_requirements.txt (line 2))
  Downloading smmap-5.0.2-py3-none-any.whl.metadata (4.3 kB)
Collecting zipp>=3.20 (from importlib-metadata>=7->spin==0.13->-r requirements/build_requirements.txt (line 4))
  Downloading zipp-3.21.0-py3-none-any.whl.metadata (3.7 kB)
Collecting parso<0.9.0,>=0.8.4 (from jedi>=0.16->ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading parso-0.8.4-py2.py3-none-any.whl.metadata (7.7 kB)
Collecting MarkupSafe>=2.0 (from Jinja2>=3.0->sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (4.0 kB)
Collecting SecretStorage>=3.2 (from keyring>=15.1->twine->-r requirements/release_requirements.txt (line 13))
  Downloading SecretStorage-3.3.3-py3-none-any.whl.metadata (4.0 kB)
Collecting jeepney>=0.4.2 (from keyring>=15.1->twine->-r requirements/release_requirements.txt (line 13))
  Downloading jeepney-0.8.0-py3-none-any.whl.metadata (1.3 kB)
Collecting jaraco.classes (from keyring>=15.1->twine->-r requirements/release_requirements.txt (line 13))
  Downloading jaraco.classes-3.4.0-py3-none-any.whl.metadata (2.6 kB)
Collecting jaraco.functools (from keyring>=15.1->twine->-r requirements/release_requirements.txt (line 13))
  Downloading jaraco.functools-4.1.0-py3-none-any.whl.metadata (2.9 kB)
Collecting jaraco.context (from keyring>=15.1->twine->-r requirements/release_requirements.txt (line 13))
  Downloading jaraco.context-6.0.1-py3-none-any.whl.metadata (4.1 kB)
Collecting ptyprocess>=0.5 (from pexpect>4.3->ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading ptyprocess-0.7.0-py2.py3-none-any.whl.metadata (1.3 kB)
Collecting wcwidth (from prompt_toolkit<3.1.0,>=3.0.41->ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading wcwidth-0.2.13-py2.py3-none-any.whl.metadata (14 kB)
Collecting cryptography>=3.4.0 (from pyjwt[crypto]>=2.4.0->pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl.metadata (5.7 kB)
Collecting cffi>=1.4.1 (from pynacl>=1.4.0->pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (1.5 kB)
Collecting nh3>=0.2.14 (from readme-renderer>=35.0->twine->-r requirements/release_requirements.txt (line 13))
  Downloading nh3-0.2.20-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (2.0 kB)
INFO: pip is looking at multiple versions of readme-renderer to determine which version is compatible with other requirements. This could take a while.
Collecting readme-renderer>=35.0 (from twine->-r requirements/release_requirements.txt (line 13))
  Downloading readme_renderer-43.0-py3-none-any.whl.metadata (2.8 kB)
Collecting idna<4,>=2.5 (from requests>=2.25.0->sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting certifi>=2017.4.17 (from requests>=2.25.0->sphinx==7.2.6->-r requirements/doc_requirements.txt (line 2))
  Downloading certifi-2024.12.14-py3-none-any.whl.metadata (2.3 kB)
Collecting markdown-it-py>=2.2.0 (from rich>=12.0.0->twine->-r requirements/release_requirements.txt (line 13))
  Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting wrapt<2,>=1.10 (from Deprecated->pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (6.4 kB)
Collecting executing>=1.2.0 (from stack_data->ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading executing-2.2.0-py2.py3-none-any.whl.metadata (8.9 kB)
Collecting asttokens>=2.1.0 (from stack_data->ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading asttokens-3.0.0-py3-none-any.whl.metadata (4.7 kB)
Collecting pure-eval (from stack_data->ipython!=8.1.0->-r requirements/doc_requirements.txt (line 11))
  Downloading pure_eval-0.2.3-py3-none-any.whl.metadata (6.3 kB)
Collecting pycparser (from cffi>=1.4.1->pynacl>=1.4.0->pygithub->-r requirements/release_requirements.txt (line 9))
  Downloading pycparser-2.22-py3-none-any.whl.metadata (943 bytes)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich>=12.0.0->twine->-r requirements/release_requirements.txt (line 13))
  Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Collecting more-itertools (from jaraco.classes->keyring>=15.1->twine->-r requirements/release_requirements.txt (line 13))
  Downloading more_itertools-10.6.0-py3-none-any.whl.metadata (37 kB)
Downloading spin-0.13-py3-none-any.whl (30 kB)
Downloading sphinx-7.2.6-py3-none-any.whl (3.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2/3.2 MB 1.9 MB/s eta 0:00:00
Downloading numpydoc-1.4.0-py3-none-any.whl (51 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 51.9/51.9 kB 1.6 MB/s eta 0:00:00
Downloading scipy_doctest-1.5.1-py3-none-any.whl (61 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.1/61.1 kB 1.5 MB/s eta 0:00:00
Downloading pycodestyle-2.12.1-py2.py3-none-any.whl (31 kB)
Using cached wheel-0.38.1-py3-none-any.whl (35 kB)
Downloading hypothesis-6.104.1-py3-none-any.whl (462 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 462.0/462.0 kB 2.0 MB/s eta 0:00:00
Using cached pytest-7.4.0-py3-none-any.whl (323 kB)
Using cached pytz-2023.3.post1-py2.py3-none-any.whl (502 kB)
Using cached pytest_cov-4.1.0-py3-none-any.whl (21 kB)
Downloading mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (11.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.9/11.9 MB 529.6 kB/s eta 0:00:00
Downloading scipy_openblas32-0.3.28.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 MB 545.8 kB/s eta 0:00:00
Downloading scipy_openblas64-0.3.28.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.0/8.0 MB 698.0 kB/s eta 0:00:00
Using cached meson_python-0.17.1-py3-none-any.whl (27 kB)
Using cached Cython-3.0.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.3 MB)
Using cached ninja-1.11.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (157 kB)
Using cached build-1.2.2.post1-py3-none-any.whl (22 kB)
Downloading pydata_sphinx_theme-0.16.1-py3-none-any.whl (6.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 6.7/6.7 MB 816.1 kB/s eta 0:00:00
Downloading sphinx_copybutton-0.5.2-py3-none-any.whl (13 kB)
Downloading sphinx_design-0.6.1-py3-none-any.whl (2.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2/2.2 MB 581.8 kB/s eta 0:00:00
Downloading scipy-1.15.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (38.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.1/38.1 MB 491.9 kB/s eta 0:00:00
Downloading matplotlib-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.4/8.4 MB 531.2 kB/s eta 0:00:00
Downloading pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (15.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.2/15.2 MB 480.7 kB/s eta 0:00:00
Downloading breathe-4.35.0-py3-none-any.whl (92 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 93.0/93.0 kB 508.6 kB/s eta 0:00:00
Downloading ipython-8.31.0-py3-none-any.whl (821 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 821.6/821.6 kB 488.4 kB/s eta 0:00:00
Downloading pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
Downloading towncrier-24.8.0-py3-none-any.whl (56 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.0/57.0 kB 600.0 kB/s eta 0:00:00
Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Downloading GitPython-3.1.44-py3-none-any.whl (207 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.6/207.6 kB 593.6 kB/s eta 0:00:00
Downloading urllib3-2.3.0-py3-none-any.whl (128 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 128.4/128.4 kB 430.2 kB/s eta 0:00:00
Downloading beautifulsoup4-4.12.3-py3-none-any.whl (147 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 147.9/147.9 kB 449.6 kB/s eta 0:00:00
Downloading PyGithub-2.5.0-py3-none-any.whl (375 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 375.9/375.9 kB 536.4 kB/s eta 0:00:00
Downloading twine-6.1.0-py3-none-any.whl (40 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.8/40.8 kB 506.8 kB/s eta 0:00:00
Downloading Paver-1.3.4-py2.py3-none-any.whl (428 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 428.6/428.6 kB 532.9 kB/s eta 0:00:00
Using cached packaging-24.2-py3-none-any.whl (65 kB)
Using cached setuptools-75.8.0-py3-none-any.whl (1.2 MB)
Using cached meson-1.7.0-py3-none-any.whl (990 kB)
Using cached pytest_xdist-3.6.1-py3-none-any.whl (46 kB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (140 kB)
Downloading alabaster-0.7.16-py3-none-any.whl (13 kB)
Using cached attrs-25.1.0-py3-none-any.whl (63 kB)
Downloading babel-2.16.0-py3-none-any.whl (9.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.6/9.6 MB 723.0 kB/s eta 0:00:00
Downloading contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (307 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 307.6/307.6 kB 899.7 kB/s eta 0:00:00
Using cached coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (241 kB)
Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading docutils-0.20.1-py3-none-any.whl (572 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 572.7/572.7 kB 954.6 kB/s eta 0:00:00
Using cached execnet-2.1.1-py3-none-any.whl (40 kB)
Downloading fonttools-4.55.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.8/4.8 MB 875.9 kB/s eta 0:00:00
Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.8/62.8 kB 1.3 MB/s eta 0:00:00
Downloading imagesize-1.4.1-py2.py3-none-any.whl (8.8 kB)
Downloading importlib_metadata-8.6.1-py3-none-any.whl (26 kB)
Downloading jedi-0.19.2-py2.py3-none-any.whl (1.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 1.2 MB/s eta 0:00:00
Downloading jinja2-3.1.5-py3-none-any.whl (134 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 134.6/134.6 kB 1.4 MB/s eta 0:00:00
Downloading keyring-25.6.0-py3-none-any.whl (39 kB)
Downloading kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.5/1.5 MB 1.1 MB/s eta 0:00:00
Using cached mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)
Using cached numpy-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.0 MB)
Downloading pexpect-4.9.0-py2.py3-none-any.whl (63 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.8/63.8 kB 1.4 MB/s eta 0:00:00
Using cached pillow-11.1.0-cp312-cp312-manylinux_2_28_aarch64.whl (4.4 MB)
Using cached pluggy-1.5.0-py3-none-any.whl (20 kB)
Downloading prompt_toolkit-3.0.50-py3-none-any.whl (387 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 387.8/387.8 kB 1.1 MB/s eta 0:00:00
Downloading pygments-2.19.1-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 914.7 kB/s eta 0:00:00
Downloading PyJWT-2.10.1-py3-none-any.whl (22 kB)
Downloading PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl (601 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 601.7/601.7 kB 807.4 kB/s eta 0:00:00
Downloading pyparsing-3.2.1-py3-none-any.whl (107 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.7/107.7 kB 942.5 kB/s eta 0:00:00
Using cached pyproject_metadata-0.9.0-py3-none-any.whl (18 kB)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 733.6 kB/s eta 0:00:00
Downloading readme_renderer-43.0-py3-none-any.whl (13 kB)
Downloading requests-2.32.3-py3-none-any.whl (64 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.9/64.9 kB 668.6 kB/s eta 0:00:00
Downloading requests_toolbelt-1.0.0-py2.py3-none-any.whl (54 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 54.5/54.5 kB 633.0 kB/s eta 0:00:00
Downloading rfc3986-2.0.0-py2.py3-none-any.whl (31 kB)
Downloading rich-13.9.4-py3-none-any.whl (242 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 242.4/242.4 kB 750.3 kB/s eta 0:00:00
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Downloading snowballstemmer-2.2.0-py2.py3-none-any.whl (93 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 93.0/93.0 kB 689.3 kB/s eta 0:00:00
Using cached sortedcontainers-2.4.0-py2.py3-none-any.whl (29 kB)
Downloading soupsieve-2.6-py3-none-any.whl (36 kB)
Downloading sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl (98 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.7/98.7 kB 765.8 kB/s eta 0:00:00
Downloading sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl (92 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 92.1/92.1 kB 774.0 kB/s eta 0:00:00
Downloading traitlets-5.14.3-py3-none-any.whl (85 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.4/85.4 kB 798.7 kB/s eta 0:00:00
Downloading tzdata-2025.1-py2.py3-none-any.whl (346 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 346.8/346.8 kB 805.8 kB/s eta 0:00:00
Downloading accessible_pygments-0.0.5-py3-none-any.whl (1.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.4/1.4 MB 637.1 kB/s eta 0:00:00
Using cached click-8.1.8-py3-none-any.whl (98 kB)
Downloading decorator-5.1.1-py3-none-any.whl (9.1 kB)
Downloading Deprecated-1.2.18-py2.py3-none-any.whl (10.0 kB)
Downloading id-1.5.0-py3-none-any.whl (13 kB)
Using cached iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Downloading matplotlib_inline-0.1.7-py3-none-any.whl (9.9 kB)
Using cached pyproject_hooks-1.2.0-py3-none-any.whl (10 kB)
Downloading sphinxcontrib_applehelp-2.0.0-py3-none-any.whl (119 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 119.3/119.3 kB 614.9 kB/s eta 0:00:00
Downloading sphinxcontrib_devhelp-2.0.0-py3-none-any.whl (82 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.5/82.5 kB 738.3 kB/s eta 0:00:00
Downloading sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB)
Downloading sphinxcontrib_qthelp-2.0.0-py3-none-any.whl (88 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.7/88.7 kB 604.3 kB/s eta 0:00:00
Downloading stack_data-0.6.3-py3-none-any.whl (24 kB)
Downloading asttokens-3.0.0-py3-none-any.whl (26 kB)
Downloading certifi-2024.12.14-py3-none-any.whl (164 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 164.9/164.9 kB 524.6 kB/s eta 0:00:00
Downloading cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (478 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 478.9/478.9 kB 619.0 kB/s eta 0:00:00
Downloading cryptography-44.0.0-cp39-abi3-manylinux_2_34_aarch64.whl (3.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 761.0 kB/s eta 0:00:00
Downloading executing-2.2.0-py2.py3-none-any.whl (26 kB)
Downloading idna-3.10-py3-none-any.whl (70 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.4/70.4 kB 805.5 kB/s eta 0:00:00
Downloading jeepney-0.8.0-py3-none-any.whl (48 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.4/48.4 kB 994.0 kB/s eta 0:00:00
Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 846.8 kB/s eta 0:00:00
Downloading MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (24 kB)
Downloading nh3-0.2.20-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (760 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 760.7/760.7 kB 596.0 kB/s eta 0:00:00
Downloading parso-0.8.4-py2.py3-none-any.whl (103 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.7/103.7 kB 481.2 kB/s eta 0:00:00
Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
Downloading SecretStorage-3.3.3-py3-none-any.whl (15 kB)
Downloading smmap-5.0.2-py3-none-any.whl (24 kB)
Downloading wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (88 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 88.7/88.7 kB 544.2 kB/s eta 0:00:00
Downloading zipp-3.21.0-py3-none-any.whl (9.6 kB)
Downloading jaraco.classes-3.4.0-py3-none-any.whl (6.8 kB)
Downloading jaraco.context-6.0.1-py3-none-any.whl (6.8 kB)
Downloading jaraco.functools-4.1.0-py3-none-any.whl (10 kB)
Downloading pure_eval-0.2.3-py3-none-any.whl (11 kB)
Downloading wcwidth-0.2.13-py2.py3-none-any.whl (34 kB)
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Downloading more_itertools-10.6.0-py3-none-any.whl (63 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 63.0/63.0 kB 548.8 kB/s eta 0:00:00
Downloading pycparser-2.22-py3-none-any.whl (117 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 117.6/117.6 kB 599.3 kB/s eta 0:00:00
Installing collected packages: wcwidth, sortedcontainers, snowballstemmer, pytz, pure-eval, ptyprocess, pickleshare, zipp, wrapt, wheel, urllib3, tzdata, typing_extensions, traitlets, toml, sphinxcontrib-serializinghtml, sphinxcontrib-qthelp, sphinxcontrib-jsmath, sphinxcontrib-htmlhelp, sphinxcontrib-devhelp, sphinxcontrib-applehelp, soupsieve, smmap, six, setuptools, scipy-openblas64, scipy-openblas32, rfc3986, pyproject_hooks, pyparsing, pyjwt, Pygments, pycparser, pycodestyle, prompt_toolkit, pluggy, pillow, pexpect, parso, packaging, numpy, ninja, nh3, mypy_extensions, more-itertools, meson, mdurl, MarkupSafe, kiwisolver, jeepney, jaraco.context, iniconfig, imagesize, idna, fonttools, executing, execnet, docutils, decorator, Cython, cycler, coverage, click, charset-normalizer, certifi, babel, attrs, asttokens, alabaster, stack_data, scipy, requests, readme-renderer, python-dateutil, pytest, pyproject-metadata, Paver, mypy, matplotlib-inline, markdown-it-py, Jinja2, jedi, jaraco.functools, jaraco.classes, importlib-metadata, hypothesis, gitdb, Deprecated, contourpy, cffi, build, beautifulsoup4, accessible-pygments, towncrier, spin, sphinx, scipy-doctest, rich, requests-toolbelt, pytest-xdist, pytest-cov, pynacl, pandas, meson-python, matplotlib, ipython, id, GitPython, cryptography, sphinx-design, sphinx-copybutton, SecretStorage, pydata-sphinx-theme, numpydoc, breathe, pygithub, keyring, twine
Successfully installed Cython-3.0.11 Deprecated-1.2.18 GitPython-3.1.44 Jinja2-3.1.5 MarkupSafe-3.0.2 Paver-1.3.4 Pygments-2.19.1 SecretStorage-3.3.3 accessible-pygments-0.0.5 alabaster-0.7.16 asttokens-3.0.0 attrs-25.1.0 babel-2.16.0 beautifulsoup4-4.12.3 breathe-4.35.0 build-1.2.2.post1 certifi-2024.12.14 cffi-1.17.1 charset-normalizer-3.4.1 click-8.1.8 contourpy-1.3.1 coverage-7.6.10 cryptography-44.0.0 cycler-0.12.1 decorator-5.1.1 docutils-0.20.1 execnet-2.1.1 executing-2.2.0 fonttools-4.55.8 gitdb-4.0.12 hypothesis-6.104.1 id-1.5.0 idna-3.10 imagesize-1.4.1 importlib-metadata-8.6.1 iniconfig-2.0.0 ipython-8.31.0 jaraco.classes-3.4.0 jaraco.context-6.0.1 jaraco.functools-4.1.0 jedi-0.19.2 jeepney-0.8.0 keyring-25.6.0 kiwisolver-1.4.8 markdown-it-py-3.0.0 matplotlib-3.10.0 matplotlib-inline-0.1.7 mdurl-0.1.2 meson-1.7.0 meson-python-0.17.1 more-itertools-10.6.0 mypy-1.14.1 mypy_extensions-1.0.0 nh3-0.2.20 ninja-1.11.1.3 numpy-2.2.2 numpydoc-1.4.0 packaging-24.2 pandas-2.2.3 parso-0.8.4 pexpect-4.9.0 pickleshare-0.7.5 pillow-11.1.0 pluggy-1.5.0 prompt_toolkit-3.0.50 ptyprocess-0.7.0 pure-eval-0.2.3 pycodestyle-2.12.1 pycparser-2.22 pydata-sphinx-theme-0.16.1 pygithub-2.5.0 pyjwt-2.10.1 pynacl-1.5.0 pyparsing-3.2.1 pyproject-metadata-0.9.0 pyproject_hooks-1.2.0 pytest-7.4.0 pytest-cov-4.1.0 pytest-xdist-3.6.1 python-dateutil-2.9.0.post0 pytz-2023.3.post1 readme-renderer-43.0 requests-2.32.3 requests-toolbelt-1.0.0 rfc3986-2.0.0 rich-13.9.4 scipy-1.15.1 scipy-doctest-1.5.1 scipy-openblas32-0.3.28.0.2 scipy-openblas64-0.3.28.0.2 setuptools-75.8.0 six-1.17.0 smmap-5.0.2 snowballstemmer-2.2.0 sortedcontainers-2.4.0 soupsieve-2.6 sphinx-7.2.6 sphinx-copybutton-0.5.2 sphinx-design-0.6.1 sphinxcontrib-applehelp-2.0.0 sphinxcontrib-devhelp-2.0.0 sphinxcontrib-htmlhelp-2.1.0 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-2.0.0 sphinxcontrib-serializinghtml-2.0.0 spin-0.13 stack_data-0.6.3 toml-0.10.2 towncrier-24.8.0 traitlets-5.14.3 twine-6.1.0 typing_extensions-4.12.2 tzdata-2025.1 urllib3-2.3.0 wcwidth-0.2.13 wheel-0.38.1 wrapt-1.17.2 zipp-3.21.0
(numpy2) mreid@ubuntu-vm:~/Documents/numpy-2.2.2$ spin build
$ /home/mreid/Documents/numpy2/bin/python vendored-meson/meson/meson.py setup build --prefix=/usr
The Meson build system
Version: 1.5.2
Source dir: /home/mreid/Documents/numpy-2.2.2
Build dir: /home/mreid/Documents/numpy-2.2.2/build
Build type: native build
Project name: NumPy
Project version: 2.2.2
C compiler for the host machine: cc (gcc 13.3.0 "cc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0")
C linker for the host machine: cc ld.bfd 2.42
C++ compiler for the host machine: c++ (gcc 13.3.0 "c++ (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0")
C++ linker for the host machine: c++ ld.bfd 2.42
Cython compiler for the host machine: cython (cython 3.0.11)
Host machine cpu family: aarch64
Host machine cpu: aarch64
Program python3 found: YES (/home/mreid/Documents/numpy2/bin/python)
Did not find pkg-config by name 'pkg-config'
Found pkg-config: NO
Run-time dependency python found: YES 3.12
Has header "Python.h" with dependency python: YES 
Compiler for C supports arguments -fno-strict-aliasing: YES 
Message: During parsing cpu-dispatch: The following CPU features were ignored due to platform incompatibility or lack of support:
"XOP FMA4"
Test features "NEON NEON_FP16 NEON_VFPV4 ASIMD" : Supported 
Test features "ASIMDHP" : Supported 
Test features "ASIMDFHM" : Supported 
Test features "SVE" : Supported 
Configuring npy_cpu_dispatch_config.h using configuration
Message: 
CPU Optimization Options
  baseline:
    Requested : min
    Enabled   : NEON NEON_FP16 NEON_VFPV4 ASIMD
  dispatch:
    Requested : max -xop -fma4
    Enabled   : ASIMDHP ASIMDFHM SVE

Library m found: YES
Run-time dependency scipy-openblas found: NO (tried pkgconfig)
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency openblas found: NO (tried pkgconfig, pkgconfig, pkgconfig, system and cmake)
Run-time dependency flexiblas found: NO (tried pkgconfig and cmake)
Run-time dependency blis found: NO (tried pkgconfig and cmake)
Run-time dependency blas found: YES unknown
numpy/meson.build:135: WARNING: Project targets '>=1.2.99' but uses feature introduced in '1.3.0': dep 'blas' custom lookup.
Message: BLAS symbol suffix: 
Run-time dependency openblas found: NO (tried pkgconfig, pkgconfig, pkgconfig, system and cmake)
Run-time dependency flexiblas found: NO (tried pkgconfig and cmake)
Run-time dependency lapack found: YES unknown
numpy/meson.build:198: WARNING: Project targets '>=1.2.99' but uses feature introduced in '1.3.0': dep 'lapack' custom lookup.
Checking if "Check atomic builtins without -latomic" : links: YES 
Program _build_utils/process_src_template.py found: YES (/home/mreid/Documents/numpy2/bin/python /home/mreid/Documents/numpy-2.2.2/numpy/_build_utils/process_src_template.py)
Program _build_utils/tempita.py found: YES (/home/mreid/Documents/numpy2/bin/python /home/mreid/Documents/numpy-2.2.2/numpy/_build_utils/tempita.py)
Configuring __config__.py using configuration
Checking for size of "short" : 2 
Checking for size of "int" : 4 
Checking for size of "long" : 8 
Checking for size of "long long" : 8 
Checking for size of "float" : 4 
Checking for size of "double" : 8 
Checking for size of "long double" : 16 
Checking for size of "size_t" : 8 
Checking for size of "size_t" : 8 (cached)
Checking for size of "wchar_t" : 4 
Checking for size of "off_t" : 8 
Checking for size of "Py_intptr_t" with dependency python: 8 
Checking for size of "PY_LONG_LONG" with dependency python: 8 
Has header "complex.h" : YES 
Checking for type "complex float" : YES 
Checking for size of "complex float" : 8 
Checking for type "complex double" : YES 
Checking for size of "complex double" : 16 
Checking for type "complex long double" : YES 
Checking for size of "complex long double" : 32 
Checking for function "sin" with dependency -lm: YES 
Checking for function "cos" with dependency -lm: YES 
Checking for function "tan" with dependency -lm: YES 
Checking for function "sinh" with dependency -lm: YES 
Checking for function "cosh" with dependency -lm: YES 
Checking for function "tanh" with dependency -lm: YES 
Checking for function "fabs" with dependency -lm: YES 
Checking for function "floor" with dependency -lm: YES 
Checking for function "ceil" with dependency -lm: YES 
Checking for function "sqrt" with dependency -lm: YES 
Checking for function "log10" with dependency -lm: YES 
Checking for function "log" with dependency -lm: YES 
Checking for function "exp" with dependency -lm: YES 
Checking for function "asin" with dependency -lm: YES 
Checking for function "acos" with dependency -lm: YES 
Checking for function "atan" with dependency -lm: YES 
Checking for function "fmod" with dependency -lm: YES 
Checking for function "modf" with dependency -lm: YES 
Checking for function "frexp" with dependency -lm: YES 
Checking for function "ldexp" with dependency -lm: YES 
Checking for function "expm1" with dependency -lm: YES 
Checking for function "log1p" with dependency -lm: YES 
Checking for function "acosh" with dependency -lm: YES 
Checking for function "asinh" with dependency -lm: YES 
Checking for function "atanh" with dependency -lm: YES 
Checking for function "rint" with dependency -lm: YES 
Checking for function "trunc" with dependency -lm: YES 
Checking for function "exp2" with dependency -lm: YES 
Checking for function "copysign" with dependency -lm: YES 
Checking for function "nextafter" with dependency -lm: YES 
Checking for function "cbrt" with dependency -lm: YES 
Checking for function "log2" with dependency -lm: YES 
Checking for function "pow" with dependency -lm: YES 
Checking for function "hypot" with dependency -lm: YES 
Checking for function "atan2" with dependency -lm: YES 
Checking for function "csin" with dependency -lm: YES 
Checking for function "csinh" with dependency -lm: YES 
Checking for function "ccos" with dependency -lm: YES 
Checking for function "ccosh" with dependency -lm: YES 
Checking for function "ctan" with dependency -lm: YES 
Checking for function "ctanh" with dependency -lm: YES 
Checking for function "creal" with dependency -lm: YES 
Checking for function "cimag" with dependency -lm: YES 
Checking for function "conj" with dependency -lm: YES 
Checking for function "strtoll" : YES 
Checking for function "strtoull" : YES 
Checking for function "cabs" with dependency -lm: YES 
Checking for function "cabsf" with dependency -lm: YES 
Checking for function "cabsl" with dependency -lm: YES 
Checking for function "cacos" with dependency -lm: YES 
Checking for function "cacosf" with dependency -lm: YES 
Checking for function "cacosl" with dependency -lm: YES 
Checking for function "cacosh" with dependency -lm: YES 
Checking for function "cacoshf" with dependency -lm: YES 
Checking for function "cacoshl" with dependency -lm: YES 
Checking for function "carg" with dependency -lm: YES 
Checking for function "cargf" with dependency -lm: YES 
Checking for function "cargl" with dependency -lm: YES 
Checking for function "casin" with dependency -lm: YES 
Checking for function "casinf" with dependency -lm: YES 
Checking for function "casinl" with dependency -lm: YES 
Checking for function "casinh" with dependency -lm: YES 
Checking for function "casinhf" with dependency -lm: YES 
Checking for function "casinhl" with dependency -lm: YES 
Checking for function "catan" with dependency -lm: YES 
Checking for function "catanf" with dependency -lm: YES 
Checking for function "catanl" with dependency -lm: YES 
Checking for function "catanh" with dependency -lm: YES 
Checking for function "catanhf" with dependency -lm: YES 
Checking for function "catanhl" with dependency -lm: YES 
Checking for function "cexp" with dependency -lm: YES 
Checking for function "cexpf" with dependency -lm: YES 
Checking for function "cexpl" with dependency -lm: YES 
Checking for function "clog" with dependency -lm: YES 
Checking for function "clogf" with dependency -lm: YES 
Checking for function "clogl" with dependency -lm: YES 
Checking for function "cpow" with dependency -lm: YES 
Checking for function "cpowf" with dependency -lm: YES 
Checking for function "cpowl" with dependency -lm: YES 
Checking for function "csqrt" with dependency -lm: YES 
Checking for function "csqrtf" with dependency -lm: YES 
Checking for function "csqrtl" with dependency -lm: YES 
Checking for function "csin" with dependency -lm: YES (cached)
Checking for function "csinf" with dependency -lm: YES 
Checking for function "csinl" with dependency -lm: YES 
Checking for function "csinh" with dependency -lm: YES (cached)
Checking for function "csinhf" with dependency -lm: YES 
Checking for function "csinhl" with dependency -lm: YES 
Checking for function "ccos" with dependency -lm: YES (cached)
Checking for function "ccosf" with dependency -lm: YES 
Checking for function "ccosl" with dependency -lm: YES 
Checking for function "ccosh" with dependency -lm: YES (cached)
Checking for function "ccoshf" with dependency -lm: YES 
Checking for function "ccoshl" with dependency -lm: YES 
Checking for function "ctan" with dependency -lm: YES (cached)
Checking for function "ctanf" with dependency -lm: YES 
Checking for function "ctanl" with dependency -lm: YES 
Checking for function "ctanh" with dependency -lm: YES (cached)
Checking for function "ctanhf" with dependency -lm: YES 
Checking for function "ctanhl" with dependency -lm: YES 
Checking for function "isfinite" with dependency -lm: YES 
Header "Python.h" has symbol "isfinite" with dependency python: YES 
Checking for function "isinf" with dependency -lm: YES 
Header "Python.h" has symbol "isinf" with dependency python: YES 
Checking for function "isnan" with dependency -lm: YES 
Header "Python.h" has symbol "isnan" with dependency python: YES 
Checking for function "signbit" with dependency -lm: YES 
Header "Python.h" has symbol "signbit" with dependency python: YES 
Checking if "thread_local" compiles: NO 
Checking if "_Thread_local" compiles: YES 
Checking if "__thread" compiles: YES 
Checking if "__declspec(thread)" compiles: NO 
Checking for function "fallocate" : YES 
Header "Python.h" has symbol "HAVE_FTELLO" with dependency python: YES 
Header "Python.h" has symbol "HAVE_FSEEKO" with dependency python: YES 
Checking for function "backtrace" : YES 
Checking for function "madvise" : YES 
Has header "features.h" : YES 
Has header "xlocale.h" : NO 
Has header "dlfcn.h" : YES 
Has header "execinfo.h" : YES 
Has header "libunwind.h" : NO 
Has header "sys/mman.h" : YES 
Checking for function "strtold_l" : YES 
Compiler for C supports arguments -O3: YES 
Has header "endian.h" : YES 
Has header "sys/endian.h" : NO 
Compiler for C supports function attribute visibility:hidden: YES 
Configuring config.h using configuration
Configuring _numpyconfig.h using configuration
Configuring npymath.ini using configuration
Configuring mlib.ini using configuration
Configuring numpy.pc using configuration
Generating multi-targets for "_umath_tests.dispatch.h" 
  Enabled targets: ASIMDHP, baseline
Generating multi-targets for "argfunc.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "x86_simd_argsort.dispatch.h" 
  Enabled targets: 
Generating multi-targets for "x86_simd_qsort.dispatch.h" 
  Enabled targets: 
Generating multi-targets for "x86_simd_qsort_16bit.dispatch.h" 
  Enabled targets: 
Generating multi-targets for "highway_qsort.dispatch.h" 
  Enabled targets: ASIMD
Generating multi-targets for "highway_qsort_16bit.dispatch.h" 
  Enabled targets: ASIMDHP
Generating multi-targets for "loops_arithm_fp.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_arithmetic.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_comparison.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_exponent_log.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_hyperbolic.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_logical.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_minmax.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_modulo.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_trigonometric.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_umath_fp.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_unary.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_unary_fp.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_unary_fp_le.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_unary_complex.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "loops_autovec.dispatch.h" 
  Enabled targets: baseline
Generating multi-targets for "_simd.dispatch.h" 
  Enabled targets: baseline
Build targets in project: 63
WARNING: Project specifies a minimum meson_version '>=1.2.99' but uses features which were added in newer versions:
 * 1.3.0: {'dep 'blas' custom lookup', 'dep 'lapack' custom lookup'}

NumPy 2.2.2

  User defined options
    prefix: /usr

Found ninja-1.11.1.git.kitware.jobserver-1 at /home/mreid/Documents/numpy2/bin/ninja
$ /home/mreid/Documents/numpy2/bin/python vendored-meson/meson/meson.py compile -C build
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /home/mreid/Documents/numpy2/bin/ninja -C /home/mreid/Documents/numpy-2.2.2/build
ninja: Entering directory `/home/mreid/Documents/numpy-2.2.2/build'
[320/320] Linking target numpy/random/...rator.cpython-312-aarch64-linux-gnu.so
$ /home/mreid/Documents/numpy2/bin/python vendored-meson/meson/meson.py install --only-changed -C build --destdir ../build-install
(numpy2) mreid@ubuntu-vm:~/Documents/numpy-2.2.2$ 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status/help-wanted update request to update existing package
Projects
None yet
Development

No branches or pull requests

3 participants