Skip to main content

A standalone CLI output parser library for network devices

Project description

Muninn

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.

Status

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

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

muninn_parsers-0.2.0.tar.gz (990.2 kB view details)

Uploaded Source

Built Distribution

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

muninn_parsers-0.2.0-py3-none-any.whl (621.9 kB view details)

Uploaded Python 3

File details

Details for the file muninn_parsers-0.2.0.tar.gz.

File metadata

  • Download URL: muninn_parsers-0.2.0.tar.gz
  • Upload date:
  • Size: 990.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for muninn_parsers-0.2.0.tar.gz
Algorithm Hash digest
SHA256 68be951499d722a8d835bdb88a88d850cc6e776bc4fa2bd401703cffa8b90832
MD5 715fad06de29541a34a17e19dc896d39
BLAKE2b-256 4492192410e9c9612767cebc6d3f7d0a84f5fa14a35408b00d26131a6252756f

See more details on using hashes here.

File details

Details for the file muninn_parsers-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: muninn_parsers-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 621.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for muninn_parsers-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2556285bd1c05547da0127d4691d48caf94476db74a5ff569b8ec0957e73c2f3
MD5 d1964418d0dcc346192cae8a95a6d976
BLAKE2b-256 774841b69c4ffbeb4bee95f7cff7ced3f0fe7e5491497cc5003750d5ff272ebe

See more details on using hashes here.

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