Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"-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.16.0",
"coderabbit.coderabbit-vscode@0.16.1",
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🌐 Web query:

CodeRabbit VS Code extension version 0.16.1 release

💡 Result:

I couldn’t find any public release or release notes for CodeRabbit VS Code extension version 0.16.1. The latest published extension version I found is 0.16.0 (updated November 19, 2025). [1][2]

Sources:

  • VsixHub listing for CodeRabbit — latest version 0.16.0 (updated Nov 19, 2025). [1]
  • CodeRabbit docs / changelog and VS Code integration announcement. [2]

Revert CodeRabbit extension to version 0.16.0 — version 0.16.1 does not exist.

The specified version 0.16.1 is not published in the VS Code marketplace; the latest available version is 0.16.0 (released November 19, 2025). This will cause devcontainer builds to fail when attempting to install the extension. Change line 25 to use 0.16.0 or wait for 0.16.1 to be officially released.

🤖 Prompt for AI Agents
.devcontainer/devcontainer.json around line 25: the extensions list pins
"coderabbit.coderabbit-vscode@0.16.1", but that version does not exist and will
break devcontainer builds; change the pinned version to the published one
"0.16.0" (or remove the explicit version if you prefer latest) so the extension
can be installed successfully during devcontainer creation.

"ms-vscode.live-server@0.5.2025051301",
"MS-vsliveshare.vsliveshare@1.0.5905",
"github.copilot@1.388.0",
Expand Down Expand Up @@ -62,5 +62,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): 99d2d16a # spellchecker:disable-line
// Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 5b56d8b0 # spellchecker:disable-line
}
2 changes: 1 addition & 1 deletion .devcontainer/install-ci-tooling.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import subprocess
import sys

UV_VERSION = "0.9.11"
UV_VERSION = "0.9.17"
COPIER_VERSION = "9.11.0"
COPIER_TEMPLATE_EXTENSIONS_VERSION = "0.3.3"
PRE_COMMIT_VERSION = "4.5.0"
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/windows-host-helper.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

# If you're still having issues, make sure in Windows Developer Settings that you enabled Developer Mode, and also that you set your git config to have `core.autocrlf=false` and `core.symlinks=true` globally

set -e # Exit immediately on error
set -euo pipefail # Exit immediately on error

if [ -z "$BASH_VERSION" ]; then
echo "Error: This script must be run with bash (e.g., 'bash windows-host-helper.sh')." >&2
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ jobs:
timeout-minutes: 8
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/checkout@v6.0.1
with:
persist-credentials: false

- name: Setup Python
uses: actions/setup-python@v6.0.0
uses: actions/setup-python@v6.1.0
with:
python-version: ${{ matrix.python-version }}

Expand All @@ -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@v4.2.4
uses: actions/cache@v4.3.0
env:
cache-name: cache-pre-commit-hooks
with:
Expand Down Expand Up @@ -83,12 +83,12 @@ jobs:
contents: write # needed for mutex

steps:
- uses: actions/checkout@v5.0.0
- uses: actions/checkout@v6.0.1
with:
persist-credentials: false

- name: Setup Python
uses: actions/setup-python@v6.0.0
uses: actions/setup-python@v6.1.0
with:
python-version: ${{ matrix.python-version }}

Expand Down Expand Up @@ -134,7 +134,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@v4.2.4
uses: actions/cache@v4.3.0
env:
cache-name: cache-pre-commit-hooks
with:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tag-on-merge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v5.0.0
- uses: actions/checkout@v6.0.1
with:
ref: ${{ github.event.pull_request.merge_commit_sha }}
fetch-depth: '0'
Expand Down
20 changes: 10 additions & 10 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ repos:

# Reformatting (should generally come before any file format or other checks, because reformatting can change things)
- repo: https://github.com/crate-ci/typos
rev: 6573587991823ef75e4d6ca97fe895f45e9f14e4 # frozen: v1
rev: 802d5794ff9cf7b15610c47eca99cd1ab757d8d4 # frozen: v1
hooks:
- id: typos
exclude: |
Expand Down Expand Up @@ -108,7 +108,7 @@ repos:
)$

- repo: https://github.com/rbubley/mirrors-prettier
rev: 5ba47274f9b181bce26a5150a725577f3c336011 # frozen: v3.6.2
rev: 14abee445aea04b39069c19b4bd54efff6775819 # frozen: v3.7.4
hooks:
- id: prettier
# TODO: get template YAML and MD files more in line with prettier expectations so we can start using prettier on those too
Expand Down Expand Up @@ -195,7 +195,7 @@ repos:
- id: check-case-conflict

- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 83b816d020105076daac266dbf6bfed199a2da93 # frozen: 0.34.1
rev: 16a6ad2fead09286ee6eb6b0a3fab55655a6c22a # frozen: 0.35.0
hooks:
- id: check-github-workflows

Expand Down Expand Up @@ -249,15 +249,15 @@ repos:
description: Runs hadolint to lint Dockerfiles

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 3db93a2be6f214ed722bf7bce095ec1b1715422a # frozen: v0.14.2
rev: 1a1f58ba4c35362efe8fed2279715a905baee93d # frozen: v0.14.8
hooks:
- id: ruff
name: ruff-src
args: [--fix, --config=./ruff.toml]
files: src/.+\.py$
exclude: |
(?x)^(
.*/graphql_codegen/.*|
.*/generated/graphql/.*|
.*/generated/open[-_]api/.*|
template/.*|
)$
Expand All @@ -267,26 +267,26 @@ repos:
files: tests?/.+\.py$
exclude: |
(?x)^(
.*/graphql_codegen/.*|
.*/generated/graphql/.*|
.*/generated/open[-_]api/.*|
template/.*|
)$
- id: ruff-format
exclude: |
(?x)^(
.*/graphql_codegen/.*|
.*/generated/graphql/.*|
.*/generated/open[-_]api/.*|
)$

- repo: https://github.com/pylint-dev/pylint
rev: 0eb92d25fd38ba5bad2f8d2ea7df63ad23e18ae3 # frozen: v4.0.2
rev: e16f942166511d6fb4427e503a734152fae0c4fe # frozen: v4.0.4
hooks:
- id: pylint
name: pylint
# exclude the template files---duplication within them will be discovered during CI of that template instantiation
exclude: |
(?x)^(
.*/graphql_codegen/.*|
.*/generated/graphql/.*|
.*/generated/open[-_]api/.*|
template/.*|
)$
Expand All @@ -302,7 +302,7 @@ repos:
files: '.+\.py$'
exclude: |
(?x)^(
.*/graphql_codegen/.*|
.*/generated/graphql/.*|
.*/generated/open[-_]api/.*|
)$
# don't pass filenames else the command line sees them twice
Expand Down
6 changes: 6 additions & 0 deletions copier.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ template_might_want_to_install_aws_ssm_port_forwarding_plugin:
help: Is this template for something that might want the AWS SSM Port Forwarding plugin be installed?
default: no

template_might_want_to_use_vcrpy:
type: bool
help: Is this template for something that might want to use VCRpy during unit testing?
default: no
when: "{{ template_uses_python }}"


_min_copier_version: "9.4"

