name: test on: push: branches: - master pull_request: workflow_dispatch: permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: tests: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ['3.11', '3.12', '3.13', '3.14'] steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Install poetry run: | curl -sSL "https://install.python-poetry.org" | python # Adding `poetry` to `$PATH`: echo "$HOME/.poetry/bin" >> $GITHUB_PATH - name: Install dependencies run: | poetry config virtualenvs.in-project true poetry install --all-extras poetry run pip install -U pip - name: Run tests run: | poetry run flake8 . # In order to make `exclude` option work, we need to separate the checks # of returns and its tests into two separated commands poetry run mypy --enable-error-code=unused-awaitable returns poetry run mypy tests # Different python versions are covered differently: poetry run pytest returns docs/pages tests poetry run codespell returns tests docs typesafety README.md CONTRIBUTING.md CHANGELOG.md # TODO: re-enable after all problems are fixed # poetry run poetry check poetry run pip check poetry run python -m slotscheck returns --verbose - name: Upload coverage to Codecov if: matrix.python-version == 3.11 uses: codecov/codecov-action@v6 with: files: ./coverage.xml typesafety-tests: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ['3.10', '3.11', '3.12', '3.13'] shard: [0, 1, 2, 3] steps: - uses: actions/checkout@v6 with: persist-credentials: false - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Install poetry run: | curl -sSL "https://install.python-poetry.org" | python # Adding `poetry` to `$PATH`: echo "$HOME/.poetry/bin" >> $GITHUB_PATH - name: Install dependencies run: | poetry config virtualenvs.in-project true poetry install --all-extras poetry run pip install -U pip - name: Run typesafety tests run: | poetry run pytest typesafety \ --num-shards=4 --shard-id=${{ matrix.shard }} \ -p no:cov -o addopts="" --mypy-ini-file=setup.cfg