Skip to main content

A clean, modern SMI/MIB compiler

Project description

trishul-smi

A clean, modern SNMP MIB compiler written in Python.

PyPI Python License: MIT GitHub Stars GitHub Forks GitHub Issues

trishul-smi fetches, parses, and compiles SNMP MIB definitions (SMIv1 and SMIv2) into structured JSON or pysnmp-compatible Python modules. It resolves transitive imports automatically, caches compiled modules on disk, and ships a CLI that works out-of-the-box with no SNMP toolchain required.


Features

  • Full import closure — resolves every transitive dependency automatically
  • Full OID resolution — all objects carry absolute numeric OID paths after compile
  • Two output formats — structured JSON and pysnmp-compatible Python
  • pysmi-parity pysnmp output — MibTableColumn detection, full TC subtypeSpec, setIndexNames, setOrganization, setRevisions, inline constraint wrappers
  • Reverse conversiontsmi convert FILE.py converts a compiled PySNMP module back to JSON
  • Directory compile modetsmi compile -d /path/to/mibs auto-discovers and compiles every MIB file
  • Concurrent fetching — parallel async HTTP with retry and timeout
  • Pluggable readersFileReader, HttpReader, ZipReader, composable via ReaderChain
  • Disk cache — compiled modules cached with mtime-based TTL; atomic writes
  • Cycle detection — Kahn's algorithm with actionable error messages
  • SMIv1 + SMIv2 — separate Lark grammars, auto-detected per MIB

Installation

pip install trishul-smi

Requires Python ≥ 3.10.


Quick Start

# Compile from a local MIB directory
tsmi compile IF-MIB --mib-dir /usr/share/snmp/mibs

# Fetch from the internet and compile to JSON + pysnmp
tsmi compile IF-MIB IP-MIB -f json -f pysnmp --online -o ./out

Python API:

import asyncio
from pathlib import Path
from trishul_smi import MibCompiler, CompilerConfig
from trishul_smi.reader import FileReader, HttpReader

async def main():
    config = CompilerConfig(output_dir=Path("./out"))
    compiler = MibCompiler(config).add_reader(FileReader("/usr/share/snmp/mibs"))
    # optionally add HTTP: async with HttpReader(*config.sources) as http: compiler.add_reader(http)
    results = await compiler.compile("IF-MIB", "IP-MIB")
    for r in results:
        print(r.name, r.status, r.output_paths)

asyncio.run(main())

Documentation


License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trishul_smi-0.3.1.tar.gz (106.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trishul_smi-0.3.1-py3-none-any.whl (58.7 kB view details)

Uploaded Python 3

File details

Details for the file trishul_smi-0.3.1.tar.gz.

File metadata

  • Download URL: trishul_smi-0.3.1.tar.gz
  • Upload date:
  • Size: 106.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for trishul_smi-0.3.1.tar.gz
Algorithm Hash digest
SHA256 f92d5333acf8939ed5cec674957b2e617697aae237523c5db217dea5ed04145e
MD5 fa7765917c6bb18cf5412933de8edeeb
BLAKE2b-256 5b178bacd96984c6837c42c7253bd5c3026dcda9167581df63ec5096777fc698

See more details on using hashes here.

Provenance

The following attestation bundles were made for trishul_smi-0.3.1.tar.gz:

Publisher: release.yml on tosumitdhaka/trishul-smi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file trishul_smi-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: trishul_smi-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 58.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for trishul_smi-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 daaa4abe56bed8a8abcf3d875db09bc84eb637b566a9fa44045b72552820a6e9
MD5 b3fd16e8e3c7a1771defc845183d8901
BLAKE2b-256 cbe780135fccec6419c58fb40eb034f34f66b7b8c8c66158408325679a9bdf02

See more details on using hashes here.

Provenance

The following attestation bundles were made for trishul_smi-0.3.1-py3-none-any.whl:

Publisher: release.yml on tosumitdhaka/trishul-smi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page