diff --git a/.copier-answers.yml b/.copier-answers.yml index a3eb2264..9966b69d 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: v0.0.81 +_commit: v0.0.83 _src_path: gh:LabAutomationAndScreening/copier-base-template.git description: Copier template for creating Python libraries and executables install_claude_cli: false diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ac94b75c..d511a985 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -63,5 +63,5 @@ "initializeCommand": "sh .devcontainer/initialize-command.sh", "onCreateCommand": "sh .devcontainer/on-create-command.sh", "postStartCommand": "sh .devcontainer/post-start-command.sh" - // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): ac3ca44a # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): a69fbb56 # spellchecker:disable-line } diff --git a/.devcontainer/install-ci-tooling.py b/.devcontainer/install-ci-tooling.py index c208bbf8..b18ddded 100644 --- a/.devcontainer/install-ci-tooling.py +++ b/.devcontainer/install-ci-tooling.py @@ -8,7 +8,7 @@ from pathlib import Path UV_VERSION = "0.9.7" -PNPM_VERSION = "10.20.0" +PNPM_VERSION = "10.21.0" COPIER_VERSION = "9.10.3" COPIER_TEMPLATE_EXTENSIONS_VERSION = "0.3.3" PRE_COMMIT_VERSION = "4.3.0" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 22ab55ae..86348a0b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -140,7 +140,13 @@ repos: rev: e73b8ba0c1316be565983236c72e653ad44e6b66 # frozen: v1.7.7 hooks: - id: docformatter - exclude: (tests*)|(exceptions\.py)|(warnings\.py) + exclude: | + (?x)^( + .*/tests/.*| + exceptions\.py| + warnings\.py| + .*/generated/open[-_]api/.*| + )$ args: - --in-place - --wrap-summaries=150 diff --git a/README.md b/README.md index 966577ce..10fc79c2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-black.json)](https://github.com/copier-org/copier) [![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) # Usage To create a new repository using this template: diff --git a/copier.yml b/copier.yml index aa9b4645..a7ae287e 100644 --- a/copier.yml +++ b/copier.yml @@ -57,6 +57,7 @@ python_ci_versions: choices: - "3.12.7" - "3.13.2" + - "3.14.0" aws_identity_center_id: diff --git a/extensions/context.py b/extensions/context.py index 0490f7b9..b01b2c40 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -11,18 +11,18 @@ class ContextUpdater(ContextHook): @override def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["uv_version"] = "0.9.7" - context["pnpm_version"] = "10.20.0" + context["pnpm_version"] = "10.21.0" context["pre_commit_version"] = "4.3.0" context["pyright_version"] = "1.1.407" - context["pytest_version"] = "8.4.2" + context["pytest_version"] = "9.0.0" context["pytest_randomly_version"] = "4.0.1" context["pytest_cov_version"] = "7.0.0" context["copier_version"] = "9.10.3" context["copier_template_extensions_version"] = "0.3.3" context["sphinx_version"] = "8.1.3" - context["pulumi_version"] = "3.205.0" - context["pulumi_aws_version"] = "7.10.0" - context["pulumi_aws_native_version"] = "1.37.0" + context["pulumi_version"] = "3.206.0" + context["pulumi_aws_version"] = "7.11.0" + context["pulumi_aws_native_version"] = "1.38.0" context["pulumi_command_version"] = "1.1.3" context["pulumi_github_version"] = "6.8.0" context["pulumi_okta_version"] = "6.1.0" @@ -41,6 +41,8 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["uuid_utils_version"] = "0.11.0" context["syrupy_version"] = "5.0.0" context["structlog_version"] = "25.5.0" + context["httpx_version"] = "0.28.1" + context["python_kiota_bundle_version"] = "1.9.7" context["node_version"] = "24.7.0" context["nuxt_ui_version"] = "^4.1.0" @@ -59,7 +61,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["nuxt_eslint_version"] = "^1.10.0" context["zod_version"] = "^4.1.12" context["zod_from_json_schema_version"] = "^0.5.1" - context["types_node_version"] = "^24.9.2" + context["types_node_version"] = "^24.10.0" context["nuxt_apollo_version"] = "5.0.0-alpha.15" context["graphql_codegen_cli_version"] = "^6.0.0" context["graphql_codegen_typescript_version"] = "^5.0.0" @@ -67,7 +69,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["tailwindcss_version"] = "^4.1.11" context["iconify_vue_version"] = "^5.0.0" context["iconify_json_lucide_version"] = "^1.2.71" - context["nuxt_fonts_version"] = "^0.11.4" + context["nuxt_fonts_version"] = "^0.12.1" context["nuxtjs_color_mode_version"] = "^3.5.2" context["vue_test_utils_version"] = "^2.4.6" context["nuxt_test_utils_version"] = "3.19.1" @@ -94,9 +96,9 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["gha_linux_runner"] = "ubuntu-24.04" context["gha_windows_runner"] = "windows-2025" - context["py311_version"] = "" context["py312_version"] = "3.12.7" context["py313_version"] = "3.13.2" + context["py314_version"] = "3.14.0" context["debian_release_name"] = "bookworm" context["alpine_image_version"] = "3.22" diff --git a/pyproject.toml b/pyproject.toml index 30bbf2ec..09d772f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ readme = "README.md" requires-python = ">=3.12.7" dependencies = [ # Managed by upstream template - "pytest>=8.4.2", + "pytest>=9.0.0", "pytest-cov>=7.0.0", "pytest-randomly>=4.0.1", "pyright[nodejs]>=1.1.407", diff --git a/template/.coveragerc b/template/.coveragerc index 56e79493..7ee237b3 100644 --- a/template/.coveragerc +++ b/template/.coveragerc @@ -3,6 +3,8 @@ branch = True omit = # omit anything supplied by vendors */vendor_files/* + # omit any auto-generated API client code + */generated/open_api/* [report] # Regexes for lines to exclude from consideration diff --git a/template/.pre-commit-config.yaml b/template/.pre-commit-config.yaml index 22ab55ae..86348a0b 100644 --- a/template/.pre-commit-config.yaml +++ b/template/.pre-commit-config.yaml @@ -140,7 +140,13 @@ repos: rev: e73b8ba0c1316be565983236c72e653ad44e6b66 # frozen: v1.7.7 hooks: - id: docformatter - exclude: (tests*)|(exceptions\.py)|(warnings\.py) + exclude: | + (?x)^( + .*/tests/.*| + exceptions\.py| + warnings\.py| + .*/generated/open[-_]api/.*| + )$ args: - --in-place - --wrap-summaries=150 diff --git a/template/README.md.jinja b/template/README.md.jinja index 9d256714..55fa0641 100644 --- a/template/README.md.jinja +++ b/template/README.md.jinja @@ -8,7 +8,8 @@ [![Downloads](https://pepy.tech/badge/{% endraw %}{{ package_name }}{% raw %})](https://pepy.tech/project/{% endraw %}{{ package_name }}{% raw %}) [![Python Versions](https://img.shields.io/pypi/pyversions/{% endraw %}{{ package_name }}{% raw %}.svg)](https://pypi.org/project/{% endraw %}{{ package_name }}{% raw %}/) {% endraw %}{% endif %}{% raw %}[![Codecov](https://codecov.io/gh/{% endraw %}{{ full_repo_url | replace("https://github.com/", "") }}{% raw %}/branch/main/graph/badge.svg)](https://codecov.io/gh/{% endraw %}{{ full_repo_url | replace("https://github.com/", "") }}{% raw %}){% endraw %}{% if create_docs %}{% raw %} -[![Documentation Status](https://readthedocs.org/projects/{% endraw %}{{ package_name }}{% raw %}/badge/?version=latest)](https://{% endraw %}{{ package_name }}{% raw %}.readthedocs.io/en/latest/?badge=latest){% endraw %}{% endif %}{% raw %} +[![Documentation Status](https://readthedocs.org/projects/{% endraw %}{{ package_name }}{% raw %}/badge/?version=latest)](https://{% endraw %}{{ package_name }}{% raw %}.readthedocs.io/en/latest/?badge=latest){% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_open_source%}{% raw %} +[![OpenIssues](https://isitmaintained.com/badge/open/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}.svg)](https://isitmaintained.com/project/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}){% endraw %}{% endif %}{% raw %} # Usage Documentation is hosted on [ReadTheDocs](https://{% endraw %}{{ package_name }}{% raw %}.readthedocs.io/en/latest/?badge=latest). diff --git a/tests/copier_data/data2.yaml b/tests/copier_data/data2.yaml index f47f8460..05e6e4a4 100644 --- a/tests/copier_data/data2.yaml +++ b/tests/copier_data/data2.yaml @@ -24,6 +24,7 @@ aws_region_for_stack: us-west-1 python_ci_versions: - "3.12.7" - "3.13.2" + - "3.14.0" package_name: the-amazing-library primary_author: John Williams full_repo_url: https://www.github.com/baz diff --git a/uv.lock b/uv.lock index 04a4b0c6..2171ebb8 100644 --- a/uv.lock +++ b/uv.lock @@ -62,7 +62,7 @@ requires-dist = [ { name = "copier", specifier = ">=9.10.3" }, { name = "copier-template-extensions", specifier = ">=0.3.3" }, { name = "pyright", extras = ["nodejs"], specifier = ">=1.1.407" }, - { name = "pytest", specifier = ">=8.4.2" }, + { name = "pytest", specifier = ">=9.0.0" }, { name = "pytest-cov", specifier = ">=7.0.0" }, { name = "pytest-randomly", specifier = ">=4.0.1" }, ] @@ -402,7 +402,7 @@ nodejs = [ [[package]] name = "pytest" -version = "8.4.2" +version = "9.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -411,9 +411,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/1d/eb34f286b164c5e431a810a38697409cca1112cee04b287bb56ac486730b/pytest-9.0.0.tar.gz", hash = "sha256:8f44522eafe4137b0f35c9ce3072931a788a21ee40a2ed279e817d3cc16ed21e", size = 1562764, upload-time = "2025-11-08T17:25:33.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, + { url = "https://files.pythonhosted.org/packages/72/99/cafef234114a3b6d9f3aaed0723b437c40c57bdb7b3e4c3a575bc4890052/pytest-9.0.0-py3-none-any.whl", hash = "sha256:e5ccdf10b0bac554970ee88fc1a4ad0ee5d221f8ef22321f9b7e4584e19d7f96", size = 373364, upload-time = "2025-11-08T17:25:31.811Z" }, ] [[package]]