Skip to content

Copier update (Python 3.14 support)#78

Merged
ejfine merged 5 commits intomainfrom
py314
Nov 10, 2025
Merged

Copier update (Python 3.14 support)#78
ejfine merged 5 commits intomainfrom
py314

Conversation

@ejfine
Copy link
Contributor

@ejfine ejfine commented Nov 10, 2025

Pull in upstream template changes

Summary by CodeRabbit

  • New Features

    • Added support for Python 3.14.0.
    • Added OpenIssues badge to documentation.
  • Chores

    • Updated dependencies including pytest (8.4.2 → 9.0.0), pnpm (10.20.0 → 10.21.0), and other package versions.
    • Enhanced code quality tooling configurations with improved exclusion patterns for auto-generated code.

@ejfine ejfine self-assigned this Nov 10, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 10, 2025

Warning

Rate limit exceeded

@ejfine has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 10 minutes and 11 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 2715d81 and 0459c86.

📒 Files selected for processing (2)
  • .copier-answers.yml (1 hunks)
  • template/README.md.jinja (1 hunks)

Walkthrough

This PR updates multiple configuration and metadata files with dependency version bumps, adds Python 3.14.0 support across CI and version matrices, updates tool versions (pnpm, pytest), expands pre-commit docformatter configuration, adds an OpenIssues badge to README documentation, and extends code coverage exclusions for auto-generated API client code.

Changes

