diff --git a/.coveragerc b/.coveragerc index 56e79493..7ee237b3 100644 --- a/.coveragerc +++ b/.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/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 1803d4ef..06e83dc0 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -61,5 +61,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): 53d51a57 # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 43411b4a # spellchecker:disable-line } diff --git a/README.md b/README.md index 1e285286..78ee1b02 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,17 @@ [![Checked with pyright](https://microsoft.github.io/pyright/img/pyright_badge.svg)](https://microsoft.github.io/pyright/) [![Actions status](https://github.com/LabAutomationAndScreening/copier-base-template/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/LabAutomationAndScreening/copier-base-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://github.com/LabAutomationAndScreening/copier-base-template) +[![OpenIssues](http://isitmaintained.com/badge/open/LabAutomationAndScreening/copier-base-template.svg)](http://isitmaintained.com/project/LabAutomationAndScreening/copier-base-template) # Instantiating a new repository using this template 1. Use the file `.devcontainer/devcontainer-to-instantiate-template.json` to create a devcontainer (or just use the default Codespace devcontainer) 1. Inside that devcontainer, run `python .devcontainer/install-ci-tooling.py` to install necessary tooling to instantiate the template (you can copy/paste the script from this repo...and you can paste it in the root of the repo if you want) 1. Delete all files currently in the repository. Optional...but makes it easiest to avoid git conflicts. 1. Run copier to instantiate the template: `copier copy --trust gh:LabAutomationAndScreening/copier-base-template.git .` -1. Run `python .devcontainer/manual-setup-deps.py --only-create-lock --allow-uv-to-install-python` to generate the lock file(s) +1. Run `python .devcontainer/manual-setup-deps.py --only-create-lock --allow-uv-to-install-python --skip-updating-devcontainer-hash` to generate the lock file(s) 1. Stage all files to prepare for commit (`git add .`) 1. Run `python3 .github/workflows/hash_git_files.py . --for-devcontainer-config-update` to update the hash for your devcontainer file -1. Commit the changes (optional) +1. Commit the changes (optional). Ensure to stage the modified `.devcontainer/devcontainer.json` file: `git add .devcontainer/devcontainer.json` 1. Rebuild your new devcontainer If you are running into issues with the SSH port, confirm the randomly chosen port is not in the excluded ranges on your computer. On Windows you can run this in an elevated command prompt to check `netsh interface ipv4 show excludedportrange protocol=tcp` diff --git a/copier.yaml b/copier.yaml index 68345691..9798ee3d 100644 --- a/copier.yaml +++ b/copier.yaml @@ -33,6 +33,7 @@ python_ci_versions: choices: - "3.12.7" - "3.13.2" + - "3.14.0" ssh_port_number: type: int diff --git a/extensions/context.py b/extensions/context.py index 527ff14d..24febf5b 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -17,10 +17,10 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["copier_version"] = "9.10.3" context["copier_template_extensions_version"] = "0.3.3" ####### - context["pnpm_version"] = "10.20.0" + context["pnpm_version"] = "10.21.0" # These are duplicated in the pyproject.toml of this repository 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" ####### @@ -109,6 +109,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: # These also in the tests/data.yml files in this repository and in copier.yaml context["py312_version"] = "3.12.7" # ReadTheDocs does not yet support 3.12.8 context["py313_version"] = "3.13.2" + context["py314_version"] = "3.14.0" ####### # Kludge to allow for the same docker-compose file in child and grandchild templates context["aws_region_for_stack"] = "us-east-1" diff --git a/pyproject.toml b/pyproject.toml index f9a375e9..86a81258 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.12.7" dependencies = [ - "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/README.md.jinja-base b/template/README.md.jinja-base index c46b976b..ad5f775a 100644 --- a/template/README.md.jinja-base +++ b/template/README.md.jinja-base @@ -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/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}/actions/workflows/ci.yaml/badge.svg?branch=main)](https://www.github.com/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}/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/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}) - +[![OpenIssues](http://isitmaintained.com/badge/open/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}.svg)](http://isitmaintained.com/project/{% endraw %}{{ repo_org_name }}/{{ repo_name }}{% raw %}) # Usage To create a new repository using this template: diff --git a/template/copier.yml.jinja-base b/template/copier.yml.jinja-base index 33e644a2..963d9949 100644 --- a/template/copier.yml.jinja-base +++ b/template/copier.yml.jinja-base @@ -62,7 +62,8 @@ python_ci_versions: multiselect: true choices: - "{{ py312_version }}" - - "{{ py313_version }}"{% endif %}{% raw %} + - "{{ py313_version }}" + - "{{ py314_version }}"{% endif %}{% raw %} {% endraw %}{% if template_uses_python %}{% raw %} aws_identity_center_id: diff --git a/template/extensions/context.py.jinja-base b/template/extensions/context.py.jinja-base index f6b34a39..5951ff97 100644 --- a/template/extensions/context.py.jinja-base +++ b/template/extensions/context.py.jinja-base @@ -96,9 +96,9 @@ class ContextUpdater(ContextHook): context["gha_linux_runner"] = "{{ gha_linux_runner }}" context["gha_windows_runner"] = "{{ gha_windows_runner }}" - context["py311_version"] = "{{ py311_version }}" context["py312_version"] = "{{ py312_version }}" context["py313_version"] = "{{ py313_version }}" + context["py314_version"] = "{{ py314_version }}" context["debian_release_name"] = "{{ debian_release_name }}" context["alpine_image_version"] = "{{ alpine_image_version }}" diff --git a/tests/copier_data/data2.yaml b/tests/copier_data/data2.yaml index ad33f4ec..90f125a9 100644 --- a/tests/copier_data/data2.yaml +++ b/tests/copier_data/data2.yaml @@ -5,6 +5,7 @@ ssh_port_number: 54321 python_ci_versions: - "3.12.7" - "3.13.2" + - "3.14.0" template_uses_python: true template_uses_pulumi: false repo_org_name: Initech diff --git a/uv.lock b/uv.lock index a7b70355..097dfc18 100644 --- a/uv.lock +++ b/uv.lock @@ -62,7 +62,7 @@ requires-dist = [ { name = "copier", specifier = ">=9.10.2" }, { 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]]