Skip to content

Commit 615d8b3

Browse files
Drop Python 3.8 support
The pypa/manylinux project removed CPython 3.8 from manylinux_2_28 on 2026-05-07, breaking the test-build-wheel-manylinux (3.8) job (/usr/bin/python3 fallback has no pip). 3.8 has been EOL since Oct 2024, so drop it everywhere: CI matrices, requires-python / classifiers in pyproject.toml, and the now-dead Path.is_relative_to polyfill in importer.py. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 1d9f4d4 commit 615d8b3

4 files changed

Lines changed: 4 additions & 15 deletions

File tree

.github/workflows/build-and-upload.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
container: ${{ matrix.container }}
3131
strategy:
3232
matrix:
33-
python_version: ['3.8', '3.9', '3.10'] # The 3.10 builds use abi3, so are good for Python 3.10+
33+
python_version: ['3.9', '3.10'] # The 3.10 builds use abi3, so are good for Python 3.10+
3434
os: ['ubuntu-latest', 'macos-13', 'macos-14', 'windows-latest']
3535
include:
3636
- os: ubuntu-latest

.github/workflows/tests.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ jobs:
2020
fail-fast: false
2121
matrix:
2222
os: [ ubuntu-latest, macos-latest, windows-latest ]
23-
python: [ '3.8', '3.9', 'pypy-3.9', '3.10', 'pypy-3.10', '3.11', '3.12', '3.13', '3.14' ]
23+
python: [ '3.9', 'pypy-3.9', '3.10', 'pypy-3.10', '3.11', '3.12', '3.13', '3.14' ]
2424
exclude:
25-
- os: macos-latest # Python 3.8 unavailable on macos-14
26-
python: '3.8'
2725
- os: macos-latest # Python 3.9 unavailable on macos-14
2826
python: '3.9'
2927

@@ -97,7 +95,7 @@ jobs:
9795
container: ${{ matrix.container }}
9896
strategy:
9997
matrix:
100-
python_version: ['3.8', '3.9', '3.10', '3.11'] # 3.12+ are "pure Python", no need to build on manylinux
98+
python_version: ['3.9', '3.10', '3.11'] # 3.12+ are "pure Python", no need to build on manylinux; 3.8 was removed from the manylinux image (2026-05-07)
10199
include:
102100
- os: ubuntu-latest
103101
container: quay.io/pypa/manylinux_2_28_x86_64 # https://github.com/pypa/manylinux

pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ authors = [
88
{ name="Emery Berger", email="emery.berger@gmail.com" }
99
]
1010
classifiers = [
11-
"Programming Language :: Python :: 3.8",
1211
"Programming Language :: Python :: 3.9",
1312
"Programming Language :: Python :: 3.10",
1413
"Programming Language :: Python :: 3.11",
@@ -20,7 +19,7 @@ classifiers = [
2019
"Operating System :: MacOS :: MacOS X",
2120
"Operating System :: Microsoft :: Windows :: Windows 10"
2221
]
23-
requires-python = ">=3.8,<3.15"
22+
requires-python = ">=3.9,<3.15"
2423
dependencies = [
2524
"tabulate"
2625
]

src/slipcover/importer.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,6 @@
1717
from importlib.abc import ResourceReader as TraversableResources
1818

1919

20-
if sys.version_info[0:2] < (3,9):
21-
# Path.is_relative_to is new in Python 3.9
22-
def is_relative_to(self: Path, other: str) -> bool:
23-
other = Path(other)
24-
return other == self or other in self.parents
25-
setattr(Path, 'is_relative_to', is_relative_to)
26-
27-
2820
class SlipcoverLoader(Loader):
2921
def __init__(self, sci: Slipcover, orig_loader: Loader, origin: str):
3022
self.sci = sci # Slipcover object measuring coverage

0 commit comments

Comments
 (0)