Index: third_party/twisted_8_1/twisted/python/formmethod.py |
diff --git a/third_party/twisted_8_1/twisted/python/formmethod.py b/third_party/twisted_8_1/twisted/python/formmethod.py |
deleted file mode 100644 |
index 69b0edfb57d450f9c0e802bcde4082e03f2507a2..0000000000000000000000000000000000000000 |
--- a/third_party/twisted_8_1/twisted/python/formmethod.py |
+++ /dev/null |
@@ -1,363 +0,0 @@ |
-# -*- test-case-name: twisted.test.test_formmethod -*- |
-# Copyright (c) 2001-2004 Twisted Matrix Laboratories. |
-# See LICENSE for details. |
- |
- |
-""" |
-Form-based method objects. |
- |
-This module contains support for descriptive method signatures that can be used |
-to format methods. Currently this is only used by woven. |
-""" |
- |
-import calendar |
- |
-class FormException(Exception): |
- """An error occurred calling the form method. |
- """ |
- def __init__(self, *args, **kwargs): |
- Exception.__init__(self, *args) |
- self.descriptions = kwargs |
- |
- |
-class InputError(FormException): |
- """ |
- An error occurred with some input. |
- """ |
- |
- |
-class Argument: |
- """Base class for form arguments.""" |
- |
- # default value for argument, if no other default is given |
- defaultDefault = None |
- |
- def __init__(self, name, default=None, shortDesc=None, |
- longDesc=None, hints=None, allowNone=1): |
- self.name = name |
- self.allowNone = allowNone |
- if default is None: |
- default = self.defaultDefault |
- self.default = default |
- self.shortDesc = shortDesc |
- self.longDesc = longDesc |
- if not hints: |
- hints = {} |
- self.hints = hints |
- |
- def addHints(self, **kwargs): |
- self.hints.update(kwargs) |
- |
- def getHint(self, name, default=None): |
- return self.hints.get(name, default) |
- |
- def getShortDescription(self): |
- return self.shortDesc or self.name.capitalize() |
- |
- def getLongDescription(self): |
- return self.longDesc or '' #self.shortDesc or "The %s." % self.name |
- |
- def coerce(self, val): |
- """Convert the value to the correct format.""" |
- raise NotImplementedError, "implement in subclass" |
- |
- |
-class String(Argument): |
- """A single string. |
- """ |
- defaultDefault = '' |
- min = 0 |
- max = None |
- |
- def __init__(self, name, default=None, shortDesc=None, |
- longDesc=None, hints=None, allowNone=1, min=0, max=None): |
- Argument.__init__(self, name, default=default, shortDesc=shortDesc, |
- longDesc=longDesc, hints=hints, allowNone=allowNone) |
- self.min = min |
- self.max = max |
- |
- def coerce(self, val): |
- s = str(val) |
- if len(s) < self.min: |
- raise InputError, "Value must be at least %s characters long" % self.min |
- if self.max != None and len(s) > self.max: |
- raise InputError, "Value must be at most %s characters long" % self.max |
- return str(val) |
- |
- |
-class Text(String): |
- """A long string. |
- """ |
- |
- |
-class Password(String): |
- """A string which should be obscured when input. |
- """ |
- |
- |
-class VerifiedPassword(String): |
- """A string that should be obscured when input and needs verification.""" |
- |
- def coerce(self, vals): |
- if len(vals) != 2 or vals[0] != vals[1]: |
- raise InputError, "Please enter the same password twice." |
- s = str(vals[0]) |
- if len(s) < self.min: |
- raise InputError, "Value must be at least %s characters long" % self.min |
- if self.max != None and len(s) > self.max: |
- raise InputError, "Value must be at most %s characters long" % self.max |
- return s |
- |
- |
-class Hidden(String): |
- """A string which is not displayed. |
- |
- The passed default is used as the value. |
- """ |
- |
- |
-class Integer(Argument): |
- """A single integer. |
- """ |
- defaultDefault = None |
- |
- def __init__(self, name, allowNone=1, default=None, shortDesc=None, |
- longDesc=None, hints=None): |
- #although Argument now has allowNone, that was recently added, and |
- #putting it at the end kept things which relied on argument order |
- #from breaking. However, allowNone originally was in here, so |
- #I have to keep the same order, to prevent breaking code that |
- #depends on argument order only |
- Argument.__init__(self, name, default, shortDesc, longDesc, hints, |
- allowNone) |
- |
- def coerce(self, val): |
- if not val.strip() and self.allowNone: |
- return None |
- try: |
- return int(val) |
- except ValueError: |
- raise InputError, "%s is not valid, please enter a whole number, e.g. 10" % val |
- |
- |
-class IntegerRange(Integer): |
- |
- def __init__(self, name, min, max, allowNone=1, default=None, shortDesc=None, |
- longDesc=None, hints=None): |
- self.min = min |
- self.max = max |
- Integer.__init__(self, name, allowNone=allowNone, default=default, shortDesc=shortDesc, |
- longDesc=longDesc, hints=hints) |
- |
- def coerce(self, val): |
- result = Integer.coerce(self, val) |
- if self.allowNone and result == None: |
- return result |
- if result < self.min: |
- raise InputError, "Value %s is too small, it should be at least %s" % (result, self.min) |
- if result > self.max: |
- raise InputError, "Value %s is too large, it should be at most %s" % (result, self.max) |
- return result |
- |
- |
-class Float(Argument): |
- |
- defaultDefault = None |
- |
- def __init__(self, name, allowNone=1, default=None, shortDesc=None, |
- longDesc=None, hints=None): |
- #although Argument now has allowNone, that was recently added, and |
- #putting it at the end kept things which relied on argument order |
- #from breaking. However, allowNone originally was in here, so |
- #I have to keep the same order, to prevent breaking code that |
- #depends on argument order only |
- Argument.__init__(self, name, default, shortDesc, longDesc, hints, |
- allowNone) |
- |
- |
- def coerce(self, val): |
- if not val.strip() and self.allowNone: |
- return None |
- try: |
- return float(val) |
- except ValueError: |
- raise InputError, "Invalid float: %s" % val |
- |
- |
-class Choice(Argument): |
- """ |
- The result of a choice between enumerated types. The choices should |
- be a list of tuples of tag, value, and description. The tag will be |
- the value returned if the user hits "Submit", and the description |
- is the bale for the enumerated type. default is a list of all the |
- values (seconds element in choices). If no defaults are specified, |
- initially the first item will be selected. Only one item can (should) |
- be selected at once. |
- """ |
- def __init__(self, name, choices=[], default=[], shortDesc=None, |
- longDesc=None, hints=None, allowNone=1): |
- self.choices = choices |
- if choices and not default: |
- default.append(choices[0][1]) |
- Argument.__init__(self, name, default, shortDesc, longDesc, hints, allowNone=allowNone) |
- |
- def coerce(self, inIdent): |
- for ident, val, desc in self.choices: |
- if ident == inIdent: |
- return val |
- else: |
- raise InputError("Invalid Choice: %s" % inIdent) |
- |
- |
-class Flags(Argument): |
- """ |
- The result of a checkbox group or multi-menu. The flags should be a |
- list of tuples of tag, value, and description. The tag will be |
- the value returned if the user hits "Submit", and the description |
- is the bale for the enumerated type. default is a list of all the |
- values (second elements in flags). If no defaults are specified, |
- initially nothing will be selected. Several items may be selected at |
- once. |
- """ |
- def __init__(self, name, flags=(), default=(), shortDesc=None, |
- longDesc=None, hints=None, allowNone=1): |
- self.flags = flags |
- Argument.__init__(self, name, default, shortDesc, longDesc, hints, allowNone=allowNone) |
- |
- def coerce(self, inFlagKeys): |
- if not inFlagKeys: |
- return [] |
- outFlags = [] |
- for inFlagKey in inFlagKeys: |
- for flagKey, flagVal, flagDesc in self.flags: |
- if inFlagKey == flagKey: |
- outFlags.append(flagVal) |
- break |
- else: |
- raise InputError("Invalid Flag: %s" % inFlagKey) |
- return outFlags |
- |
- |
-class CheckGroup(Flags): |
- pass |
- |
- |
-class RadioGroup(Choice): |
- pass |
- |
- |
-class Boolean(Argument): |
- def coerce(self, inVal): |
- if not inVal: |
- return 0 |
- lInVal = str(inVal).lower() |
- if lInVal in ('no', 'n', 'f', 'false', '0'): |
- return 0 |
- return 1 |
- |
-class File(Argument): |
- def __init__(self, name, allowNone=1, shortDesc=None, longDesc=None, |
- hints=None): |
- self.allowNone = allowNone |
- Argument.__init__(self, name, None, shortDesc, longDesc, hints) |
- |
- def coerce(self, file): |
- if not file and self.allowNone: |
- return None |
- elif file: |
- return file |
- else: |
- raise InputError, "Invalid File" |
- |
-def positiveInt(x): |
- x = int(x) |
- if x <= 0: raise ValueError |
- return x |
- |
-class Date(Argument): |
- """A date -- (year, month, day) tuple.""" |
- |
- defaultDefault = None |
- |
- def __init__(self, name, allowNone=1, default=None, shortDesc=None, |
- longDesc=None, hints=None): |
- Argument.__init__(self, name, default, shortDesc, longDesc, hints) |
- self.allowNone = allowNone |
- if not allowNone: |
- self.defaultDefault = (1970, 1, 1) |
- |
- def coerce(self, args): |
- """Return tuple of ints (year, month, day).""" |
- if tuple(args) == ("", "", "") and self.allowNone: |
- return None |
- |
- try: |
- year, month, day = map(positiveInt, args) |
- except ValueError: |
- raise InputError, "Invalid date" |
- if (month, day) == (2, 29): |
- if not calendar.isleap(year): |
- raise InputError, "%d was not a leap year" % year |
- else: |
- return year, month, day |
- try: |
- mdays = calendar.mdays[month] |
- except IndexError: |
- raise InputError, "Invalid date" |
- if day > mdays: |
- raise InputError, "Invalid date" |
- return year, month, day |
- |
- |
-class Submit(Choice): |
- """Submit button or a reasonable facsimile thereof.""" |
- |
- def __init__(self, name, choices=[("Submit", "submit", "Submit form")], |
- reset=0, shortDesc=None, longDesc=None, allowNone=0, hints=None): |
- Choice.__init__(self, name, choices=choices, shortDesc=shortDesc, |
- longDesc=longDesc, hints=hints) |
- self.allowNone = allowNone |
- self.reset = reset |
- |
- def coerce(self, value): |
- if self.allowNone and not value: |
- return None |
- else: |
- return Choice.coerce(self, value) |
- |
- |
-class PresentationHint: |
- """ |
- A hint to a particular system. |
- """ |
- |
- |
-class MethodSignature: |
- |
- def __init__(self, *sigList): |
- """ |
- """ |
- self.methodSignature = sigList |
- |
- def getArgument(self, name): |
- for a in self.methodSignature: |
- if a.name == name: |
- return a |
- |
- def method(self, callable, takesRequest=False): |
- return FormMethod(self, callable, takesRequest) |
- |
- |
-class FormMethod: |
- """A callable object with a signature.""" |
- |
- def __init__(self, signature, callable, takesRequest=False): |
- self.signature = signature |
- self.callable = callable |
- self.takesRequest = takesRequest |
- |
- def getArgs(self): |
- return tuple(self.signature.methodSignature) |
- |
- def call(self,*args,**kw): |
- return self.callable(*args,**kw) |