Skip to content

(deps): Bump astral-sh/setup-uv from 8.2.0 to 10.0.1 #13

(deps): Bump astral-sh/setup-uv from 8.2.0 to 10.0.1

(deps): Bump astral-sh/setup-uv from 8.2.0 to 10.0.1 #13

# ============================================================
# .github/workflows/ci-python-zensical.yml (ALL-PY-REPOS)
# ============================================================
# Updated: 2026-08-11
# WHY: Continuous Integration (CI) ensures repository hygiene,
# Python correctness, and documentation builds.
# REQ: Repository MUST contain .python-version.
# WHY: The repository declares the Python version used locally and by CI.
# REQ: CI MUST NOT introduce rules that are not reproducible locally.
# OBS: CI validates only; it does not edit files or deploy docs.
# OBS: yamllint config lives at .github/.yamllint.yml (not repo root).
# TOOLING ONLY PYTHON REPOS need zensical, but not ruff, pyright, or pytest.
# In pyproject.toml, they need zensical (for docs/)
# and can use a simpler zensical.toml without API docs.
# Name shown in the repo Actions tab.
name: CI (Python + Zensical)
on:
push:
branches: [main] # WHY: Validate on every push to GitHub branch `main`.
pull_request:
branches: [main] # WHY: Validate any pull requests (PRs) before merge.
workflow_dispatch: # WHY: Allow manual trigger from Actions tab.
permissions: # Least-privilege: this job only needs to READ.
contents: read # It checks code; it never writes to the repo.
concurrency:
group: ci-python-zensical-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# WHY: Cancel stale CI runs for the same workflow/ref when a newer commit arrives.
# OBS: Different PRs and branches still run independently.
env:
PYTHONUNBUFFERED: "1" # WHY: Real-time log output in CI.
PYTHONIOENCODING: "utf-8" # WHY: Consistent encoding across platforms.
jobs:
ci:
name: Repo checks and Zensical build
runs-on: ubuntu-latest # WHY: Linux matches most production deployments.
timeout-minutes: 30 # WHY: Fail fast if a step hangs unexpectedly.
steps:
# ============================================================
# A) ASSEMBLE: Checkout code and set up environment
# ============================================================
- name: A1) Checkout repository code
uses: actions/checkout@v7
# WHY: Required so all subsequent steps can access repo files.
- name: A2) Install uv (with caching)
uses: astral-sh/setup-uv@v10.0.1
with:
enable-cache: true
# WHY: Cache the uv tool itself for faster subsequent runs.
cache-dependency-glob: "uv.lock"
# WHY: Invalidate cache only when locked dependencies change.
- name: A3) Install all dependencies with frozen versions (in uv.lock)
run: uv sync --frozen
# WHY: Install dev and docs extras so all check and build tools are available.
- name: A4) Show tool versions
run: |
uv --version
uv run python --version
if [ -f "zensical.toml" ]; then
uv run python -m zensical --version
fi
# WHY: Version output makes CI logs easier to debug when tools change.
- name: A5) Run pre-commit on all files
run: uv run pre-commit run --all-files
# WHY: Run the same repo hygiene checks used locally.
# OBS: A clean commit should already pass this without file changes.
# If a hook changes files in CI, the job fails because the repo
# was not committed in its fully fixed state.
# FIX: Run this command locally, review any autofixes, fix remaining
# issues by hand, then git add, commit, and push again.
# ============================================================
# B) BASELINE CHECKS: Tools not covered by pre-commit
# ============================================================
- name: B1) Validate pyproject.toml schema
run: uvx "validate-pyproject[all]" pyproject.toml
# WHY: Catches malformed pyproject.toml before a broken release.
# ============================================================
# D) Docs build (no deployment)
# ============================================================
- name: D1) Build documentation with Zensical
run: |
if [ -f "zensical.toml" ]; then
uv run python -m zensical build
else
echo "No zensical.toml found; skipping docs build."
fi
# WHY: Confirms docs build cleanly without errors or broken references.
# OBS: Build only; deployment is handled by a separate workflow if needed.
# OBS: Conditional on zensical.toml so this workflow is reusable across
# repos that may not yet have docs configured.