Пример #1
0
 def _check_type(self):
     if self.type is None:
         # XXX should factor out another class attr here: list of
         # actions that *require* a type
         if self.action in ("store", "append"):
             # No type given?  "string" is the most sensible default.
             self.type = "string"
     else:
         if self.type not in self.TYPES:
             raise OptionError("invalid option type: %r" % self.type, self)
         if self.action not in self.TYPED_ACTIONS:
             raise OptionError(
                 "must not supply a type for action %r" % self.action, self)
Пример #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 %r" % self.action,
             self)
Пример #3
0
 def _check_opt_strings(self, opts):
     # Filter out None because early versions of Optik had exactly
     # one short option and one long option, either of which
     # could be None.
     opts = filter(None, opts)
     if not opts:
         raise OptionError("at least one option string must be supplied",
                           self)
     return opts
Пример #4
0
 def _set_opt_strings(self, opts):
     self._short_opts = []
     self._long_opts = []
     for opt in opts:
         if len(opt) < 2:
             raise OptionError(
                 "invalid option string %r: "
                 "must be at least two characters long" % opt, self)
         elif len(opt) == 2:
             if not (opt[0] == "-" and opt[1] != "-"):
                 raise OptionError(
                     "invalid short option string %r: "
                     "must be of the form -x, (x any non-dash char)" % opt,
                     self)
             self._short_opts.append(opt)
         else:
             if not (opt[0:2] == "--" and opt[2] != "-"):
                 raise OptionError(
                     "invalid long option string %r: "
                     "must start with --, followed by non-dash" % opt, self)
             self._long_opts.append(opt)
Пример #5
0
 def _check_callback(self):
     if self.action == "callback":
         if not callable(self.callback):
             raise OptionError("callback not callable: %r" % self.callback,
                               self)
         if (self.callback_args is not None
                 and type(self.callback_args) is not TupleType):
             raise OptionError(
                 "callback_args, if supplied, must be a tuple: not %r" %
                 self.callback_args, self)
         if (self.callback_kwargs is not None
                 and type(self.callback_kwargs) is not DictType):
             raise OptionError(
                 "callback_kwargs, if supplied, must be a dict: not %r" %
                 self.callback_kwargs, self)
     else:
         if self.callback is not None:
             raise OptionError(
                 "callback supplied (%r) for non-callback option" %
                 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)
Пример #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" % ", ".join(attrs.keys()),
             self)
Пример #7
0
 def _check_const(self):
     if self.action != "store_const" and self.const is not None:
         raise OptionError(
             "'const' must not be supplied for action %r" % self.action,
             self)
Пример #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: %r" % self.action, self)