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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file optini-0.5.0.tar.gz.

File metadata

  • Download URL: optini-0.5.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for optini-0.5.0.tar.gz
Algorithm Hash digest
SHA256 c57c7505d8cf8e3d40b794a843706a28f1e845cb0972325b250ff1d99b3ddfb4
MD5 fa51bd246ad69663aed572cc7543dc14
BLAKE2b-256 2a62de20e95dce53fd22d7c4ffec73bc0cbec996b889927364de0592977a3965

See more details on using hashes here.

File details

Details for the file optini-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: optini-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for optini-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 55645d4c3797a5bd276db0380fc112493dc1c65e0cc52c855397246b67b7fded
MD5 ad368b9e5a4cebd001852ceb7ec0b9c6
BLAKE2b-256 a17af24516225eab0c6209c66f45b337cf2d494847305e3eed978a3388aef192

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