msg80649 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2009-01-27 12:23 |
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. |
|
|
msg92239 - (view) |
Author: Georg Brandl (georg.brandl) *  |
Date: 2009-09-04 07:57 |
+1. |
|
|
msg92400 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2009-09-07 23:27 |
+10. It would fix the os.urandom(1.2) bug. On Linux, os.urandom() displays the following warnings and then go into an unlimited loop... /usr/lib/python2.5/os.py:734: DeprecationWarning: integer argument expected, got float bytes += read(_urandomfd, n - len(bytes)) read(1.2 - 1) ~> read(0.2) ~> read(0)... Tolerate float as integers introduces "subtle" bugs like byte/unicode bugs... |
|
|
msg95497 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-11-19 17:22 |
+1 for a TypeError too. |
|
|
msg95538 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2009-11-20 12:36 |
I think this should be signalled on the mailing-list, by the way. I expect everyone to agree of course :) |
|
|
msg95541 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2009-11-20 13:46 |
Yes, checking with python-dev sounds sensible. I'll wait until there's a working patch, though. |
|
|
msg96689 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2009-12-20 15:31 |
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. |
|
|
msg96692 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2009-12-20 16:05 |
'h' also produces a DeprecationWarning; I just added the missing tests for it in r76930 (trunk) and r76931 (py3k). |
|
|
msg96751 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2009-12-21 13:53 |
Here's a patch that makes the DeprecationWarning a TypeError, and adds a new DeprecationWarning for the 'L' format. |
|
|
msg97118 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2010-01-01 17:29 |
Applied to trunk in r77218. The DeprecationWarning for the 'L' format needs to be merged to py3k. |
|
|
msg97120 - (view) |
Author: Mark Dickinson (mark.dickinson) *  |
Date: 2010-01-01 19:30 |
Merged relevant bits to py3k in r77220. |
|
|