Skip to content

[pre-commit.ci] pre-commit autoupdate #493

[pre-commit.ci] pre-commit autoupdate

[pre-commit.ci] pre-commit autoupdate #493

Workflow file for this run

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