On Wed, Sep 11, 2019 at 5:49 AM Ivan Pozdeev via Python-Dev
<python-dev@python.org> wrote:
>
> On 10.09.2019 21:12, Chris Angelico wrote:
> > On Wed, Sep 11, 2019 at 12:47 AM Daniel Holth <dho...@gmail.com> wrote:
> >> On Sat, Jun 22, 2019 at 2:48 AM Serhiy Storchaka <storch...@gmail.com> 
> >> wrote:
> >>> 22.06.19 01:08, Daniel Holth пише:
> >>>> Thanks. I think I might like an option to disable str(bytes) without
> >>>> disabling str != bytes. Unless the second operation would also corrupt
> >>>> output.
> >>>>
> >>>> Came across this kind of set in the hyper http library which uses a set
> >>>> to accept certain headers with either str or bytes keys.
> >>> Does that library support Python 2?  If it is true than you have a
> >>> problem, because u'abc' == b'abc' in Python 2 and u'abc' != b'abc' in
> >>> Python 3.
> >>>
> >>> If it is Python 3 only, you can just ignore BytesWarning. It was added
> >>> purely to help to catch subtle bugs in transition to Python 3. In
> >>> future, after Python 2 be out of use, BytesWarning will become deprecated.
> >>
> >> I stopped using Python 3 after learning about str(bytes) by finding it in 
> >> my corrupted database. Ever since then I've been anxious about changing to 
> >> the new language, since it makes it so easy to convert from bytes to 
> >> unicode by accident without specifying a valid encoding. So I would like 
> >> to see a future where str(bytes) is effectively removed. I started working 
> >> on a pull request that adds an API to toggle str(bytes) at runtime with a 
> >> thread local (instead of requiring a command line argument), so you could 
> >> do with no_str_bytes(): if you were worried about the feature, but got a 
> >> bit stuck in the internals.
> >>
> > Python has, for as long as I've known it, permitted you to call str()
> > on literally any object - if there's no other string form, you get its
> > repr. Breaking this would break all manner of debugging techniques.
> Isn't repr() the API intended for "all manner of debugging techniques"?

If you simply print(some_obj) it will use str by default, so you don't
want to break that.

ChrisA
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/EMDXVPYCYASCA66AKUB5ENEM453STIDE/

Reply via email to