diff --git a/.copier-answers.yml b/.copier-answers.yml index 051054d..49ffd72 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: v0.0.6 +_commit: v0.1.1 _src_path: ../template-python/ author: Kevin Weiss author_email: weiss.kevin604@gmail.com diff --git a/.github/agents/pr-review.agent.md b/.github/agents/pr-review.agent.md deleted file mode 100644 index e7c7a2f..0000000 --- a/.github/agents/pr-review.agent.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -description: Review PR commits against master — check architecture, bugs, test coverage and commit messages, apply fixup commits, then propose a PR title and summary. ---- - -You are a thorough PR reviewer for Lobaro Python projects. Work through the -steps below in order. Be specific about problems and their locations. Do not -skip a step even if the previous one passed cleanly. - -## Step 1 — Map the branch - -``` -git log master..HEAD --oneline -``` - -List every commit on the branch. Then for each commit, run `git show ` to -read its diff in full before forming any opinion. - -## Step 2 — Review each commit - -For each commit evaluate the four areas below. Collect all findings before -making any changes. - -**Architecture / intent** -Does the change make sense at the design level? Is the approach sound? Does it -fit the project structure and direction? - -**Bugs** -Any logic errors, off-by-ones, unhandled edge-cases, thread-safety issues, or -resource leaks? Would the code fail for any valid input? - -**Test coverage** -Are the changed code paths exercised by tests? Are edge-cases and error paths -covered? New behaviour without tests is a finding. - -**Commit message** -Must be a valid [Conventional Commit](https://www.conventionalcommits.org/): -`type(scope): description` — lower-case description, no trailing period. -Common types: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `build`. -Check that the type, scope, and description accurately reflect the diff. - -Present a summary of all findings before moving on. - -## Step 3 — Fix problems one by one - -For each finding, in order: - -1. Apply the fix to the source files. -2. Run `tox -e lint` — fix any issues and repeat until it passes cleanly. -3. Run `tox` — fix any failures and repeat until it passes cleanly. -4. Create the smallest accurate commit: - - If the fix belongs squarely to an existing commit: `git commit --fixup=` - - If it is genuinely new work (e.g. additional tests, a separate bug): - use a new conventional commit message. - -**Never amend or rebase the user's existing commits. Only add new commits.** - -Iterate through all findings until all are resolved. - -## Step 4 — Propose a PR summary - -Once all findings are addressed, output: - -1. The updated commit list: `git log master..HEAD --oneline` -2. A recommended PR title in conventional commit format. -3. A short PR body (3–8 sentences) explaining what changed, why, and any - migration or review notes. - -Pause here and wait for the user to review each commit before they squash. diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md deleted file mode 100644 index f4c02a9..0000000 --- a/.github/copilot-instructions.md +++ /dev/null @@ -1,15 +0,0 @@ -# GitHub Copilot Instructions — helpers - - - -Simple python based helpers for lobaro tools. -This is a Lobaro Python library (`lob-hlpr`), module `lob_hlpr`. - -Instructions generic information based off the -[Lobaro Python template](https://github.com/lobaro/template-python) -(layout, patterns, workflow, CLI) is defined in -[lobaro-template.instructions.md](.github/instructions/lobaro-template.instructions.md). - diff --git a/.github/instructions/lobaro-template.instructions.md b/.github/instructions/lobaro-template.instructions.md index 9a9aacb..909244c 100644 --- a/.github/instructions/lobaro-template.instructions.md +++ b/.github/instructions/lobaro-template.instructions.md @@ -13,7 +13,7 @@ applyTo: "**" ## Python version -Python ≥ 3.10. Always use built-in generics — `list[X]`, `dict[K, V]`, `X | None` — never `typing.List` etc. +Python ≥ 3.11. Always use built-in generics — `list[X]`, `dict[K, V]`, `X | None` — never `typing.List` etc. ## Validation workflow @@ -34,7 +34,3 @@ If lint passes but tests fail, diagnose the test failure — do not bypass check - Follow PEP 8 and PEP 257 - Type-hint all public functions and methods - Try not to add third-party dependencies unless necessary — prefer built-in features - -## Agents - -- PR review agent: [instructions](../agents/pr-review.agent.md) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d7ff92e..9ca7a38 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,8 +20,8 @@ env: TOX_VERSION: "4.49.1" TOX_UV_VERSION: "1.33.4" UV_VERSION: "0.10.11" - MIN_PYTHON_VERSION: "3.10" - MAX_PYTHON_VERSION: "3.13" + MIN_PYTHON_VERSION: "3.11" + MAX_PYTHON_VERSION: "3.14" jobs: check-commits: @@ -83,8 +83,8 @@ jobs: strategy: matrix: python: - - "3.10" - - "3.13" + - "3.11" + - "3.14" platform: - ubuntu-24.04 runs-on: ${{ matrix.platform }} @@ -110,6 +110,9 @@ jobs: release: if: startsWith(github.ref, 'refs/tags/') needs: [test, prepare] + # `uv`, not `k8s`: the bare `k8s` label is also answered by the preliumtarn + # scale set, which runs the upstream actions-runner image and has no `zip`. + # Only the Lobaro-built images carry `uv`. runs-on: ubuntu-24.04 steps: - name: Release diff --git a/pyproject.toml b/pyproject.toml index 0581bd7..02f5ba6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,15 +13,15 @@ license-files = [ "LICENSE" ] authors = [ { name = "Kevin Weiss", email = "weiss.kevin604@gmail.com" }, ] -requires-python = ">=3.10" +requires-python = ">=3.11" classifiers = [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ] dynamic = [ "version" ] dependencies = [ @@ -45,4 +45,4 @@ packages.find.where = [ "src" ] version_scheme = "no-guess-dev" [tool.pyproject-fmt] -max_supported_python = "3.13" +max_supported_python = "3.14" diff --git a/ruff.toml b/ruff.toml index bba48ee..c4b1805 100644 --- a/ruff.toml +++ b/ruff.toml @@ -1,4 +1,4 @@ -target-version = "py310" +target-version = "py311" src = [ "examples", diff --git a/tox.ini b/tox.ini index 3d2b607..5cc5949 100644 --- a/tox.ini +++ b/tox.ini @@ -2,9 +2,8 @@ # Read more under https://tox.wiki/ [tox] -minversion = 3.24 +minversion = 4 envlist = default -isolated_build = True [testenv]