Note
This section of the documentation is currently being written. pip developers welcome your help to complete this documentation. If you’re interested in helping out, please let us know in the tracking issue, or just submit a pull request and mention it in that tracking issue.
Continuous Integration
Supported interpreters
pip support a variety of Python interpreters:
CPython 2.7
CPython 3.5
CPython 3.6
CPython 3.7
CPython 3.8
Latest PyPy
Latest PyPy3
on different operating systems:
Linux
Windows
MacOS
and on different architectures:
x64
x86
so 42 hypothetical interpreters.
Checks
pip
CI runs different kind of tests:
lint (defined in
.pre-commit-config.yaml
)docs
vendoring (is the
src/_internal/_vendor
directory cleanly vendored)unit tests (present in
tests/unit
)“integration” tests (mostly present in
tests/functional
)package (test the packaging steps)
Since lint, docs, vendoring and package tests only need to run on a pip developer/contributor machine, they only need to be tested on the x64 variant of the 3 different operating systems, and when an interpreter needs to be specified it’s ok to require the latest CPython interpreter.
So only unit tests and integration tests would need to be run with the different interpreters.
Services
pip test suite and checks are distributed on three different platforms that provides free executors for open source packages:
GitHub Actions (Used for code quality and development tasks)
Azure DevOps CI (Used for tests)
Travis CI (Used for PyPy tests)
Current run tests
Developer tasks
OS | docs | lint | vendoring | packaging |
---|---|---|---|---|
Linux | Travis, Github | Travis, Github | Travis, Github | Azure |
Windows | Github | Github | Github | Azure |
MacOS | Github | Github | Github | Azure |
Actual testing
interpreter | unit | integration | ||
Windows | x86 | CP2.7 | Azure | Azure |
CP3.5 | Azure | |||
CP3.6 | Azure | |||
CP3.7 | Azure | |||
CP3.8 | Azure | |||
PyPy | ||||
PyPy3 | ||||
x64 | CP2.7 | Azure | Azure | |
CP3.5 | Azure | Azure | ||
CP3.6 | Azure | |||
CP3.7 | Azure | |||
CP3.8 | Azure | Azure | ||
PyPy | ||||
PyPy3 | ||||
Linux | x86 | CP2.7 | ||
CP3.5 | ||||
CP3.6 | ||||
CP3.7 | ||||
CP3.8 | ||||
PyPy | ||||
PyPy3 | ||||
x64 | CP2.7 | Azure | Azure | |
CP3.5 | Azure | Azure | ||
CP3.6 | Azure | Azure | ||
CP3.7 | Azure | Azure | ||
CP3.8 | Azure | Azure | ||
PyPy | Travis | Travis | ||
PyPy3 | Travis | Travis | ||
MacOS | x86 | CP2.7 | ||
CP3.5 | ||||
CP3.6 | ||||
CP3.7 | ||||
CP3.8 | ||||
PyPy | ||||
PyPy3 | ||||
x64 | CP2.7 | Azure | Azure | |
CP3.5 | Azure | Azure | ||
CP3.6 | Azure | Azure | ||
CP3.7 | Azure | Azure | ||
CP3.8 | Azure | Azure | ||
PyPy | ||||
PyPy3 |
Important
Did this article help?
We are currently doing research to improve pip’s documentation and would love your feedback. Please email us &body=%0A%20%20%20%200.%20Document:%20development/ci.%20Page%20URL:%20https:/%20%0A%0A%20%20%20%201.%20What%20problem%20were%20you%20trying%20to%20solve%20when%20you%20came%20to%20this%20page?%20%0A%0A%20%20%20%202.%20What%20content%20was%20useful?%20%0A%0A%20%20%20%203.%20What%20content%20was%20not%20useful?) and let us know:
What problem were you trying to solve when you came to this page?
What content was useful?
What content was not useful?