from new import function
# ...
if isinstance(obj, function): # ...
It didn't look odd at all. And I don't care much where I import function from. I wouldn't mind if all the type objects defined in new where available in types. IOW, the names exported by new could also be exported by types.
No, the docs for types.py promises that it only exports names ending in 'Type'. That's not a promise I want to break lightly.
This means types would fall into two categories: types with builtin names and types available in the types module. I expect the current set of types with builtin names is sufficient.
This is already the case, but the names exported by types.py don't match the __name__ attribute of those types. Is that a problem? --Guido van Rossum (home page: http://www.python.org/~guido/)