Changelog¶
Generated from the commit history at release time. The narrative history through 5.x is published with the documentation.
6.0.0 (2026-09-29)¶
⚠ BREAKING CHANGES¶
secmod: passwordToKeySHA() returns a different key for the same passphrase and engine ID. Callers who stored keys derived from it must re-derive them. The keys it returned before could not be used against any other implementation.
smi: pysnmp-pysmi is no longer installed with pysnmplib. Code that relied on pysnmp pulling pysmi in – importing pysmi directly, or calling addMibCompiler() – must install pysnmplib[compile] or depend on pysnmp-pysmi explicitly. addMibCompiler() already raised SmiError when pysmi was missing, so what changed is who reaches that path, not what they see on it.
smi: PYSNMP-USM-MIB’s pass-phrase columns report not-accessible where the 2017 rendering left them at MibTableColumn’s read-only default: pysnmpUsmSecretUserName, pysnmpUsmSecretAuthKey, pysnmpUsmSecretPrivKey, pysnmpUsmKeyAuthLocalized, pysnmpUsmKeyPrivLocalized, pysnmpUsmKeyAuth and pysnmpUsmKeyPriv. Every one is not-accessible in the module’s own MAX-ACCESS clause, so a manager could read stored authentication and privacy pass-phrases that the MIB never offered. pysnmp’s internal writes are unaffected: they go through the instrumentation controller with no access-control function, which is where max-access is enforced.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
smi: SNMP-TARGET-MIB::snmpTargetAddrName and snmpTargetParamsName report not-accessible where the 2017 copy said read-only. RFC 3413 declares both IMPLIED INDEX columns and RFC 2578 section 7.3 requires it; nothing becomes unobtainable, since an index column’s value travels in the OID suffix of every row.
smi: SnmpTagValue and SnmpTagList reject an ASCII CR in a tag. RFC 3413 section 4.1.1 defines the delimiters as space, tab, CR and LF; the 2017 copy listed tab twice and omitted CR, so “a\rb” was accepted as a single tag value. Nothing else about the validation changes.
smi: SNMP-FRAMEWORK-MIB::snmpEngineTime has syntax Integer32 rather than a class named SnmpEngineTime. RFC 3411 declares it SYNTAX INTEGER (0..2147483647) and defines no such textual convention – the module’s only TCs are SnmpEngineID, SnmpSecurityModel, SnmpMessageProcessingModel, SnmpSecurityLevel and SnmpAdminString.
Fixes an InetAddress index crash along the way: cloneAsName now clones from the octets rather than an ascii decode of them, so an InetAddress carrying raw address bytes no longer fails its DISPLAY-HINT with “Display format eval failure”.
entity: seven INDEX columns of SNMP-VIEW-BASED-ACM-MIB report not-accessible where the 2017 copy said read-only, per RFC 2578 section 7.3: vacmAccessContextPrefix, vacmAccessSecurityLevel, vacmAccessSecurityModel, vacmSecurityModel, vacmSecurityName, vacmViewTreeFamilySubtree and vacmViewTreeFamilyViewName. Nothing becomes unobtainable – an index column’s value travels in the OID suffix of every row it appears in. The fabricated vacmContextStatus column is gone; nothing outside this repository could have addressed it by name, since it was never in the MIB.
smi: INDEX columns report
not-accessiblewhere the 2017 base layer reportedread-only, which RFC 2578 section 7.3 requires; sixteen columns across six modules, SNMPv2-MIB::sysORIndex among them. Nothing becomes unobtainable – an index column’s value travels in the OID suffix of every row it appears in, so a manager reading the column can read it out of the row identifier instead.RFC1213-MIB::TtcpInSegs(a misspelling of tcpInSegs),RFC1158-MIB::snmpInBadTypesandRFC1158-MIB::snmpOutReadOnlysare gone, none of them declared by any published ASN.1.SNMPv2-MIB::snmpBasicComplianceis nowdeprecatedandsnmpObsoleteGroupobsolete, per RFC 3418, andRFC1213-MIB::atNetAddresshas syntaxIpAddressrather thanNetworkAddress, the single arm RFC 1155 defines that CHOICE to have.deps: pysnmp-pyasn1 must now be >=2.0.0,<3.0.0.
The asyncore and asynsock carriers, the hlapi/asyncore package and the pyasn1.compat.octets shim usage have been removed, the minimum supported Python version is now 3.10, and pycryptodomex is an optional dependency that must be installed explicitly for SNMPv3 privacy. See docs/source/docs/breaking-changes.rst for the full list.
remove all asyncore/asynsock carrier and hlapi shim modules, example scripts, and documentation references.
Deleted:
pysnmp/carrier/asyncore/ (entire directory)
pysnmp/carrier/asynsock/ (entire directory)
pysnmp/hlapi/asyncore/ (entire directory)
examples/v1arch/asyncore/ (10 files)
examples/v3arch/asyncore/ (51 files)
docs/source/examples/v1arch/asyncore/ (7 .rst files)
Updated:
runtests.sh: remove asyncore example paths, point to asyncio examples
docs/source/examples/contents.rst: remove asyncore toctree entries
docs/source/docs/api-reference.rst: remove Legacy asyncore section
docs/source/docs/pysnmp-hlapi-tutorial.rst: remove broken :doc: ref
docs/source/faq/pass-custom-mib-to-manager.rst: remove broken refs
.github/copilot/copilot-instructions.md: remove all asyncore guidance, update to asyncio-only architecture description
pylint-baseline.json: remove 17 asyncore entries
Users should migrate to pysnmp.carrier.asyncio and pysnmp.hlapi.asyncio.
Phase 1: remove deprecated asyncore/asynsock shims, examples, and references (35d318f)
Features¶
6.0 API removals and Python 3.10 baseline (0c20b50), closes #93 #95 #96 #98 #99 #101 #102 #103
add device reporting and MIB instance tools (8c3938e)
carrier: report a transport failure the sender can no longer see (9308d0f)
entity: create VACM context rows without a column RFC 3415 omits (e9563a6), closes #198 #205
entity: give SnmpEngine dispatcher lifecycle and context managers (4c484d9), closes #277 #275
entity: make v1/v2c a runtime policy rather than a packaging split (9ab8727), closes #108 #111
hlapi: add subtree-bounded walk_cmd and bulk_walk_cmd (0f9f994), closes #277 #256
hlapi: make the high-level API snake_case, deprecating camelCase (42d0726), closes #277
implement Phases 1-3 of TODO.txt plan (f688858)
implement RFC 3413 §6 notification filtering (0820030)
lazy cipher backend and weak-crypto configuration warnings (91f7a30), closes #40
proto: read an Opaque-wrapped float as a number (651f3f8), closes #286
secmod: add Diffie-Hellman USM key management (RFC 2786) (72929be), closes PKCS#3 #280
smi: add setReference/getReference to conformance macro classes (78d40af), closes #133
smi: delete the 2017 base layer so pysmi’s modules are the ones that load (59e68ba), closes #205 #198 #205
smi: delete the last five hand-edited base modules (98967d2), closes pysnmp/pysmi#231 #232 pysnmp/pysmi#236 #198
smi: export NetworkAddress from SNMPv2-SMI (652a1ce)
smi: let MIB instrumentation controllers be coroutines (927e63d), closes #287
smi: make pysnmp-pysmi an optional dependency (0d148fb), closes 197/#198 #196
smi: own MIB runtime behavior and render pysnmp’s MIBs from ASN.1 (7579867), closes pysnmp/pysmi#236
smi: publish and version the MIB module loader contract (e044df2), closes #197
smi: read a schema 2 corpus, and answer where a module came from (aa25837)
smi: read PYSNMP_MIB_SOURCES for where the ASN.1 is (d5481be), closes #144
smi: report which source a module came from, and what it shadowed (85a7062)
smi: resolve a module by best match, not by which source answers first (f380447), closes #198
smi: resolve an unknown OID by loading the module a corpus names (41d1521), closes #144
smi: resolve MIBs from a corpus, when asked to (f90f956), closes pysnmp/pysnmp#199 pysnmp/pysnmp#144 pysnmp/pysnmp#145 pysnmp/pysnmp#196
smi: search several MIB corpora as one, ordered by precedence (20f1ef3)
smi: separate name-resolution from value-casting failures (1aaf828), closes #252
smi: take MIB instrumentation to (varBind, **context) (666d7a7), closes #287 #279
Bug Fixes¶
address VACM, proxy coercion, and MIB validation regressions (33753d3)
app: order notification var-binds without duplicating them (52be1da), closes #260
carrier: keep the IPv6 scope ID on the way to sendto() (87cdb76), closes #251
carrier: refuse a transport bound to a different event loop (61c8b12)
carrier: report the family wildcard for an unbound datagram socket (ab23e50), closes #173
ci: install file(1) in the DH agent build stage (0031949)
ci: publish docs from a branch, not a detached HEAD (9002196)
ci: the test group needs ruff, because a test renders MIB modules (a39dfda)
cmdrsp: map genErr errorIndex to 0 when idx is absent (ffb646f)
config: pass integer securityLevel to addVacmAccess (ff2d47a)
correct inet_ntop AF_INET fallback in TRANSPORT-ADDRESS-MIB (34203e4)
debug: make the debug switch callable whether or not debugging is on (921b720)
deps: bump pysnmp-pyasn1 to 1.3.0 (3f4a428), closes #140 #142
deps: bump pysnmp-pyasn1 to 1.3.0rc2 (e12f957), closes #140 #142
deps: put the pyasn1 floor back on a GA (278fc80), closes pysnmp/pysmi#236 #196
deps: require pysnmp-pyasn1 >=1.2.0 and pysnmp-pysmi >=2.0.1 (c6452f3)
deps: require pysnmp-pyasn1 >=2.0.5 (80837eb), closes #334 pysnmp/pyasn1#185 #334 #290
deps: require pysnmp-pyasn1 >=2.0.6 (8f07227)
deps: track pysmi and pyasn1 release candidates (c0a116d)
enable server-mode event loop for snmpsim v3 integration (353422d)
entity: keep an engine importable on PyPy, and split a test group (ab6ba2b)
hlapi: drop a failed lookup where it is picked up, not from its callback (77d285b)
hlapi: honour an explicit securityName in CommunityData (802f370)
hlapi: keep an in-flight address lookup when a caller is cancelled (9be6460), closes #311
hlapi: make the clock fine enough to measure the timeout asked for (764551d), closes #289
hlapi: re-register a v3 user whose credentials changed (b342465), closes #261
hlapi: stop transport target DNS from stalling the event loop (ba657c8), closes #270
proto: reach a request’s execution point once, however it is served (460bd81)
proto: reject a short v2c notification instead of raising IndexError (b18a13e), closes #266
proto: render NetworkAddress as an address, not a Choice dump (f862d2e), closes #271
proto: wrap Counter32, Counter64 and TimeTicks at their ceiling (6a184cb), closes #257
release: repair version replacement and prerelease version parsing (17eb88b)
release: use dev placeholder version so replace plugin always applies (0a75072)
release: use PEP 440-compatible rc prerelease identifier (36300fe)
resolve defects surfaced by the ruff ruleset (fe40c03)
resolve rebased simulator and documentation conflicts (bbc5cec)
secmod: derive the key before the SET and bound DH key generation (d193a7c)
secmod: derive the SHA-1 key from a SHA-1 hash of the passphrase (515c51b), closes #225
secmod: draw a fitting DH public value, and draw it off the loop (44342d7), closes #316
secmod: follow the snake_case rename in the new DH tests (66371ef)
secmod: stop padding AES-CFB128 ciphertext (595eb73), closes #262
smi: accept numeric input for integer TCs carrying a DISPLAY-HINT (7d98e83), closes #150
smi: answer noSuchInstance for an uninitialised scalar (5194fbe), closes #263
smi: avoid mutable default argument in NotificationType (2475bdf)
smi: cache compiled MIBs where the platform says, not in ~/.pysnmp (dd55d68), closes #253
smi: derive the engine ID from platform.node(), not os.uname() (708353a), closes #269
smi: do not end a walk over one row whose index will not decode (1cf042f), closes #252 #255 #255
smi: do not reload a module a newer source appeared for (b954c75), closes #198
smi: drop SNMP-USER-BASED-SM-3DES-MIB (a27bc4b)
smi: encode InetAddress table indices with their length prefix (e4787a8), closes #259
smi: give augmenting rows their index names, and guard the corpus paths (12ed810), closes pysnmp/pysnmp#199 pysnmp/pysnmp#145
smi: key the index cache on the instance OID it was asked about (9720093), closes #255 #252 #255
smi: let a compiler render the texts a corpus cannot carry (d0fffd4), closes #217
smi: let transport-address TCs use the TEXTUAL-CONVENTION machinery (33c91fa), closes #155
smi: make index iteration agree with keys() (ac4354d)
smi: name the archive a zip-imported MIB module came from (a9b19ba), closes #198
smi: pass a legacy walk its original name by position, not by name (751ba67), closes #328
smi: raise SmiError for a corpus path SQLite cannot open (6fe848b)
smi: rank a contested arc by the corpus rule, not by revision alone (0b9b813)
smi: read a zip archive’s directory under its 3.14 name (62237aa)
smi: render the MIB modules target configuration needs (323d7e0)
smi: report a missing MIB from loadModules() with no compiler (adc8ef6), closes #264
smi: report an InetAddressType that contradicts its address (57f49ce), closes #259 #268
smi: resolve a bare InetAddress index without an InetAddressType (89f66b6)
smi: resolve a type IMPORTS points at the wrong module for (d9f1050), closes pysnmp/pysnmp#145 pysnmp/pysnmp#199
smi: return the column default from setValue(None) (b5b3c8e), closes #258
smi: satisfy mypy on the corpus reader’s two optional paths (14967ff)
smi: serve a namespace package as a MIB source (ae8ec7e), closes #265
smi: skip the index cache on values pyasn1 refuses to hash (377df5a), closes #282
smi: stop ignoreErrors gating whether a value can be represented (bde8138), closes #252
tests: do not name a directory “we?ird” on a platform that forbids it (401d73e), closes #211 #211
tests: make the corpus suite run in CI instead of skipping itself (29df876), closes pysnmp/pysnmp#199 pysnmp/pysmi#184
tests: wait out held operations without asyncio.timeout (0c0d3c0)
tolerate undecodable OID values and hostile BER on the receive path (e32583b)
tools: name the libraries in the comparison table when runs disagree (512d4ca)
typing: declare the carrier, mpmod and secmod base attributes (37bbf9a)
typing: give abstract base attributes the type their subclasses use (6c28cbc)
typing: stop except: targets shadowing names the function still uses (8bec4fa)
typing: type-clean the package and enable the mypy pre-commit hook (bbe8983), closes pysnmp/pyasn1#165 #178
update deprecated GitHub Actions versions and Python 3.7→3.8 (9074dd9)
update Sphinx to >=5.0 and fix all doc build warnings (55d3b60)
update Sphinx to >=5.0 and fix all doc build warnings (7acc27f)
Performance Improvements¶
Miscellaneous Chores¶
deps: bump pysnmp-pyasn1 to 2.0.0 and pysnmp-pysmi to 2.1.0 (bd3a7e1)
6.0.0-rc.18 (2026-09-24)¶
Bug Fixes¶
deps: cap pysnmp-pyasn1 below 1.2.0 so 5.x installs again (05ec299)
6.0.0-rc.17 (2026-09-21)¶
Features¶
Bug Fixes¶
deps: require pysnmp-pyasn1 >=2.0.5 (80837eb), closes #334 pysnmp/pyasn1#185 #334 #290
deps: require pysnmp-pyasn1 >=2.0.6 (8f07227)
proto: reach a request’s execution point once, however it is served (460bd81)
smi: pass a legacy walk its original name by position, not by name (751ba67), closes #328
tests: wait out held operations without asyncio.timeout (0c0d3c0)
tools: name the libraries in the comparison table when runs disagree (512d4ca)
6.0.0-rc.16 (2026-09-20)¶
Features¶
carrier: report a transport failure the sender can no longer see (9308d0f)
entity: give SnmpEngine dispatcher lifecycle and context managers (4c484d9), closes #277 #275
hlapi: add subtree-bounded walk_cmd and bulk_walk_cmd (0f9f994), closes #277 #256
hlapi: make the high-level API snake_case, deprecating camelCase (42d0726), closes #277
proto: read an Opaque-wrapped float as a number (651f3f8), closes #286
secmod: add Diffie-Hellman USM key management (RFC 2786) (72929be), closes PKCS#3 #280
smi: export NetworkAddress from SNMPv2-SMI (652a1ce)
smi: separate name-resolution from value-casting failures (1aaf828), closes #252
Bug Fixes¶
app: order notification var-binds without duplicating them (52be1da), closes #260
carrier: keep the IPv6 scope ID on the way to sendto() (87cdb76), closes #251
carrier: refuse a transport bound to a different event loop (61c8b12)
ci: install file(1) in the DH agent build stage (0031949)
ci: the test group needs ruff, because a test renders MIB modules (a39dfda)
entity: keep an engine importable on PyPy, and split a test group (ab6ba2b)
hlapi: drop a failed lookup where it is picked up, not from its callback (77d285b)
hlapi: keep an in-flight address lookup when a caller is cancelled (9be6460), closes #311
hlapi: make the clock fine enough to measure the timeout asked for (764551d), closes #289
hlapi: re-register a v3 user whose credentials changed (b342465), closes #261
hlapi: stop transport target DNS from stalling the event loop (ba657c8), closes #270
proto: reject a short v2c notification instead of raising IndexError (b18a13e), closes #266
proto: render NetworkAddress as an address, not a Choice dump (f862d2e), closes #271
proto: wrap Counter32, Counter64 and TimeTicks at their ceiling (6a184cb), closes #257
secmod: derive the key before the SET and bound DH key generation (d193a7c)
secmod: draw a fitting DH public value, and draw it off the loop (44342d7), closes #316
secmod: follow the snake_case rename in the new DH tests (66371ef)
secmod: stop padding AES-CFB128 ciphertext (595eb73), closes #262
smi: answer noSuchInstance for an uninitialised scalar (5194fbe), closes #263
smi: cache compiled MIBs where the platform says, not in ~/.pysnmp (dd55d68), closes #253
smi: derive the engine ID from platform.node(), not os.uname() (708353a), closes #269
smi: do not end a walk over one row whose index will not decode (1cf042f), closes #252 #255 #255
smi: encode InetAddress table indices with their length prefix (e4787a8), closes #259
smi: key the index cache on the instance OID it was asked about (9720093), closes #255 #252 #255
smi: report a missing MIB from loadModules() with no compiler (adc8ef6), closes #264
smi: report an InetAddressType that contradicts its address (57f49ce), closes #259 #268
smi: resolve a bare InetAddress index without an InetAddressType (89f66b6)
smi: return the column default from setValue(None) (b5b3c8e), closes #258
smi: serve a namespace package as a MIB source (ae8ec7e), closes #265
smi: skip the index cache on values pyasn1 refuses to hash (377df5a), closes #282
smi: stop ignoreErrors gating whether a value can be represented (bde8138), closes #252
Performance Improvements¶
6.0.0-rc.15 (2026-09-18)¶
Bug Fixes¶
smi: render the MIB modules target configuration needs (323d7e0)
6.0.0-rc.14 (2026-09-17)¶
6.0.0-rc.13 (2026-09-16)¶
6.0.0-rc.12 (2026-09-14)¶
Features¶
smi: read a schema 2 corpus, and answer where a module came from (aa25837)
6.0.0-rc.11 (2026-09-11)¶
⚠ BREAKING CHANGES¶
secmod: passwordToKeySHA() returns a different key for the same passphrase and engine ID. Callers who stored keys derived from it must re-derive them. The keys it returned before could not be used against any other implementation.
smi: pysnmp-pysmi is no longer installed with pysnmplib. Code that relied on pysnmp pulling pysmi in – importing pysmi directly, or calling addMibCompiler() – must install pysnmplib[compile] or depend on pysnmp-pysmi explicitly. addMibCompiler() already raised SmiError when pysmi was missing, so what changed is who reaches that path, not what they see on it.
smi: PYSNMP-USM-MIB’s pass-phrase columns report not-accessible where the 2017 rendering left them at MibTableColumn’s read-only default: pysnmpUsmSecretUserName, pysnmpUsmSecretAuthKey, pysnmpUsmSecretPrivKey, pysnmpUsmKeyAuthLocalized, pysnmpUsmKeyPrivLocalized, pysnmpUsmKeyAuth and pysnmpUsmKeyPriv. Every one is not-accessible in the module’s own MAX-ACCESS clause, so a manager could read stored authentication and privacy pass-phrases that the MIB never offered. pysnmp’s internal writes are unaffected: they go through the instrumentation controller with no access-control function, which is where max-access is enforced.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
smi: SNMP-TARGET-MIB::snmpTargetAddrName and snmpTargetParamsName report not-accessible where the 2017 copy said read-only. RFC 3413 declares both IMPLIED INDEX columns and RFC 2578 section 7.3 requires it; nothing becomes unobtainable, since an index column’s value travels in the OID suffix of every row.
smi: SnmpTagValue and SnmpTagList reject an ASCII CR in a tag. RFC 3413 section 4.1.1 defines the delimiters as space, tab, CR and LF; the 2017 copy listed tab twice and omitted CR, so “a\rb” was accepted as a single tag value. Nothing else about the validation changes.
smi: SNMP-FRAMEWORK-MIB::snmpEngineTime has syntax Integer32 rather than a class named SnmpEngineTime. RFC 3411 declares it SYNTAX INTEGER (0..2147483647) and defines no such textual convention – the module’s only TCs are SnmpEngineID, SnmpSecurityModel, SnmpMessageProcessingModel, SnmpSecurityLevel and SnmpAdminString.
Fixes an InetAddress index crash along the way: cloneAsName now clones from the octets rather than an ascii decode of them, so an InetAddress carrying raw address bytes no longer fails its DISPLAY-HINT with “Display format eval failure”.
Features¶
entity: make v1/v2c a runtime policy rather than a packaging split (9ab8727), closes #108 #111
smi: delete the last five hand-edited base modules (98967d2), closes pysnmp/pysmi#231 #232 pysnmp/pysmi#236 #198
smi: make pysnmp-pysmi an optional dependency (0d148fb), closes 197/#198 #196
smi: own MIB runtime behavior and render pysnmp’s MIBs from ASN.1 (7579867), closes pysnmp/pysmi#236
smi: read PYSNMP_MIB_SOURCES for where the ASN.1 is (d5481be), closes #144
smi: report which source a module came from, and what it shadowed (85a7062)
smi: resolve an unknown OID by loading the module a corpus names (41d1521), closes #144
smi: resolve MIBs from a corpus, when asked to (f90f956), closes pysnmp/pysnmp#199 pysnmp/pysnmp#144 pysnmp/pysnmp#145 pysnmp/pysnmp#196
smi: search several MIB corpora as one, ordered by precedence (20f1ef3)
Bug Fixes¶
deps: put the pyasn1 floor back on a GA (278fc80), closes pysnmp/pysmi#236 #196
secmod: derive the SHA-1 key from a SHA-1 hash of the passphrase (515c51b), closes #225
smi: drop SNMP-USER-BASED-SM-3DES-MIB (a27bc4b)
smi: give augmenting rows their index names, and guard the corpus paths (12ed810), closes pysnmp/pysnmp#199 pysnmp/pysnmp#145
smi: let a compiler render the texts a corpus cannot carry (d0fffd4), closes #217
smi: raise SmiError for a corpus path SQLite cannot open (6fe848b)
smi: rank a contested arc by the corpus rule, not by revision alone (0b9b813)
smi: resolve a type IMPORTS points at the wrong module for (d9f1050), closes pysnmp/pysnmp#145 pysnmp/pysnmp#199
smi: satisfy mypy on the corpus reader’s two optional paths (14967ff)
tests: do not name a directory “we?ird” on a platform that forbids it (401d73e), closes #211 #211
tests: make the corpus suite run in CI instead of skipping itself (29df876), closes pysnmp/pysnmp#199 pysnmp/pysmi#184
6.0.0-rc.10 (2026-09-08)¶
⚠ BREAKING CHANGES¶
entity: seven INDEX columns of SNMP-VIEW-BASED-ACM-MIB report not-accessible where the 2017 copy said read-only, per RFC 2578 section 7.3: vacmAccessContextPrefix, vacmAccessSecurityLevel, vacmAccessSecurityModel, vacmSecurityModel, vacmSecurityName, vacmViewTreeFamilySubtree and vacmViewTreeFamilyViewName. Nothing becomes unobtainable – an index column’s value travels in the OID suffix of every row it appears in. The fabricated vacmContextStatus column is gone; nothing outside this repository could have addressed it by name, since it was never in the MIB.
smi: INDEX columns report
not-accessiblewhere the 2017 base layer reportedread-only, which RFC 2578 section 7.3 requires; sixteen columns across six modules, SNMPv2-MIB::sysORIndex among them. Nothing becomes unobtainable – an index column’s value travels in the OID suffix of every row it appears in, so a manager reading the column can read it out of the row identifier instead.RFC1213-MIB::TtcpInSegs(a misspelling of tcpInSegs),RFC1158-MIB::snmpInBadTypesandRFC1158-MIB::snmpOutReadOnlysare gone, none of them declared by any published ASN.1.SNMPv2-MIB::snmpBasicComplianceis nowdeprecatedandsnmpObsoleteGroupobsolete, per RFC 3418, andRFC1213-MIB::atNetAddresshas syntaxIpAddressrather thanNetworkAddress, the single arm RFC 1155 defines that CHOICE to have.
Features¶
entity: create VACM context rows without a column RFC 3415 omits (e9563a6), closes #198 #205
smi: delete the 2017 base layer so pysmi’s modules are the ones that load (59e68ba), closes #205 #198 #205
smi: publish and version the MIB module loader contract (e044df2), closes #197
smi: resolve a module by best match, not by which source answers first (f380447), closes #198
Bug Fixes¶
carrier: report the family wildcard for an unbound datagram socket (ab23e50), closes #173
smi: do not reload a module a newer source appeared for (b954c75), closes #198
smi: name the archive a zip-imported MIB module came from (a9b19ba), closes #198
smi: read a zip archive’s directory under its 3.14 name (62237aa)
Performance Improvements¶
6.0.0-rc.9 (2026-09-06)¶
⚠ BREAKING CHANGES¶
deps: pysnmp-pyasn1 must now be >=2.0.0,<3.0.0.
Bug Fixes¶
debug: make the debug switch callable whether or not debugging is on (921b720)
deps: track pysmi and pyasn1 release candidates (c0a116d)
smi: make index iteration agree with keys() (ac4354d)
typing: declare the carrier, mpmod and secmod base attributes (37bbf9a)
typing: give abstract base attributes the type their subclasses use (6c28cbc)
typing: stop except: targets shadowing names the function still uses (8bec4fa)
typing: type-clean the package and enable the mypy pre-commit hook (bbe8983), closes pysnmp/pyasn1#165 #178
Miscellaneous Chores¶
deps: bump pysnmp-pyasn1 to 2.0.0 and pysnmp-pysmi to 2.1.0 (bd3a7e1)
6.0.0-rc.8 (2026-09-06)¶
Bug Fixes¶
ci: publish docs from a branch, not a detached HEAD (9002196)