- Multivalued Options
- Positional Arguments
- Non-Unicode Arguments
- Negative Numbers
Options can have an unlimited number of long-form aliases and single-character shortcuts:
Options can have string, integer, or floating-point values.
Option values can be separated by either a space,
--opt 123, or an equals symbol,
--opt=123. Either syntax can be used with shortcuts:
Multiple shortcuts can be condensed into a single block, e.g.
-abc foo bar. Trailing arguments are consumed in sequence as required by the options.
Options can be treated as singular or multivalued as circumstances require. Each option maintains an internal list to which newly parsed values are appended; the (singular) value of the option is the final value in the list or the default value if the list is empty.
For example, in the command below:
$ myapp --foo 123 --foo 456
the value of the option
456 but the list
[123, 456] is also available for use if required.
Flags are valueless options — they're either present or absent, but take no arguments. Like options, flags can have an unlimited number of long-form aliases and single-character shortcuts:
Options and flags can be preceded by, followed by, or interspaced with positional arguments.
Argslib supports the standard
-- switch for turning off option-parsing. All arguments following a
-- will be treated as positional arguments, even if they begin with a single or double dash.
Argslib supports git-style command interfaces with arbitrarily-nested commands. Commands have builtin support for an automatic
--help flag and an automatic
help <cmd> command, i.e. the commands
$ myapp <cmd> --help
$ myapp help <cmd>
are functionally identical and will both print the help text registered with the command.
To keep its API simple, this library only works with command line arguments which are valid unicode strings. If the parser finds an argument which is not a valid unicode string the
.parse() method will raise an
Some argument-parsing libraries struggle with negative numbers — for example, they will try to parse
-3 as a flag or option named
3. This library always treats arguments beginning with a dash and a digit as positional arguments or option values, never as flag or option names.