Exemple #1
0
 def _check_choice(self):
     if self.type == "choice":
         if self.choices is None:
             raise OptionError(
                 "must supply a list of choices for type 'choice'", self)
         elif type(self.choices) not in (types.TupleType, types.ListType):
             raise OptionError(
                 "choices must be a list of strings ('%s' supplied)" %
                 string.split(str(type(self.choices)), "'")[1], self)
     elif self.choices is not None:
         raise OptionError(
             "must not supply choices for type %s" % repr(self.type), self)
Exemple #2
0
 def _check_nargs(self):
     if self.action in self.TYPED_ACTIONS:
         if self.nargs is None:
             self.nargs = 1
     elif self.nargs is not None:
         raise OptionError(
             "'nargs' must not be supplied for action %s" %
             repr(self.action), self)
Exemple #3
0
 def _set_opt_strings(self, opts):
     for opt in opts:
         if len(opt) < 2:
             raise OptionError(
                 "invalid option string %s: "
                 "must be at least two characters long" % repr(opt), self)
         elif len(opt) == 2:
             if not (opt[0] == "-" and opt[1] != "-"):
                 raise OptionError(
                     "invalid short option string %s: "
                     "must be of the form -x, (x any non-dash char)" %
                     repr(opt), self)
             self._short_opts.append(opt)
         else:
             if not (opt[0:2] == "--" and opt[2] != "-"):
                 raise OptionError(
                     "invalid long option string %s: "
                     "must start with --, followed by non-dash" % repr(opt),
                     self)
             self._long_opts.append(opt)
Exemple #4
0
 def _check_callback(self):
     if self.action == "callback":
         if not callable(self.callback):
             raise OptionError(
                 "callback not callable: %s" % repr(self.callback), self)
         if (self.callback_args is not None
                 and type(self.callback_args) is not types.TupleType):
             raise OptionError(
                 "callback_args, if supplied, must be a tuple: not %s" %
                 repr(self.callback_args), self)
         if (self.callback_kwargs is not None
                 and type(self.callback_kwargs) is not types.DictType):
             raise OptionError(
                 "callback_kwargs, if supplied, must be a dict: not %s" %
                 repr(self.callback_kwargs), self)
     else:
         if self.callback is not None:
             raise OptionError(
                 "callback supplied (%s) for non-callback option" %
                 repr(self.callback), self)
         if self.callback_args is not None:
             raise OptionError(
                 "callback_args supplied for non-callback option", self)
         if self.callback_kwargs is not None:
             raise OptionError(
                 "callback_kwargs supplied for non-callback option", self)
Exemple #5
0
    def _check_type(self):
        if self.type is None:
            if self.action in self.ALWAYS_TYPED_ACTIONS:
                if self.choices is not None:
                    # The "choices" attribute implies "choice" type.
                    self.type = "choice"
                else:
                    # No type given?  "string" is the most sensible default.
                    self.type = "string"
        else:
            # Allow type objects as an alternative to their names.
            if hasattr(self.type, "__name__"):
                self.type = self.type.__name__
            if self.type == "str":
                self.type = "string"

            if self.type not in self.TYPES:
                raise OptionError("invalid option type: %s" % repr(self.type),
                                  self)
            if self.action not in self.TYPED_ACTIONS:
                raise OptionError(
                    "must not supply a type for action %s" % repr(self.action),
                    self)
Exemple #6
0
 def _set_attrs(self, attrs):
     for attr in self.ATTRS:
         if attrs.has_key(attr):
             setattr(self, attr, attrs[attr])
             del attrs[attr]
         else:
             if attr == 'default':
                 setattr(self, attr, NO_DEFAULT)
             else:
                 setattr(self, attr, None)
     if attrs:
         raise OptionError(
             "invalid keyword arguments: %s" %
             string.join(attrs.keys(), ", "), self)
Exemple #7
0
 def _check_const(self):
     if self.action not in self.CONST_ACTIONS and self.const is not None:
         raise OptionError(
             "'const' must not be supplied for action %s" %
             repr(self.action), self)
Exemple #8
0
 def _check_action(self):
     if self.action is None:
         self.action = "store"
     elif self.action not in self.ACTIONS:
         raise OptionError("invalid action: %s" % repr(self.action), self)