From fc01522957c082d5358bd7cad40280b94fe41809 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 10:39:01 +0000 Subject: [PATCH 01/17] perms --- .devcontainer/devcontainer.json | 2 +- extensions/context.py | 2 +- pyproject.toml | 2 +- template/.github/workflows/ci.yaml.jinja-base | 3 +++ uv.lock | 8 ++++---- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 36ce6513a..621d24824 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -75,5 +75,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): b2879b1e # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): d1489d07 # spellchecker:disable-line } diff --git a/extensions/context.py b/extensions/context.py index 45b83a7a8..abdc63166 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -21,7 +21,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: # These are duplicated in the pyproject.toml of this repository context["pyright_version"] = ">=1.1.408" context["pytest_version"] = ">=9.0.3" - context["pytest_randomly_version"] = ">=4.0.1" + context["pytest_randomly_version"] = ">=4.1.0" context["pytest_cov_version"] = ">=7.1.0" context["ty_version"] = ">=0.0.32" ####### diff --git a/pyproject.toml b/pyproject.toml index 43d551e3e..fc87dc601 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ requires-python = ">=3.12.7" dependencies = [ "pytest>=9.0.3", "pytest-cov>=7.1.0", - "pytest-randomly>=4.0.1", + "pytest-randomly>=4.1.0", "pyright[nodejs]>=1.1.408", "ty>=0.0.32", "copier==9.14.3", diff --git a/template/.github/workflows/ci.yaml.jinja-base b/template/.github/workflows/ci.yaml.jinja-base index d0516c1ca..43c48d1f3 100644 --- a/template/.github/workflows/ci.yaml.jinja-base +++ b/template/.github/workflows/ci.yaml.jinja-base @@ -24,6 +24,9 @@ jobs: check-skip-duplicate: runs-on: {% endraw %}{{ gha_linux_runner }}{% raw %} timeout-minutes: {% endraw %}{{ gha_short_timeout_minutes }}{% raw %} + permissions: + contents: read + pull-requests: read # needed to check if PR exists for current branch outputs: should-run: ${{ steps.check.outputs.should-run }} steps: diff --git a/uv.lock b/uv.lock index 821bff0c4..a0f5518d5 100644 --- a/uv.lock +++ b/uv.lock @@ -65,7 +65,7 @@ requires-dist = [ { name = "pyright", extras = ["nodejs"], specifier = ">=1.1.408" }, { name = "pytest", specifier = ">=9.0.3" }, { name = "pytest-cov", specifier = ">=7.1.0" }, - { name = "pytest-randomly", specifier = ">=4.0.1" }, + { name = "pytest-randomly", specifier = ">=4.1.0" }, { name = "ty", specifier = ">=0.0.32" }, ] @@ -434,14 +434,14 @@ wheels = [ [[package]] name = "pytest-randomly" -version = "4.0.1" +version = "4.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/1d/258a4bf1109258c00c35043f40433be5c16647387b6e7cd5582d638c116b/pytest_randomly-4.0.1.tar.gz", hash = "sha256:174e57bb12ac2c26f3578188490bd333f0e80620c3f47340158a86eca0593cd8", size = 14130, upload-time = "2025-09-12T15:23:00.085Z" } +sdist = { url = "https://files.pythonhosted.org/packages/27/b3/36192dacc0f470ac2cc516f73e01739c9a48a8224f76beada4f85e1c8a89/pytest_randomly-4.1.0.tar.gz", hash = "sha256:47f1d9746c3bc3efabd53ae1ebfb8bb385cf3d4df4b505b6d58d9c97a3dfe70f", size = 14302, upload-time = "2026-04-20T13:01:51.831Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/3e/a4a9227807b56869790aad3e24472a554b585974fe7e551ea350f50897ae/pytest_randomly-4.0.1-py3-none-any.whl", hash = "sha256:e0dfad2fd4f35e07beff1e47c17fbafcf98f9bf4531fd369d9260e2f858bfcb7", size = 8304, upload-time = "2025-09-12T15:22:58.946Z" }, + { url = "https://files.pythonhosted.org/packages/9a/db/2df9a1fca597a273f957a559c20c2d95d629928384507b2afa43ba6909d1/pytest_randomly-4.1.0-py3-none-any.whl", hash = "sha256:f55e89e53367b090c0c053697d7f9d77595543d0e0516c93978b50c0f6b252f9", size = 8353, upload-time = "2026-04-20T13:01:50.382Z" }, ] [[package]] From 3596ca575772a7e8be31eab482bb648f19aef016 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 13:16:35 +0000 Subject: [PATCH 02/17] extensions --- .devcontainer/devcontainer.json | 10 +++++----- template/.devcontainer/devcontainer.json.jinja-base | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 621d24824..657bc033c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -34,17 +34,17 @@ "-AmazonWebServices.aws-toolkit-vscode", // the AWS CLI feature installs this automatically, but it's causing problems in VS Code // basic tooling // "eamodio.gitlens@15.5.1", - "coderabbit.coderabbit-vscode@0.18.3", + "coderabbit.coderabbit-vscode@0.18.4", "ms-vscode.live-server@0.5.2025051301", "MS-vsliveshare.vsliveshare@1.0.5905", "github.copilot@1.388.0", - "github.copilot-chat@0.42.2026032602", - "anthropic.claude-code@2.1.109", + "github.copilot-chat@0.44.2", + "anthropic.claude-code@2.1.117", // Python "ms-python.python@2026.5.2026032701", - "ms-python.vscode-pylance@2026.1.102", + "ms-python.vscode-pylance@2026.2.100", "ms-vscode-remote.remote-containers@0.414.0", - "charliermarsh.ruff@2026.38.0", + "charliermarsh.ruff@2026.40.0", // Misc file formats "bierner.markdown-mermaid@1.29.0", "samuelcolvin.jinjahtml@0.20.0", diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index 5095467bf..bd1f9ce45 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -16,7 +16,7 @@ "ghcr.io/devcontainers/features/aws-cli:1.1.2": { // https://github.com/devcontainers/features/blob/main/src/aws-cli/devcontainer-feature.json // view latest version https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst - "version": "2.32.6" + "version": "2.34.34" },{% endraw %}{% endif %}{% raw %} "ghcr.io/devcontainers/features/python:1.8.0": { // https://github.com/devcontainers/features/blob/main/src/python/devcontainer-feature.json @@ -39,18 +39,18 @@ "-AmazonWebServices.aws-toolkit-vscode", // the AWS CLI feature installs this automatically, but it's causing problems in VS Code{% endraw %}{% endif %}{% raw %} // basic tooling // "eamodio.gitlens@15.5.1", - "coderabbit.coderabbit-vscode@0.18.3", + "coderabbit.coderabbit-vscode@0.18.4", "ms-vscode.live-server@0.5.2025051301", "MS-vsliveshare.vsliveshare@1.0.5905", "github.copilot@1.388.0", - "github.copilot-chat@0.42.2026032602",{% endraw %}{% if install_claude_cli %}{% raw %} - "anthropic.claude-code@2.1.109",{% endraw %}{% endif %}{% raw %} + "github.copilot-chat@0.44.2",{% endraw %}{% if install_claude_cli %}{% raw %} + "anthropic.claude-code@2.1.117",{% endraw %}{% endif %}{% raw %} // Python "ms-python.python@2026.5.2026032701", - "ms-python.vscode-pylance@2026.1.102", + "ms-python.vscode-pylance@2026.2.100", "ms-vscode-remote.remote-containers@0.414.0", - "charliermarsh.ruff@2026.38.0", + "charliermarsh.ruff@2026.40.0", {% endraw %}{% if is_child_of_copier_base_template is not defined and template_uses_vuejs is defined and template_uses_vuejs is sameas(true) %}{% raw %} // VueJS "vue.volar@3.2.5", From 9cfa9981bf9fd86d819066dac45a01a55ed94d9e Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 13:35:26 +0000 Subject: [PATCH 03/17] bump --- .devcontainer/devcontainer.json | 2 +- .devcontainer/install-ci-tooling.py | 2 +- .github/workflows/ci.yaml | 4 ++-- extensions/context.py | 14 +++++++------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 657bc033c..264504f73 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -75,5 +75,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): d1489d07 # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): e03f9d08 # spellchecker:disable-line } diff --git a/.devcontainer/install-ci-tooling.py b/.devcontainer/install-ci-tooling.py index fd0b7f7c8..8d1e89503 100644 --- a/.devcontainer/install-ci-tooling.py +++ b/.devcontainer/install-ci-tooling.py @@ -5,7 +5,7 @@ import subprocess import sys -UV_VERSION = "0.11.6" +UV_VERSION = "0.11.7" COPIER_VERSION = "9.14.3" COPIER_TEMPLATE_EXTENSIONS_VERSION = "0.3.3" PRE_COMMIT_VERSION = "4.5.1" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e49542087..ed293b8e8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -50,7 +50,7 @@ jobs: timeout-minutes: 30 # this is the amount of time this action will wait to attempt to acquire the mutex lock before failing, e.g. if other jobs are queued up in front of it - name: Cache Pre-commit hooks - uses: actions/cache@v5.0.2 + uses: actions/cache@v5.0.4 env: cache-name: cache-pre-commit-hooks with: @@ -177,7 +177,7 @@ jobs: timeout-minutes: 30 # this is the amount of time this action will wait to attempt to acquire the mutex lock before failing, e.g. if other jobs are queued up in front of it - name: Cache Pre-commit hooks - uses: actions/cache@v5.0.2 + uses: actions/cache@v5.0.4 env: cache-name: cache-pre-commit-hooks with: diff --git a/extensions/context.py b/extensions/context.py index abdc63166..b589a4b18 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -11,13 +11,13 @@ class ContextUpdater(ContextHook): @override def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: # These are duplicated in the install-ci-tooling.py script in this repository - context["uv_version"] = "0.11.6" + context["uv_version"] = "0.11.7" context["pre_commit_version"] = "4.5.1" # These also in pyproject.toml and the install-ci-tooling.py script in this repository context["copier_version"] = "==9.14.3" context["copier_template_extensions_version"] = "==0.3.3" ####### - context["pnpm_version"] = "10.33.0" + context["pnpm_version"] = "10.33.1" # These are duplicated in the pyproject.toml of this repository context["pyright_version"] = ">=1.1.408" context["pytest_version"] = ">=9.0.3" @@ -92,17 +92,17 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: # These are duplicated in the CI files for this repository context["gha_checkout"] = "v6.0.2" context["gha_setup_python"] = "v6.2.0" - context["gha_cache"] = "v5.0.3" + context["gha_cache"] = "v5.0.4" context["gha_linux_runner"] = "ubuntu-24.04" ####### - context["gha_upload_artifact"] = "v7.0.0" - context["gha_download_artifact"] = "v8.0.0" + context["gha_upload_artifact"] = "v7.0.1" + context["gha_download_artifact"] = "v8.0.1" context["gha_github_script"] = "v7.0.1" context["gha_setup_buildx"] = "v3.11.1" context["buildx_version"] = "v0.27.0" context["gha_docker_build_push"] = "v6.18.0" - context["gha_configure_aws_credentials"] = "v6.0.0" - context["gha_amazon_ecr_login"] = "v2.0.2" + context["gha_configure_aws_credentials"] = "v6.1.0" + context["gha_amazon_ecr_login"] = "v2.1.3" context["gha_setup_node"] = "v6.3.0" context["gha_action_gh_release"] = "v2.2.1" context["gha_mutex"] = "1ebad517141198e08d47cf72f3c0975316620a65 # v1.0.0-alpha.10" From 6f4e304731decdc4030b378bb1da9bd798e666f6 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 13:36:51 +0000 Subject: [PATCH 04/17] mutex --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ed293b8e8..7ae1e7164 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -171,7 +171,7 @@ jobs: - name: Set up mutex # Github concurrency management is horrible, things get arbitrarily cancelled if queued up. So using mutex until github fixes itself. When multiple jobs are modifying cache at once, weird things can happen. possible issue is https://github.com/actions/toolkit/issues/658 if: ${{ runner.os != 'Windows' }} # we're just gonna have to YOLO on Windows, because this action doesn't support it yet https://github.com/ben-z/gh-action-mutex/issues/14 - uses: ben-z/gh-action-mutex@d3d5b354d460d4b6a1e3ee5b7951678658327812 # v1.0.0-alpha.9 + uses: ben-z/gh-action-mutex@1ebad517141198e08d47cf72f3c0975316620a65 # v1.0.0-alpha.10 with: branch: mutex-venv-${{ matrix.os }}-${{ matrix.python-version }} timeout-minutes: 30 # this is the amount of time this action will wait to attempt to acquire the mutex lock before failing, e.g. if other jobs are queued up in front of it From bc1d29a850fb72651108f8ba7587d0cc14a5acab Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 18:21:50 +0000 Subject: [PATCH 05/17] igoner --- .devcontainer/devcontainer.json | 2 +- .pre-commit-config.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 264504f73..f80e0cacb 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -75,5 +75,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): e03f9d08 # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 0646a36d # spellchecker:disable-line } diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f36b2c2e..e2a67163d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -65,16 +65,16 @@ repos: # the XML formatter hook doesn't leave a blank line at the end, so excluding XML files from this hook to avoid conflicts exclude: | # the extra trailing newline in the pull request template makes it easier to click there in the github console. The CLI that programmatically generates devcontainer-lock.json always ends the file incompatible with this hook. (?x)^( - .github/pull_request_template.md| - template/.github/pull_request_template.md| - template/.copier-answers.yml.jinja-base| - template/template/.copier-answers.yml.jinja| - template/.copier-answers.yml.jinja| + \.github/pull_request_template.md| + template/\.github/pull_request_template.md| + template/\.copier-answers\.yml\.jinja-base| + template/template/\.copier-answers\.yml\.jinja| + template/\.copier-answers\.yml\.jinja| .*generated/graphql.ts| .*/generated/open[-_]api/.*| .*tests/.*/__snapshots__/.*| .devcontainer/devcontainer-lock.json| - .copier-answers.yml| + .*\.copier-answers\.yml| .*\.xml| .*\.svg| .*/vendor_files/.*| @@ -186,7 +186,7 @@ repos: # VCRpy cassettes sometimes contain non-YAML markers that cause errors---but they're autogenerated anyway exclude: | (?x)^( - .copier-answers.yml| + (.*\.copier-answers\.yml)| (.*/?helm/.*)| (.*/tests/unit/.*/?cassettes/.*)| )$ From cb2cb7cdde0b8f14588cc045aedafc73b986aed3 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 18:38:13 +0000 Subject: [PATCH 06/17] question --- template/copier.yml.jinja-base | 10 ++++++++++ template/tests/copier_data/data1.yaml.jinja-base | 1 + template/tests/copier_data/data2.yaml.jinja-base | 1 + 3 files changed, 12 insertions(+) diff --git a/template/copier.yml.jinja-base b/template/copier.yml.jinja-base index cd43590f4..e21f3e09c 100644 --- a/template/copier.yml.jinja-base +++ b/template/copier.yml.jinja-base @@ -146,6 +146,16 @@ aws_region_for_stack: # Questions specific to this template + + +# Questions managed by upstream template + +repo_names_for_codespaces_read_permissions: + type: str + help: Provide a comma-separated list of repository names within this github organization that you would like the codespace to have read access to (e.g. private copier templates) + default: "" + + _tasks: - command: | python3 '{{ _copier_conf.src_path }}/src/copier_tasks/remove_precommit_hooks.py' \ diff --git a/template/tests/copier_data/data1.yaml.jinja-base b/template/tests/copier_data/data1.yaml.jinja-base index 21e229bef..ea7fa7c50 100644 --- a/template/tests/copier_data/data1.yaml.jinja-base +++ b/template/tests/copier_data/data1.yaml.jinja-base @@ -6,6 +6,7 @@ description: Doing amazing things install_claude_cli: false ssh_port_number: 12345 pull_from_ecr: false +repo_names_for_codespaces_read_permissions: use_windows_in_ci: false {% endraw %}{% if template_might_want_to_install_aws_ssm_port_forwarding_plugin %}{% raw %}install_aws_ssm_port_forwarding_plugin: true{% endraw %}{% endif %}{% raw %} {% endraw %}{% if template_might_want_to_use_vcrpy %}{% raw %}configure_vcrpy: true{% endraw %}{% endif %}{% raw %} diff --git a/template/tests/copier_data/data2.yaml.jinja-base b/template/tests/copier_data/data2.yaml.jinja-base index 211a3725f..85fbb48c5 100644 --- a/template/tests/copier_data/data2.yaml.jinja-base +++ b/template/tests/copier_data/data2.yaml.jinja-base @@ -6,6 +6,7 @@ description: Doing crazy things! So many things! install_claude_cli: true ssh_port_number: 54321 pull_from_ecr: true +repo_names_for_codespaces_read_permissions: best-repo,good-repo use_windows_in_ci: true {% endraw %}{% if template_might_want_to_install_aws_ssm_port_forwarding_plugin %}{% raw %}install_aws_ssm_port_forwarding_plugin: false{% endraw %}{% endif %}{% raw %} {% endraw %}{% if template_might_want_to_use_vcrpy %}{% raw %}configure_vcrpy: false{% endraw %}{% endif %}{% raw %} From 633232992ecb05e78ee104568c4a975324ed4180 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 18:41:24 +0000 Subject: [PATCH 07/17] question --- copier.yaml | 2 +- template/copier.yml.jinja-base | 2 +- template/tests/copier_data/data1.yaml.jinja-base | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/copier.yaml b/copier.yaml index 4932a5faa..9edf32b78 100644 --- a/copier.yaml +++ b/copier.yaml @@ -95,7 +95,7 @@ _tasks: fi -_min_copier_version: "9.7" +_min_copier_version: "9.8" _subdirectory: template diff --git a/template/copier.yml.jinja-base b/template/copier.yml.jinja-base index e21f3e09c..6522d05ba 100644 --- a/template/copier.yml.jinja-base +++ b/template/copier.yml.jinja-base @@ -173,7 +173,7 @@ _tasks: fi # Additional Settings -_min_copier_version: "9.7" +_min_copier_version: "9.8" _subdirectory: template diff --git a/template/tests/copier_data/data1.yaml.jinja-base b/template/tests/copier_data/data1.yaml.jinja-base index ea7fa7c50..1dd3a3f79 100644 --- a/template/tests/copier_data/data1.yaml.jinja-base +++ b/template/tests/copier_data/data1.yaml.jinja-base @@ -6,7 +6,7 @@ description: Doing amazing things install_claude_cli: false ssh_port_number: 12345 pull_from_ecr: false -repo_names_for_codespaces_read_permissions: +repo_names_for_codespaces_read_permissions: '' use_windows_in_ci: false {% endraw %}{% if template_might_want_to_install_aws_ssm_port_forwarding_plugin %}{% raw %}install_aws_ssm_port_forwarding_plugin: true{% endraw %}{% endif %}{% raw %} {% endraw %}{% if template_might_want_to_use_vcrpy %}{% raw %}configure_vcrpy: true{% endraw %}{% endif %}{% raw %} From 1a7566d24b777798116c8ea8333db14162bcc25d Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 18:46:38 +0000 Subject: [PATCH 08/17] anwser --- template/tests/copier_data/data2.yaml.jinja-base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/tests/copier_data/data2.yaml.jinja-base b/template/tests/copier_data/data2.yaml.jinja-base index 85fbb48c5..53d30f541 100644 --- a/template/tests/copier_data/data2.yaml.jinja-base +++ b/template/tests/copier_data/data2.yaml.jinja-base @@ -6,7 +6,7 @@ description: Doing crazy things! So many things! install_claude_cli: true ssh_port_number: 54321 pull_from_ecr: true -repo_names_for_codespaces_read_permissions: best-repo,good-repo +repo_names_for_codespaces_read_permissions: best-repo,good-project use_windows_in_ci: true {% endraw %}{% if template_might_want_to_install_aws_ssm_port_forwarding_plugin %}{% raw %}install_aws_ssm_port_forwarding_plugin: false{% endraw %}{% endif %}{% raw %} {% endraw %}{% if template_might_want_to_use_vcrpy %}{% raw %}configure_vcrpy: false{% endraw %}{% endif %}{% raw %} From cc2c248edcaa73c06359c8eed00940ed930fd562 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 18:48:50 +0000 Subject: [PATCH 09/17] lines --- template/tests/copier_data/data1.yaml.jinja-base | 5 +++-- template/tests/copier_data/data2.yaml.jinja-base | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/template/tests/copier_data/data1.yaml.jinja-base b/template/tests/copier_data/data1.yaml.jinja-base index 1dd3a3f79..e651f785b 100644 --- a/template/tests/copier_data/data1.yaml.jinja-base +++ b/template/tests/copier_data/data1.yaml.jinja-base @@ -19,5 +19,6 @@ aws_identity_center_id: d-9145c20053 aws_org_home_region: us-west-2 aws_production_account_id: 123456789012 use_staging_environment: false -aws_region_for_stack: us-east-2 -{% endraw %}{% endif %}{% raw %}# Data added based on the specifics of this template{% endraw %} +aws_region_for_stack: us-east-2{% endraw %}{% endif %}{% raw %} + +# Data added based on the specifics of this template{% endraw %} diff --git a/template/tests/copier_data/data2.yaml.jinja-base b/template/tests/copier_data/data2.yaml.jinja-base index 53d30f541..681acb330 100644 --- a/template/tests/copier_data/data2.yaml.jinja-base +++ b/template/tests/copier_data/data2.yaml.jinja-base @@ -24,5 +24,6 @@ use_staging_environment: true aws_staging_account_id: 210987654321 aws_test_account_id: 211735654321 aws_development_account_id: 000321456870 -aws_region_for_stack: us-west-1 -{% endraw %}{% endif %}{% raw %}# Data added based on the specifics of this template{% endraw %} +aws_region_for_stack: us-west-1{% endraw %}{% endif %}{% raw %} + +# Data added based on the specifics of this template{% endraw %} From 0ca9a4d27325b43e229ee3dfdf703b5dff42b56c Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 20:10:01 +0000 Subject: [PATCH 10/17] cs-perms --- template/.devcontainer/devcontainer.json.jinja-base | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index bd1f9ce45..f1a9407cf 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -84,7 +84,14 @@ "editor.formatOnSave": true } } - } + }{% endraw %}{% if repo_names_for_codespaces_read_permissions.strip() %}{% set _cs_repos = repo_names_for_codespaces_read_permissions.split(',') | map('trim') | reject('equalto', '') | list %}{% if _cs_repos %}, + "codespaces": { + "repositories": { +{% for cs_repo_item in _cs_repos %} "{{ repo_org_name }}/{{ cs_repo_item }}": { + "permissions": { "contents": "read" } + }{% if not loop.last %},{% endif %} +{% endfor %} } + }{% endif %}{% endif %}{% raw %} }, "initializeCommand": "sh .devcontainer/initialize-command.sh", "onCreateCommand": "sh .devcontainer/on-create-command.sh", From 1691871f6c51771632fbd1af10346db4e2245088 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 20:17:01 +0000 Subject: [PATCH 11/17] guard --- template/.devcontainer/devcontainer.json.jinja-base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index f1a9407cf..eaff3fd2a 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -84,7 +84,7 @@ "editor.formatOnSave": true } } - }{% endraw %}{% if repo_names_for_codespaces_read_permissions.strip() %}{% set _cs_repos = repo_names_for_codespaces_read_permissions.split(',') | map('trim') | reject('equalto', '') | list %}{% if _cs_repos %}, + }{% endraw %}{% if repo_names_for_codespaces_read_permissions is defined and repo_names_for_codespaces_read_permissions.strip() %}{% set _cs_repos = repo_names_for_codespaces_read_permissions.split(',') | map('trim') | reject('equalto', '') | list %}{% if _cs_repos %}, "codespaces": { "repositories": { {% for cs_repo_item in _cs_repos %} "{{ repo_org_name }}/{{ cs_repo_item }}": { From 7f7de314573ca22959bd944c044dd1a8e7fadf6e Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 20:19:16 +0000 Subject: [PATCH 12/17] commas --- template/.devcontainer/devcontainer.json.jinja-base | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index eaff3fd2a..e6f7d87d3 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -84,14 +84,14 @@ "editor.formatOnSave": true } } - }{% endraw %}{% if repo_names_for_codespaces_read_permissions is defined and repo_names_for_codespaces_read_permissions.strip() %}{% set _cs_repos = repo_names_for_codespaces_read_permissions.split(',') | map('trim') | reject('equalto', '') | list %}{% if _cs_repos %}, + },{% endraw %}{% if repo_names_for_codespaces_read_permissions is defined and repo_names_for_codespaces_read_permissions.strip() %}{% set _cs_repos = repo_names_for_codespaces_read_permissions.split(',') | map('trim') | reject('equalto', '') | list %}{% if _cs_repos %} "codespaces": { "repositories": { {% for cs_repo_item in _cs_repos %} "{{ repo_org_name }}/{{ cs_repo_item }}": { "permissions": { "contents": "read" } }{% if not loop.last %},{% endif %} {% endfor %} } - }{% endif %}{% endif %}{% raw %} + },{% endif %}{% endif %}{% raw %} }, "initializeCommand": "sh .devcontainer/initialize-command.sh", "onCreateCommand": "sh .devcontainer/on-create-command.sh", From 9f929fa2a718c7211ab6ac273ee2fc05f237c478 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 20:43:51 +0000 Subject: [PATCH 13/17] adafruint --- extensions/context.py | 2 ++ template/extensions/context.py.jinja-base | 2 ++ 2 files changed, 4 insertions(+) diff --git a/extensions/context.py b/extensions/context.py index b589a4b18..04a4170b2 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -54,6 +54,8 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["pytest_asyncio_version"] = ">=1.3.0" context["pytest_reserial_version"] = ">=0.6.0" context["python_faker_version"] = ">=40.13.0" + context["adafruit_circuitpython_busdevice_version"] = "==5.2.14" + context["adafruit_circuitpython_register_version"] = "==1.11.1" ####### context["default_node_version"] = "24.11.1" context["nuxt_ui_version"] = "^4.6.0" diff --git a/template/extensions/context.py.jinja-base b/template/extensions/context.py.jinja-base index 68c4eb0de..a28bb6b7f 100644 --- a/template/extensions/context.py.jinja-base +++ b/template/extensions/context.py.jinja-base @@ -49,6 +49,8 @@ class ContextUpdater(ContextHook): context["pytest_asyncio_version"] = "{{ pytest_asyncio_version }}" context["pytest_reserial_version"] = "{{ pytest_reserial_version }}" context["python_faker_version"] = "{{ python_faker_version }}" + context["adafruit_circuitpython_busdevice_version"] = "{{ adafruit_circuitpython_busdevice_version }}" + context["adafruit_circuitpython_register_version"] = "{{ adafruit_circuitpython_register_version }}" context["default_node_version"] = "{{ default_node_version }}" context["nuxt_ui_version"] = "{{ nuxt_ui_version }}" From 921383dc0e4ae5e9dd58e80dded825d857069ab2 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 21:07:56 +0000 Subject: [PATCH 14/17] help text --- template/copier.yml.jinja-base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/copier.yml.jinja-base b/template/copier.yml.jinja-base index 6522d05ba..85f11ef70 100644 --- a/template/copier.yml.jinja-base +++ b/template/copier.yml.jinja-base @@ -152,7 +152,7 @@ aws_region_for_stack: repo_names_for_codespaces_read_permissions: type: str - help: Provide a comma-separated list of repository names within this github organization that you would like the codespace to have read access to (e.g. private copier templates) + help: Provide a comma-separated list of repository names only within this GitHub organization that you would like the codespace to have read access to (for example, private-template, not my-org/private-template) default: "" From 2bcf6f4d03007f937fc61b15795421cc1af90c47 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 21:08:47 +0000 Subject: [PATCH 15/17] stronger json escaping --- template/.devcontainer/devcontainer.json.jinja-base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index e6f7d87d3..da2683ef7 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -87,7 +87,7 @@ },{% endraw %}{% if repo_names_for_codespaces_read_permissions is defined and repo_names_for_codespaces_read_permissions.strip() %}{% set _cs_repos = repo_names_for_codespaces_read_permissions.split(',') | map('trim') | reject('equalto', '') | list %}{% if _cs_repos %} "codespaces": { "repositories": { -{% for cs_repo_item in _cs_repos %} "{{ repo_org_name }}/{{ cs_repo_item }}": { +{% for cs_repo_item in _cs_repos %} {{ (repo_org_name ~ "/" ~ cs_repo_item) | tojson }}: { "permissions": { "contents": "read" } }{% if not loop.last %},{% endif %} {% endfor %} } From 464241435d7497d5bb467d7a2a9fdb46c9afbbc3 Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 21:09:12 +0000 Subject: [PATCH 16/17] use trailing comma --- template/.devcontainer/devcontainer.json.jinja-base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index da2683ef7..51e054e16 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -89,7 +89,7 @@ "repositories": { {% for cs_repo_item in _cs_repos %} {{ (repo_org_name ~ "/" ~ cs_repo_item) | tojson }}: { "permissions": { "contents": "read" } - }{% if not loop.last %},{% endif %} + }, {% endfor %} } },{% endif %}{% endif %}{% raw %} }, From 8bc2e4812b8a29a569be59ce3137570ffa2df59a Mon Sep 17 00:00:00 2001 From: Eli Fine Date: Wed, 22 Apr 2026 21:15:59 +0000 Subject: [PATCH 17/17] simpler regex --- .devcontainer/devcontainer.json | 2 +- .pre-commit-config.yaml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f80e0cacb..6a31d1f37 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -75,5 +75,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): 0646a36d # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 275b721b # spellchecker:disable-line } diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e2a67163d..ecf7814a2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,14 +67,11 @@ repos: (?x)^( \.github/pull_request_template.md| template/\.github/pull_request_template.md| - template/\.copier-answers\.yml\.jinja-base| - template/template/\.copier-answers\.yml\.jinja| - template/\.copier-answers\.yml\.jinja| .*generated/graphql.ts| .*/generated/open[-_]api/.*| .*tests/.*/__snapshots__/.*| .devcontainer/devcontainer-lock.json| - .*\.copier-answers\.yml| + .*\.copier-answers\.yml(\.jinja(-base)?)?| .*\.xml| .*\.svg| .*/vendor_files/.*|