A lightweight, explicit argument parsing library for Python programs.
I made this for a teaching machine project I'm working on (I needed a custom argument parser for reasons), and I'm always too impatient to use argparse.
import arglite
arglite.parser.require("name", type=str)
arglite.parser.optional("count", default=1, type=int)
arglite.parser.flag("verbose")
def main():
print(arglite.parser.name)
print(arglite.parser.count)
print(arglite.parser.verbose)
if __name__ == "__main__":
main()python main.py --name Yo --count 5 --verboseYou can also declare flags in a .arglite.yaml file in the working directory. arglite loads it automatically, or you can point to a different file with parser.load().
flags:
name:
help: "The user name"
type: str
required: true
count:
help: "Number of items"
type: int
default: 1
verbose:
help: "Enable verbose output"
action: store_trueimport arglite
print(arglite.parser.name)
print(arglite.parser.count)
print(arglite.parser.verbose)Python declarations override YAML for runtime behavior (type, required, default, action), while YAML metadata like help and choices is merged in.
Full documentation is available at arglite.readthedocs.io.
pip install arglite- Flags are case-sensitive.
- Both
-f/--flagand--flag=value/-f=valuesyntaxes are supported. - Values containing spaces work when passed via the shell's normal quoting rules.
- Empty string values (
--name "") are preserved. ast.literal_evalis used for type inference when no explicittypeis given.