commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r9920 - in trunk/gnue-common: src/apps src/base src/lib tests


From: reinhard
Subject: [gnue] r9920 - in trunk/gnue-common: src/apps src/base src/lib tests
Date: Fri, 2 Oct 2009 04:47:54 -0500 (CDT)

Author: reinhard
Date: 2009-10-02 04:47:54 -0500 (Fri, 02 Oct 2009)
New Revision: 9920

Added:
   trunk/gnue-common/src/lib/checktype.py
Removed:
   trunk/gnue-common/src/apps/checktype.py
   trunk/gnue-common/src/base/checktype.py
Modified:
   trunk/gnue-common/src/apps/__init__.py
   trunk/gnue-common/tests/apps_checktype.py
Log:
Reworked checktype to be more generally usable (not GNUe dependent), moved it
to lib.


Modified: trunk/gnue-common/src/apps/__init__.py
===================================================================
--- trunk/gnue-common/src/apps/__init__.py      2009-10-01 13:51:39 UTC (rev 
9919)
+++ trunk/gnue-common/src/apps/__init__.py      2009-10-02 09:47:54 UTC (rev 
9920)
@@ -30,9 +30,10 @@
 import GDebug
 import __builtin__
 
+from gnue.common.lib import checktype
+
 from gnue.common.apps import i18n
 from gnue.common.apps import errors
-from gnue.common.apps import checktype
 
 
 # -----------------------------------------------------------------------------
@@ -43,15 +44,3 @@
     print  ' * %s' % text
 
 __builtin__.__dict__['gStartupStatus'] = _print_startup_status
-
-
-
-# Add the decimal class for python 2.3 or less
-#if sys.hexversion < 0x02040000:
-#  pth = sys.path
-#  from gnue.common.external import decimal
-#  sys.modules['decimal'] = decimal
-#else:
-#  import decimal
-#
-#__builtins__['Decimal'] = decimal.Decimal

Deleted: trunk/gnue-common/src/apps/checktype.py
===================================================================
--- trunk/gnue-common/src/apps/checktype.py     2009-10-01 13:51:39 UTC (rev 
9919)
+++ trunk/gnue-common/src/apps/checktype.py     2009-10-02 09:47:54 UTC (rev 
9920)
@@ -1,30 +0,0 @@
-# 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-2009 Free Software Foundation
-#
-# $Id$
-
-"""
-Support for checking the type of variables.
-
-This module is *DEPRECATED*. Please use gnue.common.base.checktype instead.
-"""
-
-from gnue.common.base.checktype import TypeError, checktype

Deleted: trunk/gnue-common/src/base/checktype.py
===================================================================
--- trunk/gnue-common/src/base/checktype.py     2009-10-01 13:51:39 UTC (rev 
9919)
+++ trunk/gnue-common/src/base/checktype.py     2009-10-02 09:47:54 UTC (rev 
9920)
@@ -1,186 +0,0 @@
-# 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-2009 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.'

