Author: johannes
Date: 2007-11-15 02:06:04 -0600 (Thu, 15 Nov 2007)
New Revision: 9807
Added:
trunk/gnue-common/src/base/checktype.py
Modified:
trunk/gnue-common/src/apps/checktype.py
Log:
Moved checktype from apps into base
Modified: trunk/gnue-common/src/apps/checktype.py
===================================================================
--- trunk/gnue-common/src/apps/checktype.py 2007-11-14 15:18:39 UTC (rev 9806)
+++ trunk/gnue-common/src/apps/checktype.py 2007-11-15 08:06:04 UTC (rev 9807)
@@ -23,161 +23,8 @@
"""
Support for checking the type of variables.
+
+This module is *DEPRECATED*. Please use gnue.common.base.checktype instead.
"""
-import sys
-import types
-
-from gnue.common.base import errors, i18n
-
-
-# =============================================================================
-# Exception definition
-# =============================================================================
-
-class TypeError(errors.SystemError):
- """
- Raised when L{checktype} detects a wrong type.
-
- Do not raise this exception manually.
- """
- def __init__(self, variable, expected):
-
- self.varname = '<?>'
- for (k, v) in (sys._getframe(2)).f_locals.items():
- if variable is v:
- self.varname = k
-
- self.expected = expected # Expected type of variable
-
- if isinstance(variable, types.InstanceType):
- self.actual = variable.__class__
- else:
- self.actual = type(variable) # Actual type of variable
-
- self.value = variable # Value of variable
-
- message = u_('"%(varname)s" is expected to be of %(expected)s but is '
- 'of %(actual)s and has value %(value)s') \
- % {'varname' : self.varname,
- 'expected': self.__stringify(self.expected),
- 'actual' : self.__stringify(self.actual),
- 'value' : repr(self.value)}
- errors.SystemError.__init__(self, message)
-
-
- # -------------------------------------------------------------------------
- # Get a nice string for a given type
- # -------------------------------------------------------------------------
-
- def __stringify(self, atype):
-
- if isinstance(atype, list):
- return ' / '.join([self.__stringify(t) for t in atype])
-
- elif isinstance(atype, type):
- return str(atype)
-
- elif isinstance(atype, types.ClassType):
- return '<class %s>' % str(atype)
-
- else:
- return '<type %s>' % str(atype)
-
-
-# -----------------------------------------------------------------------------
-# Check type of a variable
-# -----------------------------------------------------------------------------
-
-def checktype(variable, validtype):
- """
- Check a varaible (for example a parameter to a function) for a correct type.
- This function is available as builtin function.
-
- @param variable: Variable to check.
- @param validtype: Type, class, or a list of types and classes that are
- valid.
- @raise TypeError: The variable has a type not listed in the valid types.
- """
- if isinstance(validtype, list):
- for t in validtype:
- if t is None:
- if variable is None:
- return
- else:
- if isinstance(variable, t):
- return
- else:
- if isinstance(variable, validtype):
- return
-
- raise TypeError, (variable, validtype)
-
-
-# -----------------------------------------------------------------------------
-# Module initialization
-# -----------------------------------------------------------------------------
-
-import __builtin__
-__builtin__.__dict__['checktype'] = checktype
-
-
-# -----------------------------------------------------------------------------
-# Self test code
-# -----------------------------------------------------------------------------
-
-if __name__ == '__main__':
-
- import sys
-
- def mustfail(testvar, validtype):
- try:
- checktype(testvar, validtype)
-
- except TypeError, message:
- print message
- return
- raise Error("checking %s as %s hasn't failed!" % (repr(variable),
- repr(validtype)))
-
- n = None
- s = 'this is a string'
- u = u'this is a unicode string'
- i = 100
- f = 17.85
- class p:
- pass
- class c(p):
- pass
- o = c()
-
- print 'Single type, success ...'
- checktype(n, types.NoneType)
- checktype(s, str)
- checktype(u, unicode)
- checktype(i, int)
- checktype(f, float)
- checktype(c, types.ClassType)
- checktype(o, types.InstanceType)
- checktype(o, c)
- checktype(o, p)
-
- print 'Multiple types, success ...'
- checktype(n, [str, types.NoneType])
- checktype(s, [str, unicode])
- checktype(u, [str, unicode])
- checktype(o, [types.NoneType, c])
-
- print 'Single type, failure ...'
- mustfail(n, str)
- mustfail(s, unicode)
- mustfail(u, str)
- mustfail(i, float)
- mustfail(o, int)
- mustfail(c, c)
-
- print 'Multiple types, failure ...'
- mustfail(n, [str, unicode])
- mustfail(s, [int, float])
-
- print 'All test passed.'
+from gnue.common.base.checktype import TypeError, checktype
Added: trunk/gnue-common/src/base/checktype.py
===================================================================
--- trunk/gnue-common/src/base/checktype.py 2007-11-14 15:18:39 UTC (rev 9806)
+++ trunk/gnue-common/src/base/checktype.py 2007-11-15 08:06:04 UTC (rev 9807)
@@ -0,0 +1,186 @@
+# GNU Enterprise Common Library - checktype support
+#
+# This file is part of GNU Enterprise.
+#
+# GNU Enterprise is free software; you can redistribute it
+# and/or modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation; either
+# version 2, or (at your option) any later version.
+#
+# GNU Enterprise is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+# PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with program; see the file COPYING. If not,
+# write to the Free Software Foundation, Inc., 59 Temple Place
+# - Suite 330, Boston, MA 02111-1307, USA.
+#
+# Copyright 2001-2007 Free Software Foundation
+#
+# $Id$
+
+"""
+Support for checking the type of variables.
+"""
+
+import sys
+import types
+
+from gnue.common.base import errors
+
+__all__ = ['TypeError', 'checktype']
+
+
+# =============================================================================
+# Exception definition
+# =============================================================================
+
+class TypeError(errors.SystemError):
+ """
+ Raised when L{checktype} detects a wrong type.
+
+ Do not raise this exception manually.
+ """
+ def __init__(self, variable, expected):
+
+ self.varname = '<?>'
+ for (key, val) in (sys._getframe(2)).f_locals.items():
+ if variable is val:
+ self.varname = key
+
+ self.expected = expected # Expected type of variable
+
+ if isinstance(variable, types.InstanceType):
+ self.actual = variable.__class__
+ else:
+ self.actual = type(variable) # Actual type of variable
+
+ self.value = variable # Value of variable
+
+ message = u_('"%(varname)s" is expected to be of %(expected)s but is '
+ 'of %(actual)s and has value %(value)s') \
+ % {'varname' : self.varname,
+ 'expected': self.__stringify(self.expected),
+ 'actual' : self.__stringify(self.actual),
+ 'value' : repr(self.value)}
+ errors.SystemError.__init__(self, message)
+
+
+ # -------------------------------------------------------------------------
+ # Get a nice string for a given type
+ # -------------------------------------------------------------------------
+
+ def __stringify(self, atype):
+
+ if isinstance(atype, list):
+ return ' / '.join([self.__stringify(ctp) for ctp in atype])
+
+ elif isinstance(atype, type):
+ return str(atype)
+
+ elif isinstance(atype, types.ClassType):
+ return '<class %s>' % str(atype)
+
+ else:
+ return '<type %s>' % str(atype)
+
+
+# -----------------------------------------------------------------------------
+# Check type of a variable
+# -----------------------------------------------------------------------------
+
+def checktype(variable, validtype):
+ """
+ Check a varaible (for example a parameter to a function) for a correct type.
+ This function is available as builtin function.
+
+ @param variable: Variable to check.
+ @param validtype: Type, class, or a list of types and classes that are
+ valid.
+ @raise TypeError: The variable has a type not listed in the valid types.
+ """
+ if isinstance(validtype, list):
+ for ctp in validtype:
+ if ctp is None:
+ if variable is None:
+ return
+ else:
+ if isinstance(variable, ctp):
+ return
+ else:
+ if isinstance(variable, validtype):
+ return
+
+ raise TypeError, (variable, validtype)
+
+
+# -----------------------------------------------------------------------------
+# Module initialization
+# -----------------------------------------------------------------------------
+
+import __builtin__
+__builtin__.__dict__['checktype'] = checktype
+
+
+# -----------------------------------------------------------------------------
+# Self test code
+# -----------------------------------------------------------------------------
+
+if __name__ == '__main__':
+
+ def mustfail(testvar, validtype):
+ """
+ Test a variable agains a given type, assuming that the test fails
+ """
+ try:
+ checktype(testvar, validtype)
+
+ except TypeError, message:
+ print message
+ return
+ raise errors.Error("checking %s as %s hasn't failed!" % (repr(variable),
+ repr(validtype)))
+
+ n = None
+ s = 'this is a string'
+ u = u'this is a unicode string'
+ i = 100
+ f = 17.85
+ class p:
+ pass
+ class c(p):
+ pass
+ o = c()
+
+ print 'Single type, success ...'
+ checktype(n, types.NoneType)
+ checktype(s, str)
+ checktype(u, unicode)
+ checktype(i, int)
+ checktype(f, float)
+ checktype(c, types.ClassType)
+ checktype(o, types.InstanceType)
+ checktype(o, c)
+ checktype(o, p)
+
+ print 'Multiple types, success ...'
+ checktype(n, [str, types.NoneType])
+ checktype(s, [str, unicode])
+ checktype(u, [str, unicode])
+ checktype(o, [types.NoneType, c])
+
+ print 'Single type, failure ...'
+ mustfail(n, str)
+ mustfail(s, unicode)
+ mustfail(u, str)
+ mustfail(i, float)
+ mustfail(o, int)
+ mustfail(c, c)
+
+ print 'Multiple types, failure ...'
+ mustfail(n, [str, unicode])
+ mustfail(s, [int, float])
+
+ print 'All test passed.'
Property changes on: trunk/gnue-common/src/base/checktype.py
___________________________________________________________________
Name: svn:keywords
+ Id
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.