[New-bugs-announce] [issue6535] optparse required field for Options

Daniel Kaplun report at bugs.python.org
Tue Jul 21 21:27:49 CEST 2009


New submission from Daniel Kaplun <min at 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 <report at bugs.python.org>
<http://bugs.python.org/issue6535>
_______________________________________


More information about the New-bugs-announce mailing list