Package haizea :: Package cli :: Module optionparser
[hide private]
[frames] | no frames]

Source Code for Module haizea.cli.optionparser

 1  # -------------------------------------------------------------------------- # 
 2  # Copyright 2006-2009, University of Chicago                                 # 
 3  # Copyright 2008-2009, Distributed Systems Architecture Group, Universidad   # 
 4  # Complutense de Madrid (dsa-research.org)                                   # 
 5  #                                                                            # 
 6  # Licensed under the Apache License, Version 2.0 (the "License"); you may    # 
 7  # not use this file except in compliance with the License. You may obtain    # 
 8  # a copy of the License at                                                   # 
 9  #                                                                            # 
10  # http://www.apache.org/licenses/LICENSE-2.0                                 # 
11  #                                                                            # 
12  # Unless required by applicable law or agreed to in writing, software        # 
13  # distributed under the License is distributed on an "AS IS" BASIS,          # 
14  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   # 
15  # See the License for the specific language governing permissions and        # 
16  # limitations under the License.                                             # 
17  # -------------------------------------------------------------------------- # 
18  import optparse as py_optparse 
19   
20 -class OptionParser (py_optparse.OptionParser):
21 - def _init_parsing_state (self):
22 py_optparse.OptionParser._init_parsing_state(self) 23 self.option_seen = {}
24
25 - def check_values (self, values, args):
26 for option in self.option_list: 27 if (isinstance(option, Option) and 28 option.required and 29 not self.option_seen.has_key(option)): 30 self.error("%s not supplied" % option) 31 return (values, args)
32
33 -class Option (py_optparse.Option):
34 ATTRS = py_optparse.Option.ATTRS + ['required'] 35
36 - def _check_required (self):
37 if self.required and not self.takes_value(): 38 raise py_optparse.OptionError( 39 "required flag set for option that doesn't take a value", 40 self)
41 42 # Make sure _check_required() is called from the constructor! 43 CHECK_METHODS = py_optparse.Option.CHECK_METHODS + [_check_required] 44
45 - def process (self, opt, value, values, parser):
46 py_optparse.Option.process(self, opt, value, values, parser) 47 parser.option_seen[self] = 1
48