On Nov 14, 4:49 pm, Joe Strout <[EMAIL PROTECTED]> wrote: > So things like this should suffice: > > # simple element > assert(is_stringlike(foo)) > assert(is_numeric(foo)) > assert(is_like(foo, Duck)) > > # sequence of elements > assert(seqof_stringlike(foo)) > assert(seqof_numeric(foo)) > assert(seqof_like(foo, Duck)) > # (also "listof_" variants for asserting mutable sequence of whatever) > > # dictionary of elements > assert(dictof_like(foo, str, int)) > > Hmm, I was already forced to change my approach by the time I got to > checking dictionaries. Perhaps a better formalism would be a "like" > method that takes an argument, and something that indicates the > desired type. This could be a tree if you want to check deeper into a > container. Maybe something like: > > assert(fits(foo, dictlike(strlike, seqlike(intlike)))) > > which asserts that foo is something dictionary-like that maps string- > like things to something like a sequence of integer-like things. Most > cases would not be this complex, of course, but would be closer to > > assert(fits(foo, strlike)) > > But this is still pretty ugly. Hmm. Maybe I'd better wait for > ABCs. :)
You might also be interested in the typecheck module whose syntax looks nicer, at least for the common cases: http://oakwinter.com/code/typecheck/dev/ George -- http://mail.python.org/mailman/listinfo/python-list