[Python-Dev] Smoothing the transition from Python 2 to 3

Neil Schemenauer neil at python.ca
Thu Jun 9 19:08:07 EDT 2016


On 2016-06-09, Brett Cannon wrote:
> On Thu, 9 Jun 2016 at 14:56 Nick Coghlan <ncoghlan at gmail.com> wrote:
> > Once you switch to those now recommended more conservative migration
> > tools, the tool suite you request already exists:
> >
> > - update your code with modernize or futurize
> > - check it still runs on Python 2.7
> > - check it doesn't generate warnings under 2.7's "-3" switch
> > - check it passes "pylint --py3k"
> > - check if it runs on Python 3.5
> >
> 
> `python3.5 -bb` is best to help keep Python 2.7 compatibility, otherwise
> what Nick said. :)

I have to wonder if you guys actually ported at lot of Python 2
code.  Maybe you somehow avoided the problematic behavior. Below is
a pretty trival set of functions.  The tools you recommend do not
help at all.  One problem is that the str literals should be bytes
literals.  Comparison with None needs to be avoided.

With Python 2 code runs successfully.  With Python 3 the code
crashes with a traceback.  With my modified Python 3.6, the code
runs successfully but generates the following warnings:

    test.py:13: DeprecationWarning: encoding bytes to str
      output.write('%d:' % len(s))
    test.py:14: DeprecationWarning: encoding bytes to str
      output.write(s)
    test.py:15: DeprecationWarning: encoding bytes to str
      output.write(',')
    test.py:5: DeprecationWarning: encoding bytes to str
      if c == ':':
    test.py:9: DeprecationWarning: encoding bytes to str
      size += c
    test.py:24: DeprecationWarning: encoding bytes to str
      data = data + s
    test.py:26: DeprecationWarning: encoding bytes to str
      if input.read(1) != ',':
    test.py:31: DeprecationWarning: default compare is depreciated
      if a > 0:

It is very easy for me to find code written for Python 2 that will
fail in the same way.  According to you guys, there is no problem
and we already have good enough tooling. ;-(
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.py
Type: text/x-python
Size: 1133 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/python-dev/attachments/20160609/67823727/attachment.py>


More information about the Python-Dev mailing list