Issue 5080: PyArg_Parse* should raise TypeError for float parsed with integer format (original) (raw)

Created on 2009-01-27 12:23 by mark.dickinson, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
issue5080.patch mark.dickinson,2009-12-21 13:53
Messages (11)
msg80649 - (view) Author: Mark Dickinson (mark.dickinson) * (Python committer) 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) * (Python committer) Date: 2009-09-04 07:57
+1.
msg92400 - (view) Author: STINNER Victor (vstinner) * (Python committer) 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) * (Python committer) Date: 2009-11-19 17:22
+1 for a TypeError too.
msg95538 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) 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) * (Python committer) 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) * (Python committer) 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) * (Python committer) 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) * (Python committer) 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) * (Python committer) 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) * (Python committer) Date: 2010-01-01 19:30
Merged relevant bits to py3k in r77220.
History
Date User Action Args
2022-04-11 14:56:44 admin set github: 49330
2010-01-01 19:30:02 mark.dickinson set status: open -> closedresolution: fixedmessages: + stage: needs patch -> resolved
2010-01-01 17:29:50 mark.dickinson set messages: + versions: + Python 3.2
2009-12-21 13:53:56 mark.dickinson set files: + issue5080.patchkeywords: + patchmessages: +
2009-12-20 16:05:34 mark.dickinson set messages: +
2009-12-20 15:31:51 mark.dickinson set messages: +
2009-11-20 13:46:57 mark.dickinson set messages: +
2009-11-20 12:36:44 pitrou set messages: +
2009-11-19 17:28:33 ezio.melotti set nosy: + ezio.melotti
2009-11-19 17:22:47 pitrou set priority: normalnosy: + pitroumessages: + stage: needs patch
2009-11-18 21:16:49 mark.dickinson set assignee: mark.dickinson
2009-09-20 12:27:36 marcin.wider set nosy: + marcin.wider
2009-09-07 23:27:36 vstinner set nosy: + vstinnermessages: +
2009-09-04 07:57:49 georg.brandl set nosy: + georg.brandlmessages: +
2009-01-27 12:23:56 mark.dickinson create