Skip to main content

Class to get options from command line and config file

Project description

https://img.shields.io/pypi/v/optini.svg https://img.shields.io/travis/datagazing/optini.svg Documentation Status

Python class to get options from command line and config file

Features

  • Aggressively conventional defaults

  • Collect configuration from command line, config file, and defaults
    • Configuration hierarchy: command line > config file > defaults

  • Interface is a module-level variable: optini.opt
    • Module-level interface allows libraries to access config

  • Access config options through module-level dotmap interface
    • Example: optini.opt.verbose

  • Derives command line options from option names
    • Example: “verbose” => -v and –verbose

  • Single flag to support (mostly) conventional logging options
    • (-v, -d, -q, -L, -F LOGFILE)

  • Single flag to support I/O options (-i input and -o output)

  • Supports top-level ini section without a header

  • Uses standard libraries under the hood (logging, argparse, configparser)

Limitations

  • Only top-level code (such as UI script) should initialize Config

Examples

Define one boolean option, someopt, which defaults to false; users can specify -s at the command line, or put someopt = true in the config file.

import optini
optini.spec.someopt.help = 'Set a flag'
# implies -s and --someopt command line options
desc = 'This code does a thing'
optini.Config(appname='myapp', file=True, desc=desc)
if optini.opt.someopt:
    print("someopt flag is set")

Config file defaults to ~/.<appname>.ini

Enable logging config:

import logging
import optini
optini.Config(appname='something', logging=True)
# the verbose (-v) option enables info messages
logging.info('this is an info message')
# the debug (-d) option enables debug messages
logging.debug('this is a debug message')
# the Log (-L) option writes logs to file (default: <appname>.log)

Option Specification Format

  • Nested data structure (either dict or dotmap is valid)

  • The top level key is the option name

  • To configure each option, specify second level keys:
    • helpstr, default=None
      • for argparse usage message, default config file comments

    • typetype, default=bool
      • type hint for parsers

      • Supported: bool, str, int, float

    • default, default=None
      • the default value for the option

    • required, default=False
      • Declare the option mandatory at the command line

    • shortstr
      • Short form command line option (example: -v)

    • longstr
      • Long form command line option (example: –verbose)

    • configfilebool
      • Specify False for command line only options

  • Second level keys, apart from configfile, are passed to argparse

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

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

optini-0.5.0.tar.gz (17.3 kB view hashes)

Uploaded Source

Built Distribution

optini-0.5.0-py3-none-any.whl (9.5 kB view hashes)

Uploaded Python 3

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