Skip to content

Update logging to display more locals#105

Merged
ejfine merged 17 commits intomainfrom
logging
Jan 5, 2026
Merged

Update logging to display more locals#105
ejfine merged 17 commits intomainfrom
logging

Conversation

@ejfine
Copy link
Contributor

@ejfine ejfine commented Jan 5, 2026

Why is this change necessary?

log entries were often truncated

How does this change address the issue?

updates structlog config to include more information

What side effects does this change have?

logs are larger

How is this change tested?

Downstream repo

Other

Pulls in other upstream template changes for misc version bumps

Summary by CodeRabbit

  • Bug Fixes

    • Improved exception logging to surface more detailed error context during development.
  • Chores

    • Updated development tooling, extensions, and dependency version pins across configs.
    • Refined project templates and defaults, including the default Node.js version handling.
    • Bumped CI/install tooling versions and test/dev configuration entries.
  • New Features

    • Added an early-access flag and new Python-focused review guidance in templates.

✏️ Tip: You can customize this high-level summary in your review settings.

@ejfine ejfine self-assigned this Jan 5, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 5, 2026

Caution

Review failed

The pull request is closed.

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Walkthrough

Repository-wide maintenance: version bumps for dev tooling, extensions, and dependencies; template and config updates including new CodeRabbit flags and a Python reviews.path_instructions entry; test fixture node_version updates and minor template key renames. No functional runtime logic changes.

Changes

Cohort / File(s) Summary
Root CodeRabbit & templates
\.coderabbit\.yaml, template/\.coderabbit\.yaml
Added early_access: true and in_progress_fortune: false; added reviews.path_instructions entry for **/*.py; vendor_files path_instructions re-ordered.
Devcontainer & installer
\.devcontainer/devcontainer\.json, \.devcontainer/install-ci-tooling\.py, template/\.devcontainer/devcontainer\.json\.jinja
Bumped multiple VS Code extension pins and devcontainer context hash; updated UV_VERSION 0.9.18→0.9.21 and PNPM_VERSION 10.25.0→10.27.0.
Extensions / context hook
extensions/context\.py
Renamed/added keys (e.g., node_versiondefault_node_version) and updated numerous tool/framework version pins (Pulumi, FastAPI, uvicorn, pytest-related, Nuxt/Vue ecosystem, etc.).
Pre-commit configs
\.pre-commit-config\.yaml, template/\.pre-commit-config\.yaml\.jinja
Updated pre-commit hook rev pins for typos, check-jsonschema, check-json5, and ruff; behavior and options unchanged.
Installer answers / copier
\.copier-answers\.yml, copier\.yml
Bumped _commit in .copier-answers.yml (v0.0.91→v0.0.92); adjusted node_version templating default in copier.yml (node_versiondefault_node_version).
Python deps & pyproject
pyproject\.toml, template/{% if has_backend %}backend{% endif %}/pyproject\.toml\.jinja
Increased ty constraint (>=0.0.2→>=0.0.9); removed some hard >= min specifiers and switched certain dev deps to templated versions (pytest-mock, pyinstaller, pytest-reserial).
Template frontend / package pins
template/frontend/package\.json\.jinja, template/.github/dependabot\.yml\.jinja
Switched @graphql-codegen/typescript-operations version source; changed @types/node derivation to use node_version.split('.')[0]; added dependabot ignore for major @types/node updates.
Template logger config
template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config\.py
JSON exception renderer now uses ExceptionDictTransformer with locals_max_length=50 and locals_max_string=500 to increase captured local detail.
Tests / fixtures
tests/copier_data/data1\.yaml, tests/copier_data/data2\.yaml
Updated node_version values to 24.11.1 in test fixture data.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Pre-merge checks

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Update logging to display more locals' is concise and accurately describes the main change—updating the logging configuration to show more local variables in exception details.
Description check ✅ Passed The description addresses the template structure with all key sections completed: motivation (truncated logs), solution approach (structlog config updates), side effects (larger logs), and testing method (downstream validation). The mention of version bumps in 'Other' acknowledges secondary changes.

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f084fdc and e5a3dd6.

📒 Files selected for processing (2)
  • .copier-answers.yml
  • template/.devcontainer/devcontainer.json.jinja

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Fix all issues with AI Agents 🤖
In @extensions/context.py:
- Around line 13-14: The pulumi version constraint in the context dict is set to
an impossible version (">= 3.214.4"); update the pulumi entry
(context["pulumi_version"]) to use an available release such as ">=3.214.1" (or
another published 3.214.x or newer version) so the constraint can be satisfied.

In @pyproject.toml:
- Line 16: The dependency line "ty>=0.0.9" introduces a breaking rename (rule
non-subscriptable -> not-subscriptable); either pin ty to a safe version (e.g.,
"ty>=0.0.2,<0.0.8") or update any ty rule usages to the new name; search for any
ty configuration files, CI/lint scripts, or downstream tool configs for
"non-subscriptable" and rename them to "not-subscriptable" (or adjust version
constraint) so the upgrade to "ty>=0.0.9" won't break rule references.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9fc04d8 and 6432ebe.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • .coderabbit.yaml
  • .copier-answers.yml
  • .devcontainer/devcontainer.json
  • .devcontainer/install-ci-tooling.py
  • .pre-commit-config.yaml
  • copier.yml
  • extensions/context.py
  • pyproject.toml
  • template/.coderabbit.yaml
  • template/.devcontainer/devcontainer.json.jinja
  • template/.github/dependabot.yml.jinja
  • template/.pre-commit-config.yaml.jinja
  • template/frontend/package.json.jinja
  • template/{% if has_backend %}backend{% endif %}/pyproject.toml.jinja
  • template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py
  • tests/copier_data/data1.yaml
  • tests/copier_data/data2.yaml
🧰 Additional context used
📓 Path-based instructions (1)
**/*.py

