Python library to print tables and line charts in Terminal.
Project description
outfancy
Table printing and Line plotting in Terminal
What is it?
Outfancy is a Python library for printing tables and charts in the terminal. It's a quick way to visualize data when you don't have a GUI, and it integrates easily into your programs. You can install it with uv or pip and use it anywhere.
This was the first library I ever built when I was 16 :). It's been modernized to support Python 3.10+, fix bugs, add type hints, improve logging, and enhance performance, but the original style is still there: raw, exploratory teenage code.
Documentation
- DeepWiki Docs - Comprehensive documentation
- LOGGING.md - Logging system configuration and usage
- logging_example.py - Practical logging examples
Installation
Install with uv
pip install outfancy
Install with pip
pip install outfancy
Features
- Quick table printing - Print formatted tables in the terminal with automatic column width detection
- LineChart plotting - Create line charts with linear interpolation
- Customizable formatting - Configure separators, widths, and column priorities
- Real-time column rearrangement - Dynamically reorder columns
- Auto-generated labels - Automatic label creation above tables
- Oneline printing - Single-line updates for real-time applications
- Color support - Add ANSI colors to table fields
- Type hints - Full type annotation support for better IDE integration
- Configurable logging - Flexible logging system with multiple severity levels
- Data type auto-detection - Automatic detection of ID, name, date, time, value, and description columns
Quick Start
Basic Table
import outfancy.table
table = outfancy.table.Table()
dataset = [(1, 'Marie'), (2, 'Joseph')]
print(table.render(dataset))
Line Chart
import outfancy.chart
from math import sin
line_chart = outfancy.chart.LineChart()
dataset = [(i, sin(i)) for i in range(10)]
line_chart.plot(dataset)
print(line_chart.render(color=True))
Large Table with Pagination
from outfancy.table import LargeTable
large_table = LargeTable()
large_dataset = [(i, f'User {i}', f'user{i}@example.com') for i in range(100)]
print(large_table.render(large_dataset))
Development
Development installation (pip)
git clone https://github.com/carlosplanchon/outfancy.git
cd outfancy
pip install -e .
Development installation (uv)
git clone https://github.com/carlosplanchon/outfancy.git
cd outfancy
uv venv
uv pip install -e ".[dev]"
Running tests
The project includes a comprehensive test suite covering all major functionality:
# Run all tests
pytest
# Run with verbose output
pytest -v
# Run specific test file
pytest tests/test_table.py
# Run tests with coverage
pytest --cov=outfancy
The test suite includes:
- 79 test functions covering Table, Oneline, and LargeTable classes
- Unit tests for initialization, configuration, and rendering
- Integration tests for complex workflows
- Regression tests for documented bug fixes
- Edge case validation for data integrity
Logging Configuration
Outfancy uses a configurable logging system. By default, only WARNING and above messages are shown:
import logging
import outfancy.table
# Enable debug logging
logging.getLogger('outfancy').setLevel(logging.DEBUG)
# Create table with debug output
table = outfancy.table.Table()
See LOGGING.md for detailed logging configuration options.
Contributing
Contributions are welcome! Here's how you can help:
- Report bugs - Open an issue describing the problem
- Suggest features - Share your ideas for improvements
- Submit pull requests - Fix bugs or implement features
- Improve documentation - Help make the docs clearer
- Write tests - Add test coverage for edge cases
Code style
- Follow existing code patterns
- Add type hints to new functions
- Include tests for new features
- Update documentation as needed
Examples & Demos
- Funny demo with colors - Colorful table demonstration
Line Chart Example
License
MIT License - see 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 outfancy-0.9.7.tar.gz.
File metadata
- Download URL: outfancy-0.9.7.tar.gz
- Upload date:
- Size: 30.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4be25a7666c9c5bf62084ffcd4d149b803d5eb8db9fa17bbbdc2bc47382b6ecb
|
|
| MD5 |
e442addc3e211b87d55e6e95119b4fd4
|
|
| BLAKE2b-256 |
0f032a3a435f417eecaf6300be8d428fc8b21a541d7af2dbd972eeac8b7cc032
|
File details
Details for the file outfancy-0.9.7-py3-none-any.whl.
File metadata
- Download URL: outfancy-0.9.7-py3-none-any.whl
- Upload date:
- Size: 29.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8e8d31dae2197cbe4e688562df32c1d9c8c090f8d0c1241eb6df83eea3d602c
|
|
| MD5 |
cf1d3548507fd3e8f03098620f5b1691
|
|
| BLAKE2b-256 |
be6ed7899d7a9a6651e4fbc18e4e6c3813efa1ffdde3bbed34ee3ebf43db7ba7
|