Enhanced display utilities for Jupyter/Colab notebooks with customizable styles
Project description
Colab Print
Colab Print is a Python library that enhances the display capabilities of Jupyter and Google Colab notebooks, providing beautiful, customizable HTML outputs for text, lists, dictionaries, tables, and pandas DataFrames.
Features
- 🎨 Rich Text Styling - Display text with predefined styles or custom CSS
- 📊 Beautiful DataFrame Display - Present pandas DataFrames with extensive styling options
- 📑 Customizable Tables - Create HTML tables with headers, rows, and custom styling
- 📜 Formatted Lists - Display Python lists and tuples as ordered or unordered HTML lists.
- 📖 Readable Dictionaries - Render dictionaries as structured definition lists.
- 🎭 Extensible Themes - Use built-in themes or create your own custom styles
- 📏 Smart Row/Column Limiting - Automatically display large DataFrames with sensible limits
- 🔍 Cell Highlighting - Highlight specific rows, columns, or individual cells in tables and DataFrames
- 🔄 Graceful Fallbacks - Works even outside Jupyter/IPython environments
Installation
pip install colab-print
Quick Start
from colab_print import Printer
import pandas as pd
# Create a printer with default styles
printer = Printer()
# Display styled text
printer.display("Hello, World!", style="highlight")
# Display a list
my_list = ['apple', 'banana', ['nested', 'item'], 'cherry']
printer.display_list(my_list, ordered=True, style="info")
# Display a dictionary
my_dict = {
'name': 'Alice',
'age': 30,
'address': {'street': '123 Main St', 'city': 'Anytown'}
}
printer.display_dict(my_dict, style="success")
# Display a simple table
headers = ["Name", "Age", "City"]
rows = [
["Alice", 28, "New York"],
["Bob", 34, "London"],
["Charlie", 22, "Paris"]
]
printer.display_table(headers, rows, style="default")
# Display a pandas DataFrame with styling
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [28, 34, 22],
'City': ['New York', 'London', 'Paris']
})
printer.display_df(df,
highlight_cols=['Name'],
highlight_cells={(0, 'Age'): "background-color: #FFEB3B;"},
caption="Sample DataFrame")
Styling Options
Predefined Styles
default- Clean, professional stylinghighlight- Stand-out text with emphasisinfo- Informational blue textsuccess- Positive green messagewarning- Attention-grabbing yellow alerterror- Critical red messagemuted- Subtle gray text
Custom Styling
You can add your own styles:
printer = Printer()
printer.add_style("custom", "color: purple; font-size: 20px; font-weight: bold;")
printer.display("Custom styled text", style="custom")
Display Methods
printer.display(text, style="default", **inline_styles): Displays styled text.printer.display_list(items, ordered=False, style="default", item_style=None, **inline_styles): Displays lists/tuples.printer.display_dict(data, style="default", key_style=None, value_style=None, **inline_styles): Displays dictionaries.printer.display_table(headers, rows, style="default", **table_options): Displays basic tables.printer.display_df(df, style="default", **df_options): Displays pandas DataFrames with many options.
DataFrame Display Options
The display_df method supports numerous customization options:
printer.display_df(df,
style='default', # Base style
max_rows=20, # Max rows to display
max_cols=10, # Max columns to display
precision=2, # Decimal precision for floats
header_style="...", # Custom header styling
odd_row_style="...", # Custom odd row styling
even_row_style="...", # Custom even row styling
index=True, # Show index
width="100%", # Table width
caption="My DataFrame", # Table caption
highlight_cols=["col1"], # Highlight columns
highlight_rows=[0, 2], # Highlight rows
highlight_cells={(0,0): "..."}, # Highlight specific cells
font_size="14px", # Custom font size for all cells
text_align="center") # Text alignment for all cells
Advanced Usage
Creating Custom Themes
custom_themes = {
'dark': 'color: white; background-color: #333; font-size: 16px;',
'fancy': 'color: #8A2BE2; font-family: "Brush Script MT", cursive; font-size: 20px;'
}
printer = Printer(additional_styles=custom_themes)
printer.display("Dark theme", style="dark")
printer.display("Fancy theme", style="fancy")
Handling Non-Notebook Environments
The library gracefully handles non-IPython environments by printing fallback text representations:
# This will work in regular Python scripts
printer.display_list([1, 2, 3])
printer.display_dict({'a': 1})
printer.display_df(df)
Full Examples
For a comprehensive demonstration of all features, please see the example script:
This script covers:
- Text, List, Dictionary, Table, and DataFrame display
- Using built-in styles and inline styles
- Adding custom styles
- Creating a Printer instance with custom themes
- Highlighting options for DataFrames
- Fallback behavior notes (though the script runs outside a notebook)
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
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 colab_print-0.2.0.tar.gz.
File metadata
- Download URL: colab_print-0.2.0.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
681219ea861995bd3741dd418a83a3c10eaffcdb46f08cc5862117055113a25c
|
|
| MD5 |
3274f9bee27858efb8b943dfb750fa5b
|
|
| BLAKE2b-256 |
5505b41236594a38b650e281f2717ca7071360b98928926e1c1f19d893922151
|
File details
Details for the file colab_print-0.2.0-py3-none-any.whl.
File metadata
- Download URL: colab_print-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82a887c47d8ba567121e4930fabe5a06fc226b733d2beabd783c10bc8236c00d
|
|
| MD5 |
369ed7ea6988c8f042f7a019af025433
|
|
| BLAKE2b-256 |
d21205087131944b049e3ef614c73c741011c441d1d800d5a0561ac0b0034487
|