Skip to main content

Determine what projects are blocking you from porting to Python 3

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

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 ...
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


Download files

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

Source Distribution

caniusepython3-2.0.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

caniusepython3-2.0.0-py2.py3-none-any.whl (23.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file caniusepython3-2.0.0.tar.gz.

File metadata

File hashes

Hashes for caniusepython3-2.0.0.tar.gz
Algorithm Hash digest
SHA256 1cf5fc5af14305bd7ed772147ee0ba62924372ed1557f70322942b7a82e9531a
MD5 7bbc29f66423d9c954288a35091963fb
BLAKE2b-256 c492048555de28beb13b21609ea172fe2af883fe302fc92f6e86cff97f2a149b

See more details on using hashes here.

File details

Details for the file caniusepython3-2.0.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for caniusepython3-2.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ffebefa37945a25fdd1ba984daae183c68c4a64b6ef0892b88cce48ab8dda6ee
MD5 6d51a662a77d5e79c66e24e852c07dc1
BLAKE2b-256 6ee067801be97ff20b3bfaa7e1b44aab415d3f20a44445bda1744350e229d78c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page