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.
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
- Launch
tptpypointed at a directory containing your show command output and templates - Click a
.txtor.logfile — it loads into Source Text - Click a
.textfsmfile — it loads into Template - Hit
Ctrl+Por click ▶ Parse - Review results in JSON or Table view; grab the Python snippet for your project
- Hit
Ctrl+Sto save source orCtrl+Tto 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)
| File | Size | Uploaded | |
|---|---|---|---|
| tptpy-1.0.1.tar.gz | 13.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|