It could work, but can you imagine the extra complexity for the interpreter? It would require extensive type conversions every time an object passes the version barrier, and all the Python3 libraries' classes would have to be backported for compatibility.
And it's not just a matter of sacrificing core dev hours for the greater good, the result would be much slower and full of gotchas.
This is a very creative idea, ingenuously simple, but I don't think it would fly.
Unfortunately there's no way in knowing whether a Python 2 string (str, not unicode) originating from the module should be interpreted as a bytes string or text string. Python 2 doesn't have the clean separation between bytes and strings.
Solutions might include adding some sort of hinting to specify the conversion, or add a Python2-like string class to Python 3, which would pollute its purity.
And it's not just a matter of sacrificing core dev hours for the greater good, the result would be much slower and full of gotchas.
This is a very creative idea, ingenuously simple, but I don't think it would fly.