Configuration flags for libraries and applications.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
oscar
test
.gitignore
LICENSE
MANIFEST.in
README.rst
docs-requirements.txt
setup.cfg
setup.py
tox.ini Update to version 0.1.2 Oct 11, 2017

README.rst

oscar.flag

oscar.flag provides extensible, namespaced flags which can be parsed from environment variables, command-line arguments and config files.

Flags are declared where they are used in an application or library, and they are accessed through a namespace matching their fully qualified module path.

Documentation lives at Read the Docs, the code on GitHub.

Example

Application entry-point:

import sys
from oscar import flag

import other_module


FLAGS = flag.namespace(__name__)
FLAGS.some_int = flag.Int('some integer value', default=1)


if __name__ == '__main__':
    flag.parse_commandline(sys.argv[1:])
    flag.die_on_missing_required()

    print 'other_module.multiply_by(%d) = %d' % (
        FLAGS.some_int,
        other_module.multiply_by(FLAGS.some_int))

other_module.py:

from oscar import flag

FLAGS = flag.namespace(__name__)
FLAGS.multiplier = flag.Int('some integer', default=flag.REQUIRED)

def multiply_by(i):
    return i * FLAGS.multiplier

shell:

$ python example.py
Missing required flags:
      [other_module.]multiplier
Usage of example.py:
__main__:
      [__main__.]some_int=None: some integer value

other_module:
      [other_module.]multiplier=<required>: some integer

# Note the namespaced reference --other_module.multiplier.
$ python example.py --other_module.multiplier=2 --some_int=3
other_module.multiply_by(3) = 6

License

Copyright 2015 Mulberry Health Inc.

Licensed under the Apache License, Version 2.0.