diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 4543f47..e4cafbe 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -18,15 +18,15 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} @@ -48,7 +48,7 @@ jobs: PYTHON_GIL: "0" - name: Cache Bengal build state - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: site/.bengal key: bengal-${{ runner.os }}-${{ steps.cache.outputs.hash }} @@ -66,7 +66,7 @@ jobs: echo "" > site/public/.gitignore - name: Upload Pages artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v5 with: path: site/public @@ -78,5 +78,5 @@ jobs: runs-on: ubuntu-latest steps: - id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index c92bd96..95a183a 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -20,9 +20,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: "3.14t" @@ -32,7 +32,7 @@ jobs: python -m build - name: Upload distributions - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: release-dists path: dist/ @@ -50,7 +50,7 @@ jobs: steps: - name: Retrieve release distributions - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: name: release-dists path: dist/ diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5c1d112..4b48fda 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,15 +19,15 @@ jobs: python-version: ["3.14t"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: ${{ matrix.python-version }} - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} @@ -58,15 +58,15 @@ jobs: typecheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} @@ -83,15 +83,15 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} @@ -113,15 +113,15 @@ jobs: fixtures: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} @@ -195,19 +195,64 @@ jobs: fi done + # Benchmarks (non-gating: informational only, no baseline comparison yet) + benchmarks: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + + - name: Install uv + uses: astral-sh/setup-uv@v7 + with: + python-version: "3.14t" + + - name: Cache uv dependencies + uses: actions/cache@v6 + with: + path: ~/.cache/uv + key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + restore-keys: | + uv-${{ runner.os }}- + + - name: Install dependencies + run: | + uv sync --group dev + uv pip install pytest-benchmark pygments + + - name: Run benchmarks + env: + CI: true + PYTHON_GIL: "0" + run: | + uv run --no-sync pytest benchmarks/benchmark_vs_pygments.py --benchmark-only \ + --benchmark-json=benchmark-results.json --tb=short + + - name: Run parallel scaling benchmark + env: + CI: true + PYTHON_GIL: "0" + run: | + uv run --no-sync python benchmarks/benchmark_parallel.py + + - name: Upload benchmark results + uses: actions/upload-artifact@v7 + with: + name: benchmark-results + path: benchmark-results.json + # Security tests (ReDoS resistance) security: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} @@ -228,15 +273,15 @@ jobs: thread-safety: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} diff --git a/.github/workflows/ty.yml b/.github/workflows/ty.yml index 8066625..88727f3 100644 --- a/.github/workflows/ty.yml +++ b/.github/workflows/ty.yml @@ -14,15 +14,15 @@ jobs: type-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v4 + uses: astral-sh/setup-uv@v7 with: python-version: "3.14t" - name: Cache uv dependencies - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/.cache/uv key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} diff --git a/pyproject.toml b/pyproject.toml index b505133..af540d6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,6 +53,9 @@ markers = [ "property: property-based tests (may take longer)", ] +[tool.coverage.report] +fail_under = 79 # honest ratchet toward 80 — measured 79.30% on 2026-07-08 + [tool.ty.environment] python-version = "3.14"