Skip to content

Commit 9c8ee2c

Browse files
wphillipmoorewphillipmoore-claude
andauthored
feat: extend CI matrix to Python 3.10+ to discover minimum supported version (#322)
Lower requires-python from >=3.12 to >=3.10, expand the CI test matrix to cover 3.10 through 3.14, and fix ruff lint issues triggered by the lower target version (import sorting in scripts, PERF203 in integration tests). No library source changes required — the code supports 3.10 as-is. Refs: #321 Co-authored-by: wphillipmoore-claude <255925739+wphillipmoore-claude@users.noreply.github.com>
1 parent 24813e8 commit 9c8ee2c

8 files changed

Lines changed: 211 additions & 11 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ jobs:
135135
needs: docs-only
136136
strategy:
137137
matrix:
138-
python-version: ["3.12", "3.13", "3.14"]
138+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
139139

140140
steps:
141141
- name: Docs-only short-circuit

pyproject.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ readme = "README.md"
1010
license = "GPL-3.0-or-later"
1111
license-files = ["LICENSE"]
1212
authors = [{ name = "Phillip Moore", email = "w.phillip.moore@gmail.com" }]
13-
requires-python = ">=3.12,<4.0"
13+
requires-python = ">=3.10,<4.0"
1414
keywords = ["ibm", "mq", "mqsc", "rest-api", "messaging", "queue-manager"]
1515
classifiers = [
1616
"Development Status :: 4 - Beta",
1717
"Intended Audience :: Developers",
1818
"Operating System :: OS Independent",
1919
"Programming Language :: Python :: 3",
20+
"Programming Language :: Python :: 3.10",
21+
"Programming Language :: Python :: 3.11",
2022
"Programming Language :: Python :: 3.12",
2123
"Programming Language :: Python :: 3.13",
2224
"Programming Language :: Python :: 3.14",
@@ -62,7 +64,7 @@ pymqrest = ["py.typed", "mapping-data.json"]
6264

6365
[tool.ruff]
6466
line-length = 120
65-
target-version = "py312"
67+
target-version = "py310"
6668
src = ["src", "tests"]
6769
extend-exclude = ["docs/archive"]
6870

@@ -103,7 +105,7 @@ docstring-quotes = "double"
103105
quote-style = "double"
104106

105107
[tool.mypy]
106-
python_version = "3.12"
108+
python_version = "3.10"
107109
strict = true
108110
warn_return_any = true
109111
warn_unused_configs = true

scripts/dev/validate_changelog.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
from __future__ import annotations
55

66
import re
7-
import tomllib
87
from pathlib import Path
98

9+
import tomllib
10+
1011

1112
def load_version() -> str:
1213
"""Load the version from pyproject.toml."""

scripts/dev/validate_dependency_specs.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
from __future__ import annotations
55

66
import re
7-
import tomllib
87
from pathlib import Path
98

9+
import tomllib
10+
1011
ANCHOR_PREFIX = "# Anchor:"
1112
DEPENDENCY_RECORDS_DIR = Path("docs/dependencies")
1213
PYPROJECT_PATH = Path("pyproject.toml")

scripts/dev/validate_pypi_version.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77
import json
88
import re
99
import ssl
10-
import tomllib
1110
import urllib.error
1211
import urllib.request
1312
from dataclasses import dataclass
1413
from pathlib import Path
1514
from typing import TYPE_CHECKING
1615

16+
import tomllib
17+
1718
if TYPE_CHECKING:
1819
from collections.abc import Sequence
1920

scripts/dev/validate_version.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@
77
import os
88
import re
99
import subprocess
10-
import tomllib
1110
from dataclasses import dataclass
1211
from pathlib import Path
1312
from typing import TYPE_CHECKING
1413

14+
import tomllib
15+
1516
if TYPE_CHECKING:
1617
from collections.abc import Sequence
1718

tests/integration/test_mq_integration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,7 @@ def _wait_for_rest_ready(config: IntegrationConfig) -> None:
638638
while time.monotonic() < deadline:
639639
try:
640640
session.display_qmgr()
641-
except MQRESTError as error:
641+
except MQRESTError as error: # noqa: PERF203
642642
last_error = error
643643
time.sleep(MQ_READY_SLEEP_SECONDS)
644644
else:

uv.lock

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

0 commit comments

Comments
 (0)