yeetr, build tiny CLIs. Easy to code. Based on Python type hints.
yeetr
A tiny, typed, signature-driven CLI runner. Supports Python 3.13 and 3.14.
No decorators. No command classes. No ceremony. Just yeet the function.
Write a plain function, run it from the command line — yeetr turns the
signature into args and options for you:
# app.py
def main(thing: int, *, n: float = 0.1) -> None:
print(thing, n)
yeet app.py 5 -n 0.2
No if __name__ == "__main__" block, no yeetr.run(...) call, no
decorators. Parameters before the bare * become positional args,
parameters after it become --options.
Install
uv add yeetr
Highlights
- Zero boilerplate —
yeet app.pyfinds and runsmain— or any public function you name — and scaffolds the file if it doesn't exist yet. - Executable shebangs —
#!yeetmakes a script runnable on its own;#!yeet FUNCpicks the function to run. - Fully typed —
str,int,float,bool,Path,datetime,date,time,UUID,Decimal,Literal,Enum,T | None,list[T], tuples, and structureddataclass/NamedTupleargs, all Pyright-strict clean. - Async-native —
async def mainjust works, with automatic uvloop if it's installed. - Rich output — formatted logging and help/error tables out of the box.
Docs
The full guide — parameter metadata, env var fallback, path validators, runtime behavior, a yeetr vs. typer comparison, and the API reference — lives at rogerthomas.github.io/yeetr.
Contributing
See CONTRIBUTING.md for how to set up a dev environment, run the test suite, and submit changes.
License
Metadata
Release files for yeetr 2026.9.18
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 | |
|---|---|---|---|---|
| yeetr-2026.9.18.tar.gz | 19.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yeetr-2026.9.18-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.2 kB
Release files / yeetr-2026.9.18.tar.gz
| Download URL | yeetr-2026.9.18.tar.gz |
|---|---|
| Size | 19.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b40c5e6ad69a3cb7cd2becb17f1e0748db2fbaed23ce7fb3b0ca78197cb0f61
|
|
BLAKE2b-256 checksum How to use checksums |
bdc2b90daa74114f7e1e5767db459be06fc4f3982d5015786b55074bb4b2c730
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / yeetr-2026.9.18-py3-none-any.whl
| Download URL | yeetr-2026.9.18-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4dc2bc4792b31ac4cf0b4b2ddd993735caa1c21334af286f5ea3e9f64a90ff65
|
|
BLAKE2b-256 checksum How to use checksums |
033b4d2fbbf344723673c2b631b2535e7e3250770289769e57bd7b30915dd464
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for yeetr 2026.9.18
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.