From cac65fa35c515c2fbc3c2cf5b34fabdd70061277 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Fri, 9 Oct 2026 14:37:06 -0400 Subject: [PATCH] build(deps): replace the deprecated pysnmp-lextudio with pysnmp>=7.1 (#5470) #5470 "pysnmp-lextudio is deprecated: every startup logs a RuntimeWarning". Dependency change: the [snmp] extra now installs `pysnmp>=7.1` instead of `pysnmp-lextudio>=6.2`. pysnmp is the same lextudio lineage under its maintained name; the 7.1 floor is because below 7 the name is the abandoned 4.x line with no asyncio API. The poller already finds either API shape (_api(), the engine close probes), so no code changes; its docstring now names what the image ships. Approved by the operator 2026-10-09 ("yes please do the swap"). Co-Authored-By: Claude Opus 5.5 --- plugins/snmp/poller.py | 9 +++++---- pyproject.toml | 5 ++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/plugins/snmp/poller.py b/plugins/snmp/poller.py index 22599e9..0b24713 100644 --- a/plugins/snmp/poller.py +++ b/plugins/snmp/poller.py @@ -1,10 +1,11 @@ # plugins/snmp/poller.py """Ask an SNMP device for its readings, and say in words why it didn't answer. -pysnmp-lextudio 6.x (what the image installs) and canonical pysnmp 7.x put the -asyncio API in different modules with different names; _api() finds whichever -is installed, so a dependency bump can't silently break polling. Without -pysnmp at all the poll reports that instead of raising. +pysnmp 7.x (what the image installs, #5470) and the deprecated +pysnmp-lextudio 6.x put the asyncio API in different modules with different +names; _api() finds whichever is installed, so a dependency change can't +silently break polling. Without pysnmp at all the poll reports that instead +of raising. """ from __future__ import annotations diff --git a/pyproject.toml b/pyproject.toml index de5781d..36b988b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,10 @@ ldap = [ "ldap3>=2.9", ] snmp = [ - "pysnmp-lextudio>=6.2", + # The maintained pysnmp (lextudio's lineage, which took over the name). + # Floor 7.1: below 7 that name is the abandoned 4.x line, which has no + # asyncio API (#5470; the poller uses pysnmp.hlapi.v3arch.asyncio). + "pysnmp>=7.1", ] # Batteries-included Ansible (bundles the common community collections) for the # playbook runner. Installed into the image via Dockerfile `pip install .[ansible]`.