⚙️ CodeRabbit configuration file

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.

Files:

  • template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py
  • extensions/context.py
🔇 Additional comments (25)
template/{% if has_backend %}backend{% endif %}/src/backend_api/logger_config.py (1)

82-87: These parameters have no effect without show_locals=True being explicitly enabled.

The locals_max_length and locals_max_string parameters only control the limits for captured local variables when show_locals=True is set on the ExceptionDictTransformer. Since show_locals is not enabled in this code (defaults to False), local variables are never captured, and these parameters have no impact on logging behavior or data exposure. The settings are dead code that should be removed.

Likely an incorrect or invalid review comment.

tests/copier_data/data2.yaml (1)

13-13: Verify that Node.js version 24.11.1 exists and is stable.

Same major version update as in data1.yaml. Refer to the verification script in the review comment for data1.yaml to confirm this version is valid and available.

.copier-answers.yml (1)

2-2: LGTM: Template commit reference updated.

The commit reference update to v0.0.91-17-g90f4ab9 correctly tracks the upstream template version, incorporating 17 commits beyond the v0.0.91 tag.

.coderabbit.yaml (3)

2-2: LGTM: Early access features enabled.

Enabling early_access grants access to new CodeRabbit features before general availability.


8-9: LGTM: Python-specific review instructions added.

The path instructions appropriately prevent false positives by clarifying project-specific practices: never using the -O flag, relying on pre-commit hooks for ruff checks, and following pyright's preference for explicit super().init() calls.


20-20: LGTM: In-progress fortune messages disabled.

Disabling in_progress_fortune messages streamlines the review experience by removing non-essential status updates.

tests/copier_data/data1.yaml (1)

13-13: Node.js version 24.11.1 is a valid, publicly available LTS release (codename: Krypton) released on November 11, 2025, with full distribution support across all platforms. The major version jump from 22.13.0 is appropriate given this is a stable, long-term support release.

template/.pre-commit-config.yaml.jinja (1)

44-44: LGTM! Template synchronized with root config.

The pre-commit hook revision updates correctly mirror those in .pre-commit-config.yaml, ensuring consistency between the root configuration and generated templates.

Also applies to: 197-197, 202-202, 279-279

extensions/context.py (2)

52-52: Approve the key rename to default_node_version.

The rename from node_version to default_node_version clarifies that this provides a default value that can be overridden. This aligns with the corresponding change in copier.yml (line 38) and improves the naming consistency of the template context.


53-63: Most frontend library versions are valid with no officially documented breaking changes, but test vue-tsc 3.2.1 compatibility with Nuxt.

The checked versions are all current releases:

  • @nuxt/ui 4.3.0: Latest, no breaking changes
  • @graphql-codegen/cli 6.1.0 & typescript 5.0.7: Latest, no breaking changes

