six was the #2 package on PyPI.[1] It's a library to help with option 1.
You're 100% wrong. The few packages which decided on option 2 early on (e.g. dateutil) ended up having to roll back to option 1 because it was such a pain in the ass, both for the maintainer and for downstream users. The migration only really started happening once 2.7 dropped, projects like Six[0] started appearing, and the community started ignoring 2to3 and building up experience with cross-version projects and idioms (e.g. [1], [2])
[0] whose entire point is to help with option 1
[1] https://eev.ee/blog/2016/07/31/python-faq-how-do-i-port-to-p...
This. This is the only option.
I can tell you in decades of experience with I don't know how many companies and language, this is ALWAYS the option that is done.
- the codebase had to be modified to work on both versions at the same time
- you had to maintain two versions in different branches for a while
Is there any data to show which options was most often chosen amongst all pypi packages? I suspect that the second option was more popular for the most important packages of the ecosystem