Changelog¶
Generated from the commit history at release time. The narrative history through 1.0.5 is in CHANGES.rst.
4.1.1 (2026-09-11)¶
Bug Fixes¶
mibdump: remove the built-in MIB borrowers, all of which are 404 (533c361)
4.1.0 (2026-09-11)¶
Features¶
Bug Fixes¶
4.1.0-rc.2 (2026-09-11)¶
Features¶
Bug Fixes¶
4.1.0-rc.1 (2026-09-11)¶
Features¶
patches: generate a MIB’s repair as a patch instead of making it at runtime (ee01ccc)
4.0.0 (2026-09-10)¶
⚠ BREAKING CHANGES¶
patches: readers implement fetch_data() rather than get_data(); a subclass overriding get_data() still works but skips patching. Patching is on by default – mibdump –no-mib-patches turns it off, –mib-patch-source replaces the bundled set, and AbstractReader.usePatches/patchSet are the library equivalents. pysmi/mibs/asn1 in the source tree now holds the published text for the twelve patched modules; the wheel is unchanged.
Closes #185.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com
mibs: pysmi.mibs.behavior() is gone and generated modules no longer carry a spliced runtime-behavior tail. Consumers relying on that tail must apply their own behavior at load time, as pysnmp now does. PYSNMP-USM-MIB is no longer in PySnmpCodeGen.baseMibs, so a StubSearcher built from it no longer reports that module as up to date.
Features¶
codegen: declare the pysnmp API the generator emits (fe233aa)
corpus: check a build for the invariants a corpus must not violate (08fa621), closes #230 #230 pysnmp/mibs#363 pysnmp/pysnmp#199
corpus: let a build stamp the database it writes (ba93a13), closes #230 pysnmp/pysnmp#199
corpus: make the key encoding part of the conformance contract (ee392d0), closes #184 #230 pysnmp/pysnmp#199
corpus: publish the precedence rule as vectors both projects run (26f0262), closes #248
mibs: attach hand-written runtime behavior to a bundled module (888b944), closes #231
mibs: give snmpEngineTime the elapsed-seconds read RFC 3411 describes (7a8e948), closes #236 #231
patches: carry the patch with the MIB, not with the bundle (8e22340)
Bug Fixes¶
ci: keep the behavior fragments out of mypy’s file list and name the codegen by its module (7dd4952)
codegen: set the encoding a UTF-8 DISPLAY-HINT states (58a3e3f)
corpus: report a damaged corpus rather than raising sqlite3 out of validate (93c40cf)
mibs: re-seed the objects a behavior fragment’s class attribute built (6d91544), closes #236
tests: do not name a directory “we?ird” on a platform that forbids it (d325e5f), closes #235 #235
Code Refactoring¶
4.0.0-rc.4 (2026-09-10)¶
Corrected. The notes generated for this release announced a breaking reader API —
fetch_data(),AbstractReader.usePatches/patchSet,mibdump --no-mib-patches/--mib-patch-source— that the tag does not contain. That API was added and then withdrawn within the same pull request, and only the first commit’sBREAKING CHANGE:footer reached the generator. Nothing in4.0.0-rc.4breaks a caller of4.0.0-rc.3. See #254.The
4.0.0major is still warranted by 4.0.0-rc.1, which removedpysmi.mibs.behavior().
Changes¶
patches: apply the twelve MIB repairs when a distribution is built rather than when the bundle is refreshed (8e22340, 84bb507). The source tree now holds each publisher’s text verbatim and the diffs live in
scripts/mib-patches/, so a refresh diffs against the publisher and what pysmi repairs is a diff of its own.hatch_build.pyapplies them into the distribution, whosepysmi/mibs/asn1/is byte-identical to rc.3’s. Neitherscripts/patches.pynor the diffs are installed. Closes #185.corpus: conformance vectors now cover every column the DDL declares, and the schema version is pinned so a schema change cannot land without the vectors moving with it (c97f985). Closes #251.
4.0.0-rc.3 (2026-09-10)¶
Features¶
3.1.0 (2026-09-10)¶
Features¶
corpus: build core.db, the corpus laid out for lookup (2f7769b), closes pysnmp/pysmi#183 pysnmp/pysnmp#196 pysnmp/pysnmp#199
corpus: publish a conformance fixture for corpus readers (b4b749a), closes pysnmp/pysmi#184 pysnmp/pysnmp#199
Bug Fixes¶
corpus: keep core.db opt-in, key the corpus cache, count nodes once (a12187c)
4.0.0-rc.2 (2026-09-09)¶
Features¶
codegen: declare the pysnmp API the generator emits (fe233aa)
4.0.0-rc.1 (2026-09-09)¶
⚠ BREAKING CHANGES¶
mibs: pysmi.mibs.behavior() is gone and generated modules no longer carry a spliced runtime-behavior tail. Consumers relying on that tail must apply their own behavior at load time, as pysnmp now does. PYSNMP-USM-MIB is no longer in PySnmpCodeGen.baseMibs, so a StubSearcher built from it no longer reports that module as up to date.
Code Refactoring¶
3.1.0-rc.4 (2026-09-09)¶
Features¶
3.1.0-rc.3 (2026-09-09)¶
Bug Fixes¶
3.1.0-rc.2 (2026-09-09)¶
Features¶
corpus: check a build for the invariants a corpus must not violate (08fa621), closes #230 #230 pysnmp/mibs#363 pysnmp/pysnmp#199
corpus: let a build stamp the database it writes (ba93a13), closes #230 pysnmp/pysnmp#199
corpus: make the key encoding part of the conformance contract (ee392d0), closes #184 #230 pysnmp/pysnmp#199
Bug Fixes¶
3.1.0-rc.1 (2026-09-09)¶
Features¶
corpus: build core.db, the corpus laid out for lookup (2f7769b), closes pysnmp/pysmi#183 pysnmp/pysnmp#196 pysnmp/pysnmp#199
corpus: publish a conformance fixture for corpus readers (b4b749a), closes pysnmp/pysmi#184 pysnmp/pysnmp#199
mibs: attach hand-written runtime behavior to a bundled module (888b944), closes #231
Bug Fixes¶
3.0.0 (2026-09-09)¶
⚠ BREAKING CHANGES¶
mibs: the wheel carries 210 ASN.1 modules and 207 precompiled pysnmp modules where it carried 485 and 484. A caller compiling a module that imports one of the 275 now resolves it from its own –mib-source instead of from the bundle. pysmi.mibs.manifest() still names all 485; pysmi.mibs.bundled() is the set an install actually supplies.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_018PviAP7g1mTiiSDn4fRQsq
compiler: a failed MIB no longer suppresses the output of unrelated MIBs compiled in the same call; they are written. mibdump –ignore-errors no longer changes which modules are written – it now suppresses the non-zero exit status instead. A caller that relied on an all-or-nothing batch should compile one module per call.
Refs #182.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01EBV5NVv7NB6R1Wx9vRypt6
codegen: generated pysnmp modules no longer test mibBuilder.version before calling setStatus, setProductRelease, setRevisionsDescriptions or setObjects(append=True), and they now call setReference() on ObjectGroup, NotificationGroup and ModuleCompliance. Loading one requires a pysnmp that implements those setters: pysnmplib 6.0.0rc5 or later, or pysnmp 7.x. A pysnmp 4.4.x runtime, which the removed branches existed for, is no longer supported – recompile against a supported release rather than loading newly generated modules into it.
Closes #194. Refs pysnmp/pysnmp#197.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01EBV5NVv7NB6R1Wx9vRypt6
compiler:
mibdump --repair-importsis replaced bymibdump --strict-imports. The repair it used to request is now what happens; the new flag asks for the old strict behaviour, which is what a caller validating a MIB rather than consuming one wants. Programmatically,repairImports=Falseis the same opt-out and is unchanged. A repair is never silent: every one is listed on the “Repaired MIBs” line of the report and recorded in the symbol table under_symtable_repaired.
Features¶
codegen: canonical form and content hash over the module model (965e559), closes #190 #191 #180
codegen: target the loader contract instead of inferring it (bd5db61), closes pysnmp/pysnmp#133 pysnmp/pysnmp#197
compiler: repair a forced missing import by default, and drop 9 patches (c091932), closes #185 #185
compiler: swap sources on a live compiler, keeping the parse cache (cf1ce44), closes #181
corpus: build a corpus from many source namespaces, deterministically (138d99c), closes pysnmp/pysnmp#196 #183 #182
corpus: let a namespace be resolved against without being published (beffff6), closes #182
mibdump: –build-all compiles every module the sources hold (9d92921)
mibdump: –emit writes every format from one read of the sources (27c5711)
mibs: bundle IPSEC-ISAKMP-IKE-DOI-TC from the draft that defines it (185d962), closes #212 #212
mibs: bundle sFlow.org’s SFLOW-MIB, not RFC 3176’s (cad444e)
mibs: bundle the 119 RFC MIB modules the bundle was still missing (f44d363), closes #212 #212
mibs: bundle the SMIv1 compatibility shims (ed27c8c), closes #161
mibs: bundle the standards modules from pysnmp/mibs src/standard (b18f6e9), closes #187
mibs: hold the 275 bundled modules nothing in the corpus imports (32042ea)
parser: tolerate an OBJECT-TYPE descriptor that starts upper case (51a689b)
pysnmp: state the MODULE-IDENTITY revision as a constant in emitted modules (4ef57ca), closes pysnmp/pysnmp#198
reader: ask a source what MIB modules it holds (ee42ca3)
Bug Fixes¶
build: stop generating the three modules that cannot be generated (95d56fe), closes pysnmp/pysnmp#198 pysnmp/pysnmp#198 #196
cache: identify a parser by its dialect, not just its class (1141971), closes #181
cache: size the in-memory parse cache above a real source set (95ceadc)
compiler: make comment stripping string-aware, and apply it to the inventory (d0f12fa), closes pysnmp/pysnmp#198
compiler: omit only the failed MIB and what imports it (472d6c8)
compiler: the newest revision decides every name, not only bundled ones (86304df)
corpus: keep the docs build and Windows green (bf06c16), closes #182
jsondoc: emit a module whose symbol is spelled like a Python keyword (dd7e2d9), closes #225
jsondoc: keep AGENT-CAPABILITIES variations when texts are off (e5d67a2), closes #196 #198 #190 pysnmp/pysnmp#198 pysnmp/pysnmp#198 #186
jsondoc: suppress prose and nothing else when texts are off (e9f74e2), closes #191 #192 #190 #190 #191 #192
mibinfo: refuse a revision stamp that is not a date (349d7e3), closes #185
mibs: keep the three patches that were correcting more than an import (d992cf9)
mibs: make DSA-MIB and RDBMS-MIB load, by naming the module their symbols are in (bf2008c), closes #199
pysnmp: carry LAST-UPDATED in the revision constant, not the newest REVISION (73f4202), closes pysnmp/pysnmp#198
schema: declare agentcapabilities, and make the schema itself valid (54f85b1), closes #190
schema: require status on agentcapabilities, and list it as a class (126bf58)
tests: fail when a bundled module compiles to nothing (62cedd6), closes #203
writer: create the temporary file with the mode a new file gets (9ff800b), closes #227 #227
writer: store a module anyone can read, not only the user who built it (33943bf), closes #182
3.0.0-rc.8 (2026-09-08)¶
Bug Fixes¶
3.0.0-rc.7 (2026-09-08)¶
Features¶
Bug Fixes¶
3.0.0-rc.6 (2026-09-08)¶
Bug Fixes¶
3.0.0-rc.5 (2026-09-08)¶
⚠ BREAKING CHANGES¶
mibs: the wheel carries 210 ASN.1 modules and 207 precompiled pysnmp modules where it carried 485 and 484. A caller compiling a module that imports one of the 275 now resolves it from its own –mib-source instead of from the bundle. pysmi.mibs.manifest() still names all 485; pysmi.mibs.bundled() is the set an install actually supplies.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_018PviAP7g1mTiiSDn4fRQsq
Features¶
3.0.0-rc.4 (2026-09-08)¶
Features¶
mibs: bundle sFlow.org’s SFLOW-MIB, not RFC 3176’s (cad444e)
3.0.0-rc.3 (2026-09-08)¶
Features¶
Bug Fixes¶
3.0.0-rc.2 (2026-09-08)¶
Features¶
parser: tolerate an OBJECT-TYPE descriptor that starts upper case (51a689b)
3.0.0-rc.1 (2026-09-08)¶
⚠ BREAKING CHANGES¶
compiler: a failed MIB no longer suppresses the output of unrelated MIBs compiled in the same call; they are written. mibdump –ignore-errors no longer changes which modules are written – it now suppresses the non-zero exit status instead. A caller that relied on an all-or-nothing batch should compile one module per call.
Refs #182.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01EBV5NVv7NB6R1Wx9vRypt6
codegen: generated pysnmp modules no longer test mibBuilder.version before calling setStatus, setProductRelease, setRevisionsDescriptions or setObjects(append=True), and they now call setReference() on ObjectGroup, NotificationGroup and ModuleCompliance. Loading one requires a pysnmp that implements those setters: pysnmplib 6.0.0rc5 or later, or pysnmp 7.x. A pysnmp 4.4.x runtime, which the removed branches existed for, is no longer supported – recompile against a supported release rather than loading newly generated modules into it.
Closes #194. Refs pysnmp/pysnmp#197.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01EBV5NVv7NB6R1Wx9vRypt6
compiler:
mibdump --repair-importsis replaced bymibdump --strict-imports. The repair it used to request is now what happens; the new flag asks for the old strict behaviour, which is what a caller validating a MIB rather than consuming one wants. Programmatically,repairImports=Falseis the same opt-out and is unchanged. A repair is never silent: every one is listed on the “Repaired MIBs” line of the report and recorded in the symbol table under_symtable_repaired.
Features¶
codegen: target the loader contract instead of inferring it (bd5db61), closes pysnmp/pysnmp#133 pysnmp/pysnmp#197
compiler: repair a forced missing import by default, and drop 9 patches (c091932), closes #185 #185
compiler: swap sources on a live compiler, keeping the parse cache (cf1ce44), closes #181
mibs: bundle the 119 RFC MIB modules the bundle was still missing (f44d363), closes #212 #212
Bug Fixes¶
cache: identify a parser by its dialect, not just its class (1141971), closes #181
compiler: omit only the failed MIB and what imports it (472d6c8)
mibinfo: refuse a revision stamp that is not a date (349d7e3), closes #185
mibs: keep the three patches that were correcting more than an import (d992cf9)
2.4.0-rc.2 (2026-09-07)¶
Features¶
pysnmp: state the MODULE-IDENTITY revision as a constant in emitted modules (4ef57ca), closes pysnmp/pysnmp#198
Bug Fixes¶
compiler: make comment stripping string-aware, and apply it to the inventory (d0f12fa), closes pysnmp/pysnmp#198
pysnmp: carry LAST-UPDATED in the revision constant, not the newest REVISION (73f4202), closes pysnmp/pysnmp#198
tests: fail when a bundled module compiles to nothing (62cedd6), closes #203
2.4.0-rc.1 (2026-09-07)¶
Features¶
Bug Fixes¶
build: stop generating the three modules that cannot be generated (95d56fe), closes pysnmp/pysnmp#198 pysnmp/pysnmp#198 #196
jsondoc: keep AGENT-CAPABILITIES variations when texts are off (e5d67a2), closes #196 #198 #190 pysnmp/pysnmp#198 pysnmp/pysnmp#198 #186
jsondoc: suppress prose and nothing else when texts are off (e9f74e2), closes #191 #192 #190 #190 #191 #192
schema: declare agentcapabilities, and make the schema itself valid (54f85b1), closes #190
schema: require status on agentcapabilities, and list it as a class (126bf58)
2.3.0 (2026-09-06)¶
Features¶
Bug Fixes¶
2.2.0-rc.3 (2026-09-07)¶
Features¶
Bug Fixes¶
build: stop generating the three modules that cannot be generated (95d56fe), closes pysnmp/pysnmp#198 pysnmp/pysnmp#198 #196
jsondoc: keep AGENT-CAPABILITIES variations when texts are off (e5d67a2), closes #196 #198 #190 pysnmp/pysnmp#198 pysnmp/pysnmp#198 #186
jsondoc: suppress prose and nothing else when texts are off (e9f74e2), closes #191 #192 #190 #190 #191 #192
mibs: drop the three withdrawn IPv6 modules nothing imports (c7c4fb7), closes #173
schema: declare agentcapabilities, and make the schema itself valid (54f85b1), closes #190
schema: require status on agentcapabilities, and list it as a class (126bf58)
2.2.0 (2026-09-06)¶
Features¶
mibdump: write out the base MIBs a JSON tree needs to stand alone (d37c274)
mibs: bundle the standard MIB set, each pinned to its publisher (4533c62), closes #161
mibs: compile the bundled MIBs into pysnmp modules at build time (47e9891)
mibs: report where the pysnmp/mibs mirror disagrees with the bundle (a7c4853), closes pysnmp/mibs#345
say which rule picked a MIB, and let –mib-source outrank the bundle (b2b1448), closes #155
Bug Fixes¶
let a module compiled from a fallback copy report as compiled (26b1927), closes #157 #155
mibdump: report the base MIBs a run may write, not the ones it did (01309b1)
mibs: bundle IANA-GBOND-TC-MIB, and make verify catch what hid it (a2d077c), closes pysnmp/mibs#343
mibs: keep git’s line-ending filters off the bundled MIB bytes (f6741ce)
mibs: track IEEE 802.1 at its current revision, not a pinned file (579da07)
name the copy that actually parsed, under the name it parsed as (f211f0d), closes #155
reader: report an over-long MIB name as missing, not a crash (82699fe), closes #163
report the resolved copy on runs that recompile nothing (25e1e8e), closes #156 #155
2.2.0-rc.2 (2026-09-06)¶
Features¶
mibdump: write out the base MIBs a JSON tree needs to stand alone (d37c274)
mibs: bundle the standard MIB set, each pinned to its publisher (4533c62), closes #161
mibs: compile the bundled MIBs into pysnmp modules at build time (47e9891)
mibs: report where the pysnmp/mibs mirror disagrees with the bundle (a7c4853), closes pysnmp/mibs#345
Bug Fixes¶
mibdump: report the base MIBs a run may write, not the ones it did (01309b1)
mibs: bundle IANA-GBOND-TC-MIB, and make verify catch what hid it (a2d077c), closes pysnmp/mibs#343
mibs: keep git’s line-ending filters off the bundled MIB bytes (f6741ce)
mibs: track IEEE 802.1 at its current revision, not a pinned file (579da07)
reader: report an over-long MIB name as missing, not a crash (82699fe), closes #163
2.2.0-rc.1 (2026-09-06)¶
Features¶
Bug Fixes¶
ci: publish docs from a branch, not a detached HEAD (8ff1ecc)
ci: publish docs from a branch, not a detached HEAD (212f083)
let a module compiled from a fallback copy report as compiled (26b1927), closes #157 #155
name the copy that actually parsed, under the name it parsed as (f211f0d), closes #155
report the resolved copy on runs that recompile nothing (25e1e8e), closes #156 #155
2.1.0 (2026-09-06)¶
Features¶
bundle every base MIB a code generator names (9f1137a)
bundle the standard MIBs real product MIBs import (983a61a)
define source precedence, and let it be checked (28bd6bf), closes #133
repair missing IMPORTS for SMIv2 base symbols behind –repair-imports (c20d753), closes #61
repair SNMPv2-MIB symbols that no SMIv1 MIB also defines (94ce1ef)
Bug Fixes¶
2.1.0-rc.3 (2026-09-06)¶
Bug Fixes¶
ci: publish docs from a branch, not a detached HEAD (212f083)
2.1.0-rc.2 (2026-09-06)¶
Bug Fixes¶
release: give the changelog a title semantic-release owns (32d800a)
2.1.0-rc.1 (2026-09-05)¶
Features¶
bundle every base MIB a code generator names (9f1137a)
bundle the standard MIBs real product MIBs import (983a61a)
define source precedence, and let it be checked (28bd6bf), closes #133
repair missing IMPORTS for SMIv2 base symbols behind –repair-imports (c20d753), closes #61
repair SNMPv2-MIB symbols that no SMIv1 MIB also defines (94ce1ef)