As Hin-Tak mentioned, it is possible and relatively easy to support both 2.7 and 3.x in the same code base. One library I used personally is future:
http://python-future.org/quickstart.html
I'd write Python 3 code and use future to make it work on Py2.
Haven't looked at your code so far, may weight in later.
I furthermore recommend looking at a code formatter like yapf (or, if you're feeling edgy, black on GitHub) and maybe even hook it into a format-on-save thing so you spend your brain cycles on more important things.