A tiny, typed, signature-driven CLI runner.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yeetr-2026.7.2.post4.tar.gz.
File metadata
- Download URL: yeetr-2026.7.2.post4.tar.gz
- Upload date:
- Size: 3.4 MB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18b3bc6cff4fec6f961488a0c0714420dce2b5dbf3714cfdab988a282503d5fb
|
|
| MD5 |
c6c6d7a5bafcf9668381351497d2a09c
|
|
| BLAKE2b-256 |
57291d5dde62e91e0f388d5251094017a4de10d32d498607c91a3137ff164ff2
|
File details
Details for the file yeetr-2026.7.2.post4-py3-none-any.whl.
File metadata
- Download URL: yeetr-2026.7.2.post4-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a22193d898b8191f6bbe32aa0844c99b6289a4e26d3762a93cf07fb1461ec89b
|
|
| MD5 |
311b72d173a8c54a79cd4445ca924e5a
|
|
| BLAKE2b-256 |
abe0e5669cca2896d661c5666afe5e7e20129770cc0dfca2e3ad73c809e97ae4
|