diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 213afdd5e..9904260d7 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -1,9 +1,12 @@ # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json +early_access: true reviews: profile: assertive path_instructions: - path: "**/vendor_files/**" instructions: "These files came from a vendor and we're not allowed to change them. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it." + - path: "**/*.py" + instructions: "Do not express concerns about assert statements being removed by using the -O python flag; we never use that flag. Do not express concerns about ruff rules; a pre-commit hook already runs a ruff check. Do not warn about unnecessary super().init() calls; pyright prefers those to be present." tools: eslint: # when the code contains typescript, eslint will be run by pre-commit, and coderabbit often generates false positives enabled: false @@ -14,6 +17,7 @@ reviews: flake8: # we use ruff instead (when we use Python) enabled: false poem: false + in_progress_fortune: false # the commit status is driven by our repository config and required checks, we don't want CodeRabbit messing with it commit_status: false auto_review: diff --git a/.copier-answers.yml b/.copier-answers.yml index 9cbee03f5..8caf381ef 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: v0.0.91 +_commit: v0.0.92 _src_path: gh:LabAutomationAndScreening/copier-base-template.git description: A web app that is hosted within a local intranet. Nuxt frontend, python backend, docker-compose diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ca3aad856..324739466 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -16,24 +16,24 @@ "extensions": [ // basic tooling // "eamodio.gitlens@15.5.1", - "coderabbit.coderabbit-vscode@0.16.1", + "coderabbit.coderabbit-vscode@0.16.4", "ms-vscode.live-server@0.5.2025051301", "MS-vsliveshare.vsliveshare@1.0.5905", "github.copilot@1.388.0", - "github.copilot-chat@0.34.2025112401", + "github.copilot-chat@0.36.2026010502", // Python - "ms-python.python@2025.17.2025100201", - "ms-python.vscode-pylance@2025.8.3", + "ms-python.python@2025.21.2026010501", + "ms-python.vscode-pylance@2025.10.100", "ms-vscode-remote.remote-containers@0.414.0", - "charliermarsh.ruff@2025.28.0", + "charliermarsh.ruff@2025.32.0", // Misc file formats - "bierner.markdown-mermaid@1.28.0", + "bierner.markdown-mermaid@1.29.0", "samuelcolvin.jinjahtml@0.20.0", "tamasfe.even-better-toml@0.19.2", "emilast.LogFileHighlighter@3.3.3", - "esbenp.prettier-vscode@11.0.0" + "esbenp.prettier-vscode@11.0.2" ], "settings": { "editor.accessibilitySupport": "off", // turn off sounds @@ -58,5 +58,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): 2f01e630 # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 1798e6dc # spellchecker:disable-line } diff --git a/.devcontainer/install-ci-tooling.py b/.devcontainer/install-ci-tooling.py index c5af5b8c5..98a0eb5de 100644 --- a/.devcontainer/install-ci-tooling.py +++ b/.devcontainer/install-ci-tooling.py @@ -7,8 +7,8 @@ import tempfile from pathlib import Path -UV_VERSION = "0.9.18" -PNPM_VERSION = "10.25.0" +UV_VERSION = "0.9.21" +PNPM_VERSION = "10.27.0" COPIER_VERSION = "==9.11.0" COPIER_TEMPLATE_EXTENSIONS_VERSION = "==0.3.3" PRE_COMMIT_VERSION = "4.5.0" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index eebff267d..4d61b18ef 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: 802d5794ff9cf7b15610c47eca99cd1ab757d8d4 # frozen: v1 + rev: b31d3aa6e8e43e6a9cf7a1d137baf189dec0922b # frozen: v1 hooks: - id: typos exclude: | @@ -195,12 +195,12 @@ repos: - id: check-case-conflict - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 16a6ad2fead09286ee6eb6b0a3fab55655a6c22a # frozen: 0.35.0 + rev: b035497fb64e3f9faa91e833331688cc185891e6 # frozen: 0.36.0 hooks: - id: check-github-workflows - repo: https://github.com/maresb/check-json5 - rev: 893a2b5a0a27c3540bd8fcafe2968ccc05237179 # 1.0 + rev: bd4737432a2175617a9eeaa510ab369cbc1cbd3d # frozen: v1.0.1 hooks: - id: check-json5 files: | @@ -249,7 +249,7 @@ repos: description: Runs hadolint to lint Dockerfiles - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 1a1f58ba4c35362efe8fed2279715a905baee93d # frozen: v0.14.8 + rev: 5ba58aca0bd5bc7c0e1c0fc45af2e88d6a2bde83 # frozen: v0.14.10 hooks: - id: ruff name: ruff-src diff --git a/copier.yml b/copier.yml index 2928a0384..5662bc463 100644 --- a/copier.yml +++ b/copier.yml @@ -35,7 +35,7 @@ use_windows_in_ci: node_version: type: str help: What version of NodeJS is used for development? - default: "{{ node_version }}" + default: "{{ default_node_version }}" install_aws_ssm_port_forwarding_plugin: diff --git a/extensions/context.py b/extensions/context.py index 456a3b9c7..c7f52c2f1 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -10,66 +10,65 @@ class ContextUpdater(ContextHook): @override def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: - context["uv_version"] = "0.9.18" - context["pnpm_version"] = "10.25.0" + context["uv_version"] = "0.9.21" + context["pnpm_version"] = "10.27.0" context["pre_commit_version"] = "4.5.0" context["pyright_version"] = ">=1.1.407" context["pytest_version"] = ">=9.0.2" context["pytest_randomly_version"] = ">=4.0.1" context["pytest_cov_version"] = ">=7.0.0" - context["ty_version"] = ">=0.0.2" + context["ty_version"] = ">=0.0.9" context["copier_version"] = "==9.11.0" context["copier_template_extensions_version"] = "==0.3.3" context["sphinx_version"] = "9.0.4" - context["pulumi_version"] = ">=3.212.0" - context["pulumi_aws_version"] = ">=7.14.0" - context["pulumi_aws_native_version"] = ">=1.40.0" + context["pulumi_version"] = ">=3.214.1" + context["pulumi_aws_version"] = ">=7.15.0" + context["pulumi_aws_native_version"] = ">=1.47.0" context["pulumi_command_version"] = ">=1.1.3" - context["pulumi_github_version"] = ">=6.9.1" + context["pulumi_github_version"] = ">=6.10.0" context["pulumi_okta_version"] = ">=6.2.0" context["boto3_version"] = ">=1.42.11" - context["ephemeral_pulumi_deploy_version"] = ">=0.0.5" + context["ephemeral_pulumi_deploy_version"] = ">=0.0.6" context["pydantic_version"] = ">=2.12.5" - context["pyinstaller_version"] = "6.17.0" + context["pyinstaller_version"] = ">=6.17.0" context["setuptools_version"] = "80.7.1" context["strawberry_graphql_version"] = ">=0.287.0" - context["fastapi_version"] = ">=0.124.2" + context["fastapi_version"] = ">=0.128.0" context["fastapi_offline_version"] = ">=1.7.4" - context["uvicorn_version"] = ">=0.38.0" - context["lab_auto_pulumi_version"] = ">=0.1.17" + context["uvicorn_version"] = ">=0.40.0" + context["lab_auto_pulumi_version"] = ">=0.1.18" context["ariadne_codegen_version"] = ">=0.17.0" - context["pytest_mock_version"] = "3.15.1" + context["pytest_mock_version"] = ">=3.15.1" 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["vcrpy_version"] = ">=8.1.0" + context["python_kiota_bundle_version"] = ">=1.9.8" + context["vcrpy_version"] = ">=8.1.1" context["pytest_recording_version"] = ">=0.13.4" context["pytest_asyncio_version"] = ">=1.3.0" + context["pytest_reserial_version"] = ">=0.6.0" - context["node_version"] = "24.11.1" - context["nuxt_ui_version"] = "^4.2.1" + context["default_node_version"] = "24.11.1" + context["nuxt_ui_version"] = "^4.3.0" context["nuxt_version"] = "^4.2.2" - context["nuxt_icon_version"] = "^2.1.0" + context["nuxt_icon_version"] = "^2.1.1" context["typescript_version"] = "^5.9.3" context["playwright_version"] = "^1.57.0" - context["vue_version"] = "^3.5.25" - context["vue_tsc_version"] = "^3.1.2" + context["vue_version"] = "^3.5.26" + context["vue_tsc_version"] = "^3.2.1" context["vue_devtools_api_version"] = "^8.0.0" - context["vue_router_version"] = "^4.6.0" + context["vue_router_version"] = "^4.6.4" context["dotenv_cli_version"] = "^11.0.0" - context["faker_version"] = "^10.1.0" + context["faker_version"] = "^10.2.0" context["vitest_version"] = "^3.2.4" context["eslint_version"] = "~9.38.0" - context["nuxt_eslint_version"] = "^1.10.0" - context["zod_version"] = "^4.1.12" + context["nuxt_eslint_version"] = "^1.12.1" + context["zod_version"] = "^4.3.5" context["zod_from_json_schema_version"] = "^0.5.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_codegen_cli_version"] = "^6.1.0" + context["graphql_codegen_typescript_version"] = "^5.0.7" context["graphql_tools_mock_version"] = "^9.1.0" context["tailwindcss_version"] = "^4.1.11" context["iconify_vue_version"] = "^5.0.0" @@ -79,7 +78,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["vue_test_utils_version"] = "^2.4.6" context["nuxt_test_utils_version"] = "3.19.1" context["vue_eslint_parser_version"] = "^10.1.3" - context["happy_dom_version"] = "^20.0.2" + context["happy_dom_version"] = "^20.0.11" context["node_kiota_bundle_version"] = "1.0.0-preview.99" context["gha_checkout"] = "v6.0.1" diff --git a/pyproject.toml b/pyproject.toml index fcf016553..48e2c7976 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "pytest-cov>=7.0.0", "pytest-randomly>=4.0.1", "pyright[nodejs]>=1.1.407", - "ty>=0.0.2", + "ty>=0.0.9", "copier==9.11.0", "copier-template-extensions==0.3.3" ] diff --git a/template/.coderabbit.yaml b/template/.coderabbit.yaml index 6142f259e..bba651d5b 100644 --- a/template/.coderabbit.yaml +++ b/template/.coderabbit.yaml @@ -1,15 +1,18 @@ # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json +early_access: true reviews: profile: assertive path_instructions: - - path: "**/vendor_files/**" - instructions: "These files came from a vendor and we're not allowed to change them. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it." - path: "**/generated/open-api/**" instructions: "This is generated client code for the API. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it." - path: "**/generated/open_api/**" instructions: "This is generated client code for the API. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it." - path: "**/generated/graphql.ts" instructions: "This is generated client code for the API. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it." + - path: "**/vendor_files/**" + instructions: "These files came from a vendor and we're not allowed to change them. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it." + - path: "**/*.py" + instructions: "Do not express concerns about assert statements being removed by using the -O python flag; we never use that flag. Do not express concerns about ruff rules; a pre-commit hook already runs a ruff check. Do not warn about unnecessary super().init() calls; pyright prefers those to be present." tools: eslint: # when the code contains typescript, eslint will be run by pre-commit, and coderabbit often generates false positives enabled: false @@ -20,6 +23,7 @@ reviews: flake8: # we use ruff instead (when we use Python) enabled: false poem: false + in_progress_fortune: false # the commit status is driven by our repository config and required checks, we don't want CodeRabbit messing with it commit_status: false auto_review: diff --git a/template/.devcontainer/devcontainer.json.jinja b/template/.devcontainer/devcontainer.json.jinja index af0f2bdf1..7b8ed9727 100644 --- a/template/.devcontainer/devcontainer.json.jinja +++ b/template/.devcontainer/devcontainer.json.jinja @@ -29,32 +29,32 @@ "-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.1", + "coderabbit.coderabbit-vscode@0.16.4", "ms-vscode.live-server@0.5.2025051301", "MS-vsliveshare.vsliveshare@1.0.5905", "github.copilot@1.388.0", - "github.copilot-chat@0.34.2025112401",{% endraw %}{% if install_claude_cli %}{% raw %} - "anthropic.claude-code@2.0.27",{% endraw %}{% endif %}{% raw %} + "github.copilot-chat@0.36.2026010502",{% endraw %}{% if install_claude_cli %}{% raw %} + "anthropic.claude-code@2.0.75",{% endraw %}{% endif %}{% raw %} // Python - "ms-python.python@2025.17.2025100201", - "ms-python.vscode-pylance@2025.8.3", + "ms-python.python@2025.21.2026010501", + "ms-python.vscode-pylance@2025.10.100", "ms-vscode-remote.remote-containers@0.414.0", - "charliermarsh.ruff@2025.28.0", + "charliermarsh.ruff@2025.32.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.0.6", - "vitest.explorer@1.16.1", + "vue.volar@3.2.1", + "vitest.explorer@1.36.0", {% 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.19", + "dbaeumer.vscode-eslint@3.0.21", {% endraw %}{% endif %}{% raw %} // Misc file formats - "bierner.markdown-mermaid@1.28.0", + "bierner.markdown-mermaid@1.29.0", "samuelcolvin.jinjahtml@0.20.0", "tamasfe.even-better-toml@0.19.2", "emilast.LogFileHighlighter@3.3.3", - "esbenp.prettier-vscode@11.0.0" + "esbenp.prettier-vscode@11.0.2" ], "settings": { "editor.accessibilitySupport": "off", // turn off sounds diff --git a/template/.github/dependabot.yml.jinja b/template/.github/dependabot.yml.jinja index 2d692afe5..6051d527c 100644 --- a/template/.github/dependabot.yml.jinja +++ b/template/.github/dependabot.yml.jinja @@ -41,6 +41,9 @@ updates:{% endraw %}{% if has_backend %}{% raw %} - dependency-name: "*" update-types: - "version-update:semver-patch" # we don't want to be bothered with patch updates for anything except security updates + - dependency-name: "@types/node" + update-types: + - "version-update:semver-major" # @types/node major should be pinned to the node engine itself groups: prod-dependencies: dependency-type: "production" diff --git a/template/.pre-commit-config.yaml.jinja b/template/.pre-commit-config.yaml.jinja index 263182e98..27e0b7c1b 100644 --- a/template/.pre-commit-config.yaml.jinja +++ b/template/.pre-commit-config.yaml.jinja @@ -41,7 +41,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: 802d5794ff9cf7b15610c47eca99cd1ab757d8d4 # frozen: v1 + rev: b31d3aa6e8e43e6a9cf7a1d137baf189dec0922b # frozen: v1 hooks: - id: typos exclude: | @@ -194,12 +194,12 @@ repos: - id: check-case-conflict - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 16a6ad2fead09286ee6eb6b0a3fab55655a6c22a # frozen: 0.35.0 + rev: b035497fb64e3f9faa91e833331688cc185891e6 # frozen: 0.36.0 hooks: - id: check-github-workflows - repo: https://github.com/maresb/check-json5 - rev: 893a2b5a0a27c3540bd8fcafe2968ccc05237179 # 1.0 + rev: bd4737432a2175617a9eeaa510ab369cbc1cbd3d # frozen: v1.0.1 hooks: - id: check-json5 files: | @@ -276,7 +276,7 @@ repos: description: Runs hadolint to lint Dockerfiles - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 1a1f58ba4c35362efe8fed2279715a905baee93d # frozen: v0.14.8 + rev: 5ba58aca0bd5bc7c0e1c0fc45af2e88d6a2bde83 # frozen: v0.14.10 hooks: - id: ruff name: ruff-src diff --git a/template/frontend/package.json.jinja b/template/frontend/package.json.jinja index 8a71e27d1..7d6a726ea 100644 --- a/template/frontend/package.json.jinja +++ b/template/frontend/package.json.jinja @@ -38,7 +38,7 @@ "@faker-js/faker": "{% endraw %}{{ faker_version }}{% raw %}",{% endraw %}{% if frontend_uses_graphql %}{% raw %} "@graphql-codegen/cli": "{% endraw %}{{ graphql_codegen_cli_version }}{% raw %}", "@graphql-codegen/typescript": "{% endraw %}{{ graphql_codegen_typescript_version }}{% raw %}", - "@graphql-codegen/typescript-operations": "{% endraw %}{{ graphql_codegen_typescript_operations_version }}{% raw %}", + "@graphql-codegen/typescript-operations": "{% endraw %}{{ graphql_codegen_typescript_version }}{% raw %}", "@graphql-codegen/typescript-vue-apollo": "^4.1.2", "@graphql-tools/mock": "^9.0.22", "@graphql-tools/schema": "^10.0.23",{% endraw %}{% endif %}{% raw %} @@ -48,7 +48,7 @@ "@nuxtjs/apollo": "{% endraw %}{{ nuxt_apollo_version }}{% raw %}",{% endraw %}{% endif %}{% raw %} "@nuxtjs/eslint-config-typescript": "^12.1.0", "@playwright/test": "{% endraw %}{{ playwright_version }}{% raw %}", - "@types/node": "{% endraw %}{{ types_node_version }}{% raw %}", + "@types/node": "^{% endraw %}{{ node_version.split('.')[0] }}{% raw %}", "@vitest/coverage-istanbul": "{% endraw %}{{ vitest_version }}{% raw %}",{% endraw %}{% if frontend_uses_graphql %}{% raw %} "@vue/apollo-composable": "^4.2.2",{% endraw %}{% endif %}{% raw %} "@vue/devtools-api": "{% endraw %}{{ vue_devtools_api_version }}{% raw %}", diff --git a/template/{% if has_backend %}backend{% endif %}/pyproject.toml.jinja b/template/{% if has_backend %}backend{% endif %}/pyproject.toml.jinja index 17f9511b2..d644ac13c 100644 --- a/template/{% if has_backend %}backend{% endif %}/pyproject.toml.jinja +++ b/template/{% if has_backend %}backend{% endif %}/pyproject.toml.jinja @@ -41,12 +41,12 @@ dev = [ "pytest{% endraw %}{{ pytest_version }}{% raw %}", "pytest-cov{% endraw %}{{ pytest_cov_version }}{% raw %}", "pytest-randomly{% endraw %}{{ pytest_randomly_version }}{% raw %}", - "pytest-mock>={% endraw %}{{ pytest_mock_version }}{% raw %}", + "pytest-mock{% endraw %}{{ pytest_mock_version }}{% raw %}", "pytest-asyncio{% endraw %}{{ pytest_asyncio_version }}{% raw %}",{% endraw %}{% if backend_makes_api_calls %}{% raw %} "pytest-recording{% endraw %}{{ pytest_recording_version }}{% raw %}", "vcrpy{% endraw %}{{ vcrpy_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}{% endraw %}{% if deploy_as_executable %}{% raw %} - "pyinstaller>={% endraw %}{{ pyinstaller_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_circuit_python_driver %}{% raw %} - "pytest-reserial>={% endraw %}0.6.0{% raw %}", + "pyinstaller{% endraw %}{{ pyinstaller_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_circuit_python_driver %}{% raw %} + "pytest-reserial{% endraw %}{{ pytest_reserial_version }}{% raw %}", "circup>=2.3.0", "adafruit-circuitpython-busdevice{% endraw %}{{ adafruit_circuitpython_busdevice_version }}{% raw %}", "adafruit-circuitpython-register{% endraw %}{{ adafruit_circuitpython_register_version }}{% raw %}",{% endraw %}{% endif %}{% raw %} diff --git a/template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py b/template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py index 749faa392..10c9b9b44 100644 --- a/template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py +++ b/template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py @@ -79,7 +79,12 @@ def configure_logging( json_processors = [ *shared_processors, - structlog.processors.ExceptionRenderer(structlog.tracebacks.ExceptionDictTransformer()), + structlog.processors.ExceptionRenderer( + structlog.tracebacks.ExceptionDictTransformer( + locals_max_length=50, # increase from default 10 + locals_max_string=500, # Increase from default 80 + ) + ), structlog.processors.EventRenamer(to="message"), structlog.stdlib.ProcessorFormatter.remove_processors_meta, structlog.processors.JSONRenderer(), diff --git a/tests/copier_data/data1.yaml b/tests/copier_data/data1.yaml index f247e578f..c910370cd 100644 --- a/tests/copier_data/data1.yaml +++ b/tests/copier_data/data1.yaml @@ -10,7 +10,7 @@ install_aws_ssm_port_forwarding_plugin: true configure_vcrpy: true configure_python_asyncio: true -node_version: 22.13.0 +node_version: 24.11.1 python_package_registry: PyPI aws_identity_center_id: d-9145c20053 diff --git a/tests/copier_data/data2.yaml b/tests/copier_data/data2.yaml index 37abdc853..82f5509c8 100644 --- a/tests/copier_data/data2.yaml +++ b/tests/copier_data/data2.yaml @@ -10,7 +10,7 @@ install_aws_ssm_port_forwarding_plugin: false configure_vcrpy: false configure_python_asyncio: false -node_version: 22.14.0 +node_version: 24.11.1 python_package_registry: AWS CodeArtifact aws_central_infrastructure_account_id: 012321432543 diff --git a/uv.lock b/uv.lock index 478654b86..227e69431 100644 --- a/uv.lock +++ b/uv.lock @@ -66,7 +66,7 @@ requires-dist = [ { name = "pytest", specifier = ">=9.0.2" }, { name = "pytest-cov", specifier = ">=7.0.0" }, { name = "pytest-randomly", specifier = ">=4.0.1" }, - { name = "ty", specifier = ">=0.0.2" }, + { name = "ty", specifier = ">=0.0.9" }, ] [[package]] @@ -498,27 +498,27 @@ wheels = [ [[package]] name = "ty" -version = "0.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/e5/15b6aceefcd64b53997fe2002b6fa055f0b1afd23ff6fc3f55f3da944530/ty-0.0.2.tar.gz", hash = "sha256:e02dc50b65dc58d6cb8e8b0d563833f81bf03ed8a7d0b15c6396d486489a7e1d", size = 4762024, upload-time = "2025-12-16T20:13:41.07Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/86/65d4826677d966cf226662767a4a597ebb4b02c432f413673c8d5d3d1ce8/ty-0.0.2-py3-none-linux_armv6l.whl", hash = "sha256:0954a0e0b6f7e06229dd1da3a9989ee9b881a26047139a88eb7c134c585ad22e", size = 9771409, upload-time = "2025-12-16T20:13:28.964Z" }, - { url = "https://files.pythonhosted.org/packages/d4/bc/6ab06b7c109cec608c24ea182cc8b4714e746a132f70149b759817092665/ty-0.0.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d6044b491d66933547033cecc87cb7eb599ba026a3ef347285add6b21107a648", size = 9580025, upload-time = "2025-12-16T20:13:34.507Z" }, - { url = "https://files.pythonhosted.org/packages/54/de/d826804e304b2430f17bb27ae15bcf02380e7f67f38b5033047e3d2523e6/ty-0.0.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbca7f08e671a35229f6f400d73da92e2dc0a440fba53a74fe8233079a504358", size = 9098660, upload-time = "2025-12-16T20:13:01.278Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8e/5cd87944ceee02bb0826f19ced54e30c6bb971e985a22768f6be6b1a042f/ty-0.0.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3abd61153dac0b93b284d305e6f96085013a25c3a7ab44e988d24f0a5fcce729", size = 9567693, upload-time = "2025-12-16T20:13:12.559Z" }, - { url = "https://files.pythonhosted.org/packages/c6/b1/062aab2c62c5ae01c05d27b97ba022d9ff66f14a3cb9030c5ad1dca797ec/ty-0.0.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:21a9f28caafb5742e7d594104e2fe2ebd64590da31aed4745ae8bc5be67a7b85", size = 9556471, upload-time = "2025-12-16T20:13:07.771Z" }, - { url = "https://files.pythonhosted.org/packages/0e/07/856f6647a9dd6e36560d182d35d3b5fb21eae98a8bfb516cd879d0e509f3/ty-0.0.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3ec63fd23ab48e0f838fb54a47ec362a972ee80979169a7edfa6f5c5034849d", size = 9971914, upload-time = "2025-12-16T20:13:18.852Z" }, - { url = "https://files.pythonhosted.org/packages/2e/82/c2e3957dbf33a23f793a9239cfd8bd04b6defd999bd0f6e74d6a5afb9f42/ty-0.0.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e5e2e0293a259c9a53f668c9c13153cc2f1403cb0fe2b886ca054be4ac76517c", size = 10840905, upload-time = "2025-12-16T20:13:37.098Z" }, - { url = "https://files.pythonhosted.org/packages/3b/17/49bd74e3d577e6c88b8074581b7382f532a9d40552cc7c48ceaa83f1d950/ty-0.0.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2511ac02a83d0dc45d4570c7e21ec0c919be7a7263bad9914800d0cde47817", size = 10570251, upload-time = "2025-12-16T20:13:10.319Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9b/26741834069722033a1a0963fcbb63ea45925c6697357e64e361753c6166/ty-0.0.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c482bfbfb8ad18b2e62427d02a0c934ac510c414188a3cf00e16b8acc35482f0", size = 10369078, upload-time = "2025-12-16T20:13:20.851Z" }, - { url = "https://files.pythonhosted.org/packages/94/fc/1d34ec891900d9337169ff9f8252fcaa633ae5c4d36b67effd849ed4f9ac/ty-0.0.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb514711eed3f56d7a130d4885f4b5d8e490fdcd2adac098e5cf175573a0dda3", size = 10121064, upload-time = "2025-12-16T20:13:23.095Z" }, - { url = "https://files.pythonhosted.org/packages/e5/02/e640325956172355ef8deb9b08d991f229230bf9d07f1dbda8c6665a3a43/ty-0.0.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b2c37fa26c39e9fbed7c73645ba721968ab44f28b2bfe2f79a4e15965a1c426f", size = 9553817, upload-time = "2025-12-16T20:13:27.057Z" }, - { url = "https://files.pythonhosted.org/packages/35/13/c93d579ece84895da9b0aae5d34d84100bbff63ad9f60c906a533a087175/ty-0.0.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:13b264833ac5f3b214693fca38e380e78ee7327e09beaa5ff2e47d75fcab9692", size = 9577512, upload-time = "2025-12-16T20:13:16.956Z" }, - { url = "https://files.pythonhosted.org/packages/85/53/93ab1570adc799cd9120ea187d5b4c00d821e86eca069943b179fe0d3e83/ty-0.0.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:08658d6dbbf8bdef80c0a77eda56a22ab6737002ba129301b7bbd36bcb7acd75", size = 9692726, upload-time = "2025-12-16T20:13:31.169Z" }, - { url = "https://files.pythonhosted.org/packages/9a/07/5fff5335858a14196776207d231c32e23e48a5c912a7d52c80e7a3fa6f8f/ty-0.0.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4a21b5b012061cb13d47edfff6be70052694308dba633b4c819b70f840e6c158", size = 10213996, upload-time = "2025-12-16T20:13:14.606Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d3/896b1439ab765c57a8d732f73c105ec41142c417a582600638385c2bee85/ty-0.0.2-py3-none-win32.whl", hash = "sha256:d773fdad5d2b30f26313204e6b191cdd2f41ab440a6c241fdb444f8c6593c288", size = 9204906, upload-time = "2025-12-16T20:13:25.099Z" }, - { url = "https://files.pythonhosted.org/packages/5d/0a/f30981e7d637f78e3d08e77d63b818752d23db1bc4b66f9e82e2cb3d34f8/ty-0.0.2-py3-none-win_amd64.whl", hash = "sha256:d1c9ac78a8aa60d0ce89acdccf56c3cc0fcb2de07f1ecf313754d83518e8e8c5", size = 10066640, upload-time = "2025-12-16T20:13:04.045Z" }, - { url = "https://files.pythonhosted.org/packages/5a/c4/97958503cf62bfb7908d2a77b03b91a20499a7ff405f5a098c4989589f34/ty-0.0.2-py3-none-win_arm64.whl", hash = "sha256:fbdef644ade0cd4420c4ec14b604b7894cefe77bfd8659686ac2f6aba9d1a306", size = 9572022, upload-time = "2025-12-16T20:13:39.189Z" }, +version = "0.0.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/7b/4f677c622d58563c593c32081f8a8572afd90e43dc15b0dedd27b4305038/ty-0.0.9.tar.gz", hash = "sha256:83f980c46df17586953ab3060542915827b43c4748a59eea04190c59162957fe", size = 4858642, upload-time = "2026-01-05T12:24:56.528Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/3f/c1ee119738b401a8081ff84341781122296b66982e5982e6f162d946a1ff/ty-0.0.9-py3-none-linux_armv6l.whl", hash = "sha256:dd270d4dd6ebeb0abb37aee96cbf9618610723677f500fec1ba58f35bfa8337d", size = 9763596, upload-time = "2026-01-05T12:24:37.43Z" }, + { url = "https://files.pythonhosted.org/packages/63/41/6b0669ef4cd806d4bd5c30263e6b732a362278abac1bc3a363a316cde896/ty-0.0.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:debfb2ba418b00e86ffd5403cb666b3f04e16853f070439517dd1eaaeeff9255", size = 9591514, upload-time = "2026-01-05T12:24:26.891Z" }, + { url = "https://files.pythonhosted.org/packages/02/a1/874aa756aee5118e690340a771fb9ded0d0c2168c0b7cc7d9561c2a750b0/ty-0.0.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:107c76ebb05a13cdb669172956421f7ffd289ad98f36d42a44a465588d434d58", size = 9097773, upload-time = "2026-01-05T12:24:14.442Z" }, + { url = "https://files.pythonhosted.org/packages/32/62/cb9a460cf03baab77b3361d13106b93b40c98e274d07c55f333ce3c716f6/ty-0.0.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6868ca5c87ca0caa1b3cb84603c767356242b0659b88307eda69b2fb0bfa416b", size = 9581824, upload-time = "2026-01-05T12:24:35.074Z" }, + { url = "https://files.pythonhosted.org/packages/5a/97/633ecb348c75c954f09f8913669de8c440b13b43ea7d214503f3f1c4bb60/ty-0.0.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d14a4aa0eb5c1d3591c2adbdda4e44429a6bb5d2e298a704398bb2a7ccdafdfe", size = 9591050, upload-time = "2026-01-05T12:24:08.804Z" }, + { url = "https://files.pythonhosted.org/packages/6f/e6/4b0c6a7a8a234e2113f88c80cc7aaa9af5868de7a693859f3c49da981934/ty-0.0.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01bd4466504cefa36b465c6608e9af4504415fa67f6affc01c7d6ce36663c7f4", size = 10018262, upload-time = "2026-01-05T12:24:53.791Z" }, + { url = "https://files.pythonhosted.org/packages/cb/97/076d72a028f6b31e0b87287aa27c5b71a2f9927ee525260ea9f2f56828b8/ty-0.0.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:76c8253d1b30bc2c3eaa1b1411a1c34423decde0f4de0277aa6a5ceacfea93d9", size = 10911642, upload-time = "2026-01-05T12:24:48.264Z" }, + { url = "https://files.pythonhosted.org/packages/3f/5a/705d6a5ed07ea36b1f23592c3f0dbc8fc7649267bfbb3bf06464cdc9a98a/ty-0.0.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8992fa4a9c6a5434eae4159fdd4842ec8726259bfd860e143ab95d078de6f8e3", size = 10632468, upload-time = "2026-01-05T12:24:24.118Z" }, + { url = "https://files.pythonhosted.org/packages/44/78/4339a254537488d62bf392a936b3ec047702c0cc33d6ce3a5d613f275cd0/ty-0.0.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c79d503d151acb4a145a3d98702d07cb641c47292f63e5ffa0151e4020a5d33", size = 10273422, upload-time = "2026-01-05T12:24:45.8Z" }, + { url = "https://files.pythonhosted.org/packages/90/40/e7f386e87c9abd3670dcee8311674d7e551baa23b2e4754e2405976e6c92/ty-0.0.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7a7ebf89ed276b564baa1f0dd9cd708e7b5aa89f19ce1b2f7d7132075abf93e", size = 10120289, upload-time = "2026-01-05T12:24:17.424Z" }, + { url = "https://files.pythonhosted.org/packages/f7/46/1027442596e725c50d0d1ab5179e9fa78a398ab412994b3006d0ee0899c7/ty-0.0.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ae3866e50109d2400a886bb11d9ef607f23afc020b226af773615cf82ae61141", size = 9566657, upload-time = "2026-01-05T12:24:51.048Z" }, + { url = "https://files.pythonhosted.org/packages/56/be/df921cf1967226aa01690152002b370a7135c6cced81e86c12b86552cdc4/ty-0.0.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:185244a5eacfcd8f5e2d85b95e4276316772f1e586520a6cb24aa072ec1bac26", size = 9610334, upload-time = "2026-01-05T12:24:20.334Z" }, + { url = "https://files.pythonhosted.org/packages/ac/e8/f085268860232cc92ebe95415e5c8640f7f1797ac3a49ddd137c6222924d/ty-0.0.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f834ff27d940edb24b2e86bbb3fb45ab9e07cf59ca8c5ac615095b2542786408", size = 9726701, upload-time = "2026-01-05T12:24:29.785Z" }, + { url = "https://files.pythonhosted.org/packages/42/b4/9394210c66041cd221442e38f68a596945103d9446ece505889ffa9b3da9/ty-0.0.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:773f4b3ba046de952d7c1ad3a2c09b24f3ed4bc8342ae3cbff62ebc14aa6d48c", size = 10227082, upload-time = "2026-01-05T12:24:40.132Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9f/75951eb573b473d35dd9570546fc1319f7ca2d5b5c50a5825ba6ea6cb33a/ty-0.0.9-py3-none-win32.whl", hash = "sha256:1f20f67e373038ff20f36d5449e787c0430a072b92d5933c5b6e6fc79d3de4c8", size = 9176458, upload-time = "2026-01-05T12:24:32.559Z" }, + { url = "https://files.pythonhosted.org/packages/9b/80/b1cdf71ac874e72678161e25e2326a7d30bc3489cd3699561355a168e54f/ty-0.0.9-py3-none-win_amd64.whl", hash = "sha256:2c415f3bbb730f8de2e6e0b3c42eb3a91f1b5fbbcaaead2e113056c3b361c53c", size = 10040479, upload-time = "2026-01-05T12:24:42.697Z" }, + { url = "https://files.pythonhosted.org/packages/b5/8f/abc75c4bb774b12698629f02d0d12501b0a7dff9c31dc3bd6b6c6467e90a/ty-0.0.9-py3-none-win_arm64.whl", hash = "sha256:48e339d794542afeed710ea4f846ead865cc38cecc335a9c781804d02eaa2722", size = 9543127, upload-time = "2026-01-05T12:24:11.731Z" }, ] [[package]]