[pre-commit.ci] pre-commit autoupdate #530
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ dev-2.x ] | |
paths-ignore: | |
- 'docs/**' | |
- '*.md' | |
- '*.rst' | |
- 'benchmarks/**' | |
pull_request: | |
branches: [ dev-2.x ] | |
paths-ignore: | |
- 'docs/**' | |
- '*.md' | |
- '*.rst' | |
- 'benchmarks/**' | |
jobs: | |
build: | |
strategy: | |
max-parallel: 1 | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
python-version: | |
- '3.7' | |
- '3.8' | |
- '3.9' | |
- '3.10' | |
- '3.11' | |
- 'pypy3.8' | |
- 'pypy3.9' | |
runs-on: ${{ matrix.os }} | |
defaults: | |
# Windows sucks. Force use bash instead of PowerShell | |
run: | |
shell: bash | |
env: | |
# We disable some features for PyPy by this environment variable such as: | |
# – Installation of `fast` extras: `uvloop` on PyPy is useless and may be even slower | |
# than the default loop; | |
# – Coverage reports: code introspection disables any optimizations, so tests with | |
# coverage enabled are very slow on PyPy. | |
# More: https://www.pypy.org/performance.html | |
IS_PYPY: ${{ startswith(matrix.python-version, 'pypy') }} | |
# Windows has also some limitations: | |
# – Poetry installer doesn't work on Windows with PyPy. | |
IS_WINDOWS: ${{ startswith(matrix.os, 'windows') }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@master | |
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install and configure Poetry | |
uses: snok/install-poetry@v1 | |
if: "env.IS_PYPY == 'false' || env.IS_WINDOWS == 'false'" | |
with: | |
version: 1.2.1 | |
virtualenvs-create: true | |
virtualenvs-in-project: true | |
installer-parallel: true | |
- name: Install and configure Poetry (PyPy on Windows) | |
if: "env.IS_PYPY == 'true' && env.IS_WINDOWS == 'true'" | |
run: | | |
set -eu | |
pip install "poetry==1.2.1" | |
poetry config virtualenvs.create true | |
poetry config virtualenvs.in-project true | |
poetry config installer.parallel true | |
- name: Load cached venv | |
id: cached-poetry-dependencies | |
uses: actions/cache@v2 | |
with: | |
path: .venv | |
key: venv-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}-${{ secrets.CACHE_VERSION }} | |
- name: Install dependencies | |
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' | |
run: poetry install --no-interaction | |
- name: Lint with flake8 | |
run: | | |
poetry run flake8 glQiwiApi examples tests --jobs=8 --ignore=E999,F401,E123,E501 | |
- name: Check code-style (Black) | |
run: | | |
poetry run black --check --diff glQiwiApi tests | |
- name: Test with pytest | |
run: | | |
flags="" | |
[[ "$IS_PYPY" == "false" ]] && flags="$flags --cov=glQiwiApi --cov-config .coveragerc --cov-report=xml" | |
poetry run pytest -p no:warnings $flags tests/ | |
env: | |
QIWI_API_ACCESS_TOKEN: ${{ secrets.QIWI_API_ACCESS_TOKEN }} | |
QIWI_SECRET_P2P: ${{ secrets.QIWI_SECRET_P2P }} | |
QIWI_PHONE_NUMBER: ${{ secrets.QIWI_PHONE_NUMBER }} | |
YOOMONEY_API_TOKEN: ${{ secrets.YOOMONEY_API_TOKEN }} | |
YOOMONEY_TEST_CLIENT_ID: ${{ secrets.YOOMONEY_TEST_CLIENT_ID }} | |
- name: Upload coverage data | |
if: "env.IS_PYPY == 'false'" | |
uses: codecov/codecov-action@v1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: coverage.xml | |
flags: unittests | |
name: py-${{ matrix.python-version }}-${{ matrix.os }} | |
fail_ci_if_error: true |