dluman / arglite

A light-weight Python CLI flag parser for the impatient.

Home Page:https://pypi.org/project/arglite/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

arglite

PyPI version

A lightweight, dynamic argument parsing library for Python programs with klugy support for typing variables.

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.

Installation

Find this tool on PyPI: pip install arglite

Usage

Check this out:

import arglite

def main():
  # Can include explicit requirement
  print(arglite.parser.required.a)
  # Can be an implicit requirement
  print(arglite.parser.b)
  # Can also be purely optional
  print(arglite.parser.optional.c)
  print(arglite.parser.optional.d)

if __name__ == "__main__":
  main()

Run using python main.py -a Yo --b that is -c.

For the more intrepid among us, this also works:

from arglite import parser as cliarg

def main():
  # Can include explicit requirement
  print(cliarg.required.a)
  # Can be an implicit requirement
  print(cliarg.b)
  # Can also be purely optional
  print(cliarg.optional.c)
  print(cliarg.optional.d)

if __name__ == "__main__":
  main()

HELP!

Help now appears when no variables are provided or when requested by use of -h (--h) or -help (--help). It looks like this:

arglite

argparse is a CLI argument parser for the impatient

Hi! You're seeing this message because you used a help flag or
because there were no variables specified on the command line as
flags!

Usage

- Provide arbitary flags to a program at runtime
- Interpret flags with the argparse.parser object
    
                              CLI flags                               
┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┓
┃Variable name┃Variable value┃Variable type┃Variable required┃
┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━┩
│ a             │ None         │ NoneType     │ 🗸               │
│ b             │ None         │ NoneType     │ 🗸               │
│ c             │ None         │ NoneType     │ ✗               │
│ d             │ None         │ NoneType     │ ✗               │
└───────────────┴──────────────┴──────────────┴─────────────────┘

Errors

When errors are present (i.e. flags are provided which aren't used in the code or flags used aren't provided), you'll see errors:

✗ ERROR: A value was provided for A, but the program doesn't call for it
✗ ERROR: A value was expected for a, but not was provided as a flag
✗ ERROR: A value was expected for b, but not was provided as a flag

Notes

  • Flags with no value are automatically converted to True boolean
  • The module uses ast.literal_eval, so "{'a':'b'}" will convert to a dict (all quotes required)

About

A light-weight Python CLI flag parser for the impatient.

https://pypi.org/project/arglite/

License:The Unlicense


Languages

Language:Python 100.0%