def add_option(self, *args, **kwargs): |
"""add_option(Option) |
add_option(opt_str, ..., kwarg=val, ...) |
""" |
if type(args[0]) is types.StringType: |
-> option = self.option_class(*args, **kwargs) |
elif len(args) == 1 and not kwargs: |
option = args[0] |
if not isinstance(option, Option): |
raise TypeError, "not an Option instance: %r" % option |
else: |
raise TypeError, "invalid arguments" |
|
self._check_conflict(option) |
|
self.option_list.append(option) |
option.container = self |
for opt in option._short_opts: |
self._short_opt[opt] = option |
for opt in option._long_opts: |
self._long_opt[opt] = option |
|
if option.dest is not None: |
if option.default is not NO_DEFAULT: |
self.defaults[option.dest] = option.default |
elif not self.defaults.has_key(option.dest): |
self.defaults[option.dest] = None |
|
return option |