Skip to main content

Small, standalone Cisco CLI parsers derived from Cisco's Genie parsers

Project description

Yenie Parser

Yenie Parser is a small Python package for parsing Cisco CLI command output into structured dictionaries without importing the full Cisco Genie/pyATS stack.

The IOS-XE parser set covers command templates adapted from Cisco Genie parser files. Results use Genie-compatible dictionary shapes where the upstream parser defines them.

Install

This package is intended to work with normal Python packaging tools once published:

pip install yenie-parser

For local development with uv:

uv sync
uv run pytest

Usage

Python API

import yenie_parser

parsed = yenie_parser.parse(
    platform="iosxe",
    command="show device-tracking database",
    raw_output=raw_cli_output,
)

CLI

The installed package provides a yenie-parser terminal command:

yenie-parser parse \
  --platform iosxe \
  --command "show device-tracking database" \
  --raw-output "Binding Table has 1 entries, 0 dynamic (limit 200000)"

Multiline command output can also be read from a file or stdin:

yenie-parser parse -p iosxe -c "show device-tracking database" --raw-file output.txt
cat output.txt | yenie-parser parse -p iosxe -c "show device-tracking database"

Parser failure behavior mirrors the Python API:

yenie-parser parse \
  -p iosxe \
  -c "show device-tracking database" \
  --raw-file output.txt \
  --strict \
  --warn \
  --on-failure none

Supported parser templates can be listed or searched:

yenie-parser list
yenie-parser list "authentication s"
yenie-parser list --search "authentication s"
yenie-parser list --command "show authentication sessions"

Package metadata is available with:

yenie-parser --version

Currently, parser supports these platforms:

  • iosxe

The parser accepts only raw command output. It does not connect to devices or execute commands.

By default, parse(...) returns None when parsing fails. That includes unsupported platforms, unsupported commands, ambiguous command matches, parser execution failures, and raw output that matches a command but produces no structured data.

Failure behavior can be adjusted for strict validation, warnings, or legacy fallback values:

parsed = yenie_parser.parse(
    platform="iosxe",
    command="show device-tracking database",
    raw_output=raw_cli_output,
    strict=False,
    warn=False,
    on_failure="none",
)

Supported on_failure values are:

  • "none": return None on failure. This is the default.
  • "empty_dict": return {} on failure for legacy callers.
  • "raw_output": return the original raw_output string on failure.

When strict=True, parse failures raise Yenie Parser exceptions instead of returning the configured on_failure value. When warn=True, parse failures emit a standard-library warning using YenieParserWarning.

Command matching strips extra whitespace and is case-insensitive. It does not rewrite Cisco command tokens, so device-tracking and device tracking are different commands.

Available command templates can be inspected with:

commands = yenie_parser.supported_commands("iosxe")

Parser registry and command-match metadata are cached after first use. If you are developing parser modules in a long-lived Python process, clear those caches with:

yenie_parser.clear_caches()

Attribution

Parser behavior is derived from the Apache-2.0 licensed Cisco Genie parser project:

  • Repository: https://github.com/CiscoTestAutomation/genieparser
  • Source paths:
    • src/genie/libs/parser/iosxe/show_device_tracking.py
    • src/genie/libs/parser/iosxe/show_authentication_sessions.py
    • src/genie/libs/parser/iosxe/show_inventory.py
    • src/genie/libs/parser/iosxe/show_cdp.py
    • src/genie/libs/parser/iosxe/show_arp.py
    • src/genie/libs/parser/iosxe/show_fdb.py
    • src/genie/libs/parser/iosxe/show_interface.py
    • src/genie/libs/parser/iosxe/show_run.py
    • src/genie/libs/parser/iosxe/show_routing.py
    • src/genie/libs/parser/iosxe/show_aaa.py
    • src/genie/libs/parser/iosxe/show_cts.py
    • src/genie/libs/parser/iosxe/show_platform.py

See docs/conversions/ for conversion metadata.

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

yenie_parser-0.5.0.tar.gz (275.4 kB view details)

Uploaded Source

Built Distribution

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

yenie_parser-0.5.0-py3-none-any.whl (284.6 kB view details)

Uploaded Python 3

File details

Details for the file yenie_parser-0.5.0.tar.gz.

File metadata

  • Download URL: yenie_parser-0.5.0.tar.gz
  • Upload date:
  • Size: 275.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yenie_parser-0.5.0.tar.gz
Algorithm Hash digest
SHA256 f9b290e41a88e193938aa7dd7f6698b4d6b2fb7355354bb968f84e6b3a3b9acd
MD5 0cd91b90b64ec08471c0056a37d5cb7b
BLAKE2b-256 192e353ae8644369d1c690a2c6578d63cac667de1d68ca757ecf280abe85eaa3

See more details on using hashes here.

File details

Details for the file yenie_parser-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: yenie_parser-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 284.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for yenie_parser-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e0fda2b70a6a5aa47b0aa83e00f6c84c830590a87bc5441d3492cb19e0ec9ebf
MD5 725ca2ed765af06f8087d38f1307043b
BLAKE2b-256 7041376b4a5dd632dd47d2294e8607a4bcea6f5bf5738c9dea46264dcd35a2fe

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