Skip to main content

tptpy

A terminal UI for interactively testing TextFSM and TTP templates against network device output — with live parsed results and auto-generated Python snippets you can drop straight into your automation.

Parse Tester TUI

What this is for and why

Writing TextFSM and TTP templates is an iterative process: tweak the template, run it, check the output, repeat. Most workflows involve bouncing between a text editor, a Python REPL, and maybe a browser-based tool that doesn't have your files.

tptpy puts everything in one screen:

  • Source text (left top) — paste or load device output from the file tree
  • Template (right top) — your TextFSM or TTP template
  • Parsed result (left bottom) — JSON or table view, updated on each parse
  • Python snippet (right bottom) — a self-contained script embedding your source + template, ready to copy

The directory tree auto-routes files: .textfsm, .template, .ttp, and .tpl extensions load into the template pane; everything else loads into the source pane.

Installation

From PyPI

pip install tptpy

From Source

git clone https://github.com/scottpeterman/tptpy.git
cd tptpy
pip install .

Development

git clone https://github.com/scottpeterman/tptpy.git
cd tptpy
pip install -e ".[dev]"

Usage

# Launch in current directory
tptpy

# Launch rooted at a specific project
tptpy ~/templates/bgp

# Or run as a module
python -m tptpy ~/templates/bgp

Keyboard Shortcuts

Key Action
Ctrl+P Run parse
Ctrl+S Save source pane (directory picker)
Ctrl+T Save template pane (directory picker)
Ctrl+R Focus the root path input
F2 Rename selected file/folder
Delete Delete selected file/folder
Ctrl+Q Quit

Supported Parsers

Parser Template Style Best For
TextFSM Value declarations + regex state machine Structured CLI output (show commands)
TTP Template with {{ variable }} placeholders Output that closely mirrors the template shape

Features

  • Four-pane layout — source, template, results, and snippet visible simultaneously
  • File tree with smart routing — template extensions auto-load to the template pane
  • File management — create, rename, and delete files and folders directly from the sidebar
  • Save with directory picker — save source or template content to any location in your project tree
  • JSON and table views — toggle between structured JSON and a tabular DataTable
  • Actionable error messages — parse failures include line numbers, context, and fix hints
  • Auto-generated snippets — each successful parse produces a standalone Python script
  • Filtered directory tree — shows only text and template files (.txt, .log, .cfg, .textfsm, .ttp, .yaml, .json, etc.)

Quick Example

  1. Launch tptpy pointed at a directory containing your show command output and templates
  2. Click a .txt or .log file — it loads into Source Text
  3. Click a .textfsm file — it loads into Template
  4. Hit Ctrl+P or click ▶ Parse
  5. Review results in JSON or Table view; grab the Python snippet for your project
  6. Hit Ctrl+S to save source or Ctrl+T to save your template — pick the directory and filename

Requirements

  • Python 3.10+
  • Textual — TUI framework
  • TextFSM — Google's template-based state machine parser
  • TTP — Template Text Parser

Project Structure

tptpy/
├── pyproject.toml
├── README.md
├── screenshots/
│   └── tui1.png
└── tptpy/
    ├── __init__.py
    └── __main__.py

License

MIT

Author

Scott Peterman — Principal Infrastructure Engineer, network automation toolsmith. Part of a broader toolkit for practical network engineering: github.com/scottpeterman

Metadata

Release files for tptpy 1.0.1

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

Source distribution (sdist)

Source distribution for tptpy 1.0.1
File Size Uploaded
tptpy-1.0.1.tar.gz 13.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tptpy 1.0.1
File Interpreter ABI Platform
tptpy-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 24.6 kB

Release files / tptpy-1.0.1.tar.gz

Download URL tptpy-1.0.1.tar.gz
Size 13.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0a763d932e6bc2729bbd7571ba39b676c73310e61a4bdf183bd4b94714f3d496
BLAKE2b-256 checksum
How to use checksums
88b5041859e32d22c496d3226750bceee25bdf97c0a4173fcf920b4b7f799216
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / tptpy-1.0.1-py3-none-any.whl

Download URL tptpy-1.0.1-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21a78a4917362d5ad8579db2b5e5818b9f827253604f71d20b5f8fbddbe8d8e7
BLAKE2b-256 checksum
How to use checksums
8afb619f1356ba93e4d5ee2d0bd7cb441d680b62a536d3209f42c920cef7baf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0.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