Skip to content

Commit 01b4244

Browse files
authored
Add Python 3.14, drop Python 3.9 and PyPy 3.10 (#104)
1 parent 863ba39 commit 01b4244

File tree

13 files changed

+61
-65
lines changed

13 files changed

+61
-65
lines changed

.github/workflows/publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ jobs:
66
publish:
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v4
9+
- uses: actions/checkout@v5
1010
- name: Set up Python
11-
uses: actions/setup-python@v5
11+
uses: actions/setup-python@v6
1212
with:
1313
python-version: 3.13
1414
- name: Install dependencies

.github/workflows/tests-macos.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ jobs:
88
strategy:
99
fail-fast: false
1010
matrix:
11-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
11+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
1212
steps:
13-
- uses: actions/checkout@v4
13+
- uses: actions/checkout@v5
1414
- name: Set up Python ${{ matrix.python-version }}
15-
uses: actions/setup-python@v5
15+
uses: actions/setup-python@v6
1616
with:
1717
python-version: ${{ matrix.python-version }}
1818
- name: Install dependencies

.github/workflows/tests-ubuntu.yml

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ jobs:
66
pre-commit:
77
runs-on: ubuntu-latest
88
steps:
9-
- uses: actions/checkout@v4
10-
- uses: actions/setup-python@v5
9+
- uses: actions/checkout@v5
10+
- uses: actions/setup-python@v6
1111
with:
12-
python-version: "3.13"
12+
python-version: "3.14"
1313
- uses: pre-commit/[email protected]
1414

1515
tests:
@@ -21,30 +21,22 @@ jobs:
2121
- python-version: '3.13' # Keep in sync with .readthedocs.yml
2222
env:
2323
TOXENV: docs
24-
- python-version: '3.13'
24+
- python-version: '3.14'
2525
env:
2626
TOXENV: pylint
27-
- python-version: '3.13'
27+
- python-version: '3.14'
2828
env:
2929
TOXENV: twinecheck
30-
- python-version: '3.13'
30+
- python-version: '3.14'
3131
env:
3232
TOXENV: typing
33-
- python-version: 3.9
34-
env:
35-
TOXENV: py
36-
- python-version: pypy-3.10
37-
env:
38-
TOXENV: py
39-
- python-version: pypy-3.11
33+
34+
- python-version: '3.10'
4035
env:
4136
TOXENV: py
42-
- python-version: 3.9
43-
env:
44-
TOXENV: extra-deps
4537
- python-version: '3.10'
4638
env:
47-
TOXENV: py
39+
TOXENV: extra-deps
4840
- python-version: '3.11'
4941
env:
5042
TOXENV: py
@@ -54,15 +46,22 @@ jobs:
5446
- python-version: '3.13'
5547
env:
5648
TOXENV: py
49+
- python-version: '3.14'
50+
env:
51+
TOXENV: py
52+
53+
- python-version: pypy-3.11
54+
env:
55+
TOXENV: py
5756
steps:
58-
- uses: actions/checkout@v4
57+
- uses: actions/checkout@v5
5958
- name: Install system libraries
6059
if: contains(matrix.python-version, 'pypy')
6160
run: |
6261
sudo apt-get update
6362
sudo apt-get install libxml2-dev libxslt-dev
6463
- name: Set up Python ${{ matrix.python-version }}
65-
uses: actions/setup-python@v5
64+
uses: actions/setup-python@v6
6665
with:
6766
python-version: ${{ matrix.python-version }}
6867
- name: Install dependencies

.github/workflows/tests-windows.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ jobs:
88
strategy:
99
fail-fast: false
1010
matrix:
11-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
11+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
1212
steps:
13-
- uses: actions/checkout@v4
13+
- uses: actions/checkout@v5
1414
- name: Set up Python ${{ matrix.python-version }}
15-
uses: actions/setup-python@v5
15+
uses: actions/setup-python@v6
1616
with:
1717
python-version: ${{ matrix.python-version }}
1818
- name: Install dependencies

.pre-commit-config.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.12.5
3+
rev: v0.14.4
44
hooks:
55
- id: ruff-check
66
args: [ --fix ]
77
- id: ruff-format
88
- repo: https://github.com/adamchainz/blacken-docs
9-
rev: 1.19.1
9+
rev: 1.20.0
1010
hooks:
1111
- id: blacken-docs
1212
additional_dependencies:
13-
- black==25.1.0
13+
- black==25.9.0
1414
- repo: https://github.com/pre-commit/pre-commit-hooks
15-
rev: v5.0.0
15+
rev: v6.0.0
1616
hooks:
1717
- id: end-of-file-fixer
1818
- id: trailing-whitespace

itemloaders/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from __future__ import annotations
88

99
from contextlib import suppress
10-
from typing import TYPE_CHECKING, Any, Callable
10+
from typing import TYPE_CHECKING, Any
1111

1212
from itemadapter import ItemAdapter
1313
from parsel import Selector # noqa: TC002 # for sphinx
@@ -18,7 +18,7 @@
1818
from itemloaders.utils import arg_to_iter
1919

2020
if TYPE_CHECKING:
21-
from collections.abc import Iterable, MutableMapping
21+
from collections.abc import Callable, Iterable, MutableMapping
2222
from re import Pattern
2323

2424
# typing.Self requires Python 3.11

itemloaders/common.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
from __future__ import annotations
44

55
from functools import partial
6-
from typing import TYPE_CHECKING, Any, Callable
6+
from typing import TYPE_CHECKING, Any
77

88
from itemloaders.utils import get_func_args
99

1010
if TYPE_CHECKING:
11-
from collections.abc import MutableMapping
11+
from collections.abc import Callable, MutableMapping
1212

1313

1414
def wrap_loader_context(

itemloaders/processors.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
from __future__ import annotations
88

99
from collections import ChainMap
10-
from typing import TYPE_CHECKING, Any, Callable
10+
from typing import TYPE_CHECKING, Any
1111

1212
from itemloaders.common import wrap_loader_context
1313
from itemloaders.utils import arg_to_iter
1414

1515
if TYPE_CHECKING:
16-
from collections.abc import Iterable, MutableMapping
16+
from collections.abc import Callable, Iterable, MutableMapping
1717

1818

1919
class MapCompose:

itemloaders/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from __future__ import annotations
77

88
import inspect
9-
from collections.abc import Generator, Iterable
9+
from collections.abc import Callable, Generator, Iterable
1010
from functools import partial
11-
from typing import Any, Callable
11+
from typing import Any
1212

1313

1414
def arg_to_iter(arg: Any) -> Iterable[Any]:

pyproject.toml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ dependencies = [
1919
"jmespath>=0.9.5",
2020
"parsel>=1.5.0",
2121
]
22-
requires-python = ">=3.9"
22+
requires-python = ">=3.10"
2323
classifiers = [
2424
"Development Status :: 5 - Production/Stable",
2525
"Intended Audience :: Developers",
2626
"Programming Language :: Python",
2727
"Programming Language :: Python :: 3",
28-
"Programming Language :: Python :: 3.9",
2928
"Programming Language :: Python :: 3.10",
3029
"Programming Language :: Python :: 3.11",
3130
"Programming Language :: Python :: 3.12",
3231
"Programming Language :: Python :: 3.13",
32+
"Programming Language :: Python :: 3.14",
3333
"Programming Language :: Python :: Implementation :: CPython",
3434
"Programming Language :: Python :: Implementation :: PyPy",
3535
"Operating System :: OS Independent",
@@ -60,16 +60,13 @@ tag = true
6060
[tool.coverage.run]
6161
branch = true
6262

63-
[tool.coverage.report]
64-
exclude_also = [
65-
"if TYPE_CHECKING:",
66-
]
63+
[tool.mypy]
64+
strict = true
6765

6866
[[tool.mypy.overrides]]
6967
# Allow test functions to be untyped
7068
module = "tests.*"
7169
allow_untyped_defs = true
72-
check_untyped_defs = true
7370

7471
[tool.pylint.MASTER]
7572
persistent = "no"

0 commit comments

Comments
 (0)