Skip to content

Commit 5beaf68

Browse files
committed
Drop support for Python 3.8
1 parent b8c2aaa commit 5beaf68

File tree

8 files changed

+36
-37
lines changed

8 files changed

+36
-37
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
strategy:
2222
fail-fast: false
2323
matrix:
24-
python-version: ["3.8", "3.12"]
24+
python-version: ["3.9", "3.13"]
2525

2626
steps:
2727
- uses: actions/checkout@v3

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
## Version 2.7.0 ##
44

5+
Supported versions of Python have been updated (drop support for Python 3.8, add support for Python 3.13):
6+
7+
* PlotPy < 2.7.0: Python 3.8, 3.9, 3.10, 3.11 and 3.12
8+
* PlotPy >= 2.7.0: Python 3.9, 3.10, 3.11, 3.12 and 3.13
9+
510
💥 New features / Enhancements:
611

712
* Added `AnnotatedPolygon` annotation to items

doc/dev/platforms.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,17 @@ The following sections describe the reference platforms for the project.
77

88
.. note::
99

10-
The officially supported Python versions are 3.8, 3.9 and 3.10.
11-
However, the project should work on any earlier Python 3 version.
10+
The officially supported Python versions are 3.9, 3.10, 3.11, 3.12 and 3.13.
1211

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

1615
The project is currently tested on the following platforms:
1716

1817
* Microsoft Windows 10 (64-bit)
18+
* Microsoft Windows 11 (64-bit)
1919
* CentOS Stream 8.8 (64-bit)
20+
* Ubuntu 22.04 LTS (64-bit)
2021

2122
However, it should work on any other platform supported by its dependencies.
2223

doc/intro/motivation.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ From a developer point of view, PlotPy V2 is a major overhaul of PlotPy V1:
1313
all over the codebase
1414

1515
.. note::
16-
PlotPy V2 is fully typed using Python 3.8+ type annotations.
16+
PlotPy V2 is fully typed using Python type annotations.
1717
This means that you can use your IDE to get autocompletion and type checking
1818
(e.g. with VSCode, Visual Studio, etc.).
1919
This is a major improvement when you write code using PlotPy V2:

doc/requirements.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,20 @@ The :mod:`plotpy` package requires the following Python modules:
88
- Version
99
- Summary
1010
* - Python
11-
- >=3.8, <4
11+
- >=3.9, <4
1212
- Python programming language
1313
* - guidata
14-
- >=3.4
14+
- >=3.7
1515
- Automatic GUI generation for easy dataset editing and display
1616
* - PythonQwt
17-
- >=0.12.1
17+
- >=0.14
1818
- Qt plotting widgets for Python
19-
* - NumPy
20-
- >=1.17
21-
- Fundamental package for array computing in Python
2219
* - SciPy
23-
- >=1.3
20+
- >=1.5
2421
- Fundamental algorithms for scientific computing in Python
22+
* - scikit-image
23+
- >= 0.18
24+
- Image processing in Python
2525
* - Pillow
2626
-
2727
- Python Imaging Library (Fork)

doc/update_requirements.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515

1616
if __name__ == "__main__":
1717
print("Updating requirements.rst file...", end=" ")
18-
gen_module_req_rst(plotpy, ["Python>=3.8", "PyQt5>=5.11"])
18+
gen_module_req_rst(plotpy, ["Python>=3.9", "PyQt5>=5.11"])
1919
print("done.")

pyproject.toml

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
11
# plotpy setup configuration file
22

33
[build-system]
4-
requires = [
5-
"setuptools",
6-
"wheel",
7-
"cython ~= 0.29.0",
8-
"numpy >= 1.17; python_version == '3.8'",
9-
"numpy >= 2.0.0; python_version > '3.8'",
10-
]
4+
requires = ["setuptools", "wheel", "cython ~= 0.29.0", "numpy >= 2.0.0"]
115
build-backend = "setuptools.build_meta"
126

137
[project]
@@ -28,11 +22,11 @@ classifiers = [
2822
"Operating System :: Microsoft :: Windows :: Windows 10",
2923
"Operating System :: Microsoft :: Windows :: Windows 11",
3024
"Operating System :: POSIX :: Linux",
31-
"Programming Language :: Python :: 3.8",
3225
"Programming Language :: Python :: 3.9",
3326
"Programming Language :: Python :: 3.10",
3427
"Programming Language :: Python :: 3.11",
3528
"Programming Language :: Python :: 3.12",
29+
"Programming Language :: Python :: 3.13",
3630
"Topic :: Scientific/Engineering",
3731
"Topic :: Scientific/Engineering :: Image Processing",
3832
"Topic :: Scientific/Engineering :: Human Machine Interfaces",
@@ -42,12 +36,11 @@ classifiers = [
4236
"Topic :: Software Development :: Widget Sets",
4337
"Topic :: Utilities",
4438
]
45-
requires-python = ">=3.8, <4"
39+
requires-python = ">=3.9, <4"
4640
dependencies = [
47-
"guidata>=3.6.2",
48-
"PythonQwt>=0.12.1",
49-
"NumPy>=1.17",
50-
"SciPy>=1.3",
41+
"guidata>=3.7",
42+
"PythonQwt>=0.14",
43+
"SciPy>=1.5",
5144
"scikit-image >= 0.18",
5245
"Pillow",
5346
"tifffile",
@@ -90,7 +83,7 @@ addopts = "plotpy"
9083
exclude = [".git", ".vscode", "build", "dist"]
9184
line-length = 88 # Same as Black.
9285
indent-width = 4 # Same as Black.
93-
target-version = "py38" # Assume Python 3.8
86+
target-version = "py39" # Assume Python 3.9.
9487

9588
[tool.ruff.lint]
9689
# all rules can be found here: https://beta.ruff.rs/docs/rules/
@@ -109,5 +102,5 @@ line-ending = "auto" # Like Black, automatically detect the appropr
109102
"doc/*" = ["E402"]
110103

111104
[tool.cibuildwheel]
112-
build = ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"]
105+
build = ["cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*"]
113106
skip = ["*-manylinux_i686", "*-musllinux*"]

scripts/build-wheels.sh

Lines changed: 10 additions & 10 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.8 or greater
8-
function is_python_version_ge_38 {
7+
# Accurately check if Python version is 3.9 or greater
8+
function is_python_version_ge_39 {
99
local pydir="$1"
1010
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.8
13-
if [[ $(echo -e "3.8\n$version" | sort -V | head -n1) == "3.8" ]]; then
14-
return 0 # True, version is >= 3.8
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
1515
fi
1616
fi
17-
return 1 # False, version is < 3.8
17+
return 1 # False, version is < 3.9
1818
}
1919

20-
# Compile wheels, only for CPython 3.8+
20+
# Compile wheels, only for CPython 3.9+
2121
for PYDIR in /opt/python/*; do
22-
if is_python_version_ge_38 "$PYDIR"; then
22+
if is_python_version_ge_39 "$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.8+
36+
# Install packages and test, only for CPython 3.9+
3737
for PYDIR in /opt/python/*; do
38-
if is_python_version_ge_38 "$PYDIR"; then
38+
if is_python_version_ge_39 "$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)