Skip to content

Commit 137153c

Browse files
committed
chore: require Python 3.10 or newer
Refs #74 Assisted-by: GPT-6.1 Sol
1 parent bf1f636 commit 137153c

7 files changed

Lines changed: 22 additions & 19 deletions

File tree

‎.github/copilot-instructions.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ PythonQwt and guidata.
1212

1313
### Technology Stack
1414

15-
- **Python**: 3.9+ (`from __future__ import annotations`)
15+
- **Python**: 3.10+ (`from __future__ import annotations`)
1616
- **Core**: NumPy, SciPy, scikit-image
1717
- **GUI**: Qt via QtPy, guidata, PythonQwt
1818
- **Build**: Some features rely on Cython extensions

‎.github/workflows/test_pyqt5.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
strategy:
2323
fail-fast: false
2424
matrix:
25-
python-version: ["3.9", "3.13", "3.14"]
25+
python-version: ["3.10", "3.13", "3.14"]
2626

2727
steps:
2828
- uses: actions/checkout@v7

‎doc/dev/platforms.rst‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The following sections describe the reference platforms for the project.
77

88
.. note::
99

10-
The officially supported Python versions are 3.9, 3.10, 3.11, 3.12 and 3.13.
10+
The officially supported Python versions are 3.10, 3.11, 3.12, 3.13 and 3.14.
1111

1212
The officially supported Qt binding is PyQt5. However, efforts have been
1313
made and will continue to be made to support PyQt6 and PySide6 as well.

‎doc/release_notes/release_2.11.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Version 2.11 #
22

3+
## Unreleased ##
4+
5+
* Python 3.10 or later is now required, and wheels are no longer built for Python 3.9. Python 3.9 users must keep an earlier compatible release.
6+
37
## PlotPy Version 2.11.2 ##
48

59
🛠️ Bug fixes:

‎doc/requirements.rst‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ The `PlotPy` package requires the following Python modules:
88
- Version
99
- Summary
1010
* - Python
11-
- >=3.9, <4
11+
- >=3.10, <4
1212
- Python programming language
1313
* - guidata
1414
- >= 3.14.1

‎pyproject.toml‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ classifiers = [
2121
"Operating System :: Microsoft :: Windows :: Windows 10",
2222
"Operating System :: Microsoft :: Windows :: Windows 11",
2323
"Operating System :: POSIX :: Linux",
24-
"Programming Language :: Python :: 3.9",
2524
"Programming Language :: Python :: 3.10",
2625
"Programming Language :: Python :: 3.11",
2726
"Programming Language :: Python :: 3.12",
@@ -36,7 +35,7 @@ classifiers = [
3635
"Topic :: Software Development :: Widget Sets",
3736
"Topic :: Utilities",
3837
]
39-
requires-python = ">=3.9, <4"
38+
requires-python = ">=3.10, <4"
4039
dependencies = [
4140
"guidata >= 3.14.1",
4241
"PythonQwt >= 0.16",
@@ -86,7 +85,7 @@ testpaths = ["plotpy"]
8685
exclude = [".git", ".vscode", "build", "dist","venv*",".venv*"]
8786
line-length = 88 # Same as Black.
8887
indent-width = 4 # Same as Black.
89-
target-version = "py39" # Assume Python 3.9.
88+
target-version = "py310" # Assume Python 3.10.
9089

9190
[tool.ruff.lint]
9291
# all rules can be found here: https://beta.ruff.rs/docs/rules/
@@ -117,5 +116,5 @@ line-ending = "auto" # Like Black, automatically detect the appropr
117116
convention = "google"
118117

119118
[tool.cibuildwheel]
120-
build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"]
119+
build = ["cp310-*", "cp311-*", "cp312-*", "cp313-*", "cp314-*"]
121120
skip = ["*-manylinux_i686", "*-musllinux*"]

‎scripts/build-wheels.sh‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ set -e -u -x
44
ARCH=$(uname -m)
55
export PLAT=manylinux_2_24_$ARCH
66

7-
# Accurately check if Python version is 3.9 or greater
8-
function is_python_version_ge_39 {
7+
# Accurately check if Python version is 3.10 or greater
8+
function is_python_version_ge_310 {
99
local pydir="$1"
10-
if [[ $pydir =~ cp([0-9]+)([0-9]+)-cp ]]; then
10+
if [[ $pydir =~ cp([0-9])([0-9]+)-cp ]]; then
1111
local version="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}"
12-
# Use sort with version sort flag to compare version against 3.9
13-
if [[ $(echo -e "3.9\n$version" | sort -V | head -n1) == "3.9" ]]; then
14-
return 0 # True, version is >= 3.9
12+
# Use sort with version sort flag to compare version against 3.10
13+
if [[ $(echo -e "3.10\n$version" | sort -V | head -n1) == "3.10" ]]; then
14+
return 0 # True, version is >= 3.10
1515
fi
1616
fi
17-
return 1 # False, version is < 3.9
17+
return 1 # False, version is < 3.10
1818
}
1919

20-
# Compile wheels, only for CPython 3.9+
20+
# Compile wheels, only for CPython 3.10+
2121
for PYDIR in /opt/python/*; do
22-
if is_python_version_ge_39 "$PYDIR"; then
22+
if is_python_version_ge_310 "$PYDIR"; then
2323
PYBIN="$PYDIR/bin"
2424
"${PYBIN}/pip" install -r /io/requirements.txt
2525
"${PYBIN}/pip" wheel /io/ --no-deps -w wheelhouse/
@@ -33,9 +33,9 @@ for wheel in wheelhouse/*.whl; do
3333
fi
3434
done
3535

36-
# Install packages and test, only for CPython 3.9+
36+
# Install packages and test, only for CPython 3.10+
3737
for PYDIR in /opt/python/*; do
38-
if is_python_version_ge_39 "$PYDIR"; then
38+
if is_python_version_ge_310 "$PYDIR"; then
3939
PYBIN="$PYDIR/bin"
4040
"${PYBIN}/pip" install plotpy --no-index -f /io/wheelhouse
4141
(cd "$HOME"; INSTDIR=$("${PYBIN}/python" -c "import plotpy, os.path as osp; print(osp.dirname(plotpy.__file__))"); export QT_QPA_PLATFORM=offscreen; "${PYBIN}/pytest" "$INSTDIR")

0 commit comments

Comments
 (0)