Expand Down
56 changes: 30 additions & 26 deletions extensions/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ 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.9.11"
context["uv_version"] = "0.9.17"
context["pre_commit_version"] = "4.5.0"
# These also in pyproject.toml
context["copier_version"] = "9.11.0"
context["copier_template_extensions_version"] = "0.3.3"
#######
context["pnpm_version"] = "10.24.0"
context["pnpm_version"] = "10.25.0"
# These are duplicated in the pyproject.toml of this repository
context["pyright_version"] = "1.1.407"
context["pytest_version"] = "9.0.1"
context["pytest_version"] = "9.0.2"
context["pytest_randomly_version"] = "4.0.1"
context["pytest_cov_version"] = "7.0.0"
#######
Expand All @@ -33,29 +33,32 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
context["pulumi_okta_version"] = "6.1.0"
context["boto3_version"] = "1.41.2"
context["ephemeral_pulumi_deploy_version"] = "0.0.5"
context["pydantic_version"] = "2.12.4"
context["pyinstaller_version"] = "6.16.0"
context["pydantic_version"] = "2.12.5"
context["pyinstaller_version"] = "6.17.0"
context["setuptools_version"] = "80.7.1"
context["strawberry_graphql_version"] = "0.287.0"
context["fastapi_version"] = "0.121.0"
context["fastapi_offline_version"] = "1.7.4"
context["uvicorn_version"] = "0.38.0"
context["strawberry_graphql_version"] = ">=0.287.0"
context["fastapi_version"] = ">=0.124.2"
context["fastapi_offline_version"] = ">=1.7.4"
context["uvicorn_version"] = ">=0.38.0"
context["lab_auto_pulumi_version"] = "0.1.17"
context["ariadne_codegen_version"] = "0.15.2"
context["ariadne_codegen_version"] = ">=0.17.0"
context["pytest_mock_version"] = "3.15.1"
context["uuid_utils_version"] = "0.11.0"
context["syrupy_version"] = "5.0.0"
context["structlog_version"] = "25.5.0"
context["uuid_utils_version"] = ">=0.12.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["python_kiota_bundle_version"] = ">=1.9.7"
context["vcrpy_version"] = ">=8.1.0"
context["pytest_recording_version"] = ">=0.13.4"
context["pytest_asyncio_version"] = ">=1.3.0"
#######
context["node_version"] = "24.7.0"
context["node_version"] = "24.11.1"
context["nuxt_ui_version"] = "^4.2.1"
context["nuxt_version"] = "^4.2.0"
context["nuxt_version"] = "^4.2.2"
context["nuxt_icon_version"] = "^2.1.0"
context["typescript_version"] = "^5.9.3"
context["playwright_version"] = "^1.56.0"
context["vue_version"] = "^3.5.22"
context["playwright_version"] = "^1.57.0"
context["vue_version"] = "^3.5.25"
context["vue_tsc_version"] = "^3.1.2"
context["vue_devtools_api_version"] = "^8.0.0"
context["vue_router_version"] = "^4.6.0"
Expand All @@ -66,11 +69,12 @@ 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.10.1"
context["types_node_version"] = "^25.0.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"
context["graphql_codegen_typescript_operations_version"] = "^5.0.0"
context["graphql_tools_mock_version"] = "^9.1.0"
context["tailwindcss_version"] = "^4.1.11"
context["iconify_vue_version"] = "^5.0.0"
context["iconify_json_lucide_version"] = "^1.2.71"
Expand All @@ -83,9 +87,9 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
context["node_kiota_bundle_version"] = "1.0.0-preview.99"
#######
# These are duplicated in the CI files for this repository
context["gha_checkout"] = "v5.0.0"
context["gha_setup_python"] = "v6.0.0"
context["gha_cache"] = "v4.2.4"
context["gha_checkout"] = "v6.0.1"
context["gha_setup_python"] = "v6.1.0"
context["gha_cache"] = "v4.3.0"
context["gha_linux_runner"] = "ubuntu-24.04"
#######
context["gha_upload_artifact"] = "v5.0.0"
Expand All @@ -94,9 +98,9 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
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"] = "v5.1.0"
context["gha_configure_aws_credentials"] = "v5.1.1"
context["gha_amazon_ecr_login"] = "v2.0.1"
context["gha_setup_node"] = "v6.0.0"
context["gha_setup_node"] = "v6.1.0"
context["gha_action_gh_release"] = "v2.2.1"
context["gha_mutex"] = "1ebad517141198e08d47cf72f3c0975316620a65 # v1.0.0-alpha.10"
context["gha_pypi_publish"] = "v1.13.0"
Expand All @@ -108,8 +112,8 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
context["gha_xlong_timeout_minutes"] = "45"
#######
context["debian_release_name"] = "bookworm"
context["alpine_image_version"] = "3.22"
context["nginx_image_version"] = "1.29.1"
context["alpine_image_version"] = "3.23"
context["nginx_image_version"] = "1.29.4"
#######
context["kiota_cli_version"] = "1.29.0"
# These also in the tests/data.yml files in this repository and in copier.yaml
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12.7"
dependencies = [
"pytest>=9.0.1",
"pytest>=9.0.2",
"pytest-cov>=7.0.0",
"pytest-randomly>=4.0.1",
"pyright[nodejs]>=1.1.407",
Expand Down
5 changes: 3 additions & 2 deletions pyrightconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
"**/.pipx_cache",
"**/__pycache__",
"**/vendor_files",
"**/graphql_codegen",
"**/generated/graphql",
"**/generated/open_api",
"**/.venv",
"**/venv"
"**/venv",
"**/copier_template_resources"
],
"strictListInference": true,
"strictDictionaryInference": true,
Expand Down
2 changes: 1 addition & 1 deletion template/.devcontainer/devcontainer.json.jinja-base
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"-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.16.0",
"coderabbit.coderabbit-vscode@0.16.1",
"ms-vscode.live-server@0.5.2025051301",
"MS-vsliveshare.vsliveshare@1.0.5905",
"github.copilot@1.388.0",
Expand Down
7 changes: 6 additions & 1 deletion template/copier.yml.jinja-base
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,12 @@ install_aws_ssm_port_forwarding_plugin:
type: bool
help: Should the AWS SSM Port Forwarding Plugin be installed?
default: no{% endraw %}{% endif %}{% raw %}
{% endraw %}{% if template_uses_python %}
{% endraw %}{% if template_uses_python %}{% if template_might_want_to_use_vcrpy %}{% raw %}
configure_vcrpy:
type: bool
help: Should VCRpy be configured for use during unit testing in Python?
default: no{% endraw %}{% endif %}{% raw %}
{% endraw %}
python_version:
type: str
help: What version of Python is used for development?
Expand Down
Loading