Return to Snippet

Revision: 41570
at February 19, 2011 23:34 by Geronimrod


Initial Code
from types import *

def bfnCheckArgTypes(*args):
    sErr = "" 
    # loops through: ('sString', 'tupTuple', 'iInteger', 'lstList')
    for iInd, sArgName in enumerate(args[0].func_code.co_varnames):
        if sArgName.startswith("tup") and not type(args[iInd+1]) is TupleType:
            sErr += "\n arg '%s' is not of type 'tuple'" % sArgName
        elif sArgName.startswith("lst") and not type(args[iInd+1]) is ListType:
            sErr += "\n arg '%s' is not of type 'list'" % sArgName
        elif sArgName.startswith("i") and not type(args[iInd+1]) is IntType:
            sErr += "\n arg '%s' is not of type 'int'" % sArgName
        elif sArgName.startswith("s") and not type(args[iInd+1])  is StringType:
            sErr += "\n arg '%s' is not of type 'str'" % sArgName
    if not sErr == "":
        print "Function '%s' has argument errors: %s" % (args[0].__name__, sErr)
        return False
    return True
        

def fnTestMe(sString, tupTuple, iInteger, lstList):
    assert bfnCheckArgTypes(fnTestMe, sString, tupTuple, iInteger, lstList)


# Test the code with these:

fnTestMe("string-OK", ("tuple","OK"), 55, ["list","OK"])  # all OK

#fnTestMe("string-OK", "notTuple", 55, "notList")          # 2nd and 4th fail 

fnTestMe(55, ("tuple","OK"), "string-NOK", ["list","OK"]) # 1st and 3rd fail

Initial URL


Initial Description
not an answer for everything, but perhaps for basic types

Initial Title
Checking function argument types against naming convention

Initial Tags
function

Initial Language
Python