tinytable
Pure Python, lightweight DataFrame-like table for small datasets. Zero C extensions. Friendly API inspired by pandas, but tiny.
Installation
pip install tinytable
Supports Python 3.8–3.13.
Quickstart
from tinytable import Table, read_csv, read_excel, read_sqlite
# Read from files
t1 = read_csv('tests/data/people.csv')
t2 = read_excel('tests/data/people.xlsx', sheet_name='Sheet1')
t3 = read_sqlite('tests/data/data.db', 'people')
# Construct manually
t = Table({'id': [1, 2, 3], 'name': ['a', 'b', 'c']}, labels=[('r1',), ('r2',), ('r3',)])
# Column/row access
ids = t['id'] # Column
row1 = t[0] # Row
subset = t[['id']] # New Table with only id
# Filter and slice
adults = t[t['id'] > 1] # boolean filter
head = t[:2] # slice rows
# Edit
t.edit_value('name', 0, 'z')
t2 = t.edit_column('id', [10, 20, 30], inplace=False)
# IO
t.to_csv('out.csv')
t.to_excel('out.xlsx', sheet_name='Sheet1')
t.to_sqlite('out.db', table_name='people', primary_key='id', replace_table=True)
Features
- Pure Python: No C extensions, easy to install and debug
- Pandas-like API: Familiar interface for data manipulation
- Multiple I/O formats: CSV, Excel, SQLite support
- Type-safe: Full mypy type checking support
- Well-tested: Comprehensive test suite with 76% coverage (235 tests)
- Modern packaging: Uses
pyproject.tomland supports Python 3.8-3.13
API surface
Table: core container with column/row operations,head,tail, joins, group stats, NA ops.- Readers:
read_csv,read_excel,read_sqlite. - Writers:
to_csv,to_excel,to_sqlite.
Development
This package has been fully modernized with:
- ✅ Modern Python packaging (
pyproject.toml) - ✅ Comprehensive testing (pytest with 235 tests, all passing)
- ✅ Type safety (mypy strict checking)
- ✅ Code quality (ruff linting and formatting)
- ✅ CI/CD (GitHub Actions)
- ✅ 100% backward compatibility
Contributing
PRs welcome. Run tests and linters:
pip install -e .[dev]
pytest -q
mypy tinytable
ruff check .
ruff format .
Notes
- This release (v0.18.1) includes comprehensive modernization, bug fixes, improved type safety, and robust empty table handling.
- See
CHANGELOG.mdfor detailed release notes.
Metadata
Release files for tinytable 0.18.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tinytable-0.18.1.tar.gz | 28.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tinytable-0.18.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.2 kB
Release files / tinytable-0.18.1.tar.gz
| Download URL | tinytable-0.18.1.tar.gz |
|---|---|
| Size | 28.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
86f0556a025fb3ee02dad30c62c589a764fe83759db943eb9247e272ba72e97f
|
|
BLAKE2b-256 checksum How to use checksums |
245d00d35657b9d01d22be24fa2faa509377b92b251ac046bd8562d8457fe628
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Release files / tinytable-0.18.1-py3-none-any.whl
| Download URL | tinytable-0.18.1-py3-none-any.whl |
|---|---|
| Size | 17.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c394af08007812fa121955db1bea3c087766de4cc9c9e392561a82a435300762
|
|
BLAKE2b-256 checksum How to use checksums |
7f50adfcaabcbe36395989e6703382eec8015065f4824a37f2b3828c96cc73fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|