diff --git a/.agents/project.md b/.agents/project.md index 4ddd7c8..97e4d2d 100644 --- a/.agents/project.md +++ b/.agents/project.md @@ -11,10 +11,10 @@ | Task | Command | |---|---| -| Install dependencies | `uv sync --group dev` (`make install`). No extras are needed: the `test` group inside `dev` brings redis, orjson, dishka, prometheus-client, fakeredis and testcontainers. Hooks: `uv run pre-commit install --hook-type pre-commit --hook-type commit-msg`. CONTRIBUTING.md installs only the commit-message hook, so ruff does not run at commit time. | +| Install dependencies | `uv sync --group dev` (`make install`). No extras are needed: the `test` group inside `dev` brings redis, orjson, dishka, prometheus-client, fakeredis and testcontainers. Hooks: `uv run pre-commit install --hook-type pre-commit --hook-type commit-msg`. | | Format | `make fmt`: `uv run ruff format .`, then `uv run ruff check --fix .` | | Lint and type-check | `make check`: `uv run ruff check .`, `uv run ruff format --check .`, `uv run mypy idempotency_kit`. CI's lint job runs the same three. | -| Test | `make test-unit` (`uv run pytest -m unit`, no Docker). `make test-integration` (`uv run pytest -m integration`) needs Docker: it starts `redis:7-alpine` through testcontainers. CI runs `uv run pytest -m unit --cov=idempotency_kit --cov-report=xml` on Python 3.11, 3.12 and 3.13, and `uv run pytest -m integration --cov=idempotency_kit --cov-report=xml --cov-fail-under=50` once. | +| Test | `make test-unit` (`uv run pytest -m unit`, no Docker). `make test-integration` (`uv run pytest -m integration`) needs Docker: it starts `redis:7-alpine` through testcontainers. CI runs `uv run pytest -m unit --cov=idempotency_kit --cov-report=xml` on Python 3.11, 3.12, 3.13 and 3.14, and `uv run pytest -m integration --cov=idempotency_kit --cov-report=xml --cov-fail-under=50` once. | | Run locally | A library: nothing to run. The docs: `make docs-serve`. | | Stop the local run | Ctrl+C in the terminal of `make docs-serve`. | @@ -29,7 +29,7 @@ ## Boundaries -- `CHANGELOG.md` is generated by release-please. Never edit it by hand, and never add an `## [Unreleased]` section, even though the pull request template's checklist asks for one. +- `CHANGELOG.md` is generated by release-please. Never edit it by hand, and never add an `## [Unreleased]` section. - The version lives in `idempotency_kit/__version__.py`, on the line marked `# x-release-please-version`, and in `.release-please-manifest.json`. Release-please bumps both. Never change them by hand. - `docs/agents.md` is part of the public API: it changes in the same pull request as the API (CONTRIBUTING.md, "The agents page"). `docs/api_reference.md` is hand-written, not generated from docstrings, so an API change updates it too. - Files from the engineering-assets hub (`AGENTS.md` explains how it works) include the copy-page files (`docs/assets/javascripts/copy-page.js`, `docs/assets/stylesheets/copy-page.css`, `overrides/main.html`, `scripts/emit_markdown.py`), `.github/workflows/docs.yml`, `.github/workflows/release-please.yml`, `.github/dependabot.yml`, `.editorconfig` and `CODE_OF_CONDUCT.md`. Change them in the hub; a change here makes the file this repository's own. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index fa5be0d..3ba13e0 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1 @@ blank_issues_enabled: false -contact_links: - - name: Question or discussion - url: https://github.com/bedrock-python/idempotency-kit/discussions - about: Ask a question or start a discussion about idempotency-kit diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5073550..1a7034a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -14,7 +14,7 @@ - [ ] Tests added or updated - [ ] `make check` passes locally (`ruff` + `mypy`) -- [ ] `CHANGELOG.md` updated under `[Unreleased]` +- [ ] Conventional-commit title (the changelog is generated by Release Please — do not edit it by hand) - [ ] Documentation updated (if the public API changed), `docs/agents.md` included ## Related issues diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bbf7ba1..063f1a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,7 +25,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.11", "3.12", "3.13"] + python-version: ["3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v7 - uses: astral-sh/setup-uv@v7 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2aaf63b..87a4261 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ Thank you for your interest in contributing! This document covers everything you git clone https://github.com/bedrock-python/idempotency-kit.git cd idempotency-kit uv sync --group dev -uv run pre-commit install --hook-type commit-msg +uv run pre-commit install --hook-type pre-commit --hook-type commit-msg ``` ## Running checks diff --git a/pyproject.toml b/pyproject.toml index 41550cc..0587318 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,6 +16,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed", ]