Visualize your Python code execution flow as Mermaid Sequence Diagrams.
Project description
MermaidTrace: Visualize Your Python Code Logic
Stop drowning in cryptic logs. One line of code to transform complex execution logic into clear Mermaid sequence diagrams.
⚡️ Understand MermaidTrace in 5 Seconds
1. Original Code (15+ lines)
@trace(source="User", target="OrderSys")
def create_order(user_id, items):
# Complex business logic
if not check_inventory(items):
return "Out of Stock"
# Nested logic calls
price = calculate_price(items)
discount = get_discount(user_id)
final = price - discount
# External service interactions
res = pay_service.process(final)
if res.success:
update_stock(items)
send_notif(user_id)
return "Success"
return "Failed"
2. Auto-Generated Sequence Diagram
sequenceDiagram
autonumber
User->>OrderSys: create_order(user_id, items)
activate OrderSys
OrderSys->>Inventory: check_inventory(items)
Inventory-->>OrderSys: True
OrderSys->>Pricing: calculate_price(items)
Pricing-->>OrderSys: 100.0
OrderSys->>UserDB: get_discount(user_id)
UserDB-->>OrderSys: 5.0
OrderSys->>PayService: process(95.0)
activate PayService
PayService-->>OrderSys: success
deactivate PayService
OrderSys->>Inventory: update_stock(items)
OrderSys->>Notification: send_notif(user_id)
OrderSys-->>User: "Success"
deactivate OrderSys
🚀 Dynamic Demo & Online Tryout
🎬 Quick Demo
(Master Preview: Multi-file browsing, live-reload, and interactive pan/zoom)
sequenceDiagram
participant CLI as mermaid-trace CLI
participant App as Python App
participant Web as Live Preview
Note over CLI, Web: Enable Live Preview Mode
CLI->>Web: Start HTTP Server (localhost:8000)
App->>App: Run Logic (with @trace decorator)
App->>App: Auto-update flow.mmd
Web->>Web: File Change Detected (Hot Reload)
Web-->>CLI: Render Latest Diagram
(From adding decorators to browser live preview in 10 seconds)
🛠️ Try Online (Google Colab)
No local setup required. Experience core features in your browser:
🎯 Why MermaidTrace? (Use Cases)
1. Master "Legacy" Codebases
Pain: Taking over a complex, undocumented legacy project with tangled function calls.
Solution: Add @trace_class or @trace to entry points and run the code once.
Value: Instantly generate a complete execution path map to understand the architecture.
2. Automated Technical Docs
Pain: Manual sequence diagrams are time-consuming and quickly become outdated. Solution: Integrate MermaidTrace during development. Value: Diagrams stay 100% in sync with your code logic automatically.
3. Debug Complex Recursion & Concurrency
Pain: Nested calls or async tasks produce interleaved logs that are impossible to read. Solution: Use built-in async support and intelligent collapsing. Value: Visualize recursion depth and concurrency flow to pinpoint logic bottlenecks.
🚀 Quick Start in 3 Steps
1. Install
pip install mermaid-trace
2. Add Decorators
from mermaid_trace import trace, configure_flow
# Configure output file
configure_flow("my_flow.mmd")
@trace(source="User", target="AuthService")
def login(username):
return verify_db(username)
@trace(source="AuthService", target="DB")
def verify_db(username):
return True
login("admin")
3. View Diagram
Run the built-in CLI tool to preview in real-time (with hot-reload):
# Basic preview
mermaid-trace serve my_flow.mmd
# Master mode (Directory browsing, zoom, multi-file switching)
mermaid-trace serve . --master
# Or preview a specific file in Master mode
mermaid-trace serve .\mermaid_diagrams\examples\08-log-rotation.mmd --master
🔗 LangChain Integration
Visualize LLM chains, agents, and RAG retrieval with a single handler:
from mermaid_trace.integrations.langchain import MermaidTraceCallbackHandler
handler = MermaidTraceCallbackHandler(host_name="MyAIApp")
# Pass to any LangChain object
chain.invoke({"input": "..."}, config={"callbacks": [handler]})
✨ Key Features
- Decorator-Driven: Simply add
@traceor@trace_interactionto functions. - Auto-Instrumentation: Use
@trace_classto trace a whole class at once. - Third-Party Patching: Use
patch_objectto trace calls inside external libraries. - Async Support: Seamlessly works with
asynciocoroutines and concurrency. - Enhanced Web UI: Interactive preview server with file browsing, auto-reload, and pan/zoom support (use
--master). - Intelligent Collapsing: Automatically collapses repetitive calls and identifies loops.
- FastAPI Integration: Middleware for zero-config HTTP request tracing.
- LangChain Integration: Callback Handler for LLM chains and agent visualization.
- Detailed Exceptions: Captures full stack traces for errors, displayed in the diagram.
📚 Documentation
Core Documentation
User Guide · API Reference · Contributing Guidelines · Changelog · License
Code Comment Documents
| Category | Links |
|---|---|
| Core Modules | Context · Decorators · Events · Formatter |
| Handlers | Async Handler · Mermaid Handler |
| Integrations | FastAPI |
| Others | init · CLI |
🤝 Contributing
We welcome contributions! Please see CONTRIBUTING.md for details.
📄 License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mermaid_trace-0.6.0.post0.tar.gz.
File metadata
- Download URL: mermaid_trace-0.6.0.post0.tar.gz
- Upload date:
- Size: 477.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7da4d9f7ba85d0fa8c2511ec7bf4b7ec35ebf150e7398a932c078540ada8c38
|
|
| MD5 |
9d9e3246bd02cfb25001d613da5a4ae1
|
|
| BLAKE2b-256 |
864ee1f80c67970b041b00fbcf4aa6a129ac556f682517a75d18d6c48a837b33
|
Provenance
The following attestation bundles were made for mermaid_trace-0.6.0.post0.tar.gz:
Publisher:
release.yml on xt765/mermaid-trace
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mermaid_trace-0.6.0.post0.tar.gz -
Subject digest:
c7da4d9f7ba85d0fa8c2511ec7bf4b7ec35ebf150e7398a932c078540ada8c38 - Sigstore transparency entry: 903174620
- Sigstore integration time:
-
Permalink:
xt765/mermaid-trace@1957bf9af28bae4d931d96b826a23daa6cbc9cac -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/xt765
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1957bf9af28bae4d931d96b826a23daa6cbc9cac -
Trigger Event:
release
-
Statement type:
File details
Details for the file mermaid_trace-0.6.0.post0-py3-none-any.whl.
File metadata
- Download URL: mermaid_trace-0.6.0.post0-py3-none-any.whl
- Upload date:
- Size: 47.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a9f2adf337de6affe9445fcbedb30c0c17fe9751b50955a5db2d270069fdd81
|
|
| MD5 |
aa4b1e1a706ca259e8eaa0cf4c52a31b
|
|
| BLAKE2b-256 |
700289b6af82bb3e6c76a41a09e85a33b628d08d1914a455f411eed8374809b7
|
Provenance
The following attestation bundles were made for mermaid_trace-0.6.0.post0-py3-none-any.whl:
Publisher:
release.yml on xt765/mermaid-trace
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mermaid_trace-0.6.0.post0-py3-none-any.whl -
Subject digest:
7a9f2adf337de6affe9445fcbedb30c0c17fe9751b50955a5db2d270069fdd81 - Sigstore transparency entry: 903174696
- Sigstore integration time:
-
Permalink:
xt765/mermaid-trace@1957bf9af28bae4d931d96b826a23daa6cbc9cac -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/xt765
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1957bf9af28bae4d931d96b826a23daa6cbc9cac -
Trigger Event:
release
-
Statement type: