Skip to content

Avoid pypa/wheel API in editable_wheel #3064

Avoid pypa/wheel API in editable_wheel

Avoid pypa/wheel API in editable_wheel #3064

Workflow file for this run

name: tests
on: [push, pull_request, workflow_dispatch]
concurrency:
group: >-
${{ github.workflow }}-
${{ github.ref_type }}-
${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
# Environment variables to support color support (jaraco/skeleton#66):
# Request colored output from CLI tools supporting it. Different tools
# interpret the value differently. For some, just being set is sufficient.
# For others, it must be a non-zero integer. For yet others, being set
# to a non-empty value is sufficient. For tox, it must be one of
# <blank>, 0, 1, false, no, off, on, true, yes. The only enabling value
# in common is "1".
FORCE_COLOR: 1
# MyPy's color enforcement (must be a non-zero number)
MYPY_FORCE_COLOR: -42
# Recognized by the `py` package, dependency of `pytest` (must be "1")
PY_COLORS: 1
# Make tox-wrapped tools see color requests
TOX_TESTENV_PASSENV: >-
FORCE_COLOR
MYPY_FORCE_COLOR
NO_COLOR
PY_COLORS
PYTEST_THEME
PYTEST_THEME_MODE
# Suppress noisy pip warnings
PIP_DISABLE_PIP_VERSION_CHECK: 'true'
PIP_NO_PYTHON_VERSION_WARNING: 'true'
PIP_NO_WARN_SCRIPT_LOCATION: 'true'
# Disable the spinner, noise in GHA; TODO(webknjaz): Fix this upstream
# Must be "1".
TOX_PARALLEL_NO_SPINNER: 1
jobs:
test:
strategy:
matrix:
python:
- "3.7"
- "3.11"
- "3.12"
# Workaround for actions/setup-python#508
dev:
- -dev
platform:
- ubuntu-latest
- macos-latest
- windows-latest
include:
- python: "3.8"
platform: ubuntu-latest
- python: "3.9"
platform: ubuntu-latest
- python: "3.10"
platform: ubuntu-latest
- python: pypy3.9
platform: ubuntu-latest
distutils: stdlib
- platform: ubuntu-latest
python: "3.10"
distutils: stdlib
runs-on: ${{ matrix.platform }}
continue-on-error: ${{ matrix.python == '3.12' }}
env:
SETUPTOOLS_USE_DISTUTILS: ${{ matrix.distutils || 'local' }}
timeout-minutes: 75
steps:
- uses: actions/checkout@v3
- name: Setup Python
id: python-install
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}${{ matrix.dev }}
- uses: actions/cache@v3
id: cache
with:
path: setuptools/tests/config/downloads/*.cfg
key: >-
${{ hashFiles('setuptools/tests/config/setupcfg_examples.txt') }}-
${{ hashFiles('setuptools/tests/config/downloads/*.py') }}
- name: Populate download cache
if: steps.cache.outputs.cache-hit != 'true'
working-directory: setuptools/tests/config
run: python -m downloads.preload setupcfg_examples.txt
- name: Install tox
run: |
python -m pip install tox
- name: Run tests
run: tox
- name: Create coverage report
if: hashFiles('.coverage') != '' # Rudimentary `file.exists()`
run: pipx run coverage xml --ignore-errors
- name: Publish coverage
if: hashFiles('coverage.xml') != '' # Rudimentary `file.exists()`
uses: codecov/codecov-action@v3
with:
flags: >- # Mark which lines are covered by which envs
CI-GHA,
${{ github.job }},
OS-${{ runner.os }},
VM-${{ matrix.platform }},
Py-${{ steps.python-install.outputs.python-version }}
docs:
runs-on: ubuntu-latest
env:
TOXENV: docs
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}${{ matrix.dev }}
- name: Install tox
run: |
python -m pip install tox
- name: Run tests
run: tox
check: # This job does nothing and is only used for the branch protection
if: always()
needs:
- integration-test
- test
- docs
- test_cygwin
runs-on: ubuntu-latest
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
allowed-skips: integration-test
jobs: ${{ toJSON(needs) }}
test_cygwin:
strategy:
matrix:
python:
- 39
platform:
- windows-latest
runs-on: ${{ matrix.platform }}
timeout-minutes: 75
steps:
- uses: actions/checkout@v3
- name: Install Cygwin with Python
uses: cygwin/cygwin-install-action@v2
with:
platform: x86_64
packages: >-
python${{ matrix.python }},
python${{ matrix.python }}-devel,
python${{ matrix.python }}-tox,
gcc-core,
git,
- name: Record the currently selected Python version
id: python-install
# NOTE: This roughly emulates what `actions/setup-python@v4` provides
# NOTE: except the action gets the version from the installation path
# NOTE: on disk and we get it from runtime.
run: |
python -c 'import platform; print("python-version=" + platform.python_version())' >> ${GITHUB_OUTPUT}
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
- name: Run tests
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
run: |
git config --global --add safe.directory "$(cygpath -u "$GITHUB_WORKSPACE")" # workaround for #3408
tox
- name: Create coverage report
if: hashFiles('.coverage') != '' # Rudimentary `file.exists()`
run: |
python -m pip install coverage
python -m coverage xml --ignore-errors
shell: C:\cygwin\bin\env.exe CYGWIN_NOWINPATH=1 CHERE_INVOKING=1 C:\cygwin\bin\bash.exe -leo pipefail -o igncr {0}
- name: Publish coverage
if: hashFiles('coverage.xml') != '' # Rudimentary `file.exists()`
uses: codecov/codecov-action@v3
with:
files: >-
${{ github.workspace }}\coverage.xml
flags: >- # Mark which lines are covered by which envs
CI-GHA,
${{ github.job }},
OS-${{ runner.os }},
VM-${{ matrix.platform }},
Py-${{ steps.python-install.outputs.python-version }}
integration-test:
needs: test
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && contains(github.ref, 'refs/tags/'))
# To avoid long times and high resource usage, we assume that:
# 1. The setuptools APIs used by packages don't vary too much with OS or
# Python implementation
# 2. Any circumstance for which the previous assumption is not valid is
# already tested via unit tests (or other tests not classified here as
# "integration")
# With that in mind, the integration tests can run for a single setup
runs-on: ubuntu-latest
timeout-minutes: 75
steps:
- uses: actions/checkout@v3
- name: Install OS-level dependencies
run: |
sudo apt-get update
sudo apt-get install build-essential gfortran libopenblas-dev
- name: Setup Python
uses: actions/setup-python@v4
with:
# Use a release that is not very new but still have a long life:
python-version: "3.8"
- name: Install tox
run: |
python -m pip install tox
- name: Run integration tests
run: tox -e integration
release:
needs:
- check
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
timeout-minutes: 75
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11-dev
- name: Install tox
run: |
python -m pip install tox
- name: Release
run: tox -e release
env:
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}