New submission from Edson Tadeu M. Manoel <e.ta...@gmail.com>:
Here is the inconsistent behavior, when running with `python -bb` (or just `python -b`), caused by an internal cache: >>> import struct >>> struct.calcsize(b'!d') # cache for '!d' uses bytes 8 >>> struct.calcsize('!d') # so there's a warning when trying to use str Traceback (most recent call last): File "<stdin>", line 1, in <module> BytesWarning: Comparison between bytes and string >>> struct.calcsize('>d') # cache for '>d' uses str 8 >>> struct.calcsize(b'>d') # so now the warning is inverted, it shows up when trying to use bytes Traceback (most recent call last): File "<stdin>", line 1, in <module> BytesWarning: Comparison between bytes and string >>> struct.calcsize('>d') # no problem when using str 8 Note that this might be caused by a possible larger problem when dealing with keys of different string types in dicts under `python -b` (or `python -bb`): $ python Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> d={} >>> d['a']=1 >>> d[b'a']=2 >>> d['a'] 1 >>> d[b'a'] 2 $ python -bb Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> d={} >>> d['a']=1 >>> d[b'a']=2 Traceback (most recent call last): File "<stdin>", line 1, in <module> I'm not sure if this warning is intentional, since in Python 3 there seems to be no special reason for dicts to try to compare 'a' with b'a' (other than possible implementation details). Note: this is from an issue found here: https://github.com/pytest-dev/pytest-xdist/issues/596 ---------- components: Interpreter Core, Library (Lib) messages: 376836 nosy: tadeu priority: normal severity: normal status: open title: When using `python -bb`, `struct.calcsize` raises a warning when used with str argument after being used with bytes (might be a larger problem with dicts) type: behavior versions: Python 3.8 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41777> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com