Skip to content

Commit 7b25f4b

Browse files
dixonjoelJoel Dixon
andauthored
Remove Python 3.9 support (#173)
* Remove support for Python 3.9. Add 3.14 * Bump minor versions to indicate the supported Python version changes * Revert adding Python 3.14 - streamlit doesn't support it yet * PR feedback * Re-lock --------- Co-authored-by: Joel Dixon <joel.dixon@emerson.com>
1 parent 526ac1a commit 7b25f4b

File tree

16 files changed

+27
-787
lines changed

16 files changed

+27
-787
lines changed

.github/copilot-instructions.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
**nipanel** is a Python package that provides support for creating and controlling measurement and visualization panels. It's developed by NI and enables Python applications to create Streamlit-based panels that can be served and controlled via gRPC services.
66

77
### Key Repository Information
8-
- **Language**: Python (3.9+)
8+
- **Language**: Python (3.10+)
99
- **Package Manager**: Poetry 2.1+
1010
- **Framework**: Uses Streamlit for panel UI, gRPC for communication
1111
- **Size**: Medium-sized repository (~1300 lines of code in src/)
@@ -64,7 +64,7 @@ poetry run sphinx-build docs docs/_build --builder html --fail-on-warning
6464
```
6565

6666
### Runtime Requirements
67-
- **Python**: 3.9+ (excludes 3.9.7 due to Streamlit incompatibility)
67+
- **Python**: 3.10+
6868
- **Poetry**: 2.1+ required for build system
6969
- **Virtual Environment**: Configured in-project (`.venv/` directory)
7070

@@ -114,12 +114,12 @@ examples/
114114

115115
The repository uses a comprehensive GitHub Actions pipeline:
116116

117-
1. **check_nipanel.yml**: Runs on Windows, Ubuntu, macOS with Python 3.9, 3.13
117+
1. **check_nipanel.yml**: Runs on Windows, Ubuntu, macOS with Python 3.10, 3.13
118118
- Linting with `poetry run nps lint`
119119
- Type checking with `poetry run mypy`
120120
- Security scanning with `poetry run bandit -c pyproject.toml -r src/nipanel`
121121

122-
2. **run_unit_tests.yml**: Cross-platform testing (Windows, Ubuntu) with Python 3.9-3.13
122+
2. **run_unit_tests.yml**: Cross-platform testing (Windows, Ubuntu) with Python 3.10-3.13
123123
- Unit tests: `poetry run pytest ./tests/unit -v --cov=nipanel --junitxml=test_results/nipanel-{os}-py{version}.xml`
124124

125125
3. **check_docs.yml**: Documentation validation
@@ -163,7 +163,6 @@ poetry run pytest -v
163163
1. **Poetry Lock Issues**: Run `poetry check --lock` to verify lock file consistency
164164
2. **Import Warnings**: flake8_import_order pkg_resources warnings are expected and harmless
165165
3. **Documentation SSL Errors**: External inventory fetch failures are known issues
166-
4. **Python 3.9.7**: Excluded due to Streamlit incompatibility - use different Python 3.9.x version
167166

168167
### File System Requirements
169168
- Virtual environment created in `.venv/` (configured in poetry.toml)

.github/workflows/check_nipanel.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ jobs:
1010
strategy:
1111
matrix:
1212
os: [windows-latest, ubuntu-latest, macos-latest]
13-
python-version: [3.9, 3.13]
13+
python-version: ["3.10", 3.13]
1414
runs-on: ${{ matrix.os }}
1515
steps:
1616
- name: Check out repo
@@ -27,4 +27,4 @@ jobs:
2727
with:
2828
install-args: "--with examples"
2929
- name: Bandit security checks
30-
run: poetry run bandit -c pyproject.toml -r src/nipanel
30+
run: poetry run bandit -c pyproject.toml -r src/nipanel

.github/workflows/run_unit_tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
strategy:
1212
matrix:
1313
os: [windows-latest, ubuntu-latest]
14-
python-version: [3.9, '3.10', 3.11, 3.12, 3.13]
14+
python-version: ["3.10", 3.11, 3.12, 3.13]
1515
# Fail-fast skews the pass/fail ratio and seems to make pytest produce
1616
# incomplete JUnit XML results.
1717
fail-fast: false

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
- [About](#about)
55
- [Operating System Support](#operating-system-support)
66
- [Python Version Support](#python-version-support)
7+
- [Installation](#installation)
78

89
# About
910

@@ -17,7 +18,7 @@ NI created and supports this package.
1718

1819
## Python Version Support
1920

20-
`nipanel` supports CPython 3.9+.
21+
`nipanel` supports CPython 3.10+.
2122

2223
## Installation
2324

examples/all_types/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This is an example for `nipanel` that demonstrates all supported data types.
88

99
### Required Software
1010

11-
- Python 3.9 or later
11+
- Python 3.10 or later
1212

1313
### Usage
1414

examples/hello/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ This is a simple `nipanel` example that displays a Streamlit app.
88

99
### Required Software
1010

11-
- Python 3.9 or later
11+
- Python 3.10 or later
1212

1313
### Usage
1414

examples/nidaqmx/nidaqmx_analog_input_filtering/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Script demonstrates analog input data getting continuously acquired, and being f
1212

1313
### Required Software
1414

15-
- Python 3.9 or later
15+
- Python 3.10 or later
1616

1717
### Usage
1818

examples/nidaqmx/nidaqmx_analog_output_voltage/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ This is a nipanel example that displays an interactive Streamlit app and updates
1212

1313
### Required Software
1414

15-
- Python 3.9 or later
15+
- Python 3.10 or later
1616

1717
### Usage
1818

examples/nidaqmx/nidaqmx_continuous_analog_input/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ This is a nipanel example that displays an interactive Streamlit app and updates
1212

1313
### Required Software
1414

15-
- Python 3.9 or later
15+
- Python 3.10 or later
1616

1717
### Usage
1818

examples/niscope/nicope_ex_fetch_forever/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Script demonstrates NIScope waveform data getting continuously acquired.
1313

1414
### Required Software
1515

16-
- Python 3.9 or later
16+
- Python 3.10 or later
1717

1818
### Usage
1919

0 commit comments

Comments
 (0)