ni / ni/nidaqmx-python

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

Open
#853 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

tech debt
Dominant language
Python
Stars
592
Forks
199
Avg merge
1d 16h
Merged PRs (30d)
10

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the py314t-base Tox environment and compare the Poetry and project virtual-environment Python versions described in the report. Investigate the NumPy installation failure, then run the system tests on a GitHub-hosted runner with Python 3.14t; done means the environment installs successfully and the tests run without the NumPy import error.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, numpy, python
Domain
build-system, ci-cd, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.