Skip to content

Harden the HTTP layer and close out several edge cases #9

Harden the HTTP layer and close out several edge cases

Harden the HTTP layer and close out several edge cases #9

Workflow file for this run

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