Copied: trunk/gnue-common/src/lib/checktype.py (from rev 9918, 
trunk/gnue-common/src/base/checktype.py)
===================================================================
--- trunk/gnue-common/src/lib/checktype.py                              (rev 0)
+++ trunk/gnue-common/src/lib/checktype.py      2009-10-02 09:47:54 UTC (rev 
9920)
@@ -0,0 +1,183 @@
+# GNU Enterprise Common Library - Variable Type Checking
+#
+# Copyright 2001-2009 Free Software Foundation
+#
+# 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.
+#
+# $Id$
+
+"""
+Support for checking the type of variables.
+"""
+
+import sys
+import types
+
+__all__ = ['checktype']
+
+
+# =============================================================================
+# Type Check Routine
+# =============================================================================
+
+# -----------------------------------------------------------------------------
+# Check type of a variable
+# -----------------------------------------------------------------------------
+
+def checktype(variable, valid_type):
+    """
+    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 valid_type: 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 type is ok, return without exception.
+    if isinstance(valid_type, list):
+        for t in valid_type:
+            if t is None:
+                if variable is None:
+                    return
+            else:
+                if isinstance(variable, t):
+                    return
+    else:
+        if isinstance(variable, valid_type):
+            return
+
+    # The type is not ok, so raise the exception.
+
+    # Find out variable name.
+    varname = '<?>'
+    for (key, val) in (sys._getframe(1)).f_locals.items():
+        if variable is val:
+            varname = key
+
+    # Find out variable type
+    if isinstance(variable, types.InstanceType):
+        actual_type = variable.__class__
+    else:
+        actual_type = type(variable)
+
+    raise TypeError('"%(varname)s" is expected to be of %(expected)s but is ' \
+            'of %(actual)s and has value %(value)s' % {
+                'varname' : varname,
+                'expected': __stringify(valid_type),
+                'actual'  : __stringify(actual_type),
+                'value'   : repr(variable)})
+
+
+# -----------------------------------------------------------------------------
+# Get a nice string for a given type
+# -----------------------------------------------------------------------------
+
+def __stringify(a_type):
+
+    if isinstance(a_type, list):
+        return ' / '.join([__stringify(t) for t in a_type])
+
+    elif isinstance(a_type, type):
+        return str(a_type)
+
+    elif isinstance(a_type, types.ClassType):
+        return '<class %s>' % str(a_type)
+
+    else:
+        return '<type %s>' % str(a_type)
+
+
+# =============================================================================
+# Module initialization
+# =============================================================================
+
+import __builtin__
+__builtin__.__dict__['checktype'] = checktype
+
+
+# =============================================================================
+# Module self test code
+# =============================================================================
+
+if __name__ == '__main__':
+
+    # -------------------------------------------------------------------------
+    # Test of checktype function
+    # -------------------------------------------------------------------------
+
+    def __test_checktype():
+
+        def __mustfail(variable, valid_type):
+            try:
+                checktype(variable, valid_type)
+            except TypeError, message:
+                print message
+                return
+            raise TypeError("checking %s as %s hasn't failed!" % (
+                repr(variable), repr(valid_type)))
+
+        none_var = None
+        string_var = 'this is a string'
+        unicode_var = u'this is a unicode string'
+        integer_var = 100
+        float_var = 17.85
+        class ParentClass:
+            def __init__(self):
+                pass
+        class ChildClass(ParentClass):
+            pass
+        instance_var = ChildClass()
+
+        print 'Single type, success ...'
+        checktype(none_var, types.NoneType)
+        checktype(string_var, str)
+        checktype(unicode_var, unicode)
+        checktype(integer_var, int)
+        checktype(float_var, float)
+        checktype(ChildClass, types.ClassType)
+        checktype(instance_var, types.InstanceType)
+        checktype(instance_var, ChildClass)
+        checktype(instance_var, ParentClass)
+
+        print 'Multiple types, success ...'
+        checktype(none_var, [str, types.NoneType])
+        checktype(string_var, [str, unicode])
+        checktype(unicode_var, [str, unicode])
+        checktype(instance_var, [types.NoneType, ChildClass])
+
+        print 'Single type, failure ...'
+        __mustfail(none_var, str)
+        __mustfail(string_var, unicode)
+        __mustfail(unicode_var, str)
+        __mustfail(integer_var, float)
+        __mustfail(instance_var, int)
+        __mustfail(ChildClass, ChildClass)
+
+        print 'Multiple types, failure ...'
+        __mustfail(none_var, [str, unicode])
+        __mustfail(string_var, [int, float])
+
+        print 'All test passed.'
+
+    # -------------------------------------------------------------------------
+    # Call all tests
+    # -------------------------------------------------------------------------
+
+    __test_checktype()

Modified: trunk/gnue-common/tests/apps_checktype.py
===================================================================
--- trunk/gnue-common/tests/apps_checktype.py   2009-10-01 13:51:39 UTC (rev 
9919)
+++ trunk/gnue-common/tests/apps_checktype.py   2009-10-02 09:47:54 UTC (rev 
9920)
@@ -29,7 +29,7 @@
 
 import unittest
 from types import *
-from gnue.common.apps.checktype import *
+from gnue.common.lib.checktype import *
 
 class ChecktypeTestCase(unittest.TestCase):
   def setUp(self):





reply via email to

[Prev in Thread] Current Thread [Next in Thread]