Skip to main content

A classic getopt library with long options and optional arguments support.

Project description

getopt-py

A classic getopt library for Python with long options and optional arguments support.

Motivation

For developers that find argparse too constraining.

Example

import getopts

...

getopt = getopts.getopts(sys.argv, {
    "h": 0         , "help"   : 0,
    "o": 1         , "output" : 1,
    "p": is_port   , "port"   : is_port,
    "v": [is_int,1], "verbose": [is_int,1]
})

for c in getopt:
    if   c in ("-")           : opts.files.append(getopt.optarg)
    elif c in ("h", "help")   : usage() ; sys.exit(0)
    elif c in ("o", "output") : opts.output  = getopt.optarg
    elif c in ("p", "port")   : opts.port    = int(getopt.optarg)
    elif c in ("v", "verbose"): opts.verbose = int(getopt.optarg)
    else: sys.exit(1)
  • -h and --help take no arguments (0).
  • -o and --output take any argument (1).
  • -p and --port take an argument that, when passed to the is_port function, returns True.
  • -v and --verbose take an optional argument that, when passed to the is_int function, returns True. If no argument is specified, it defaults to 1.

See example.py for a more complete example.

Features

The features are based on GNU getopt_long:

  • Short options. Options may be combined (-a -b -c is equivalent to -abc). If the option takes a mandatory argument, the argument may appear with or without whitespaces (-o value is equivalent to -ovalue).

  • Long options. If the option takes a mandatory argument, the argument may appear with or without an equal sign (--option value is equivalent to --option=value).

  • Optional arguments. If the option takes an optional argument, the argument must appear without a space after a short option (-ovalue) or with an equal sign after a long option (--option=value).

  • Options may appear in any order.

  • -- can be used to denote the end of options.

Installation

With pip:

pip install getopts

(note the plural 's')

With dpm:

dpm install https://github.com/markuskimius/getopt-py.git

Usage

getopts.getopts(argv, optdict)

All parameters are mandatory:

  • argv - The argument list (e.g., sys.argv)
  • optdict - A dictionary containing the valid options and a specification of whether they take an argument. The keys are the options. The value may be 0 if the option takes no argument, or 1 if it takes an argument. Instead of 0 or 1, it may specify a validation function that returns 1 if the argument is valid, or 0 otherwise. To specify the argument as optional, surround it in brackets (make it a list), with the optional second element specifying the default value.

The function returns an iterable object that, if evaluated, returns one of the following:

  • -: An optionless argument. The value of the argument is stored in getopt.optarg.
  • ?: An invalid option. An error message has been printed to getopt.stderr and the option that caused the error is stored in getopt.optopt.
  • All other values: A valid option. This value is also stored in getopt.optopt. If the option takes an argument, the value is stored in getopt.optarg.

The following variable names are available:

  • getopt.optind: The index of the next argv.
  • getopt.optopt: The last option processed.
  • getopt.optarg: The argument to the last option.

License

Apache 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

getopts-1.0.5.tar.gz (8.4 kB view details)

Uploaded Source

File details

Details for the file getopts-1.0.5.tar.gz.

File metadata

  • Download URL: getopts-1.0.5.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.9

File hashes

Hashes for getopts-1.0.5.tar.gz
Algorithm Hash digest
SHA256 0c7c0bbbaaa9ba0cdca49898b2e11cd5032fe8557ca1f6cc2d94bcc4c1d1eff8
MD5 3347dc014569fa1cfbfaa676c6b40e33
BLAKE2b-256 7114ab1b8a25be44d96bfc242dfd9689f455c1fc621a5e392c536e9f598df2fe

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page