If you cared about type constraints you would not be using Python (or Ruby, or Perl).
Far more interesting (IMO), would be a constrains based library based on predicates (iterable, hashable, arithmatic-able?)
In ruby you can ensure this by calling responds_to?(:method).
So for example to see if some object is iterable, you just check if it responds to each.
obj.responds_to?(:each)
That doesn't guarantee that "each" is actually the right "each".
Just because you are using python doesn't mean that you have no interest in performance. Most apps don't need to be as fast as possible, but only fast enough. Adding a bunch of stuff that slows down python will decrease the set of problems where python is fast enough and thus usable. A large app I recently worked on is a python app interacting with a bunch of C++ libraries. The faster I could make my python code the more I can move stuff from C++ to python, which greatly decreases the time it takes to develop and change the app.