diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ad3190ae..e75b69f3 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -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): b6e19452 # spellchecker:disable-line + // Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): b8c69216 # spellchecker:disable-line } diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 454df01b..c7a4660d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,10 +24,10 @@ jobs: name: Pre-commit for Py${{ matrix.python-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v5.0.0 - name: Setup Python - uses: actions/setup-python@v5.6.0 + uses: actions/setup-python@v6.0.0 with: python-version: ${{ matrix.python-version }} @@ -47,7 +47,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.3 + uses: actions/cache@v4.2.4 env: cache-name: cache-pre-commit-hooks with: @@ -79,10 +79,10 @@ jobs: contents: write # needed for mutex steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v5.0.0 - name: Setup Python - uses: actions/setup-python@v5.6.0 + uses: actions/setup-python@v6.0.0 with: python-version: ${{ matrix.python-version }} @@ -128,7 +128,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.3 + uses: actions/cache@v4.2.4 env: cache-name: cache-pre-commit-hooks with: diff --git a/.github/workflows/tag-on-merge.yaml b/.github/workflows/tag-on-merge.yaml index a11a90d5..00bb0cab 100644 --- a/.github/workflows/tag-on-merge.yaml +++ b/.github/workflows/tag-on-merge.yaml @@ -13,7 +13,7 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@v4.2.2 + - uses: actions/checkout@v5.0.0 with: ref: ${{ github.event.pull_request.merge_commit_sha }} fetch-depth: '0' diff --git a/extensions/context.py b/extensions/context.py index f6927411..82afb13d 100644 --- a/extensions/context.py +++ b/extensions/context.py @@ -20,28 +20,29 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["pnpm_version"] = "10.15.1" # These are duplicated in the pyproject.toml of this repository context["pyright_version"] = "1.1.405" - context["pytest_version"] = "8.4.1" + context["pytest_version"] = "8.4.2" context["pytest_randomly_version"] = "3.16.0" - context["pytest_cov_version"] = "6.2.1" + context["pytest_cov_version"] = "6.3.0" ####### context["sphinx_version"] = "8.1.3" - context["pulumi_version"] = "3.192.0" - context["pulumi_aws_version"] = "7.6.0" - context["pulumi_aws_native_version"] = "1.32.0" + context["pulumi_version"] = "3.193.0" + context["pulumi_aws_version"] = "7.7.0" + context["pulumi_aws_native_version"] = "1.33.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.23" + context["pulumi_okta_version"] = "5.2.0" + context["boto3_version"] = "1.40.25" context["ephemeral_pulumi_deploy_version"] = "0.0.5" context["pydantic_version"] = "2.11.7" context["pyinstaller_version"] = "6.13.0" context["setuptools_version"] = "80.7.1" - context["strawberry_graphql_version"] = "0.280.0" + context["strawberry_graphql_version"] = "0.282.0" context["fastapi_version"] = "0.116.1" context["fastapi_offline_version"] = "1.7.4" context["uvicorn_version"] = "0.35.0" context["lab_auto_pulumi_version"] = "0.1.16" ####### + context["node_version"] = "24.7.0" context["nuxt_ui_version"] = "^3.3.2" context["nuxt_version"] = "^4.1.0" context["nuxt_icon_version"] = "^2.0.0" @@ -65,29 +66,29 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]: context["graphql_codegen_typescript_version"] = "^4.1.6" ####### # These are duplicated in the CI files for this repository - context["gha_checkout"] = "v4.2.2" - context["gha_setup_python"] = "v5.6.0" - context["gha_cache"] = "v4.2.3" + context["gha_checkout"] = "v5.0.0" + context["gha_setup_python"] = "v6.0.0" + context["gha_cache"] = "v4.2.4" context["gha_linux_runner"] = "ubuntu-24.04" ####### context["gha_upload_artifact"] = "v4.6.2" - context["gha_download_artifact"] = "v4.3.0" + context["gha_download_artifact"] = "v5.0.0" 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.16.0" - context["gha_configure_aws_credentials"] = "v4.3.1" + context["gha_configure_aws_credentials"] = "v5.0.0" context["gha_amazon_ecr_login"] = "v2.0.1" - context["gha_setup_node"] = "v4.4.0" + context["gha_setup_node"] = "v5.0.0" context["gha_action_gh_release"] = "v2.2.1" context["gha_mutex"] = "1ebad517141198e08d47cf72f3c0975316620a65 # v1.0.0-alpha.10" - context["gha_pypi_publish"] = "v1.12.4" + context["gha_pypi_publish"] = "v1.13.0" context["gha_sleep"] = "v2.0.3" context["gha_windows_runner"] = "windows-2025" ####### context["debian_release_name"] = "bookworm" - context["alpine_image_version"] = "3.21" - context["nginx_image_version"] = "1.28.0" + context["alpine_image_version"] = "3.22" + context["nginx_image_version"] = "1.29.1" # These also in the tests/data.yml files in this repository and in copier.yaml context["py312_version"] = "3.12.7" # ReadTheDocs does not yet support 3.12.8 context["py313_version"] = "3.13.2" diff --git a/pyproject.toml b/pyproject.toml index eb7f62c8..f5f75fdf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,8 +5,8 @@ description = "Add your description here" readme = "README.md" requires-python = ">=3.12.7" dependencies = [ - "pytest>=8.4.1", - "pytest-cov>=6.2.1", + "pytest>=8.4.2", + "pytest-cov>=6.3.0", "pytest-randomly>=3.16.0", "pyright[nodejs]>=1.1.405", "copier>=9.10.1", diff --git a/template/.github/workflows/ci.yaml.jinja-base b/template/.github/workflows/ci.yaml.jinja-base index 6715d024..b530a79e 100644 --- a/template/.github/workflows/ci.yaml.jinja-base +++ b/template/.github/workflows/ci.yaml.jinja-base @@ -60,7 +60,7 @@ jobs: uses: ./.github/actions/install_deps with: python-version: ${{ matrix.python-version }}{% endraw %}{% if template_uses_javascript is defined and template_uses_javascript is sameas(true) %}{% raw %} - node-version: 22.14.0 # TODO: don't hardcode this{% endraw %}{% endif %}{% raw %} + node-version: {% endraw %}{{ node_version }}{% raw %}{% endraw %}{% endif %}{% raw %} install-deps: false - name: Instantiate copier template diff --git a/template/copier.yml.jinja-base b/template/copier.yml.jinja-base index f4657fe6..b339d3f6 100644 --- a/template/copier.yml.jinja-base +++ b/template/copier.yml.jinja-base @@ -30,7 +30,7 @@ use_windows_in_ci: node_version: type: str help: What version of NodeJS is used for development? - default: 22.14.0 + default: "{{ node_version }}" {% endraw %}{% endif %}{% raw %}{% endraw %}{% if template_might_want_to_install_aws_ssm_port_forwarding_plugin %}{% raw %} install_aws_ssm_port_forwarding_plugin: diff --git a/template/extensions/context.py.jinja-base b/template/extensions/context.py.jinja-base index adaa5386..3f92f549 100644 --- a/template/extensions/context.py.jinja-base +++ b/template/extensions/context.py.jinja-base @@ -37,6 +37,7 @@ class ContextUpdater(ContextHook): context["uvicorn_version"] = "{{ uvicorn_version }}" context["lab_auto_pulumi_version"] = "{{ lab_auto_pulumi_version }}" + context["node_version"] = "{{ node_version }}" context["nuxt_ui_version"] = "{{ nuxt_ui_version }}" context["nuxt_version"] = "{{ nuxt_version }}" context["nuxt_icon_version"] = "{{ nuxt_icon_version }}" diff --git a/uv.lock b/uv.lock index 236326b6..215dcf4e 100644 --- a/uv.lock +++ b/uv.lock @@ -63,8 +63,8 @@ requires-dist = [ { 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", specifier = ">=8.4.2" }, + { name = "pytest-cov", specifier = ">=6.3.0" }, { name = "pytest-randomly", specifier = ">=3.16.0" }, ] @@ -377,7 +377,7 @@ nodejs = [ [[package]] name = "pytest" -version = "8.4.1" +version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -386,23 +386,23 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -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" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ - { 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" }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, ] [[package]] name = "pytest-cov" -version = "6.2.1" +version = "6.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage" }, { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/4c/f883ab8f0daad69f47efdf95f55a66b51a8b939c430dadce0611508d9e99/pytest_cov-6.3.0.tar.gz", hash = "sha256:35c580e7800f87ce892e687461166e1ac2bcb8fb9e13aea79032518d6e503ff2", size = 70398, upload-time = "2025-09-06T15:40:14.361Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload-time = "2025-06-12T10:47:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/80/b4/bb7263e12aade3842b938bc5c6958cae79c5ee18992f9b9349019579da0f/pytest_cov-6.3.0-py3-none-any.whl", hash = "sha256:440db28156d2468cafc0415b4f8e50856a0d11faefa38f30906048fe490f1749", size = 25115, upload-time = "2025-09-06T15:40:12.44Z" }, ] [[package]]