However, vue-tsc 3.2.1 has community reports of type-checking noise and Nuxt compatibility issues. Ensure these are not problematic in your setup before merging.

copier.yml (1)

38-38: LGTM! Default value correctly references renamed context variable.

The change from {{ node_version }} to {{ default_node_version }} properly aligns with the context hook update in extensions/context.py (line 52). The question remains named node_version for user interaction, while the default value is sourced from the renamed default_node_version context variable. This maintains a clear separation between the default and the user-overridable value.

.devcontainer/install-ci-tooling.py (1)

10-11: Both UV 0.9.21 and PNPM 10.27.0 are legitimate, stable releases with no known critical issues. UV 0.9.21 (released December 30, 2025) includes a bug fix for zstd distribution-hash regression. PNPM 10.27.0 (released December 30, 2025) includes new features like trustPolicyIgnoreAfter and allowBuilds, along with several bugfixes. The version updates are safe for the development environment.

template/.github/dependabot.yml.jinja (1)

44-46: LGTM! Correctly pins @types/node to Node.js major version.

The ignore rule prevents Dependabot from suggesting @types/node major version updates that don't align with the Node.js engine version. This correctly complements the logic in template/frontend/package.json.jinja that derives the @types/node version from node_version.split('.')[0].

template/{% if has_backend %}backend{% endif %}/pyproject.toml.jinja (3)

49-49: pytest_reserial_version correctly includes the version constraint operator.

The template variable is defined in extensions/context.py as ">=0.6.0", so the substitution maintains the original dependency constraint.


48-48: No action required—pyinstaller_version correctly includes the version constraint operator.

The variable pyinstaller_version is defined as ">=6.17.0" in extensions/context.py and is correctly used in the template. The final resolved string is "pyinstaller>=6.17.0", which is consistent with other versioned dependencies.


44-44: Verify that pytest_mock_version includes the version constraint operator.

The change removes the >= operator from the template. Ensure that the pytest_mock_version variable includes the constraint operator (e.g., >=3.10.0 or ==3.10.0), otherwise this will result in invalid dependency syntax.

For comparison, other dependencies in this file explicitly include the >= operator in the template (e.g., line 20: "httpx>={{ httpx_version }}"), which suggests potential inconsistency.

template/frontend/package.json.jinja (2)

41-41: Verify version variable consolidation for graphql-codegen packages.

The change consolidates @graphql-codegen/typescript-operations to use graphql_codegen_typescript_version instead of a separate variable. Ensure that:

  1. The graphql_codegen_typescript_version variable is defined (check if graphql_codegen_typescript_operations_version was removed)
  2. Both @graphql-codegen/typescript and @graphql-codegen/typescript-operations support the same version

51-51: The Jinja template syntax is valid and correct.

The code uses valid Jinja2 syntax. The node_version variable is properly defined in copier.yml and provided through the template context (default: "24.11.1"). The split('.')[0] pattern works correctly in Jinja2, and similar patterns already exist in the codebase (e.g., python_version.split('.')[:2] in the Dockerfile template). With test data confirming node versions like "24.11.1" and "22.13.0", the derived @types/node versions (^24, ^22) correctly keep the package aligned with the Node.js major version while allowing minor/patch updates.

template/.devcontainer/devcontainer.json.jinja (2)

47-47: Verify the vitest.explorer version downgrade from 1.16.1 to 1.16.0.

The vitest.explorer extension shows a version downgrade at line 47. Confirm whether this is intentional (e.g., due to a regression in 1.16.1) or unintended. Check the extension's release notes or commit message for context on this specific version change.


20-20: Conditional logic using is not defined is correct and intentional.

The is_child_of_copier_base_template variable is injected by the parent template (copier-base-template) when this template is used as a child. The variable is either defined (truthy) or undefined, never set to false. Using is not defined is the appropriate check for this parent-child detection pattern, and the logic is consistent across all usages in the template.

Likely an incorrect or invalid review comment.

.devcontainer/devcontainer.json (1)

19-36: All listed VS Code extension versions are available in the marketplace.

template/.coderabbit.yaml (4)

2-2: LGTM! Enabling early-access features.

The early_access: true flag is correctly set to enable early-access features for CodeRabbit.


12-13: LGTM! Vendor files exclusion is appropriate.

The path instruction for vendor files correctly excludes them from review while making them available for reference.


14-15: LGTM! Python-specific instructions align with existing tool configuration.

The path instructions for Python files appropriately prevent duplicate warnings, consistent with the disabled linting tools (ruff, pylint, flake8) configured below.


26-26: LGTM! Disabling in-progress fortune messages.

The in_progress_fortune: false setting is correctly placed under the reviews section and disables fortune messages during review.

# 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
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, find and read the .pre-commit-config.yaml file
find . -name ".pre-commit-config.yaml" -type f | head -5

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 126


🏁 Script executed:

# Once found, read the relevant lines to see the actual revisions
cat -n .pre-commit-config.yaml | sed -n '40,60p;195,210p;250,260p'

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 1961


🏁 Script executed:

# Verify the commit SHAs via GitHub API
echo "=== Checking typos v1 ==="
curl -s https://api.github.com/repos/crate-ci/typos/commits/b31d3aa6e8e43e6a9cf7a1d137baf189dec0922b | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

echo -e "\n=== Checking check-jsonschema 0.36.0 ==="
curl -s https://api.github.com/repos/python-jsonschema/check-jsonschema/commits/b035497fb64e3f9faa91e833331688cc185891e6 | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

echo -e "\n=== Checking check-json5 v1.0.1 ==="
curl -s https://api.github.com/repos/maresb/check-json5/commits/bd4737432a2175617a9eeaa510ab369cbc1cbd3d | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

echo -e "\n=== Checking ruff v0.14.10 ==="
curl -s https://api.github.com/repos/astral-sh/ruff-pre-commit/commits/5ba58aca0bd5bc7c0e1c0fc45af2e88d6a2bde83 | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 294


🌐 Web query:

typos v1 release crate-ci github

💡 Result:

Here are the relevant pages and how to reference a v1 release of crate-ci/typos in CI:

  • Releases page (all v1.* releases, latest tags): GitHub releases for crate-ci/typos. [1]
  • Repository README / usage (install and GitHub Actions examples). [2]
  • Example showing pinning to a specific v1 release in CI (use crate-ci/typos@v1.31.2 or another v1.* tag to fix the version). [3]

If you want, tell me which exact v1.* release you need and I’ll fetch its release notes and downloadable assets.

Sources:
[1] crate-ci/typos — Releases (GitHub).
[2] crate-ci/typos — README (GitHub).
[3] jas docs — example pinning typos to a v1.* release.


🌐 Web query:

check-jsonschema 0.36.0 release

💡 Result:

check-jsonschema 0.36.0 was released in mid‑December 2025 — the PyPI artifacts were uploaded Dec 15, 2025. Key changes: updated many vendored schemas (bitbucket-pipelines, buildkite, circle-ci, dependabot, gitlab-ci, mergify, readthedocs, renovate, snapcraft) and added a GitHub Discussion category forms schema and pre-commit hook. [1][2][3]

Sources:

  • PyPI release files and upload metadata. [1]
  • Changelog entry for v0.36.0. [2]
  • Homebrew / project listing showing stable v0.36.0. [3]

🌐 Web query:

check-json5 v1.0.1 release

💡 Result:

json5 v1.0.1 was released on March 18, 2018. [1][2]

Sources:

  • Release timeline / versions listing. [1]
  • npm package page for json5 (v1.0.1 listed). [2]

🌐 Web query:

ruff v0.14.10 release security

💡 Result:

Short answer: ruff v0.14.10 was released (Dec 18, 2025) and there are no public/security advisories affecting v0.14.10 that the major trackers show — upgrade to 0.14.10 to get the latest fixes/features. [1][2][4]

Notes / sources:

  • PyPI release (ruff 0.14.10 uploaded Dec 18, 2025). [1]
  • Safety DB / package-security listing shows 0.14.10 as latest with no known vulnerabilities. [2]
  • Historical/security CVE (CVE-2025-62518) affected earlier ruff/related components; ensure you’re on >=0.14.10 which contains recent fixes. [3]
  • Official ruff GitHub (release/installation references for v0.14.10). [4]

If you want, I can fetch the exact changelog entries for 0.14.10 or check specific CVE databases (NVD, GH Security Advisories) for additional confirmation.


🌐 Web query:

typos check-jsonschema check-json5 ruff security advisories 2025 2026

💡 Result:

Short summary of known security advisories (2024–Jan 5, 2026) for the packages you listed:

  • check-jsonschema — Cache-confusion vulnerability (CVE-2024-53848). Fixed by upgrading to >= 0.30.0; workarounds: --no-cache or use local schema files. [1][2]

  • check-json5 / json5 — Known prototype-pollution advisory (GHSA published Dec 2022; patched in later json5 releases). Project security policy and advisories are on the repo. Watch json5 GitHub advisories for updates. [3][4]

  • ruff — Multiple advisories in 2025 (including GHSA/CVE-related fixes such as CVE-2025-4574 / rebuilds to pick safe crossbeam-channel versions and other downstream fixes); distributions published sec updates (Fedora advisories). Follow ruff releases/changelog for patched versions. [5][6]

  • typos (and action-typos) — supply-chain incident: reviewdog/action-setup compromise (CVE-2025-30154, published March 2025) affected reviewdog actions including action-typos; follow reviewdog/typos advisories and avoid unpinned use of vulnerable actions. Package scanners show no direct typos package code vulnerability as of latest advisories, but the GitHub Actions compromise is the main concern. [7][8][9]

If you want, I can:

  • list exact patched versions and recommended upgrades for each package, or
  • gather current release/changelog links and direct upgrade commands.

Sources:
[1] Snyk / check-jsonschema advisory (CVE-2024-53848).
[2] CVE / CVE details / Debian tracker for CVE-2024-53848.
[3] json5 GitHub advisory (Prototype Pollution GHSA).
[4] JSON5 SECURITY policy / project security page.
[5] Fedora / ruff security update (CVE-2025-4574 / GHSA).
[6] Fedora / Tenable/Nessus reporting on ruff-related updates.
[7] NVD / CVE-2025-30154 (reviewdog/action-setup compromise affecting action-typos).
[8] Tenable / CVE-2025-30154 writeup.
[9] SafetyDB / typos package status.


Update check-json5 to a more recent version to address potential prototype-pollution vulnerability.

While the commit SHAs are valid and correspond to their frozen versions, check-json5 v1.0.1 (released March 2018) wraps the underlying json5 package, which has a known prototype-pollution advisory (GHSA, December 2022). Upgrade to a newer release of check-json5 to pull in patched json5 dependencies.

The other revisions are safe:

  • typos v1: Confirmed stable (note: CVE-2025-30154 affects action-typos in GitHub Actions, not the package itself).
  • check-jsonschema 0.36.0: Confirmed (released Dec 15, 2025); CVE-2024-53848 cache-confusion vulnerability is fixed in this version.
  • ruff v0.14.10: Confirmed stable (released Dec 18, 2025); no known advisories.

"pytest-randomly>=4.0.1",
"pyright[nodejs]>=1.1.407",
"ty>=0.0.2",
"ty>=0.0.9",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

ty package version 0.0.9 PyPI

💡 Result:

As of January 5, 2026, PyPI does not show a ty version 0.0.9 — the latest published release on the official PyPI project page is 0.0.8. [1]

Sources:
[1] PyPI — ty project page (release history).


🏁 Script executed:

#!/bin/bash
# Check ty package on PyPI
curl -s https://pypi.org/pypi/ty/json | jq -r '.releases | keys | .[]' | sort -V | tail -15

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 211


🌐 Web query:

ty package changelog release notes breaking changes 0.0.9

💡 Result:

Which "ty" package do you mean — the Python package (PyPI/astral-sh/ty), an npm package, or a GitHub repo? Provide the package registry or a link (or tell me the exact project owner) and I’ll fetch the 0.0.9 changelog/release notes and breaking changes.


🏁 Script executed:

#!/bin/bash
# Get detailed info about ty 0.0.9 release
curl -s https://pypi.org/pypi/ty/0.0.9/json | jq '.info | {version, summary, home_page, project_urls, requires_dist}'

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 584


🏁 Script executed:

#!/bin/bash
# Fetch the CHANGELOG.md from astral-sh/ty
curl -s https://raw.githubusercontent.com/astral-sh/ty/main/CHANGELOG.md | head -100

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 5646


🏁 Script executed:

#!/bin/bash
# Get more of the changelog to see all versions between 0.0.2 and 0.0.9
curl -s https://raw.githubusercontent.com/astral-sh/ty/main/CHANGELOG.md | grep -A 50 "^## 0.0" | head -200

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 10993


