New submission from Edson Tadeu M. Manoel :
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 "", line 1, in
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 "", line 1, in
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 "", line 1, in
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
<https://bugs.python.org/issue41777>
___
___
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com