Skip to content

oscarhealth/oscar.flag

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Configuration flags for libraries and applications.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages