Harden the HTTP layer and close out several edge cases #9
Workflow file for this run
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: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| UV_VERSION: "0.6.14" | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.0 | |
| with: | |
| python-version: "3.12" | |
| - name: Install uv | |
| run: pip install "uv==${UV_VERSION}" | |
| - name: Sync dependencies | |
| run: uv sync --group dev | |
| - name: Ruff lint | |
| run: uv run ruff check src tests snippets examples | |
| - name: Ruff format | |
| run: uv run ruff format --check src tests snippets examples | |
| - name: Mypy (strict) | |
| run: uv run mypy --strict src/webshare snippets tests | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install uv | |
| run: pip install "uv==${UV_VERSION}" | |
| - name: Sync dependencies | |
| run: uv sync --group dev | |
| - name: Run tests | |
| run: uv run pytest -q | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.0 | |
| with: | |
| python-version: "3.12" | |
| - name: Install uv | |
| run: pip install "uv==${UV_VERSION}" | |
| - name: Build sdist and wheel | |
| run: uv build | |
| - name: Check metadata | |
| run: uvx twine@6.1.0 check dist/* | |
| - name: Assert py.typed is shipped in the wheel | |
| run: | | |
| unzip -l dist/*.whl | grep "webshare/py.typed" | |
| integration: | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
| - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.0 | |
| with: | |
| python-version: "3.12" | |
| - name: Install uv | |
| run: pip install "uv==${UV_VERSION}" | |
| - name: Sync dependencies | |
| run: uv sync --group dev | |
| - name: Run integration tests (only when the secret is available) | |
| env: | |
| WEBSHARE_API_KEY: ${{ secrets.WEBSHARE_API_KEY }} | |
| run: | | |
| if [ -z "$WEBSHARE_API_KEY" ]; then | |
| echo "WEBSHARE_API_KEY secret not available; skipping integration tests." | |
| exit 0 | |
| fi | |
| uv run pytest -q tests/test_integration.py |