From 20d2670759410a59bfcd466ec8aa4a80c8cfdd21 Mon Sep 17 00:00:00 2001 From: Christian Manivong Date: Tue, 27 Oct 2026 10:18:58 +0100 Subject: [PATCH 1/2] chore: Python 3.12 is the floor (NAPALM/driver-standard#6) netOrk runs every driver in its own containers on Python 3.12, so 3.10 and 3.11 are no longer supported or tested. requires-python, mypy and ruff move to 3.12, along with what ruff's pyupgrade rules then rewrite. --- CHANGELOG.md | 4 ++++ README.md | 2 +- pyproject.toml | 8 +++----- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d911400..86a9fce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ recorded here; their history is the git log. ## [Unreleased] +### Changed +- Python 3.12 is the floor (`requires-python = ">=3.12"`): netOrk runs every driver + on 3.12, so 3.10 and 3.11 are no longer tested (NAPALM/driver-standard#6). + ## [0.7.0] - 2026-10-23 The first release on PyPI. diff --git a/README.md b/README.md index 16bff6e..bbcaf7b 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Requires OpenWrt **19.07** or newer. | Dependency | Minimum version | |---|---| -| Python | 3.10 | +| Python | 3.12 | | NAPALM | 4.0 | | Netmiko | 4.0 | diff --git a/pyproject.toml b/pyproject.toml index a6cd5f4..3656187 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,15 +8,13 @@ version = "0.7.0" description = "NAPALM driver for OpenWrt routers/access-points" readme = "README.md" license = "Apache-2.0" -requires-python = ">=3.10" +requires-python = ">=3.12" authors = [ { name = "Christian Manivong" }, ] classifiers = [ "Topic :: Utilities", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Operating System :: POSIX :: Linux", "Operating System :: MacOS", @@ -49,7 +47,7 @@ napalm_openwrt = ["py.typed"] [tool.ruff] line-length = 100 -target-version = "py310" +target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] @@ -59,7 +57,7 @@ select = ["E", "F", "I", "UP", "B"] "tests/**" = ["E501"] [tool.mypy] -python_version = "3.10" +python_version = "3.12" strict = true # napalm itself is untyped, so every driver subclasses Any. disallow_subclassing_any = false From 14ab92b80b8e26630e7be7976a6db2f8086616d7 Mon Sep 17 00:00:00 2001 From: Christian Manivong Date: Tue, 27 Oct 2026 10:49:29 +0100 Subject: [PATCH 2/2] fix: the floor on napalm is 5.1 (NAPALM/driver-standard#6) napalm 5.0 and older import pkg_resources, which a Python 3.12 venv no longer has, so the lowest job failed on them. --- CHANGELOG.md | 2 ++ pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 86a9fce..39de4cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ recorded here; their history is the git log. ### Changed - Python 3.12 is the floor (`requires-python = ">=3.12"`): netOrk runs every driver on 3.12, so 3.10 and 3.11 are no longer tested (NAPALM/driver-standard#6). +- The floor on napalm is 5.1: older releases import `pkg_resources`, which a Python + 3.12 venv no longer has. ## [0.7.0] - 2026-10-23 diff --git a/pyproject.toml b/pyproject.toml index 3656187..7342c80 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,7 +20,7 @@ classifiers = [ "Operating System :: MacOS", ] dependencies = [ - "napalm>=4.0.0", + "napalm>=5.1", # older releases import pkg_resources, which a 3.12 venv lacks "napalm_device_types>=4.21.1", "netmiko>=4.0.0", "paramiko>=5.0.0", # CVE-2026-44405