eftoolkit
A streamlined Python toolkit for everyday programming tasks and utilities.
Documentation | Installation | Quickstart
Installation
uv add eftoolkit
Or with pip:
pip install eftoolkit
For development:
git clone https://github.com/ethanfuerst/eftoolkit.git
cd eftoolkit
uv sync
Stability
eftoolkit is Alpha. Minor bumps aim to be additive; breaking changes
ship with a major bump. See the version policy
for pin recommendations.
Quick Start
from eftoolkit.sql import DuckDB
from eftoolkit.s3 import S3FileSystem
from eftoolkit.gsheets import Spreadsheet
# DuckDB with in-memory database
db = DuckDB()
db.create_table('users', "SELECT 1 as id, 'Alice' as name")
df = db.get_table('users')
# S3 operations (requires credentials)
s3 = S3FileSystem(
access_key_id='...',
secret_access_key='...',
region='us-east-1',
)
s3.write_df_to_parquet(df, 's3://my-bucket/data/output.parquet')
# Google Sheets (requires service account credentials)
ss = Spreadsheet(credentials={...}, spreadsheet_name='My Sheet')
with ss.worksheet('Sheet1') as ws:
ws.write_dataframe(df)
ws.format_range('A1:B1', {'textFormat': {'bold': True}})
# flush() called automatically on exit
# Google Sheets local preview (no credentials needed!)
ss = Spreadsheet(local_preview=True, spreadsheet_name='Preview')
ws = ss.worksheet('Sheet1')
ws.write_dataframe(df)
ws.flush()
ws.open_preview() # Opens HTML in browser
Development
# Install dev dependencies
uv sync
# Run linting and formatting
uv run pre-commit run --all-files
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=eftoolkit --cov-report=term-missing
# Coverage report
uv run coverage report -m
# Build documentation locally
uv run mkdocs serve
Releasing (Maintainers Only)
Releases are automated via the release script. You must be on the main branch with no uncommitted changes:
./scripts/release.sh patch # 0.1.0 -> 0.1.1
./scripts/release.sh minor # 0.1.0 -> 0.2.0
./scripts/release.sh major # 0.1.0 -> 1.0.0
This runs all checks, auto-bumps the version, generates release notes, and triggers the PyPI publish workflow.
Project Structure
eftoolkit/
├── eftoolkit/ # Main package
│ ├── sql/ # DuckDB wrapper with S3 integration
│ ├── s3/ # S3FileSystem for parquet read/write
│ ├── gsheets/ # Google Sheets client with batching
│ └── config/ # Configuration utilities
├── docs/ # Documentation (MkDocs)
└── tests/ # pytest test suite
Metadata
Release files for eftoolkit 3.2.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 | |
|---|---|---|---|
| eftoolkit-3.2.0.tar.gz | 106.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eftoolkit-3.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 152.2 kB
Release files / eftoolkit-3.2.0.tar.gz
| Download URL | eftoolkit-3.2.0.tar.gz |
|---|---|
| Size | 106.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
005d17f457caefa660323524ed938e72a34b54734dd0dba8661ee00d71418fa7
|
|
BLAKE2b-256 checksum How to use checksums |
88dce19bd94877ec93ef8bb46a385b5aeb260b6c15bca0943a8b5571d78e643f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency logRelease files / eftoolkit-3.2.0-py3-none-any.whl
| Download URL | eftoolkit-3.2.0-py3-none-any.whl |
|---|---|
| Size | 45.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
136271f88a9f3853443c4203b107482e6c2995f97ded114e9821a4e8699a9bf1
|
|
BLAKE2b-256 checksum How to use checksums |
0d82b215621f661dba7a3f261482d143b38053525d995468ad75442981f8245d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 25, 2026.
Transparency log