Since Python 2.3, PyArg_ParseTuple and friends give a DeprecationWarning
for floating-point arguments where integers are expected. From
http://www.python.org/download/releases/2.3/NEWS.txt:
- The PyArg_Parse functions now issue a DeprecationWarning if a float
argument is provided when an integer is specified (this affects the 'b',
'B', 'h', 'H', 'i', and 'l' codes). Future versions of Python will
raise a TypeError.
Can we turn that DeprecationWarning into a TypeError for 2.7? (It's
already a TypeError in 3.x.) I'd like to see things like 'range(-0.3)'
and 'itertools.combinations(range(3), 5.1)' raise TypeError.
N.B. The relevant format codes in 2.7 include 'I' and 'n' in addition to
the six codes listed above.

Hmm. That's unfortunate: for argument type in 'bBHiIlkKn', an attempt to
pass a float results in a DeprecationWarning. For type 'L', there's no
DeprecationWarning, and the float is silently truncated. So for type 'L'
I guess we still have to go through a round of DeprecationWarning.
I'm not sure what 'h' does; there don't appear to be any tests for it,
currently.