The migration was from 2.7 to 2.7 and 3.x, rather than 3.x only. I think it worth reading for anyone interested in the subject. https://zato.io/blog/posts/python-3-migration-success-story.html
60,000 lines of Python and Cython, 130 external dependencies (but only 10 not already 3.x ready) took 2 people 80 hours total.
Their head start was to write the 2.7 modules, from the beginning, with the following at the top. from __future__ import absolute_import, division, print_function, unicode_literals
-- Terry Jan Reedy -- https://mail.python.org/mailman/listinfo/python-list