This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Builtins like int() and float() should not blindly treat buffer protocol bytes as string characters.
Type: behavior Stage:
Components: Interpreter Core Versions:
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: amohr, serhiy.storchaka
Priority: normal Keywords:

Created on 2020-09-03 20:51 by amohr, last changed 2022-04-11 14:59 by admin.

Messages (2)
msg376317 - (view) Author: Alex Mohr (amohr) Date: 2020-09-03 20:51
Instead they should request and take into consideration the buffer object's data format.  For example, surely we don't want to treat floating point binary representations as string characters:

>>> from array import array
>>> a = array('f', [1.2, 2.3, 3.4])
>>> int(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: b'\x9a\x99\x99?33\x13@\x9a\x99Y@'

It's even a little dangerous, since you can get "lucky" with certain binary representations:

>>> a = array('I', [875770417, 875770420])
>>> int(a)
12344234
msg376336 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2020-09-04 06:15
See also issue27572.
History
Date User Action Args
2022-04-11 14:59:35adminsetgithub: 85873
2020-09-04 06:15:31serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg376336
2020-09-03 20:51:59amohrcreate