build(deps): replace the deprecated pysnmp-lextudio with pysnmp>=7.1 (#5470)
CI / lint (push) Successful in 2s
CI / integration (push) Successful in 1m27s
CI / unit (push) Successful in 1m28s
CI / publish (push) Successful in 1m27s

#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 <noreply@anthropic.com>
This commit is contained in:
2026-10-09 14:37:06 -04:00
co-authored by Claude Opus 5.5
parent 0b2fbf13fc
commit cac65fa35c
2 changed files with 9 additions and 5 deletions
+5 -4
View File
@@ -1,10 +1,11 @@
# plugins/snmp/poller.py # plugins/snmp/poller.py
"""Ask an SNMP device for its readings, and say in words why it didn't answer. """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 pysnmp 7.x (what the image installs, #5470) and the deprecated
asyncio API in different modules with different names; _api() finds whichever pysnmp-lextudio 6.x put the asyncio API in different modules with different
is installed, so a dependency bump can't silently break polling. Without names; _api() finds whichever is installed, so a dependency change can't
pysnmp at all the poll reports that instead of raising. silently break polling. Without pysnmp at all the poll reports that instead
of raising.
""" """
from __future__ import annotations from __future__ import annotations
+4 -1
View File
@@ -28,7 +28,10 @@ ldap = [
"ldap3>=2.9", "ldap3>=2.9",
] ]
snmp = [ 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 # Batteries-included Ansible (bundles the common community collections) for the
# playbook runner. Installed into the image via Dockerfile `pip install .[ansible]`. # playbook runner. Installed into the image via Dockerfile `pip install .[ansible]`.