Skip to content

Get system tests running on Python 3.14t (free-threaded) #853

@bkeryan

Description

@bkeryan

Tech Debt

The unit tests are passing with Python 3.14t on a GitHub-hosted runner, but adding a py314t-base Tox env to the system tests produces NumPy import errors:

py314t-base: freeze> python -m pip freeze --all
py314t-base: pip==25.1.1
py314t-base: commands[0]> poetry run python --version
Python 3.14.0
py314t-base: commands[1]> poetry run python -VV
Python 3.14.0 free-threading build (tags/v3.14.0:ebf955d, Oct  7 2025, 10:13:09) [MSC v.1944 64 bit (AMD64)]
py314t-base: commands[2]> poetry install -v --only main,test
Using virtualenv: C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base
Checking keyring availability: Available
Installing dependencies from lock file

Finding the necessary packages for the current system

Package operations: 34 installs, 0 updates, 0 removals, 2 skipped

  - Installing colorama (0.4.6)
  - Installing distlib (0.4.0)
  - Installing filelock (3.18.0)
  - Installing iniconfig (2.1.0)
  - Installing packaging (25.0)
  - Installing platformdirs (4.3.8)
  - Installing pluggy (1.6.0)
  - Installing pygments (2.19.2)
  - Installing cachetools (6.1.0)
  - Installing certifi (2025.7.14)
  - Installing coverage (7.10.7)
  - Installing chardet (5.2.0)
  - Installing charset-normalizer (3.4.2)
  - Installing hightime (0.2.2)
  - Installing idna (3.10)
  - Installing numpy (2.3.3)
  - Installing py-cpuinfo (9.0.0)
  - Installing pyproject-api (1.9.1)
  - Installing pytest (8.4.2)
  - Installing typing-extensions (4.15.0)
  - Installing tzdata (2025.2)
  - Installing urllib3 (2.5.0)
  - Installing virtualenv (20.32.0)
  - Installing click (8.2.1)
  - Installing deprecation (2.1.0)
  - Installing grpcio (1.75.1): Skipped for the following reason: Not required
  - Installing nitypes (0.1.0.dev10)
  - Installing protobuf (6.32.1): Skipped for the following reason: Not required
  - Installing pykka (4.2.0)
  - Installing pytest-benchmark (5.1.0)
  - Installing pytest-cov (7.0.0)
  - Installing pytest-mock (3.15.1)
  - Installing python-decouple (3.8)
  - Installing requests (2.32.5)
  - Installing tox (4.30.2)
  - Installing tzlocal (5.3.1)

Installing the current project: nidaqmx (1.3.0-dev1)
py314t-base: commands[3]> poetry run python -c "from nidaqmx._lib import lib_importer; print(f'Library: {lib_importer.windll._library._name}\nLibrary encoding: {lib_importer.encoding}')"
Traceback (most recent call last):
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\_core\__init__.py", line 22, in <module>
    from . import multiarray
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\_core\multiarray.py", line 11, in <module>
    from . import _multiarray_umath, overrides
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\_core\overrides.py", line 5, in <module>
    from numpy._core._multiarray_umath import (
    ...<3 lines>...
    )
ModuleNotFoundError: No module named 'numpy._core._multiarray_umath'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\__init__.py", line 125, in <module>
    from numpy.__config__ import show_config
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\__config__.py", line 4, in <module>
    from numpy._core._multiarray_umath import (
    ...<3 lines>...
    )
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\_core\__init__.py", line 48, in <module>
    raise ImportError(msg) from exc
ImportError: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.14 from "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Scripts\python.exe"
  * The NumPy version is: "2.3.3"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy._core._multiarray_umath'


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
    from nidaqmx._lib import lib_importer; print(f'Library: {lib_importer.windll._library._name}\nLibrary encoding: {lib_importer.encoding}')
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\generated\nidaqmx\__init__.py", line 11, in <module>
    from nidaqmx.scale import Scale
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\generated\nidaqmx\scale.py", line 3, in <module>
    import numpy
  File "C:\ar\_work\nidaqmx-python\nidaqmx-python\.tox\py314t-base\Lib\site-packages\numpy\__init__.py", line 130, in <module>
    raise ImportError(msg) from e
ImportError: Error importing numpy: you should not try to import numpy from
        its source directory; please exit the numpy source tree, and relaunch
        your python interpreter from there.
py314t-base: exit 1 (1.62 seconds) C:\ar\_work\nidaqmx-python\nidaqmx-python> poetry run python -c "from nidaqmx._lib import lib_importer; print(f'Library: {lib_importer.windll._library._name}\nLibrary encoding: {lib_importer.encoding}')" pid=7076
py314t-base: FAIL ✖ in 19.48 seconds

I tried installing Python 3.14 w/ Include_freethreading=1 locally and got the same results, both with Tox and with poetry run pytest -v when Poetry is using 3.11.9 and the project venv is using 3.14.0t.

I did get the tests to run when using 3.14.0t for both Poetry and the project venv, though.

AB#3424332

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech debtNon-user-visible improvement to code or development process

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions