workflow: rules: - if: $CI_COMMIT_BRANCH =~ /^topic\/.*/ && $CI_PIPELINE_SOURCE == "push" when: never - when: always stages: - check - test .check: stage: check image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/tryton/ci check-flake8: extends: .check script: - flake8 check-isort: extends: .check script: - isort -m VERTICAL_GRID -c . check-dist: extends: .check before_script: - pip install build twine script: - pyproject-build - twine check dist/* .test: stage: test .test-tox: extends: .test variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" cache: paths: - .cache/pip before_script: - pip install tox coverage: '/(?i)total.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/' artifacts: reports: junit: ${CI_PROJECT_DIR}/junit.xml coverage_report: coverage_format: cobertura path: ${CI_PROJECT_DIR}/coverage.xml test-tox-python: extends: .test-tox image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/python:${PYTHON_VERSION} script: - tox -e "py${PYTHON_VERSION/./}" -- -v --output-file "${CI_PROJECT_DIR}/junit.xml" parallel: matrix: - PYTHON_VERSION: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] test-tox-pypy: extends: .test-tox image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/pypy:3 script: - tox -e pypy3 -- -v --output-file "${CI_PROJECT_DIR}/junit.xml"