🏁 Script executed:

#!/bin/bash
# Check how ty is used in the codebase
find . -type f \( -name "*.py" -o -name "*.toml" -o -name "*.cfg" -o -name "*.ini" \) | xargs grep -l "ty" 2>/dev/null | head -20

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 617


🏁 Script executed:

#!/bin/bash
# Check pyproject.toml for ty dependency and configuration
cat -n pyproject.toml | head -50

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 739


🏁 Script executed:

#!/bin/bash
# Search for any references to non-subscriptable or not-subscriptable rules
grep -r "non-subscriptable\|not-subscriptable" . --include="*.toml" --include="*.py" --include="*.ini" --include="*.cfg" 2>/dev/null

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 83


Review the breaking change in ty 0.0.8 when upgrading from >=0.0.2 to >=0.0.9.

Version 0.0.9 exists on PyPI. However, upgrading to >=0.0.9 includes a breaking change introduced in version 0.0.8: the rule non-subscriptable has been renamed to not-subscriptable. While the codebase does not currently reference this rule directly, verify that any ty configuration files or downstream tools do not depend on the old rule name.

🤖 Prompt for AI Agents
In @pyproject.toml around line 16, The dependency line "ty>=0.0.9" introduces a
breaking rename (rule non-subscriptable -> not-subscriptable); either pin ty to
a safe version (e.g., "ty>=0.0.2,<0.0.8") or update any ty rule usages to the
new name; search for any ty configuration files, CI/lint scripts, or downstream
tool configs for "non-subscriptable" and rename them to "not-subscriptable" (or
adjust version constraint) so the upgrade to "ty>=0.0.9" won't break rule
references.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates various development dependencies and tooling versions across the template. Despite the title and description mentioning logging configuration updates to display more locals, the actual changes focus on version bumps for Python packages, Node.js tooling, pre-commit hooks, and DevContainer extensions.

Key changes include:

  • Upgrade of ty package from 0.0.2 to 0.0.9
  • Standardization of Node.js version handling with introduction of default_node_version variable
  • Updates to numerous Python and JavaScript dependencies including Pulumi, FastAPI, Vue.js ecosystem, and development tools

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
uv.lock Updates ty package lock file entries from 0.0.2 to 0.0.9 with new wheel distributions
pyproject.toml Updates ty dependency specification to >=0.0.9
extensions/context.py Updates version constraints for numerous dependencies including ty, Pulumi packages, FastAPI, uvicorn, and frontend packages; removes types_node_version and graphql_codegen_typescript_operations_version; adds pytest_reserial_version; renames node_version to default_node_version
copier.yml Changes node_version default to reference default_node_version variable
tests/copier_data/data1.yaml, data2.yaml Updates test data node_version from 22.x to 24.11.1
template/frontend/package.json.jinja Replaces graphql_codegen_typescript_operations_version with graphql_codegen_typescript_version; changes @types/node to derive major version from node_version dynamically
template/.devcontainer/devcontainer.json.jinja Updates VS Code extension versions; adds conditional logic for node version selection based on template type
template/.pre-commit-config.yaml.jinja Updates pre-commit hook SHAs for typos, check-jsonschema, check-json5, and ruff
template/.github/dependabot.yml.jinja Adds ignore rule for @types/node major version updates
template/.coderabbit.yaml Enables early_access flag; adds Python-specific instructions; reorders path instructions; adds in_progress_fortune: false
.pre-commit-config.yaml Updates pre-commit hook SHAs matching template changes
.devcontainer/install-ci-tooling.py Updates UV_VERSION to 0.9.21 and PNPM_VERSION to 10.27.0
.devcontainer/devcontainer.json Updates VS Code extension versions and devcontainer context hash
.coderabbit.yaml Enables early_access flag; adds Python-specific instructions
.copier-answers.yml Updates commit reference to v0.0.91-18-ga6b5c07

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

"vue.volar@3.0.6",
"vitest.explorer@1.16.1",
"vue.volar@3.2.1",
"vitest.explorer@1.16.0",
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

The vitest.explorer extension version appears to be downgraded from 1.16.1 to 1.16.0. This is unusual as dependency updates typically increase version numbers. Please verify this is intentional or if it should be updated to a newer version instead.

Suggested change
"vitest.explorer@1.16.0",
"vitest.explorer@1.16.1",

