Skip to content

Commit 7a74932

Browse files
committed
Drop support for 3.9, which is EOL, add 3.14 to CI.
1 parent cebe4c7 commit 7a74932

File tree

7 files changed

+427
-185
lines changed

7 files changed

+427
-185
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ jobs:
4545
posargs: [""]
4646
include:
4747
- os: ubuntu-latest
48-
noxenv: "tests-3.13(format)"
48+
noxenv: "tests-3.14(format)"
4949
posargs: coverage github
5050
- os: ubuntu-latest
51-
noxenv: "tests-3.13(no-extras)"
51+
noxenv: "tests-3.14(no-extras)"
5252
posargs: coverage github
5353
exclude:
5454
- os: macos-latest
@@ -88,11 +88,12 @@ jobs:
8888
uses: actions/setup-python@v6
8989
with:
9090
python-version: |
91-
3.9
9291
3.10
9392
3.11
9493
3.12
9594
3.13
95+
3.14
96+
3.14t
9697
pypy3.11
9798
allow-prereleases: true
9899
- name: Enable UTF-8 on Windows

jsonschema/_format.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
_FormatCheckCallable = typing.Callable[[object], bool]
1414
#: A format checker callable.
1515
_F = typing.TypeVar("_F", bound=_FormatCheckCallable)
16-
_RaisesType = typing.Union[type[Exception], tuple[type[Exception], ...]]
16+
_RaisesType = type[Exception] | tuple[type[Exception], ...]
1717

1818
_RE_DATE = re.compile(r"^\d{4}-\d{2}-\d{2}$", re.ASCII)
1919

jsonschema/_types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
from jsonschema.exceptions import UndefinedTypeCheck
1010

1111
if TYPE_CHECKING:
12-
from collections.abc import Mapping
13-
from typing import Any, Callable
12+
from collections.abc import Callable, Mapping
13+
from typing import Any
1414

1515

1616
# unfortunately, the type of HashTrieMap is generic, and if used as an attrs

jsonschema/_typing.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"""
22
Some (initially private) typing helpers for jsonschema's types.
33
"""
4-
from collections.abc import Iterable
5-
from typing import Any, Callable, Protocol, Union
4+
from collections.abc import Callable, Iterable
5+
from typing import Any, Protocol
66

77
import referencing.jsonschema
88

@@ -20,7 +20,7 @@ def __call__(
2020
...
2121

2222

23-
id_of = Callable[[referencing.jsonschema.Schema], Union[str, None]]
23+
id_of = Callable[[referencing.jsonschema.Schema], str | None]
2424

2525

2626
ApplicableValidators = Callable[

noxfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"The Unlicense (Unlicense)",
3838
]
3939

40-
SUPPORTED = ["3.9", "3.10", "pypy3.11", "3.11", "3.12", "3.13"]
40+
SUPPORTED = ["3.10", "pypy3.11", "3.11", "3.12", "3.13", "3.14t", "3.14"]
4141
LATEST_STABLE = SUPPORTED[-1]
4242

4343
nox.options.default_venv_backend = "uv|virtualenv"

pyproject.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ source = "vcs"
88
[project]
99
name = "jsonschema"
1010
description = "An implementation of JSON Schema validation for Python"
11-
requires-python = ">=3.9"
11+
requires-python = ">=3.10"
1212
license = "MIT"
1313
license-files = ["COPYING"]
1414
keywords = [
@@ -26,11 +26,11 @@ classifiers = [
2626
"Intended Audience :: Developers",
2727
"Operating System :: OS Independent",
2828
"Programming Language :: Python",
29-
"Programming Language :: Python :: 3.9",
3029
"Programming Language :: Python :: 3.10",
3130
"Programming Language :: Python :: 3.11",
3231
"Programming Language :: Python :: 3.12",
3332
"Programming Language :: Python :: 3.13",
33+
"Programming Language :: Python :: 3.14",
3434
"Programming Language :: Python :: Implementation :: CPython",
3535
"Programming Language :: Python :: Implementation :: PyPy",
3636
"Topic :: File Formats :: JSON",
@@ -193,7 +193,6 @@ ignore = [
193193
"SLF001", # Private usage within this package itself is fine
194194
"TD", # These TODO style rules are also silly
195195
"TRY003", # Some exception classes are essentially intended for free-form
196-
"UP007", # We support 3.9
197196
]
198197

199198
[tool.ruff.lint.flake8-pytest-style]

uv.lock

Lines changed: 414 additions & 172 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)