chore: Python 3.12 is the floor, part B (#6) #8

Merged
christianmanivong merged 2 commits from chore/python-312-floor-b into main 2026-10-27 11:38:29 +00:00
5 changed files with 11 additions and 11 deletions
Showing only changes of commit 0f201e0f2d - Show all commits

No files matched your search

+2 -2
View File
@@ -9,8 +9,8 @@ The format follows [Keep a Changelog](https://keepachangelog.com/), versions fol
- Python 3.12 is the floor: the shared workflow tests on 3.12 and 3.13 by default and
runs `lowest` on 3.12, the template declares `requires-python = ">=3.12"` with ruff
and mypy targeting 3.12, and the tool itself needs 3.12. netOrk runs every driver in
its own containers on 3.12, so older versions are no longer tested. `check` keeps
accepting a 3.10 floor until every driver has moved.
its own containers on 3.12, so older versions are no longer tested. `check`
requires `requires-python` ≥ 3.12.
- `check` reports a license given as a TOML table or as a `License ::` classifier:
setuptools refuses both from 2027-02-18 (PEP 639). The template builds with
setuptools>=77.
+1 -1
View File
@@ -178,7 +178,7 @@ release tags:
- **`py.typed`** ships with the package.
`napalm-standard check` verifies: LICENSE, README and CHANGELOG present; the
metadata fields; `requires-python` ≥ 3.10; a floor on `napalm-device-types`; a
metadata fields; `requires-python` ≥ 3.12; a floor on `napalm-device-types`; a
`napalm.drivers` entry point; URLs in the org; `py.typed`; CI in `.gitea/` and no
`.github/`; strict mypy, a coverage source and floor; on a tag, tag = version and a
CHANGELOG section for it.
+1 -1
View File
@@ -22,7 +22,7 @@ from packaging.version import Version
from napalm_standard.changelog import changelog_section
DEVICE_TYPES = "napalm-device-types"
MIN_PYTHON = Version("3.10")
MIN_PYTHON = Version("3.12")
URL_PREFIX = "https://git.netork.io/NAPALM/"
REQUIRED_FILES = ("LICENSE", "README.md", "CHANGELOG.md")
REQUIRED_FIELDS = ("name", "version", "description", "license")
+1 -1
View File
@@ -19,7 +19,7 @@ version = "1.2.0"
description = "NAPALM driver for Example devices"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.10"
requires-python = ">=3.12"
dependencies = [
"napalm>=5.0",
"napalm-device-types>=4.21",
+6 -6
View File
@@ -67,23 +67,23 @@ def test_a_license_table_is_reported(make_repo: RepoFactory, license_line: str)
def test_a_license_classifier_is_reported(make_repo: RepoFactory) -> None:
pyproject = PYPROJECT.replace(
'requires-python = ">=3.10"\n',
'requires-python = ">=3.10"\n'
'requires-python = ">=3.12"\n',
'requires-python = ">=3.12"\n'
'classifiers = ["License :: OSI Approved :: Apache Software License"]\n',
)
assert rules(check_repo(make_repo({"pyproject.toml": pyproject}))) == {"metadata"}
@pytest.mark.parametrize("spec", [">=3.8", ">=3.9", ""])
def test_python_below_310_or_unbounded_is_reported(make_repo: RepoFactory, spec: str) -> None:
pyproject = PYPROJECT.replace('requires-python = ">=3.10"', f'requires-python = "{spec}"')
@pytest.mark.parametrize("spec", [">=3.9", ">=3.10", ">=3.11", ""])
def test_python_below_312_or_unbounded_is_reported(make_repo: RepoFactory, spec: str) -> None:
pyproject = PYPROJECT.replace('requires-python = ">=3.12"', f'requires-python = "{spec}"')
assert rules(check_repo(make_repo({"pyproject.toml": pyproject}))) == {"python"}
def test_a_higher_python_floor_is_fine(make_repo: RepoFactory) -> None:
pyproject = PYPROJECT.replace('">=3.10"', '">=3.11"')
pyproject = PYPROJECT.replace('">=3.12"', '">=3.13"')
assert check_repo(make_repo({"pyproject.toml": pyproject})) == []