You mean I can just run all my python2 programs with python3 runtime with no changes at all. Because that was how every upgrade before python3 went.
Breaking changes are a routine thing in any maintained language; heck, even a conservative project like GCC breaks code between major releases.
The code that doesn't run on Python 2+3 only runs on Python 3. Have at it.
eikenberry asked: "can just run all my python2 programs with python3 runtime with no changes at all"
You replied: "Nearly all my code co-runs on 2.7 / 3.6 with almost no hacks. So, yes.", implying that, yes, you can run py2 programs without change, because this is true of your code
To which I replied "And your code is all code?"; Meaning, just because this is true of your code, doesn't mean it is true of eikenberry's code, or any/all code.
You then responded with a project that apparently runs fully on py3, but only partially on py2 - what is the point you are making by posting that project?
The truth is, once most libraries are 3.x compatible, porting is very easy (as easy as a 2.x -> 2.y transition). And now, we've reached that point. People are starting to catch up.
There are some exceptions of course, those who heavily rely on 2.x unicode behaviour and such, but all in all they are rare. So now, it's much easier than it used to be.