The most sophisticated debug printing library for Python with rich formatting, syntax highlighting, and beautiful tracebacks
Project description
🔥 LitPrinter
The most sophisticated debug printing library for Python with rich formatting, syntax highlighting, and beautiful tracebacks.
Turn your debugging experience from mundane to magnificent with color themes, context-aware output, smart formatting, and powerful traceback handling.
🚀 Introduction
LitPrinter is an enhanced debugging tool for Python that provides beautiful, informative output in your terminal. Inspired by the icecream package, LitPrinter takes debugging to the next level with context-aware output, syntax highlighting, and powerful formatting options.
from litprinter import lit
# Print variables with their names and values
x, y = 10, 20
lit(x, y) # Prints: LIT| [script.py:6] in () >>> x: 10, y: 20
✨ Features
🎨 Rich Syntax Highlighting
# Choose from multiple color themes
from litprinter import lit
lit.color_style = "CYBERPUNK" # Options: JARVIS, RICH, MODERN, NEON, CYBERPUNK, DRACULA, MONOKAI
# Or use as a parameter
lit(my_complex_object, color_style="NEON")
📊 Smart Object Formatting
# Automatically pretty-formats different data types
data = {
"users": ["alice", "bob", "charlie"],
"active": True,
"settings": {
"theme": "dark",
"notifications": True
}
}
lit(data) # Formatted with proper indentation and syntax highlighting
🔍 Context-Aware Output
# Shows file, line number, and function name
def calculate_total(a, b):
lit(a, b) # Shows: LIT| [script.py:3] in calculate_total() >>> a: 10, b: 20
return a + b
🧵 Inline Usage
# Use in-line without disrupting your code flow
def get_user(user_id):
user = database.find(user_id)
return lit(user) # Both prints and returns the value
📝 Logging Support
from litprinter import log
# Different log levels
log("System starting...", level="info")
log("Debug information", level="debug")
log("Warning: disk space low", level="warning")
log("Critical error occurred", level="error")
💥 Beautiful Traceback Handling
from litprinter.traceback import install as install_traceback
# Replace Python's default traceback with beautiful, colorful tracebacks
install_traceback(
theme="cyberpunk", # Use any theme: JARVIS, RICH, MODERN, NEON, CYBERPUNK, DRACULA, MONOKAI
show_locals=True, # Show local variables in each frame
extra_lines=3 # Show extra context lines around error
)
# Now any exceptions will be displayed with beautiful formatting
def example():
x = {"test": [1, 2, 3]}
y = x["not_found"] # This will raise a KeyError with beautiful traceback
🛠️ Advanced Traceback Options
from litprinter.traceback import install, PrettyTraceback
# Basic installation with defaults
install()
# Advanced configuration
install(
extra_lines=5, # Show 5 lines of context around errors
theme="dracula", # Use Dracula theme
show_locals=True, # Show local variables
locals_max_length=150, # Limit local variable display length
locals_max_depth=3, # How deep to format nested structures
locals_hide_dunder=True, # Hide __dunder__ variables
width=120 # Terminal width for formatting
)
# Or use PrettyTraceback directly for one-time use
try:
risky_operation()
except Exception as e:
tb = PrettyTraceback(type(e), e, e.__traceback__, theme="neon", show_locals=True)
tb.print()
⚙️ Highly Customizable
from litprinter import lit, argumentToString
# Register custom formatters for your types
@argumentToString.register(MyCustomClass)
def format_my_class(obj):
return f"MyClass(id={obj.id}, name='{obj.name}')"
# Customize output format
lit(my_object,
prefix="DEBUG >>> ",
includeContext=True,
contextAbsPath=True,
disable_colors=False)
🛠️ Installation
pip install -U litprinter
Or for direct access to LitPrinter's functions:
# Install as builtins for convenience
from litprinter import install
install() # Now 'litprint' and 'ic' are available globally
📖 API Overview
Main Functions
| Function | Description |
|---|---|
lit(*args, **kwargs) |
Primary debugging function with variable inspection |
litprint(*args, **kwargs) |
Alias for lit with similar behavior |
log(*args, level="debug", **kwargs) |
Logging with level support |
install(name='litprint', ic='ic') |
Install functions as builtins |
uninstall(name='litprint', ic='ic') |
Remove from builtins |
Traceback Module Functions
| Function | Description |
|---|---|
traceback.install(**kwargs) |
Replace default Python traceback with pretty version |
traceback.uninstall() |
Restore original Python traceback handler |
PrettyTraceback(exc_type, exc_value, tb, **kwargs) |
Create traceback formatter instance |
Key Parameters
| Parameter | Type | Description |
|---|---|---|
prefix |
str | Custom prefix for output lines |
color_style |
str/dict | Color theme or custom colors |
includeContext |
bool | Show file/line/function context |
contextAbsPath |
bool | Use absolute paths in context |
disable_colors |
bool | Turn off syntax highlighting |
log_file |
str | File to write output to |
log_timestamp |
bool | Include timestamps in output |
📚 Examples
Debug Print with Context
from litprinter import lit
def process_user_data(user):
name = user.get('name', 'Unknown')
age = user.get('age', 0)
# Debug print shows variable names, values, and source location
lit(name, age) # Shows: LIT| [users.py:6] in process_user_data() >>> name: 'John', age: 30
# Process the data...
Custom Traceback Theme
from litprinter.traceback import install
from litprinter.coloring import create_custom_style
from pygments.token import Text, String, Number
# Create a cyberpunk-inspired output for tracebacks
install(theme="CYBERPUNK", show_locals=True)
# Or define a completely custom style for tracebacks
custom_colors = {
Text: "#00ff00", # Matrix-green text
String: "#ff00ff", # Magenta strings
Number: "#ffff00" # Yellow numbers
}
custom_style = create_custom_style("MatrixStyle", custom_colors)
install(theme="custom", _selected_pygments_style_cls=custom_style)
# Now any exceptions will use your custom coloring
Integration with Error Handling
try:
result = complex_operation()
except Exception as e:
lit(e) # Pretty-prints the exception with traceback highlighting
raise
Log to File
from litprinter import lit
# Log to both console and file
lit("Initializing system...", log_file="app.log", log_timestamp=True)
🧩 Integration with VS Code and Other Editors
LitPrinter creates clickable links in supported terminals and editors. In VS Code, clicking on the file path in the output will open the file at the exact line.
lit(data, contextAbsPath=True) # Creates clickable link to source line
For tracebacks, the file paths are also clickable, making it easy to jump to the error location:
from litprinter.traceback import install
install(show_locals=True)
# When an exception occurs, you can click the file paths in the traceback
🧠 Why Choose LitPrinter?
- 🚀 All-in-one solution: Combines debugging, logging, formatting and traceback enhancement
- 🎨 Beautiful output: Makes debugging more pleasant with syntax highlighting
- 🔍 Context-aware: Automatically shows where the call was made from
- 🧠 Smart handling: Special formatters for complex data types
- 🔄 Flow-friendly: Use inline without disrupting your code
- 🛠️ Extensible: Register custom formatters for your types
- 💥 Enhanced tracebacks: Transform boring Python tracebacks into beautiful, informative displays
🤝 Contributing
Contributions are welcome! Feel free to submit pull requests or open issues on the LitPrinter GitHub repository.
See the CONTRIBUTING.md file for more details on how to contribute to this project.
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
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 litprinter-0.2.1.tar.gz.
File metadata
- Download URL: litprinter-0.2.1.tar.gz
- Upload date:
- Size: 57.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd11fd28bbc67f06e2b037eccd76c52233ef5a287d77bb5deed15ffdbc785bcc
|
|
| MD5 |
828b2741e7fd6aed176fec93b14234dc
|
|
| BLAKE2b-256 |
20a84465ac974ec55f8250912359a2a11f49c369c345cd09692bca20a1bc8996
|
File details
Details for the file litprinter-0.2.1-py3-none-any.whl.
File metadata
- Download URL: litprinter-0.2.1-py3-none-any.whl
- Upload date:
- Size: 66.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce9a6c52b938e5a0789c8ca3fd839793a5a852ba90e8c879da9a733dac1b0a80
|
|
| MD5 |
c0ecef3bb8d9bd7839852f915f4d4235
|
|
| BLAKE2b-256 |
a76afdccefb55b2a9803d42eb77b00b022338db9a6490f2c5edc1ea78e10931b
|