changeset 724:d547c071b847

to -> http://k0s.org/hg/configuration
author Jeff Hammel <k0scist@gmail.com>
date Tue, 04 Nov 2014 15:15:53 -0800
parents 6fc2a2001ac2
children 55a9ba575605
files python/optparse_undefined.py
diffstat 1 files changed, 0 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/python/optparse_undefined.py	Tue Nov 04 15:12:40 2014 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#!/usr/bin/env python
-
-"""
-illustrates usage of the undefined pattern from e.g.
-http://k0s.org/mozilla/hg/bzconsole/file/tip/bzconsole/command.py
-
-This is useful for scenarios similar to:
-- you have base configuration in a file
-- you have an OptionParser to read options in the command line
-- the CLI options should overwrite the file configuration iff
-  the user specifies an option
-"""
-
-from optparse import OptionParser
-
-class Undefined(object):
-    def __init__(self, default):
-        self.default=default
-
-class UndefinedOptionParser(OptionParser):
-
-    def add_option(self, *args, **kwargs):
-        kwargs['default'] = Undefined(kwargs.get('default'))
-        OptionParser.add_option(self, *args, **kwargs)
-
-    def parse_args(self, *args, **kwargs):
-        options, args = OptionParser.parse_args(self, *args, **kwargs)
-        return options, args
-
-if __name__ == '__main__':
-
-    myparser = UndefinedOptionParser()
-    myparser.add_option("--foo", dest='foo', default='hello')
-    myparser.add_option("--bar", dest='bar', default='goodbye')
-    myparser.add_option("--baz", dest='baz', default='helloagain')
-    myparser.add_option("--fleem", dest='fleem', default='aufwiedersehen')
-
-    myconfiguration = {'foo': 'hi',
-                       'bar': 'ciao'}
-    options, args = myparser.parse_args(['--foo', 'hello', '--baz', 'hola'])
-    for key, value in options.__dict__.items():
-        # XXX ideally you would move this to parse_args
-        if isinstance(value, Undefined):
-            options.__dict__[key] = myconfiguration.get(key, value.default)
-
-    assert options.foo == 'hello'
-    assert options.bar == 'ciao'
-    assert options.baz == 'hola'
-    assert options.fleem == 'aufwiedersehen'