Skip to main content
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.

Release files for optini 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for optini 0.5.0
File Size Uploaded
optini-0.5.0.tar.gz 17.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for optini 0.5.0
File Interpreter ABI Platform
optini-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 26.9 kB

Release files / optini-0.5.0.tar.gz

Download URL optini-0.5.0.tar.gz
Size 17.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c57c7505d8cf8e3d40b794a843706a28f1e845cb0972325b250ff1d99b3ddfb4
BLAKE2b-256 checksum
How to use checksums
2a62de20e95dce53fd22d7c4ffec73bc0cbec996b889927364de0592977a3965
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.31.0

Release files / optini-0.5.0-py3-none-any.whl

Download URL optini-0.5.0-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55645d4c3797a5bd276db0380fc112493dc1c65e0cc52c855397246b67b7fded
BLAKE2b-256 checksum
How to use checksums
a17af24516225eab0c6209c66f45b337cf2d494847305e3eed978a3388aef192
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.31.0

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page