Pre/Postconditions with decorators

George Sakkis gsakkis at
Sun Jan 9 13:10:08 EST 2005

"Stephen Thorne" <stephen.thorne at> wrote:

> Unresolved Problems:
> 1) How do you handle duck types, i.e. a method that accepts StringIO,
> cStringIO or any other object that has a .readlines(), .seek() and
> .read() method?

I think the 'proper' way of checking duck types (among other things) is by defining appropriate
protocols; check pyProtocols ( for details.

> 2) How do you turn off the type checking for production code?

Currently I don't, but that's easy to do if desired by checking __debug__ in the decorator and
return the passed function if it is false:

def params(**checkedArgs):
    if not __debug__:
        return lambda function: function
    # else return a typechecked proxy of function

> Otherwise I quite like it. Please publish it somewhere.

Thanks. I'll post an entry on Vaults of Parnassus as soon as I publish it.


More information about the Python-list mailing list