Cohort / File(s) Summary
Copier template metadata
\.copier-answers\.yml, copier\.yml
Bump copier commit from v0.0.81 to v0.0.83; add Python 3.14.0 to python_ci_versions choices.
Development container
\.devcontainer/devcontainer\.json, \.devcontainer/install-ci-tooling\.py
Update devcontainer context hash comment; bump PNPM_VERSION from 10.20.0 to 10.21.0.
CI configuration
\.github/workflows/ci\.yaml
Extend Python version matrix to include 3.14.0 (from 3.12.7, 3.13.2); add tests/copier_data/data3.yaml to copier invocation.
Pre-commit configuration
\.pre-commit-config\.yaml, template/\.pre-commit-config\.yaml
Expand docformatter exclude pattern to cover tests, exceptions.py, warnings.py, and generated/open-api files using verbose regex; add --wrap-descriptions=150 argument.
Documentation
README\.md, template/README\.md\.jinja
Add OpenIssues badge; reorganize badge placement relative to conditional blocks.
Context hook dependencies
extensions/context\.py
Bump pnpm_version (10.20.0 → 10.21.0), pytest_version (8.4.2 → 9.0.0), pulumi versions, nuxt_fonts_version (0.11.4 → 0.12.1), types_node_version (24.9.2 → 24.10.0); add httpx_version (0.28.1) and python_kiota_bundle_version (1.9.7); add py314_version (3.14.0) and remove py311_version.
Project dependencies
pyproject\.toml
Bump pytest dependency from 8.4.2 to 9.0.0.
Code coverage configuration
template/\.coveragerc
Add */generated/open_api/* exclusion with comment for auto-generated API client code.
Test data
tests/copier_data/data2\.yaml
Add Python 3.14.0 to python_ci_versions list.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Changes are predominantly homogeneous version bumps and configuration updates across multiple files with consistent patterns
  • Pre-commit and docformatter configuration expansions are straightforward regex/argument additions
  • Python 3.14.0 additions are repetitive across metadata and CI files

Possibly related PRs

Pre-merge checks

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The pull request description is incomplete and does not follow the required template structure. Critical sections are missing: Link to Issue, Why necessary, How it addresses the issue, Side effects, and Testing information. Expand the description to include all template sections: provide issue link, explain why Python 3.14 support is needed, detail how changes implement this support, describe any side effects, and explain testing approach.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Copier update (Python 3.14 support)' clearly and specifically summarizes the main change, reflecting the addition of Python 3.14.0 support across multiple configuration files.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2abe759 and 2715d81.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (13)
  • .copier-answers.yml (1 hunks)
  • .devcontainer/devcontainer.json (1 hunks)
  • .devcontainer/install-ci-tooling.py (1 hunks)
  • .github/workflows/ci.yaml (1 hunks)
  • .pre-commit-config.yaml (1 hunks)
  • README.md (1 hunks)
  • copier.yml (1 hunks)
  • extensions/context.py (4 hunks)
  • pyproject.toml (1 hunks)
  • template/.coveragerc (1 hunks)
  • template/.pre-commit-config.yaml (1 hunks)
  • template/README.md.jinja (1 hunks)
  • tests/copier_data/data2.yaml (1 hunks)
🔇 Additional comments (13)
template/.coveragerc (1)

6-7: LGTM!

Appropriately excludes auto-generated API client code from coverage. This aligns with the pre-commit configuration changes that also exclude generated/open[-_]api paths.

.devcontainer/devcontainer.json (1)

66-66: LGTM!

The devcontainer context hash is auto-generated by a pre-commit hook and is expected to change when dependencies or configuration files are modified.

.pre-commit-config.yaml (1)

143-153: LGTM!

The docformatter configuration improvements are well-structured:

  • Multiline exclude pattern is more readable and maintainable
  • Adding --wrap-descriptions=150 provides consistency with --wrap-summaries=150
  • Exclusion of generated OpenAPI code aligns with coverage configuration changes
template/.pre-commit-config.yaml (1)

143-153: LGTM!

The docformatter configuration changes are consistent with the root .pre-commit-config.yaml, ensuring uniform formatting standards across template instances.

extensions/context.py (2)

14-101: LGTM! Dependency updates are well-organized.

The version updates are comprehensive and consistent across the context hook:

  • Tool version updates (pnpm, pytest, pulumi stack)
  • Frontend dependency updates (Node types, Nuxt fonts)
  • Python runtime expansion to include 3.14.0

The changes align with the PR objectives for Python 3.14 support and upstream template synchronization.


101-101: I need to verify Python 3.14.0 compatibility for these tools. The script output shows available versions but doesn't confirm 3.14.0 support. Let me search for compatibility information:

Python 3.14.0 toolchain compatibility verified.

pytest 9.0.0 includes fixes for Python 3.14 compatibility, specifically handling type annotations differently in Python 3.14. Pyright 1.1.407 includes support for PEP 758, which allows Python 3.14 to support multiple exceptions in an except clause. Ruff 0.14.4 includes updates for Python 3.14. Pylint 4.0.2 supports Python 3.14.

All tools in the CI pipeline are compatible with Python 3.14.0. No updates needed.

.devcontainer/install-ci-tooling.py (1)

11-11: pnpm version 10.21.0 verified and available.

pnpm version 10.21.0 exists on the npm registry. The version bump is valid and ready to merge.

.copier-answers.yml (1)

9-9: Python 3.14.0 is available in CI environments; verify dependency compatibility.

Python 3.14.0 was released on October 7, 2025 and is available in GitHub Actions. The version is also available in the deadsnakes PPA for Ubuntu. Before merging, ensure all project dependencies support Python 3.14.0 by checking compatibility notices from upstream maintainers or running CI tests.

pyproject.toml (1)

9-9: Pytest 9.0.0 upgrade is safe for this template.

Analysis of breaking changes shows no impact on this codebase:

  • No py.path.local hook parameters used
  • No deprecated pytest features or PytestRemovedIn9Warning suppressions detected
  • Python 3.12.7 minimum exceeds dropped Python 3.9 support
  • No CI environment variable handling in template
  • No custom pytest configuration requiring CLI changes

This Copier template has no test suite of its own; it defines pytest 9.0.0 as a dependency for projects generated from it.

tests/copier_data/data2.yaml (1)

25-27: Addition of Python 3.14.0 to test data is consistent.

The version string format matches existing entries in the list, and placement is appropriate.

copier.yml (1)

53-60: Python 3.14.0 choice is properly added to template configuration.

The version is consistently formatted and aligns with corresponding test data in data2.yaml.

.github/workflows/ci.yaml (2)

43-44: Python 3.14.0 matrix entry is properly formatted.

The version is consistently added to the CI matrix with proper YAML spacing.


45-49: No issues found — data3.yaml exists and is valid.

Verification confirms that tests/copier_data/data3.yaml exists and contains properly formatted YAML with appropriate repository configuration data. The CI workflow reference is valid.

Comment on lines +44 to +45
context["httpx_version"] = "0.28.1"
context["python_kiota_bundle_version"] = "1.9.7"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Document the purpose of new dependencies.

The addition of httpx_version and python_kiota_bundle_version suggests support for OpenAPI client generation. Ensure these dependencies are documented in the template's README or usage guide, explaining when and how they are used.

🤖 Prompt for AI Agents
In extensions/context.py around lines 44 to 45, two new keys were added
(httpx_version and python_kiota_bundle_version) but their purpose is not
documented; update the template README (README.md at repo root or docs/usage.md
if present) to add a short section describing these dependencies: why they are
included (supporting OpenAPI client generation), when they are required, how
they are used in the template generation flow, and note the pinned versions and
how to update them; also add a one-line comment above the new keys in
extensions/context.py briefly stating their role and linking to the README
section.

[![Actions status](https://www.github.com/LabAutomationAndScreening/copier-python-package-template/actions/workflows/ci.yaml/badge.svg?branch=main)](https://www.github.com/LabAutomationAndScreening/copier-python-package-template/actions)
[![Open in Dev Containers](https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://www.github.com/LabAutomationAndScreening/copier-python-package-template)

[![OpenIssues](http://isitmaintained.com/badge/open/LabAutomationAndScreening/copier-python-package-template.svg)](http://isitmaintained.com/project/LabAutomationAndScreening/copier-python-package-template)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider using HTTPS for the badge URL.

The OpenIssues badge uses http:// instead of https:// for isitmaintained.com. While the security risk is minimal for badge images, using HTTPS is generally preferred. This aligns with the same concern raised in the template file.

If isitmaintained.com supports HTTPS, apply this diff:

-[![OpenIssues](http://isitmaintained.com/badge/open/LabAutomationAndScreening/copier-python-package-template.svg)](http://isitmaintained.com/project/LabAutomationAndScreening/copier-python-package-template)
+[![OpenIssues](https://isitmaintained.com/badge/open/LabAutomationAndScreening/copier-python-package-template.svg)](https://isitmaintained.com/project/LabAutomationAndScreening/copier-python-package-template)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
[![OpenIssues](http://isitmaintained.com/badge/open/LabAutomationAndScreening/copier-python-package-template.svg)](http://isitmaintained.com/project/LabAutomationAndScreening/copier-python-package-template)
[![OpenIssues](https://isitmaintained.com/badge/open/LabAutomationAndScreening/copier-python-package-template.svg)](https://isitmaintained.com/project/LabAutomationAndScreening/copier-python-package-template)
🤖 Prompt for AI Agents
In README.md around line 5, the badge link uses http:// for isitmaintained.com;
update both the markdown link and the image URL to use https:// instead of
http:// so the badge and its target use HTTPS (i.e., replace both occurrences of
"http://" with "https://" for the isitmaintained.com URLs).

@ejfine ejfine merged commit 11d61cf into main Nov 10, 2025
8 checks passed
@ejfine ejfine deleted the py314 branch November 10, 2025 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant