README.md

Can I Use Python 3?

You can read the documentation on how to use caniusepython3 from its
PyPI page. A web interface
is also available.

How do you tell if a project has been ported to Python 3?

On PyPI each project can specify various
trove classifiers
(typically in a project's setup.py through a classifier
argument to 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 as 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
caniusepython3 itself. Projects ends up on this list because:

They are missing a Python 3 trove classifier but have actually been ported

If any of these various requirements are met, then a project is considered to
support Python 3 and thus will be added to the manual overrides list. You can
see the list of overrides when you use caniusepython3's CLI with verbose output
turned on.

What if I know of a project that should be added to the overrides file?

If a project has Python 3 support in a release on PyPI but they have not added the
proper trove classifier, then either submit a
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.

How can I get a project ported to Python 3?

Typically projects which have not switched to Python 3 yet are waiting for:

A dependency to be ported to Python 3

Someone to volunteer to put in the time and effort to do the port

Since caniusepython3 will 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.