diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2c15e79c..ad3190ae 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,11 +23,11 @@ "eamodio.gitlens@15.5.1", "ms-vscode.live-server@0.5.2025051301", "MS-vsliveshare.vsliveshare@1.0.5905", - "github.copilot@1.320.1564", - "github.copilot-chat@0.28.2025051402", + "github.copilot@1.366.1775", + "github.copilot-chat@0.31.2025090401", // Python - "ms-python.python@2025.7.2025051401", - "ms-python.vscode-pylance@2025.4.104", + "ms-python.python@2025.13.2025090201", + "ms-python.vscode-pylance@2025.7.102", "ms-vscode-remote.remote-containers@0.414.0", "charliermarsh.ruff@2025.24.0", // Misc file formats @@ -59,5 +59,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): c75f8c43 # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): b6e19452 # spellchecker:disable-line } diff --git a/.devcontainer/install-ci-tooling.py b/.devcontainer/install-ci-tooling.py index b7851a64..7e4778f5 100644 --- a/.devcontainer/install-ci-tooling.py +++ b/.devcontainer/install-ci-tooling.py @@ -5,9 +5,9 @@ import subprocess import sys -UV_VERSION = "0.8.4" -COPIER_VERSION = "9.9.1" -COPIER_TEMPLATE_EXTENSIONS_VERSION = "0.3.2" +UV_VERSION = "0.8.15" +COPIER_VERSION = "9.10.1" +COPIER_TEMPLATE_EXTENSIONS_VERSION = "0.3.3" PRE_COMMIT_VERSION = "4.3.0" GITHUB_WINDOWS_RUNNER_BIN_PATH = r"C:\Users\runneradmin\.local\bin" parser = argparse.ArgumentParser(description="Install CI tooling for the repo") diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 23ece589..1103e03a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -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: 7fb6e0951ad91e4772a2470012fc1ae621016b80 # frozen: v1 + rev: 65a25783d8705c6a72d9fead19c44d87b4ff03c3 # frozen: v1 hooks: - id: typos exclude: @@ -218,7 +218,7 @@ repos: exclude: docs/.*\.rst$ - repo: https://github.com/hadolint/hadolint - rev: c3dc18df7a501f02a560a2cc7ba3c69a85ca01d3 # frozen: v2.13.1-beta + rev: 87de847754330ad47ae16bdfe2d1a757ccb4b4d4 # frozen: v2.13.1 hooks: - id: hadolint-docker name: Lint Dockerfiles @@ -226,7 +226,7 @@ repos: description: Runs hadolint to lint Dockerfiles - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 54a455f7ce629598b7535ff828fd5fb796f4b83f # frozen: v0.12.9 + rev: db90487f48a9dd992d243ef63c156eaffddeaf28 # frozen: v0.12.11 hooks: - id: ruff name: ruff-src diff --git a/extensions/context.py b/extensions/context.py index 046d90de..f6927411 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -11,27 +11,27 @@ 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.8.4" + context["uv_version"] = "0.8.15" context["pre_commit_version"] = "4.3.0" # These also in pyproject.toml - context["copier_version"] = "9.9.1" - context["copier_template_extensions_version"] = "0.3.2" + context["copier_version"] = "9.10.1" + context["copier_template_extensions_version"] = "0.3.3" ####### - context["pnpm_version"] = "10.15.0" + context["pnpm_version"] = "10.15.1" # These are duplicated in the pyproject.toml of this repository - context["pyright_version"] = "1.1.404" + context["pyright_version"] = "1.1.405" context["pytest_version"] = "8.4.1" context["pytest_randomly_version"] = "3.16.0" context["pytest_cov_version"] = "6.2.1" ####### context["sphinx_version"] = "8.1.3" - context["pulumi_version"] = "3.191.0" - context["pulumi_aws_version"] = "7.4.0" + context["pulumi_version"] = "3.192.0" + context["pulumi_aws_version"] = "7.6.0" context["pulumi_aws_native_version"] = "1.32.0" context["pulumi_command_version"] = "1.1.0" context["pulumi_github_version"] = "6.7.3" context["pulumi_okta_version"] = "4.20.0" - context["boto3_version"] = "1.40.9" + context["boto3_version"] = "1.40.23" context["ephemeral_pulumi_deploy_version"] = "0.0.5" context["pydantic_version"] = "2.11.7" context["pyinstaller_version"] = "6.13.0" @@ -43,21 +43,23 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["lab_auto_pulumi_version"] = "0.1.16" ####### context["nuxt_ui_version"] = "^3.3.2" - context["nuxt_version"] = "^4.0.3" + context["nuxt_version"] = "^4.1.0" context["nuxt_icon_version"] = "^2.0.0" context["typescript_version"] = "^5.8.2" context["dot_env_cli_version"] = "^9.0.0" context["playwright_version"] = "^1.55.0" - context["vue_version"] = "^3.5.18" + context["vue_version"] = "^3.5.21" context["vue_tsc_version"] = "^3.0.6" context["vue_devtools_api_version"] = "^8.0.0" context["vue_router_version"] = "^4.5.1" context["dotenv_cli_version"] = "^10.0.0" - context["faker_version"] = "^9.9.0" + context["faker_version"] = "^10.0.0" context["vitest_version"] = "^3.2.4" - context["eslint_version"] = "^9.33.0" + context["eslint_version"] = "^9.34.0" context["nuxt_eslint_version"] = "^1.9.0" - context["zod_version"] = "^4.0.17" + context["zod_version"] = "^4.1.5" + context["zod_from_json_schema_version"] = "^0.5.0" + context["types_node_version"] = "^24.3.1" context["nuxt_apollo_version"] = "5.0.0-alpha.15" context["graphql_codegen_cli_version"] = "^5.0.5" context["graphql_codegen_typescript_version"] = "^4.1.6" diff --git a/pyproject.toml b/pyproject.toml index a1b5cc94..eb7f62c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,10 +5,10 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.12.7" dependencies = [ - "pytest>=8.4.0", + "pytest>=8.4.1", "pytest-cov>=6.2.1", "pytest-randomly>=3.16.0", - "pyright[nodejs]>=1.1.404", - "copier>=9.8.0", - "copier-template-extensions>=0.3.2" + "pyright[nodejs]>=1.1.405", + "copier>=9.10.1", + "copier-template-extensions>=0.3.3" ] diff --git a/template/.devcontainer/devcontainer.json.jinja-base b/template/.devcontainer/devcontainer.json.jinja-base index 18d40a49..0be60334 100644 --- a/template/.devcontainer/devcontainer.json.jinja-base +++ b/template/.devcontainer/devcontainer.json.jinja-base @@ -28,21 +28,21 @@ "eamodio.gitlens@15.5.1", "ms-vscode.live-server@0.5.2025051301", "MS-vsliveshare.vsliveshare@1.0.5905", - "github.copilot@1.320.1564", - "github.copilot-chat@0.28.2025051402", + "github.copilot@1.366.1775", + "github.copilot-chat@0.31.2025090401", // Python - "ms-python.python@2025.7.2025051401", - "ms-python.vscode-pylance@2025.4.104", + "ms-python.python@2025.13.2025090201", + "ms-python.vscode-pylance@2025.7.102", "ms-vscode-remote.remote-containers@0.414.0", "charliermarsh.ruff@2025.24.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@2.2.8", + "vue.volar@3.0.6", "vitest.explorer@1.16.1", {% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_child_of_copier_base_template is not defined and template_uses_javascript is defined and template_uses_javascript is sameas(true) %}{% raw %} // All javascript - "dbaeumer.vscode-eslint@3.0.13", + "dbaeumer.vscode-eslint@3.0.19", {% endraw %}{% endif %}{% raw %} // Misc file formats "bierner.markdown-mermaid@1.28.0", diff --git a/template/extensions/context.py.jinja-base b/template/extensions/context.py.jinja-base index 394e1065..adaa5386 100644 --- a/template/extensions/context.py.jinja-base +++ b/template/extensions/context.py.jinja-base @@ -53,6 +53,8 @@ class ContextUpdater(ContextHook): context["eslint_version"] = "{{ eslint_version }}" context["nuxt_eslint_version"] = "{{ nuxt_eslint_version }}" context["zod_version"] = "{{ zod_version }}" + context["zod_from_json_schema_version"] = "{{ zod_from_json_schema_version }}" + context["types_node_version"] = "{{ types_node_version }}" context["nuxt_apollo_version"] = "{{ nuxt_apollo_version }}" context["graphql_codegen_cli_version"] = "{{ graphql_codegen_cli_version }}" context["graphql_codegen_typescript_version"] = "{{ graphql_codegen_typescript_version }}" diff --git a/uv.lock b/uv.lock index 6150bc56..236326b6 100644 --- a/uv.lock +++ b/uv.lock @@ -22,7 +22,7 @@ wheels = [ [[package]] name = "copier" -version = "9.8.0" +version = "9.10.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama" }, @@ -34,14 +34,15 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, { name = "plumbum" }, + { name = "prompt-toolkit" }, { name = "pydantic" }, { name = "pygments" }, { name = "pyyaml" }, { name = "questionary" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/78/1246b4a1ddeb404037f76efedab9b42ada4e6ba56c574d8846e2a6b8f498/copier-9.8.0.tar.gz", hash = "sha256:343ac1eb65e678aa355690d7f19869ef07cabf837f511a87ed452443c085ec58", size = 579353, upload-time = "2025-07-07T18:47:03.803Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/a5/0cf693f3fa51cba1d36765939e0d9956c0487426ad581868a2507c208bad/copier-9.10.1.tar.gz", hash = "sha256:ba2d729465508da04a62bc9b76eed13d952aa7634a74a69519252fcf8a54d94e", size = 586680, upload-time = "2025-08-28T13:04:54.307Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/ed/839c91ff365f24756c90189e07f9de226d2e37cbc03c635f5d16d45d79cb/copier-9.8.0-py3-none-any.whl", hash = "sha256:ca0bee47f198b66cec926c4f1a3aa77f11ee0102624369c10e42ca9058c0a891", size = 55744, upload-time = "2025-07-07T18:47:01.905Z" }, + { url = "https://files.pythonhosted.org/packages/9b/4b/4a12d04124b0158b77958fb12349828bb4023f6530aaa1713ceb784c77a3/copier-9.10.1-py3-none-any.whl", hash = "sha256:8b1b406367c67e5ee389778246cea18cddd55e71bfc6503d5fa13fe73304407a", size = 56017, upload-time = "2025-08-28T13:04:52.444Z" }, ] [[package]] @@ -59,10 +60,10 @@ dependencies = [ [package.metadata] requires-dist = [ - { name = "copier", specifier = ">=9.8.0" }, - { name = "copier-template-extensions", specifier = ">=0.3.2" }, - { name = "pyright", extras = ["nodejs"], specifier = ">=1.1.404" }, - { name = "pytest", specifier = ">=8.4.0" }, + { name = "copier", specifier = ">=9.10.1" }, + { name = "copier-template-extensions", specifier = ">=0.3.3" }, + { name = "pyright", extras = ["nodejs"], specifier = ">=1.1.405" }, + { name = "pytest", specifier = ">=8.4.1" }, { name = "pytest-cov", specifier = ">=6.2.1" }, { name = "pytest-randomly", specifier = ">=3.16.0" }, ] @@ -358,15 +359,15 @@ wheels = [ [[package]] name = "pyright" -version = "1.1.404" +version = "1.1.405" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "nodeenv" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e2/6e/026be64c43af681d5632722acd100b06d3d39f383ec382ff50a71a6d5bce/pyright-1.1.404.tar.gz", hash = "sha256:455e881a558ca6be9ecca0b30ce08aa78343ecc031d37a198ffa9a7a1abeb63e", size = 4065679, upload-time = "2025-08-20T18:46:14.029Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/6c/ba4bbee22e76af700ea593a1d8701e3225080956753bee9750dcc25e2649/pyright-1.1.405.tar.gz", hash = "sha256:5c2a30e1037af27eb463a1cc0b9f6d65fec48478ccf092c1ac28385a15c55763", size = 4068319, upload-time = "2025-09-04T03:37:06.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/30/89aa7f7d7a875bbb9a577d4b1dc5a3e404e3d2ae2657354808e905e358e0/pyright-1.1.404-py3-none-any.whl", hash = "sha256:c7b7ff1fdb7219c643079e4c3e7d4125f0dafcc19d253b47e898d130ea426419", size = 5902951, upload-time = "2025-08-20T18:46:12.096Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1a/524f832e1ff1962a22a1accc775ca7b143ba2e9f5924bb6749dce566784a/pyright-1.1.405-py3-none-any.whl", hash = "sha256:a2cb13700b5508ce8e5d4546034cb7ea4aedb60215c6c33f56cec7f53996035a", size = 5905038, upload-time = "2025-09-04T03:37:04.913Z" }, ] [package.optional-dependencies] @@ -376,7 +377,7 @@ nodejs = [ [[package]] name = "pytest" -version = "8.4.0" +version = "8.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -385,9 +386,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/aa/405082ce2749be5398045152251ac69c0f3578c7077efc53431303af97ce/pytest-8.4.0.tar.gz", hash = "sha256:14d920b48472ea0dbf68e45b96cd1ffda4705f33307dcc86c676c1b5104838a6", size = 1515232, upload-time = "2025-06-02T17:36:30.03Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/de/afa024cbe022b1b318a3d224125aa24939e99b4ff6f22e0ba639a2eaee47/pytest-8.4.0-py3-none-any.whl", hash = "sha256:f40f825768ad76c0977cbacdf1fd37c6f7a468e460ea6a0636078f8972d4517e", size = 363797, upload-time = "2025-06-02T17:36:27.859Z" }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" }, ] [[package]]