Welcome to oscar.flag’s documentation!

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.

Contents:

Indices and tables