Skip to main content

craftable — craft elegant tables using format strings

Generate clean, flexible text tables in the terminal or in text files using a familiar, Python-native formatting approach. craftable focuses on attractive and predictable output, zero dependencies, a simple and elegant API, and fast rendering without requiring a full TUI library.

  • Small, zero-dependency API
  • Works with plain Python data (lists/rows)
  • Built-in adapters for dicts, dataclasses, numpy, pandas, SQL, and more
  • Column definitions use Python's format mini-language
  • Multiple built-in styles: no borders, box drawing, rounded, ASCII, Markdown
  • Supports wrapping, truncation, alignment, and auto-fill columns
  • Simple, but flexible and extensible to meet most any use case

Quick example

from craftable import get_table

data = [
    ["Alice", 147000, .035, "Engineer"],
    ["Bob", 88000, .0433, "Designer"],
]

print(get_table(
    data,
    header_row=["Name", "Salary", "Adj", "Title"],
    col_defs=["A","<$ (,)", ">.2%", "A"],
    table_width=50,
))

Output:

      Name     │   Salary  │  Adj  │    Title     
───────────────┼───────────┼───────┼──────────────
 Alice         │ $ 147,000 │ 3.50% │ Engineer     
 Bob           │ $  88,000 │ 4.33% │ Designer     

Data Adapters

Convert Python data structures directly into tables with built-in adapters:

from craftable import get_table
from craftable.adapters import from_dicts

# List of dictionaries (handles missing keys gracefully)
data = [
    {"name": "Alice", "age": 30, "city": "LA"},
    {"name": "Bob", "age": 25},  # missing 'city'
]

rows, headers = from_dicts(data)
print(get_table(rows, header_row=headers))

Adapters available for: dicts, dataclasses, numpy arrays, pandas/polars DataFrames, SQL cursors, and more. See the Adapters documentation for details.

When to use craftable

Use craftable when you need reliable text tables in logs, CLIs, or scripts, and want the control of Python format specs without heavy UI tooling. If you need interactive widgets or color/styling, consider pairing with Rich — but for static tables, craftable is intentionally simple and fast.

Getting Started

Read the online documentation:

https://ptyork.github.io/craftable

Available as craftable in PyPI with zero additional dependencies, so you can install or add to your project using your favorite package manager.

pip

pip install craftable

poetry

poetry add craftable

uv

uv add craftable

Or if using uv pip:

uv pip install craftable

Metadata

Release files for craftable 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for craftable 0.2.1
File Size Uploaded
craftable-0.2.1.tar.gz 25.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for craftable 0.2.1
File Interpreter ABI Platform
craftable-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 60.8 kB

Release files / craftable-0.2.1.tar.gz

Download URL craftable-0.2.1.tar.gz
Size 25.3 kB
Tags Source
SHA-256 checksum
How to use checksums
68d32219f2a2f669cf7a23bd85b6c86c47e9dd8343854e6c6c3473dd85f55ad7
BLAKE2b-256 checksum
How to use checksums
fa70d8b80e33bf2c15d797f550445c1dccb0d8df92d1835542347a97ce3af96a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.24

Release files / craftable-0.2.1-py3-none-any.whl

Download URL craftable-0.2.1-py3-none-any.whl
Size 35.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3f277cf4f0b64f8d3e19be4543d1ca60eecec611955657da1a213d9f5ac97834
BLAKE2b-256 checksum
How to use checksums
c1c10ce6903bc6c59fbc9ae6a32da7b3275f91b7e4af56043ce2b5a539fb5aaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.24

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page