A simple, clean alternative to argparse
Project description
ArgHandle
A simple, lightweight alternative to argparse. No confusion, no boilerplate, just clean argument handling for your CLI tools.
Built because argparse is overkill for most scripts. ArgHandle gives you exactly what you need: register args, match them, print help, done.
Installation
pip install arghandle
Quick Start
from arghandle import ArgHandle
cli = ArgHandle()
cli.ProgramName("mytool")
cli.RegisterArg(["--version", "-v"], HelpMsg="Prints the version and exit")
cli.RegisterArg(["build"], HelpMsg="Build the project")
cli.RegisterArg(["--output", "-o"], StrictIndex=2, StrictIndex_ExitOnError=True, HelpMsg="Output file")
cli.PrintOnNoArgs("No arguments provided. Use --help or -h for usage.", Exit=True)
cli.HandleHelp()
if cli.IsArgInActualArgs("--version") or cli.IsArgInActualArgs("-v"):
raise SystemExit("mytool v1.1.0\n")
if cli.IsArgInActualArgs("build"):
output = cli.SetVariableToIndex(2)
print(f"Building: {output}")
Running mytool --help prints:
mytool --help/-h called:
[--help, -h]: Prints this help message and exit
[--version, -v]: Prints the version and exit
[build]: Build the project
[--output, -o]: Output file
API
ArgHandle()
Main class. Instantiate once at the start of your program.
cli = ArgHandle()
ProgramName(string: str)
Sets the program name shown in the help header.
cli.ProgramName("mytool")
RegisterArg(Flags, StrictIndex=None, StrictIndex_ExitOnError=False, *, HelpMsg)
Registers an argument to the help screen and optionally enforces a strict position in sys.argv.
Flags: list of flags/commands (e.g.["--version", "-v"])StrictIndex: if set, the arg must appear at this index insys.argvStrictIndex_ExitOnError: ifTrue, exits with an error when the arg is at the wrong index; ifFalse, returnsStrictIndexBrokenHelpMsg: description shown in help output
cli.RegisterArg(["--version", "-v"], HelpMsg="Prints the version and exit")
cli.RegisterArg(["--output", "-o"], StrictIndex=2, StrictIndex_ExitOnError=True, HelpMsg="Output file")
Returns:
| Return Type | Meaning |
|---|---|
Registered |
Successfully registered |
NotRegistered |
Empty or invalid flags list |
NoKwargs |
No HelpMsg provided |
OverlimitKwargs |
More than one kwarg passed |
StrictIndexBroken |
Arg not at required index and StrictIndex_ExitOnError=False |
HandleHelp(Exit=True)
Checks if --help or -h is in args and prints the help screen. Exits by default.
cli.HandleHelp()
Output format:
mytool --help/-h called:
[--help, -h]: Prints this help message and exit
[--version, -v]: Prints the version and exit
PrintOnNoArgs(string, Exit=False)
Prints a message if no arguments are passed. Optionally exits.
cli.PrintOnNoArgs("No arguments provided.", Exit=True)
IsArgInActualArgs(String) -> bool
Returns True if the string is present anywhere in sys.argv[1:].
if cli.IsArgInActualArgs("build"):
...
IsArgMatch(String, AtIndex) -> bool
Returns True if the string matches the arg at a specific index in sys.argv[1:].
if cli.IsArgMatch("build", 0):
...
SetVariableToIndex(Index) -> str | IndexOutOfRange
Returns the value of sys.argv at the given index. Returns IndexOutOfRange if the index doesn't exist.
output = cli.SetVariableToIndex(2)
if isinstance(output, IndexOutOfRange):
raise SystemExit("No value provided at index 2\n")
print(output) # "myfile.c"
ArgCount() -> int
Returns the total number of arguments including the script name.
print(cli.ArgCount())
Return Types
All return type classes are importable directly:
from arghandle import (
Registered,
NotRegistered,
NoKwargs,
OverlimitKwargs,
StrictIndexBroken,
IndexOutOfRange
)
Real World Example
ArgHandle was built as part of AutoBuild, a Make-like build system with its own .abuild syntax. Check it out to see ArgHandle in action in a real project.
License
GPLv3, see LICENSE for details.
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 arghandle-1.2.0.tar.gz.
File metadata
- Download URL: arghandle-1.2.0.tar.gz
- Upload date:
- Size: 43.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f3754fb32b1c0bfaa2b2175ee7f71c97a7ca0d379d6961ad0058b36607c07ef
|
|
| MD5 |
2497df717a71380ce11e58ed3349151c
|
|
| BLAKE2b-256 |
a0b962af1020e48cbe115e55ffd1d07ada460ea0d12075ceb15d2efa8c3fa086
|
File details
Details for the file arghandle-1.2.0-py3-none-any.whl.
File metadata
- Download URL: arghandle-1.2.0-py3-none-any.whl
- Upload date:
- Size: 30.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
933b3b17301455efe43e0c05f0ed4d1e46161d3afdd74390cd812f5792ea8bcd
|
|
| MD5 |
76fee5219ec154f4a8ddd0a26e86ab9d
|
|
| BLAKE2b-256 |
982c50e420bc3b3ea0e34e6e8b8678237f99f7f27a8ee1272df0ba369d65abb8
|