Ich habe ein reines Python-Modul für Python 3.0/3.1 geschrieben, das ich auch gerne mit 2.x (wahrscheinlich nur 2.6/2.7) kompatibel machen würde, um es einem möglichst breiten Publikum zugänglich zu machen.
Das Modul befasst sich mit dem Lesen und Schreiben einer Reihe zusammenhängender Dateiformate, so dass die Unterschiede zwischen den Versionen 2.x und 3.x gering sind - z. B. io.BytesIO
anstelle von StringIO.StringIO
- aber nicht alle lassen sich leicht über try/except-Blöcke handhaben, wie etwa das Setzen von Metaklassen.
Wie ist das richtig zu handhaben? Zwei nahezu identische Codebases, die synchron gehalten werden müssen, oder eine Codebase, die mit Feature Detection gespickt ist? Eine einzige, saubere Codebase plus 2to3 oder 3to2?