Skip to content

RogerThomas/yeetr

Repository files navigation

yeetr

yeetr, build tiny CLIs. Easy to code. Based on Python type hints.

Build Release Coverage Package version Supported Python versions License

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 boilerplateyeet app.py finds and runs main — or any public function you name — and scaffolds the file if it doesn't exist yet.
  • Executable shebangs#!yeet makes a script runnable on its own; #!yeet FUNC picks the function to run.
  • Fully typedstr, int, float, bool, Path, datetime, date, time, UUID, Decimal, Literal, Enum, T | None, list[T], tuples, and structured dataclass/NamedTuple args, all Pyright-strict clean.
  • Async-nativeasync def main just works, with automatic uvloop if it's installed.
  • Rich output — formatted logging and help/error tables out of the box.

yeetr help output

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

MIT

About

Yeeter is a HyperModern CLI Tool

Resources

License

Contributing

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages