Skip to main content

Determine what projects are blocking you from porting to Python 3

Project description

This script takes in a set of dependencies and then figures out which of them are holding you up from porting to Python 3.

Command-line/Web Usage

You can specify your dependencies in multiple ways:

caniusepython3 -r requirements.txt test-requirement.txt
caniusepython3 -m PKG-INFO
caniusepython3 -p numpy scipy ipython
# If your project's setup.py uses setuptools
# (note that setup_requires can't be checked) ...
python setup.py caniusepython3

The output of the script will tell you how many (implicit) dependencies you need to transition to Python 3 in order to allow you to make the same transition. It will also list what projects have no dependencies blocking their transition so you can ask them to start a port to Python 3.

If you prefer a web interface you can use https://caniusepython3.com by Jannis Leidel.

Integrating With Your Tests

If you want to check for Python 3 availability as part of your tests, you can use icanusepython3.check():

def check(requirements_paths=[], metadata=[], projects=[]):
    """Return True if all of the specified dependencies have been ported to Python 3.

    The requirements_paths argument takes a sequence of file paths to
    requirements files. The 'metadata' argument takes a sequence of strings
    representing metadata. The 'projects' argument takes a sequence of project
    names.

    Any project that is not listed on PyPI will be considered ported.
    """

You can then integrate it into your tests like so:

import unittest
import caniusepython3

class DependenciesOnPython3(unittest.TestCase):
  def test_dependencies(self):
    # Will begin to fail when dependencies are no longer blocking you
    # from using Python 3.
    self.assertFalse(caniusepython3.check(projects=['ipython']))

For the change log, how to tell if a project has been ported, as well as help on how to port a project, please see the project website.

Secret, bonus feature

If you would like to use a different name for the script and setuptools command then set the environment variable CIU_ALT_NAME to what you would like the alternative name to be. Reddit suggests icanhazpython3.

Project details


Release history Release notifications

History Node

7.0.0

History Node

6.0.0

History Node

5.0.0

History Node

4.0.0

History Node

3.4.1

History Node

3.4.0

History Node

3.3.0

History Node

3.2.0

History Node

3.1.0

History Node

3.0.0

History Node

2.2.0

This version
History Node

2.1.2

History Node

2.1.1

History Node

2.1.0

History Node

2.0.3

History Node

2.0.2

History Node

2.0.1

History Node

2.0.0

History Node

1.2.1

History Node

1.2.0

History Node

1.1.0

History Node

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
caniusepython3-2.1.2-py2.py3-none-any.whl (25.1 kB) Copy SHA256 hash SHA256 Wheel py2.py3 Jun 5, 2014
caniusepython3-2.1.2.tar.gz (15.2 kB) Copy SHA256 hash SHA256 Source None Jun 5, 2014

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page