Add mypy strict type checking with pre-commit and CI integration #2
This file contains hidden or 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: [main] | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Lint | |
| run: uv run ruff check | |
| - name: Type check | |
| run: uv run mypy src/linear_python_client | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Test (with coverage gate) | |
| run: uv run pytest | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| enable-cache: true | |
| - name: Build sdist and wheel | |
| run: uv build | |
| - name: Validate distribution metadata | |
| run: uvx twine check dist/* | |
| - name: Smoke-test that the wheel installs and imports | |
| run: | | |
| uv venv /tmp/install-check | |
| uv pip install --python /tmp/install-check dist/*.whl | |
| /tmp/install-check/bin/python -c "import linear_python_client; print('installed', linear_python_client.__version__)" | |
| # Live smoke test runs on every push to main (not PRs, to avoid API calls on every review). | |
| smoke: | |
| needs: [lint, test, build] | |
| if: github.event_name == 'push' | |
| uses: ./.github/workflows/smoke.yml | |
| secrets: | |
| LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }} |