@lonnen then I can't issue the `warnings.warn(...)`
Also the if statement has the advantage that it comes with a natural order and what if some next type isn't something one can simply compare with an `is`. 

I think I'll stick with the if statements. They're the easiest to read. 

Also, some things encapsulate multiples:
```
d={basestring:"String"}
assert not d.get(str)
assert not d.get(unicode)
```