sleepyconvert is a Typer CLI that converts files between formats, inferring intent solely from the input and output extensions — no subcommands, no flags to memorize. Point it at a source and a destination and it does the right thing.
Install
uv tool install sleepyconvert # or: pipx install sleepyconvert
-v/--versionprints the version and best-effort checks PyPI for a newer release — it works even when placed alongside the paths. Runsleepyconvert aboutfor the project's PyPI + GitHub links.
Configure
sleepyconvert is a sleepy util and reads its settings from the shared ~/sleepyconfig/params.yml, using the convert_ key prefix. If the file is absent it writes only its own section (below) and says so; if a value it needs is missing it prints this snippet and asks you to verify your config.
# sleepyconvert
convert_output_archive_dir: null # a dir → also save a dated copy of every output; null → off
convert_output_archive_dir— when set to a directory, every conversion also drops a dated copy of its output there as<archive_dir>/<yyyy>_<mm>_<dd>_<output_filename>.
Supported conversions
| Category | Extensions |
|---|---|
| Data | csv, parquet, json, pkl, xlsx |
| Images | png, jpg, jpeg |
| Documents | html, pdf, md |
Any pair within the same category is valid (in either direction); cross-category conversions are rejected.
Usage
sleepyconvert <input_path> <output_path>
Both paths resolve relative to the current directory, and their extensions decide the conversion.
Data — round-trip between tabular formats:
$ sleepyconvert sales.csv sales.parquet
Created /Users/dingus/work/sales.parquet
Images — re-encode between raster formats:
$ sleepyconvert photo.png photo.jpg
Created /Users/dingus/pics/photo.jpg
Documents — convert between markup and PDF:
$ sleepyconvert notes.md notes.pdf
Created /Users/dingus/docs/notes.pdf
With convert_output_archive_dir set, each conversion also writes a dated archive copy:
$ sleepyconvert sales.csv sales.parquet
Created /Users/dingus/work/sales.parquet
Archived copy written to /Users/dingus/archive/2026_02_09_sales.parquet
Mixing categories fails fast with a clear message:
$ sleepyconvert data.csv chart.png
Error: Input and output extensions must belong to the same type group.
Use `convert --help` to see the supported categories.
About — print the version and the project's public PyPI + GitHub links:
$ sleepyconvert about
sleepyconvert 2.3.1
PyPI: https://pypi.org/project/sleepyconvert/
GitHub: https://github.com/anthonybench/convert
Development
uv venv
uv pip install -e ".[dev]"
uv run pytest # or ./tools/test.sh
Documentation
- Specification — what the tool does
- Project outline — repository layout
- Test drive — setup, testing, and CLI usage
- Adding a conversion — how to add a new format pair
- Publishing — release to PyPI
Metadata
Release files for sleepyconvert 2.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sleepyconvert-2.3.3.tar.gz | 25.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sleepyconvert-2.3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.9 kB
Release files / sleepyconvert-2.3.3.tar.gz
| Download URL | sleepyconvert-2.3.3.tar.gz |
|---|---|
| Size | 25.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ef4f14acf4b0789cef9c2c4713da5a88db70b0b68c05a74ee5b63bac3f6b7f2a
|
|
BLAKE2b-256 checksum How to use checksums |
69f81cac6967e81c9db79886204c0ce5e92eb2a64e67e529d44957734c17cb5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.13.5 Darwin/25.5.0
|
Release files / sleepyconvert-2.3.3-py3-none-any.whl
| Download URL | sleepyconvert-2.3.3-py3-none-any.whl |
|---|---|
| Size | 33.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b64e2131d67a5499e168ac40519ee5ccc54192e713251842aea348f0109f1621
|
|
BLAKE2b-256 checksum How to use checksums |
f4394ed31e4aaf6d2eb65696dc1ca692d78e5409ac6f6bcdda9b4d6678bf3600
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.1 CPython/3.13.5 Darwin/25.5.0
|