name: test on: push: # any branch pull_request: branches: [master] env: FORCE_COLOR: 1 jobs: test-ubuntu: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v5 with: python-version: ${{ matrix.python-version }} - name: Code formatting if: ${{ matrix.python-version == '3.13' }} run: | uvx ruff check . uvx ruff format --check . - name: Typos if: ${{ matrix.python-version == '3.13' }} run: | uvx typos . - name: Unit test run: | uvx --with . --with pytest coverage run -m pytest tests/ - name: Type Checking run: | uvx --with . --with asyncssh mypy --strict src/ --platform win32 uvx --with . --with asyncssh mypy --strict src/ --platform linux uvx --with . --with asyncssh mypy --strict src/ --platform darwin - name: Validate README.md if: ${{ matrix.python-version == '3.13' }} # Ensure that the README renders correctly (required for uploading to PyPI). run: | uv pip install readme_renderer python -m readme_renderer README.rst > /dev/null - name: Run codecov run: | uvx codecov - name: Upload coverage to Codecov uses: codecov/codecov-action@v4 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}