New submission from Daniel Kaplun <m...@dvir.us>:

In the second example to allow usage of the required field for options,
it seems as if you already have all you need to implement the feature
into optparse. I modified it a bit to allow OptionGroups:

class Option(optparse.Option):
        ATTRS = optparse.Option.ATTRS + ['required']

        def _check_required(self):
                if self.required and not self.takes_value():
                        raise OptionError(
                                "required flag set for option that doesn't take 
a value",
                                 self)

        # Make sure _check_required() is called from the constructor!
        CHECK_METHODS = optparse.Option.CHECK_METHODS + [_check_required]

        def process(self, opt, value, values, parser):
                optparse.Option.process(self, opt, value, values, parser)
                parser.option_seen[self] = 1

class OptionParser(optparse.OptionParser):
        def _init_parsing_state(self):
                optparse.OptionParser._init_parsing_state(self)
                self.option_seen = {}

        def check_values(self, values, args):
                for option in self.option_list + sum((optiongroup.option_list 
for
optiongroup in self.option_groups), []):
                        if isinstance(option, Option) and option.required and 
not
self.option_seen.has_key(option):
                                self.error("%s not supplied" % (option, ))
                return (values, args)

The question: why hasn't your existing example been merged with the
OptionParse code to allow the required field for options?

----------
components: Extension Modules
messages: 90767
nosy: mindvirus
severity: normal
status: open
title: optparse required field for Options
versions: Python 2.4, Python 2.5, Python 2.6, Python 2.7, Python 3.0, Python 
3.1, Python 3.2

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue6535>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to