On 2018-07-31 08:40, Robin Becker wrote:
A bitbucket user complains that python 3.6.6 with -Wall -b prints warnings for 
some reportlab code; the
example boils down to the following

##########
C:\code\hg-repos\reportlab\tmp>cat tb.py
if __name__=='__main__':
      d={'a':1}
      d[b'a'] = d['a']
##########


C:\code\hg-repos\reportlab\tmp>\python36\python -Wall -b tb.py
tb.py:3: BytesWarning: Comparison between bytes and string
    d[b'a'] = d['a']

I had always assumed that dicts didn't care about the type of keys although 
some types might cause issue with hashability, but
obviously the implementation seems to be comparing b'a' with 'a' (I suppose 
because they hash to the same chain).

Is this code erroneous or is the warning spurious or wrong?

The warning looks wrong to be.

In Python 2, u'a' and b'a' would be treated as the same key, but in Python 3 they are distinct and can co-exist.

Something for Python's bug tracker, I think!
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to