Skip to main content

Muninn

CI pre-commit PyPI version PyPI downloads Python versions License

Muninn is a library that transforms unstructured network device CLI output into structured, type-hinted Python data structures.

Why Muninn?

  • Standalone - No framework dependencies. Install and use it in any Python project.
  • Simple API - Muninn().parse(os, command, output) and you're done.
  • Well-tested - Every parser has test cases with platform and software version metadata.
  • Type-aware - Import individual parsers to get TypedDict return types that describe the parsed data structure, enabling IDE autocompletion and better AI-assisted coding.
  • Extensible - Load your own local parsers alongside built-in ones.

Installation

Muninn can be quickly and easily installed with uv as shown below:

uv add muninn-parsers

Or, if you prefer good old-fashioned pip, you can do so as shown below:

pip install muninn-parsers

Quick Examples

Auto-Discovering Parsers

Create a Muninn instance and call parse() with an OS identifier, the CLI command, and the raw output. Muninn automatically finds and runs the right parser:

from typing import Any

import muninn

mn = muninn.Muninn()

raw_output = """
Neighbor ID     Pri   State           Dead Time   Address         Interface
10.1.1.1          1   FULL/DR         00:00:38    192.168.1.1     Ethernet1/1
10.1.1.2          1   FULL/BDR        00:00:33    192.168.1.2     Ethernet1/2
"""

result: dict[str, Any] = mn.parse("nxos", "show ip ospf neighbor", raw_output)

Returns:

{
  "10.1.1.1": {
    "priority": 1,
    "state": "FULL/DR",
    "dead_time": "00:00:38",
    "address": "192.168.1.1",
    "interface": "Ethernet1/1"
  },
  "10.1.1.2": {
    "priority": 1,
    "state": "FULL/BDR",
    "dead_time": "00:00:33",
    "address": "192.168.1.2",
    "interface": "Ethernet1/2"
  }
}

Using a Parser Directly

You can also import a specific parser and call it directly. This gives you access to the parser's TypedDict return type, which enables IDE autocompletion and helps AI coding assistants reason about the structure of the parsed data:

from muninn.parsers.nxos.show_ip_ospf_neighbor import (
    ShowIpOspfNeighborParser,
    ShowIpOspfNeighborResult,
)

raw_output = """
Neighbor ID     Pri   State           Dead Time   Address         Interface
10.1.1.1          1   FULL/DR         00:00:38    192.168.1.1     Ethernet1/1
10.1.1.2          1   FULL/BDR        00:00:33    192.168.1.2     Ethernet1/2
"""

result: ShowIpOspfNeighborResult = ShowIpOspfNeighborParser.parse(raw_output)
# IDE autocompletion and type checking work here

Documentation

Full documentation is available at chartinolabs.github.io/Muninn.

Acknowledgments

Status

Early development. See the Design Philosophy page for project direction.

Metadata

Release files for muninn-parsers 0.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for muninn-parsers 0.7.0
File Size Uploaded
muninn_parsers-0.7.0.tar.gz 1.8 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for muninn-parsers 0.7.0
File Interpreter ABI Platform
muninn_parsers-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.2 MB

Release files / muninn_parsers-0.7.0.tar.gz

Download URL muninn_parsers-0.7.0.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
25bd95877cf79d248dbe10924d15e2dce1cf69438b6f9ed8aac7cb747187bb3e
BLAKE2b-256 checksum
How to use checksums
63c7433c7833f7115725c921ba9d45b3fb7bfd5a3253bb428aa6142145c61054
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.

Transparency log

Release files / muninn_parsers-0.7.0-py3-none-any.whl

Download URL muninn_parsers-0.7.0-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
95fbf243226cc18ba418ca9c6cd936193f392ca091ffbfe9a45a395b773ec10c
BLAKE2b-256 checksum
How to use checksums
c2a11a07a899be270eb8800e0202aa5b6ff344accdebf18ff812dc028222efe2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page