Skip to content

Commit a200c72

Browse files
authored
Merge pull request #29 from techouse/chore/widen-python-support
⬆️ widen Python support
2 parents 634eb01 + 8e39726 commit a200c72

File tree

7 files changed

+24
-10
lines changed

7 files changed

+24
-10
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ jobs:
4242
strategy:
4343
matrix:
4444
include:
45+
- toxenv: "python3.8"
46+
py: "3.8"
4547
- toxenv: "python3.9"
4648
py: "3.9"
4749
- toxenv: "python3.10"
@@ -52,6 +54,8 @@ jobs:
5254
py: "3.12"
5355
- toxenv: "python3.13"
5456
py: "3.13"
57+
- toxenv: "python3.14"
58+
py: "3.14"
5559
steps:
5660
- uses: actions/checkout@v5
5761
- name: Set up Python ${{ matrix.py }}

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ related to the project.
1111

1212
## Python version support
1313

14-
Currently, the package supports Python versions 3.9 and above. Once a new Python version is released, we will aim to
14+
Currently, the package supports Python versions 3.8 and above. Once a new Python version is released, we will aim to
1515
support it as soon as possible. If you encounter any issues with a new Python version, please create an issue in the
1616
repository.
1717

pyproject.toml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ description = "A query string encoding and decoding library for Python. Ported f
88
readme = { file = "README.rst", content-type = "text/x-rst" }
99
license = "BSD-3-Clause"
1010
license-files = ["LICENSE"]
11-
requires-python = ">=3.9"
11+
requires-python = ">=3.8"
1212
authors = [
1313
{ name = "Klemen Tusar", email = "techouse@gmail.com" },
1414
]
@@ -25,11 +25,13 @@ classifiers = [
2525
"Operating System :: OS Independent",
2626
"Programming Language :: Python",
2727
"Programming Language :: Python :: 3",
28+
"Programming Language :: Python :: 3.8",
2829
"Programming Language :: Python :: 3.9",
2930
"Programming Language :: Python :: 3.10",
3031
"Programming Language :: Python :: 3.11",
3132
"Programming Language :: Python :: 3.12",
3233
"Programming Language :: Python :: 3.13",
34+
"Programming Language :: Python :: 3.14",
3335
"Programming Language :: Python :: 3 :: Only",
3436
"Programming Language :: Python :: Implementation :: CPython",
3537
"Topic :: Internet :: WWW/HTTP",
@@ -49,9 +51,9 @@ PayPal = "https://paypal.me/ktusar"
4951

5052
[project.optional-dependencies]
5153
dev = [
52-
"pytest>=8.3.5",
53-
"pytest-cov>=6.0.0",
54-
"mypy>=1.15.0",
54+
"pytest>=8.1.2",
55+
"pytest-cov>=5.0.0",
56+
"mypy>=1.10.0",
5557
"toml>=0.10.2",
5658
"tox",
5759
"black",
@@ -78,7 +80,7 @@ include = ["src/qs_codec/py.typed"]
7880

7981
[tool.black]
8082
line-length = 120
81-
target-version = ["py39", "py310", "py311", "py312", "py313"]
83+
target-version = ["py38", "py39", "py310", "py311", "py312", "py313", "py314"]
8284
include = '\.pyi?$'
8385
exclude = '''
8486
(
@@ -116,7 +118,7 @@ markers = []
116118

117119
[tool.mypy]
118120
mypy_path = "src"
119-
python_version = "3.9"
121+
python_version = "3.8"
120122
exclude = [
121123
"tests",
122124
"docs",

requirements_dev.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
pytest>=8.3.5
2-
pytest-cov>=6.0.0
3-
mypy>=1.15.0
1+
pytest>=8.1.2
2+
pytest-cov>=5.0.0
3+
mypy>=1.10.0
44
toml>=0.10.2
55
tox
66
black

src/qs_codec/decode.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
so that behavior across ports stays predictable and easy to verify with shared test vectors.
1313
"""
1414

15+
from __future__ import annotations
16+
1517
import re
1618
import typing as t
1719
from collections.abc import Mapping

src/qs_codec/models/weak_wrapper.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
"""Weakly wrap *any* object with identity equality and deep content hashing."""
22

3+
from __future__ import annotations
4+
35
import reprlib
46
import typing as t
57
from threading import RLock

tox.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,27 @@
11
[tox]
22
isolated_build = true
33
envlist =
4+
python3.8,
45
python3.9,
56
python3.10,
67
python3.11,
78
python3.12,
89
python3.13,
10+
python3.14,
911
black,
1012
flake8,
1113
linters,
1214
skip_missing_interpreters = true
1315

1416
[gh-actions]
1517
python =
18+
3.8: python3.8
1619
3.9: python3.9
1720
3.10: python3.10
1821
3.11: python3.11
1922
3.12: python3.12
2023
3.13: python3.13
24+
3.14: python3.14
2125

2226
[testenv]
2327
deps =

0 commit comments

Comments
 (0)