PyPI each project can specify various trove classifiers (typically in a project's
setup()). There are various classifiers related to what version of Python a project can run on. E.g.:
As long as a trove classifier for some version of Python 3 is specified then the project is considered to support Python 3 (project owners: it is preferred you at least specify
Programming Language :: Python :: 3 Programming Language :: Python :: 3.0 Programming Language :: Python :: 3.1 Programming Language :: Python :: 3.2 Programming Language :: Python :: 3.3 Programming Language :: Python :: 3.4
Programming Language :: Python :: 3as that is how you end up listed on the Python 3 Packages list on PyPI; you can represent Python 2 support with
Programming Language :: Python).
The other way is through a manual override in
caniusepython3itself. Projects ends up on this list because:
- They are now part of Python's standard library in some release of Python 3
- Their Python 3 port is under a different name
- They are missing a Python 3 trove classifier but have actually been ported
pull request or file an issue with the name of the project and a link to some proof that a release available on PyPI has indeed been ported (e.g. PyPI page stating the support, tox.ini file showing tests being run against Python 3, etc.). Projects that have Python 3 support in their version control system but not yet available on PyPI will not be considered for inclusion in the overrides file.
- A dependency to be ported to Python 3
- Someone to volunteer to put in the time and effort to do the port
caniusepython3will tell you what dependencies are blocking a project that you depend on from being ported, you can try to port a project farther down your dependency graph to help a more direct dependency make the transition.
Which brings up the second point: volunteering to do a port. Most projects happily accept help, they just have not done the port yet because they have not had the time ("volunteering" can also take the form of paying someone to do the port on your behalf). Some projects are simply waiting for people to ask for it, so even speaking up politely and requesting a port can get the process started.
If you are looking for help to port a project, you can always search online for various sources of help. If you want a specific starting point there are HOWTOs in the Python documentation on porting pure Python modules and extension modules.