term-sparkline 📈
Adaptive high-definition (1px Retina) and Unicode-based inline sparklines for modern terminals.
Designed specifically for CLI tables, financial monitoring dashboards, and real-time metric trackers.
✨ Features
- Adaptive Terminal Detection: Automatically selects the best rendering protocol:
- iTerm2 / WezTerm / Ghostty: Renders ultra-fine, anti-aliased 1-pixel inline graphics directly in a single text row.
- Kitty: Uses Kitty graphics protocol.
- Sixel: Pure Python Sixel encoding for Linux servers, Foot, and classic terminals.
- Fallback / Standard Terminals: Gracefully degrades to smooth Unicode Braille vector curves (
⡠⠤⠒⠊⠉) or classic Block bars (▂▃▅▇).
- Financial Visualization Extras:
- Multi-Series / Benchmark Comparison: Overlay dual curves (e.g. Stock vs Benchmark Index).
- Extremum Highlighting: Accent markers on highest (peak) and lowest (trough) values.
- Area Gradient Fill: Semi-transparent smooth gradient area beneath the curve.
- Reference Baseline: Subtle dotted baseline for previous close / zero level.
- End-point Highlight Dot: Prominently marks the latest live price tick.
- Auto Color & Market Palettes: Automatic color calculation (
palette="cn"for Red Up/Green Down,palette="us"for Green Up/Red Down).
- Ecosystem Ready:
Rich&Textual: PassSparklinedirectly intoTable.add_row().PandasSeries Extension: Directseries.sparkline()accessor support.
- Zero-Friction & Lightweight: Zero required dependencies (optional
Pillowfor inline images). - CLI Utility: Ready to use as a standalone command-line tool.
📦 Installation
pip install "term-sparkline[image]"
(Without [image], it functions in pure-text Unicode Braille/Block mode with zero dependencies).
🚀 Quick Start
Python API
from term_sparkline import sparkline
prices = [10.2, 10.3, 10.1, 10.5, 10.8, 10.7, 11.2, 11.0, 11.5]
# Auto-detects terminal, applies area fill, reference baseline and end-point dot
chart = sparkline(
prices,
fill=True,
baseline=10.5,
show_dot=True,
palette="cn" # Red for rise, Green for fall
)
print(f"600519 贵州茅台 1680.50 +2.15% {chart}")
Integration with rich
from rich.table import Table
from rich.console import Console
from term_sparkline import Sparkline
console = Console()
table = Table(title="Live Stock Watcher")
table.add_column("Symbol", justify="center")
table.add_column("Price", justify="right")
table.add_column("Change", justify="right")
table.add_column("Trend (Sparkline)", justify="left")
table.add_row("600519", "1680.50", "+2.15%", Sparkline([10, 12, 11, 15, 18], fill=True, show_dot=True))
table.add_row("000001", "11.20", "-1.32%", Sparkline([18, 16, 14, 12, 11], fill=True, show_dot=True))
console.print(table)
CLI Usage
# Pass numbers with baseline and area fill
sparkline 10 12 11 15 18 22 --baseline 12 --fill --dot
# Or pipe from other tools
echo "10,12,11,15,18,22" | sparkline --palette us
📄 License
MIT
Metadata
Release files for term-sparkline 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| term_sparkline-0.3.0.tar.gz | 9.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| term_sparkline-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.5 kB
Release files / term_sparkline-0.3.0.tar.gz
| Download URL | term_sparkline-0.3.0.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49bdfbd94f082b507275f534b1a4ee3d81581eccae10b72fbab7b2d0eb044eff
|
|
BLAKE2b-256 checksum How to use checksums |
3020007de18f73b75a0f187513363b01f7beeebb311f72cb14d048a45bf5fce2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.15.0
|
Release files / term_sparkline-0.3.0-py3-none-any.whl
| Download URL | term_sparkline-0.3.0-py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0325bc881167f8a93ff97eed6f16f7c546470b14b9636089816167b584c6c646
|
|
BLAKE2b-256 checksum How to use checksums |
7c139e8ff4195e98435e44dddef9591616cc3701cec495eb5957fab8be4df599
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.15.0
|
Security for term-sparkline 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.