Copilot uses AI. Check for mistakes.
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"
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

The PR description states "updates structlog config to include more information" and mentions updating logging to display more locals, but there are no visible changes to structlog configuration files (such as logger_config.py) in this diff. The primary change appears to be the ty package version bump from 0.0.2 to 0.0.9, along with other dependency updates. If the logging configuration was actually changed, those changes may not be included in this PR. Otherwise, the PR description should be updated to accurately reflect that this is primarily a dependency update PR.

Copilot uses AI. Check for mistakes.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Fix all issues with AI Agents 🤖
In @extensions/context.py:
- Line 52: Templates and config still reference the old variable node_version
while the context now sets default_node_version; update all references to use
default_node_version (e.g., change {{ node_version.split('.')... }} to {{
default_node_version.split('.')... }} and {{ node_version }} to {{
default_node_version }}), and reconcile copier.yml by removing or renaming the
old node_version entry so it consistently uses default_node_version everywhere.
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6432ebe and f084fdc.

📒 Files selected for processing (2)
  • .copier-answers.yml
  • extensions/context.py
🧰 Additional context used
📓 Path-based instructions (1)
**/*.py

⚙️ CodeRabbit configuration file

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.

Files:

  • extensions/context.py
🔇 Additional comments (5)
.copier-answers.yml (1)

2-2: LGTM!

Standard Copier commit reference update tracking the upstream template version.

extensions/context.py (4)

13-14: LGTM!

Routine version bumps for uv and pnpm tooling.


53-81: LGTM!

Frontend dependency version bumps look good. The caret (^) ranges allow semver-compatible updates while pinning major versions.


20-31: All dependency versions are available on PyPI.

The version constraints for Pulumi (>=3.214.1) and all ecosystem packages (pulumi-aws, pulumi-aws-native, pulumi-command, pulumi-github, pulumi-okta) along with supporting dependencies (ty, copier, copier-template-extensions, sphinx, boto3, ephemeral-pulumi-deploy) are all available and correctly specified.


33-50: LGTM!

Version bumps for Python packages look reasonable. The change from pinned versions to >= constraints for pyinstaller and pytest_mock provides flexibility for patch updates. FastAPI 0.128.0 and uvicorn 0.40.0 are both released on PyPI and compatible with the project's Python >=3.12.7 requirement.


context["node_version"] = "24.11.1"
context["nuxt_ui_version"] = "^4.2.1"
context["default_node_version"] = "24.11.1"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for any remaining references to the old key name

echo "=== Searching for old 'node_version' references (excluding default_node_version) ==="
rg -n 'node_version' --type-add 'jinja:*.jinja' --type-add 'jinja:*.j2' -g '!extensions/context.py' | grep -v 'default_node_version' || echo "No old references found"

echo ""
echo "=== Verifying new 'default_node_version' usage ==="
rg -n 'default_node_version' --type-add 'jinja:*.jinja' --type-add 'jinja:*.j2'

echo ""
echo "=== Checking templates more broadly (*.html, *.j2, *.jinja) ==="
find . -type f \( -name "*.jinja" -o -name "*.j2" -o -name "*.html" \) -exec grep -l 'node_version\|default_node_version' {} \;

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 1197


Templates still reference old node_version key and will fail.

Verification found that templates have NOT been updated to use the new default_node_version key. The old node_version variable is still referenced in:

  • template/frontend/package.json.jinja:51: {{ node_version.split('.')[0] }}
  • template/frontend/{% if not deploy_as_executable %}Dockerfile{% endif %}.jinja:2: {{ node_version }}

Additionally, copier.yml still defines node_version: (line 35) while referencing the new key (line 38). Update all template references and configuration to consistently use default_node_version instead of the old key name.

🤖 Prompt for AI Agents
In @extensions/context.py around line 52, Templates and config still reference
the old variable node_version while the context now sets default_node_version;
update all references to use default_node_version (e.g., change {{
node_version.split('.')... }} to {{ default_node_version.split('.')... }} and {{
node_version }} to {{ default_node_version }}), and reconcile copier.yml by
removing or renaming the old node_version entry so it consistently uses
default_node_version everywhere.

@ejfine ejfine merged commit 67c7ae0 into main Jan 5, 2026
10 checks passed
@ejfine ejfine deleted the logging branch January 5, 2026 21:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants