Skip to content

Conversation

@dixonjoel
Copy link
Collaborator

What does this Pull Request accomplish?

Remove Python 3.9 support - it is EOL. Add support for 3.14, just released.

Bump all minor versions by 1 to indicate the change in supported Python versions.

Why should this Pull Request be merged?

Keep up-to-date on Python and follow our support policy.

What testing has been done?

PR uses all Python versions supported so should be sufficient.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 30, 2025

Test Results

    50 files   -     6      50 suites   - 6   23m 47s ⏱️ - 1m 53s
 2 243 tests  -    13   2 243 ✅  -    13  0 💤 ±0  0 ❌ ±0 
57 900 runs   - 6 690  57 900 ✅  - 6 690  0 💤 ±0  0 ❌ ±0 

Results for commit 9a64add. ± Comparison against base commit 61a0c13.

This pull request removes 13 tests.
tests.unit.waveform.test_analog_waveform ‑ test___various_values___repr___looks_ok[value12-nitypes.waveform.AnalogWaveform(3, int32, raw_data=array([1, 2, 3]), timing=nitypes.waveform.Timing(nitypes.waveform.SampleIntervalMode.REGULAR, sample_interval=datetime.timedelta(microseconds=1000)))]
tests.unit.waveform.test_analog_waveform ‑ test___various_values___repr___looks_ok[value13-nitypes.waveform.AnalogWaveform(3, int32, raw_data=array([1, 2, 3]), extended_properties={'NI_ChannelName': 'Dev1/ai0', 'NI_UnitDescription': 'Volts'})]
tests.unit.waveform.test_analog_waveform ‑ test___various_values___repr___looks_ok[value14-nitypes.waveform.AnalogWaveform(3, int32, raw_data=array([1, 2, 3]), scale_mode=nitypes.waveform.LinearScaleMode(2.0, 1.0))]
tests.unit.waveform.test_analog_waveform ‑ test___various_values___repr___looks_ok[value4-nitypes.waveform.AnalogWaveform(5, int32, raw_data=array([0, 0, 0, 0, 0]))]
tests.unit.waveform.test_analog_waveform ‑ test___various_values___repr___looks_ok[value5-nitypes.waveform.AnalogWaveform(5, int32, raw_data=array([0, 0, 0, 0, 0]))]
tests.unit.waveform.test_analog_waveform ‑ test___various_values___repr___looks_ok[value7-nitypes.waveform.AnalogWaveform(3, int32, raw_data=array([1, 2, 3]))]
tests.unit.waveform.test_spectrum ‑ test___various_values___repr___looks_ok[value10-nitypes.waveform.Spectrum(3, int32, data=array([1, 2, 3]), extended_properties={'NI_ChannelName': 'Dev1/ai0', 'NI_UnitDescription': 'Volts'})]
tests.unit.waveform.test_spectrum ‑ test___various_values___repr___looks_ok[value4-nitypes.waveform.Spectrum(5, int32, data=array([0, 0, 0, 0, 0]))]
tests.unit.waveform.test_spectrum ‑ test___various_values___repr___looks_ok[value5-nitypes.waveform.Spectrum(5, int32, data=array([0, 0, 0, 0, 0]))]
tests.unit.waveform.test_spectrum ‑ test___various_values___repr___looks_ok[value7-nitypes.waveform.Spectrum(3, int32, data=array([1, 2, 3]))]
…

♻️ This comment has been updated with latest results.

license = "MIT"
keywords = ["nitypes"]
version = "1.1.0.dev1"
version = "1.2.0.dev0"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already bumped minor when we released 1.0.0. We haven't released 1.1.0 yet, so don't bump it again.

Suggested change
version = "1.2.0.dev0"
version = "1.1.0.dev1"

Comment on lines +39 to +42
# NumPy 2.2.x is the last version that supports Python 3.10
numpy = [
{ version = ">=1.22", python = ">=3.9,<3.13" },
{ version = ">=2.1", python = "^3.13" }
{ version = ">=2.2", python = ">=3.10,<3.11" },
{ version = ">=2.3", python = "^3.13" }
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment does not describe the version bounds. It explains why we are specifying NumPy versions per Python version.

The version bounds should specify the oldest version for this version of Python, not the newest. NumPy 1.22 supports Python 3.10, so there is no reason to change it to 2.2. Python 3.10 users can use NumPy >=1.22,<2.3.

If you take out the per-Python versions and specify >=1.22, then Poetry will choose the newest version that supports Python 3.10, which is NumPy 2.2.6. This version has binary wheels for 3.10 through 3.13 inclusive, but it doesn't have a binary wheel for 3.14. You can try it out and see, but I think we still need multiple version blocks to prevent rebuilding from source and/or crashing with 3.14.

Note that we also specify NumPy versions per Python version in the private dev dependency group, so you will not be able to see the full effects of this by testing this project. You need to test another project that depends on it, like nidaqmx-python, nipanel-python, or ni-apis-python. If the other project doesn't have NumPy versions per Python version, then what nitypes-python specifies here can make the other proejct work or not work.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add support for 3.14, just released.

This was done in a previous PR, so remove it from the description

@bkeryan
Copy link
Collaborator

bkeryan commented Nov 21, 2025

We can't remove Python 3.9 support until internal test suites that use nidaqmx-python have stopped running on Python 3.9.

@bkeryan bkeryan closed this Nov 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants