Skip to content

Add release benchmark docs#3465

Merged
koxudaxi merged 24 commits into
mainfrom
release-benchmark-docs
Jun 22, 2026
Merged

Add release benchmark docs#3465
koxudaxi merged 24 commits into
mainfrom
release-benchmark-docs

Conversation

@koxudaxi

@koxudaxi koxudaxi commented Jun 21, 2026

Copy link
Copy Markdown
Owner

Summary by CodeRabbit

  • New Features
    • Added a “Release Benchmarks” workflow to run release performance benchmarks, merge results, and generate updated benchmark docs and charts.
  • Documentation
    • Added an auto-generated “Performance Benchmarks” page (markdown + SVG charts) and linked it from the README, docs index, and navigation.
  • CI / Automation
    • Updated documentation sync and LLMS text generation workflows to include benchmark docs inputs/outputs.
    • Added benchmark docs generation to the generated-docs pipeline.
  • Tests
    • Added integration/regression tests for benchmark selection/merge, docs generation, and error summarization.

@coderabbitai

coderabbitai Bot commented Jun 21, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a new scripts/collect_release_benchmarks.py script that benchmarks released PyPI versions in isolated venvs, a scripts/select_release_benchmark_versions.py script that selects versions using PyPI and download stats, a scripts/merge_release_benchmarks.py script that consolidates fragments into a single JSON, and a scripts/build_release_benchmark_docs.py script that generates a Markdown page and SVG chart. A new release-benchmarks.yaml GitHub Actions workflow orchestrates these scripts after publishing. Existing CI workflows and tox environments are updated to include the new artifacts, and user-facing documentation is updated to reference the Performance Benchmarks page.

Changes

Release Benchmark Pipeline

Layer / File(s) Summary
Benchmark collection script with venv and subprocess execution
scripts/collect_release_benchmarks.py
Defines BenchmarkCase, BenchmarkResult, BenchmarkConfig, BenchmarkContext dataclasses; implements input parsing, environment setup, subprocess execution with timeout, package installation with uv pip and retry/backoff, formatter CLI mapping, and per-version benchmarking loop with warmup and measured runs producing timing statistics or error classification.
Version selection script with PyPI and download stats
scripts/select_release_benchmark_versions.py
Defines ReleaseVersion, VersionUsage, VersionSelection, SelectionConfig dataclasses; implements PyPI release parsing, ClickPy/PyPIStats stats loading with fallback error handling, and three selection strategies (explicit versions, usage-driven with bucketing, recency-based filtering) producing a structured JSON output and GitHub Actions environment variables.
Benchmark merge and payload assembly script
scripts/merge_release_benchmarks.py
Implements JSON fragment loading/validation, per-fragment metadata extraction, optional selection metadata flattening, environment metadata (OS, Python version, workflow/run identifiers), and merge orchestration that combines fragments into a single benchmark JSON with consolidated metadata.
Docs-generation script: JSON loading, Markdown, and SVG rendering
scripts/build_release_benchmark_docs.py
Defines BenchmarkEntry, BenchmarkData, GeneratedDoc, SvgTextStyle dataclasses; implements JSON loading/validation, version parsing/sorting, formatter and case ordering, label and duration formatting, Markdown table/page renderer with "Latest Release Summary" and "Historical Results" sections, SVG chart renderer with grid/axes/legend, and build_docs orchestrator supporting --check mode and deterministic file comparison.
Error sanitization and summary utilities
scripts/release_benchmark_errors.py
Implements error path redaction via regex, whitespace compaction, and public-facing error summary generation keyed on status and detected error keywords; includes maximum summary length enforcement and empty-string fallback when no meaningful note can be produced.
Release Benchmarks GitHub Actions workflow
.github/workflows/release-benchmarks.yaml
New workflow triggered by upstream Publish workflow completion, manual workflow_dispatch with version/run/Python inputs, or PR label run-release-benchmarks on same-repo PRs; defines resolve, collect, and build jobs that run version selection, benchmarking matrix, and docs generation, uploading final artifacts.
CI workflow and tox environment wiring
.github/workflows/generated-docs-sync.yaml, .github/workflows/llms-txt.yaml, tox.ini, zensical.toml
Extends generated-docs-sync.yaml on.push.paths trigger and generated_paths detection to include release-benchmark docs generation script and generated outputs; extends llms-txt.yaml path filters and prepends a docs-build step; adds release-benchmark-docs tox environment and inserts docs-build command into generated-docs environment; adds performance-benchmarks navigation entry.
Generated performance benchmarks documentation page
docs/performance-benchmarks.md
Adds an auto-generated page with title, generated-file notice, introduction, "Historical Trends" section referencing scenario-specific SVGs, "Collection Policy" describing runner/Python/PyPI/coverage setup, "Latest Dataset" metadata (schema/timestamp/workflow/runs), "Latest Release Summary" for only the newest version with per-case tables and relative performance vs Default, and "Historical Results" section (four scenario tables: Small/Large across JSON Schema and OpenAPI).
Comprehensive tests for benchmark scripts
tests/test_build_release_benchmark_docs_script.py
Adds subprocess and renderer integration tests covering: build_release_benchmark_docs CLI --check mode and write mode with temp paths; Markdown and SVG rendering determinism from fixture data; collect_release_benchmarks CLI validation error handling; failure classification and timeout subprocess execution; select_release_benchmark_versions with fixture JSON inputs; merge_release_benchmarks with selection and fragment consolidation; error helper redaction and summarization; includes helpers for deterministic subprocess output comparison and temp-path normalization.
Documentation and user-facing updates
README.md, docs/index.md, scripts/build_preset_docs.py
Updates README.md and docs/index.md to add "Performance Benchmarks" link in the "⚡ Speed up generation" section and documentation lists; extends build_preset_docs.py with performance-benchmarks link constants and injects "See Performance Benchmarks" guidance into auto-generated quick-start template sections.

Sequence Diagram(s)

sequenceDiagram
  participant GH as GitHub Actions
  participant resolve as select_release_benchmark_versions.py
  participant collect as collect_release_benchmarks.py
  participant venv as isolated venv
  participant dcg as datamodel-code-generator
  participant merge as merge_release_benchmarks.py
  participant build as build_release_benchmark_docs.py
  participant artifacts as GitHub Artifacts

  GH->>resolve: load PyPI releases and download stats
  resolve->>artifacts: upload selection.json
  GH->>collect: per-version matrix from selection
  collect->>venv: create fresh venv + uv pip install
  venv-->>collect: installed release
  loop each case / formatter
    collect->>dcg: warmup + measured subprocess runs
    dcg-->>collect: timing stats or error
  end
  collect->>artifacts: upload per-version fragments
  GH->>merge: download selection + fragments
  merge->>merge: consolidate entries and metadata
  merge->>artifacts: upload merged release-benchmarks.json
  GH->>build: render Markdown and SVG from merged JSON
  build->>artifacts: upload docs directory
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • koxudaxi/datamodel-code-generator#3129: Both PRs modify .github/workflows/generated-docs-sync.yaml on.push.paths and generated_paths to extend change detection and patch-creation logic.
  • koxudaxi/datamodel-code-generator#3423: Both PRs update .github/workflows/generated-docs-sync.yaml to extend triggers for different documentation generators (build_release_benchmark_docs.py vs build_conformance_docs.py).

Poem

🐇 Four scripts in harmony, tick by tick,
Selection and collection—the pipeline runs quick.
Merge, then build: JSON to SVG lines,
The rabbit plots benchmark data, refines.
Markdown tables, charts on display—
Performance tracked through each release day! 📊

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 21.90% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add release benchmark docs' clearly and concisely summarizes the main objective of the pull request, which is to introduce release benchmark documentation generation capabilities.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release-benchmark-docs

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.

@github-actions

github-actions Bot commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

📚 Docs Preview: https://pr-3465.datamodel-code-generator.pages.dev

Comment thread scripts/build_release_benchmark_docs.py Fixed
Comment thread scripts/build_release_benchmark_docs.py Fixed
Comment thread scripts/build_release_benchmark_docs.py Fixed
Comment thread scripts/collect_release_benchmarks.py Fixed
Comment thread scripts/collect_release_benchmarks.py Fixed
Comment thread scripts/collect_release_benchmarks.py Fixed
@codspeed-hq

codspeed-hq Bot commented Jun 21, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

⚠️ Unknown Walltime execution environment detected

Using the Walltime instrument on standard Hosted Runners will lead to inconsistent data.

For the most accurate results, we recommend using CodSpeed Macro Runners: bare-metal machines fine-tuned for performance measurement consistency.

✅ 11 untouched benchmarks
⏩ 98 skipped benchmarks1


Comparing release-benchmark-docs (449c413) with main (bdd65e2)

Open in CodSpeed

Footnotes

  1. 98 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@codecov

codecov Bot commented Jun 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (bdd65e2) to head (449c413).

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #3465   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          150       151    +1     
  Lines        32422     32484   +62     
  Branches      3780      3780           
=========================================
+ Hits         32422     32484   +62     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@koxudaxi koxudaxi force-pushed the release-benchmark-docs branch from 356f987 to 3bf4515 Compare June 21, 2026 15:31
@koxudaxi koxudaxi added the run-release-benchmarks Run release benchmark collection on a PR label Jun 21, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release-benchmarks.yaml:
- Around line 90-94: The shell command in the collect_release_benchmarks.py
script invocation directly interpolates GitHub expressions
(steps.versions.outputs.versions and github.event_name == 'workflow_dispatch' &&
inputs.runs || '7') into single-quoted arguments, creating a potential security
vulnerability if those values contain special characters. Refactor this by
adding an env section to the step to set environment variables for these values,
then reference those environment variables in the run command using the pattern
env.VARIABLE_NAME instead of direct GitHub expression interpolation.

In `@scripts/collect_release_benchmarks.py`:
- Around line 341-344: The CLI argument parser accepts numeric arguments
(--runs, --warmups, --timeout, --install-retries) without validation, allowing
zero or negative values that cause failures in median/min/max calculations. Add
validation logic in the main() function after parsing arguments to ensure that
--runs, --warmups, --timeout, and --install-retries are all greater than zero.
If any argument fails validation, raise an appropriate error or exit with a
descriptive message to prevent execution with invalid configuration.
- Around line 208-216: The _failure_status function's "ruff" formatter case only
checks for "not found" and "invalid choice" but does not check for "unrecognized
arguments", which older Ruff releases may return. When this occurs, the code
falls through to the default case and incorrectly returns STATUS_FAILED instead
of STATUS_UNSUPPORTED. Add "unrecognized arguments" to the condition check in
the "ruff" case (alongside the existing "not found" and "invalid choice" checks)
to properly classify Ruff formatter argument incompatibility as unsupported.
- Around line 114-122: The _run_subprocess function does not handle the
TimeoutExpired exception that subprocess.run() raises when the timeout parameter
is exceeded, causing the entire script to crash on a slow subprocess instead of
gracefully recording a failed result. Wrap the subprocess.run() call inside
_run_subprocess in a try/except block that catches subprocess.TimeoutExpired and
returns a CompletedProcess object with returncode set to 124 (the standard Unix
timeout exit code), allowing the callers to handle timeouts the same way they
already handle non-zero return codes from the subprocess.

In `@tests/test_build_release_benchmark_docs_script.py`:
- Around line 73-79: The test reads generated files (docs_path and svg_path)
without first verifying that the subprocess completed successfully, which can
mask the actual CLI failure with a FileNotFoundError. Add an explicit assertion
to verify the result object's return code equals zero before calling
_completed_process_output and reading the generated files. This ensures that if
the subprocess fails, the test will report the actual CLI failure rather than a
file-not-found error.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 2bab4d3d-7fc1-4cd4-b0a5-b58a99bdb09e

📥 Commits

Reviewing files that changed from the base of the PR and between 307fa6a and 356f987.

⛔ Files ignored due to path filters (8)
  • docs/assets/benchmarks/release-benchmarks.svg is excluded by !**/*.svg and included by none
  • docs/data/release-benchmarks.json is excluded by none and included by none
  • docs/llms-full.txt is excluded by none and included by none
  • docs/llms.txt is excluded by none and included by none
  • tests/data/expected/release_benchmark_docs/build_release_benchmark_docs_check.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_rendered.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/release_benchmarks/sample.json is excluded by !tests/data/**/*.json and included by none
📒 Files selected for processing (9)
  • .github/workflows/generated-docs-sync.yaml
  • .github/workflows/llms-txt.yaml
  • .github/workflows/release-benchmarks.yaml
  • docs/performance-benchmarks.md
  • scripts/build_release_benchmark_docs.py
  • scripts/collect_release_benchmarks.py
  • tests/test_build_release_benchmark_docs_script.py
  • tox.ini
  • zensical.toml

Comment thread .github/workflows/release-benchmarks.yaml
Comment thread scripts/collect_release_benchmarks.py Outdated
Comment thread scripts/collect_release_benchmarks.py Outdated
Comment thread scripts/collect_release_benchmarks.py
Comment thread tests/test_build_release_benchmark_docs_script.py
@koxudaxi koxudaxi force-pushed the release-benchmark-docs branch 2 times, most recently from 3a6fa2f to fa3e163 Compare June 21, 2026 16:05

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release-benchmarks.yaml:
- Around line 75-85: The workflow is using head_branch directly from
workflow_run events without a fallback mechanism, which is unreliable when
triggered by tag pushes. Add a new environment variable WORKFLOW_SHA to capture
the workflow run's head_sha, then modify the shell script logic in the "Select
versions" step to include a fallback that uses git describe to resolve the tag
from the commit SHA when the versions variable is empty after the workflow_run
check. This ensures that if head_branch is unavailable or blank, the script will
attempt to retrieve the tag information from the commit itself using the git
API.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 71f73fc9-0772-4fb3-a79c-662d47f06d8e

📥 Commits

Reviewing files that changed from the base of the PR and between 3a6fa2f and fa3e163.

⛔ Files ignored due to path filters (17)
  • docs/assets/benchmarks/release-benchmarks.svg is excluded by !**/*.svg and included by none
  • docs/data/release-benchmarks.json is excluded by none and included by none
  • docs/llms-full.txt is excluded by none and included by none
  • docs/llms.txt is excluded by none and included by none
  • tests/data/expected/release_benchmark_docs/build_release_benchmark_docs_check.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/collect_release_benchmarks_failures.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/collect_release_benchmarks_invalid_args.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/merge_release_benchmarks_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_rendered.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/select_release_benchmark_versions_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/release_benchmarks/clickpy_versions.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/pypi_project.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/pypistats_overall.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/pypistats_recent.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/release_fragment_0641.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/sample.json is excluded by !tests/data/**/*.json and included by none
📒 Files selected for processing (14)
  • .github/workflows/generated-docs-sync.yaml
  • .github/workflows/llms-txt.yaml
  • .github/workflows/release-benchmarks.yaml
  • README.md
  • docs/index.md
  • docs/performance-benchmarks.md
  • scripts/build_preset_docs.py
  • scripts/build_release_benchmark_docs.py
  • scripts/collect_release_benchmarks.py
  • scripts/merge_release_benchmarks.py
  • scripts/select_release_benchmark_versions.py
  • tests/test_build_release_benchmark_docs_script.py
  • tox.ini
  • zensical.toml
✅ Files skipped from review due to trivial changes (4)
  • zensical.toml
  • README.md
  • docs/performance-benchmarks.md
  • docs/index.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • .github/workflows/llms-txt.yaml
  • .github/workflows/generated-docs-sync.yaml
  • scripts/build_preset_docs.py
  • tox.ini

Comment thread .github/workflows/release-benchmarks.yaml
@koxudaxi koxudaxi force-pushed the release-benchmark-docs branch from fa3e163 to 2237462 Compare June 21, 2026 16:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
scripts/select_release_benchmark_versions.py (1)

133-146: 💤 Low value

Consider parameterized query construction for defense-in-depth.

While the current implementation is safe because PACKAGE_NAME is a hardcoded constant and history_days/limit are validated positive integers, the f-string SQL construction pattern is generally discouraged. For defense-in-depth, consider separating the query template from variable interpolation.

That said, given this is a read-only query against a public demo endpoint with fully controlled inputs, the actual risk is minimal.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/select_release_benchmark_versions.py` around lines 133 - 146, The
query variable uses f-string interpolation to construct the SQL query, which is
discouraged for defense-in-depth. Refactor by first defining the SQL query
template as a separate string with clear placeholders or comments indicating
where variables will be substituted, then perform the variable substitution
separately (using string formatting or concatenation) rather than embedding it
directly in an f-string. This separates the query structure from the variable
values and improves code readability and security posture, even though the
current inputs are controlled.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@scripts/select_release_benchmark_versions.py`:
- Around line 133-146: The query variable uses f-string interpolation to
construct the SQL query, which is discouraged for defense-in-depth. Refactor by
first defining the SQL query template as a separate string with clear
placeholders or comments indicating where variables will be substituted, then
perform the variable substitution separately (using string formatting or
concatenation) rather than embedding it directly in an f-string. This separates
the query structure from the variable values and improves code readability and
security posture, even though the current inputs are controlled.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7c0bfd41-d487-4a28-9a72-09005a6dcd7f

📥 Commits

Reviewing files that changed from the base of the PR and between fa3e163 and 2237462.

⛔ Files ignored due to path filters (21)
  • docs/assets/benchmarks/release-benchmarks-large-jsonschema.svg is excluded by !**/*.svg and included by none
  • docs/assets/benchmarks/release-benchmarks-large-openapi.svg is excluded by !**/*.svg and included by none
  • docs/assets/benchmarks/release-benchmarks-small-openapi.svg is excluded by !**/*.svg and included by none
  • docs/assets/benchmarks/release-benchmarks.svg is excluded by !**/*.svg and included by none
  • docs/data/release-benchmarks.json is excluded by none and included by none
  • docs/llms-full.txt is excluded by none and included by none
  • docs/llms.txt is excluded by none and included by none
  • tests/data/expected/release_benchmark_docs/build_release_benchmark_docs_check.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/collect_release_benchmarks_failures.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/collect_release_benchmarks_invalid_args.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/merge_release_benchmarks_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_error_helpers.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/release_benchmark_rendered.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/expected/release_benchmark_docs/select_release_benchmark_versions_cli_outputs.txt is excluded by !tests/data/**/*.txt and included by none
  • tests/data/release_benchmarks/clickpy_versions.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/pypi_project.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/pypistats_overall.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/pypistats_recent.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/release_fragment_0641.json is excluded by !tests/data/**/*.json and included by none
  • tests/data/release_benchmarks/sample.json is excluded by !tests/data/**/*.json and included by none
📒 Files selected for processing (15)
  • .github/workflows/generated-docs-sync.yaml
  • .github/workflows/llms-txt.yaml
  • .github/workflows/release-benchmarks.yaml
  • README.md
  • docs/index.md
  • docs/performance-benchmarks.md
  • scripts/build_preset_docs.py
  • scripts/build_release_benchmark_docs.py
  • scripts/collect_release_benchmarks.py
  • scripts/merge_release_benchmarks.py
  • scripts/release_benchmark_errors.py
  • scripts/select_release_benchmark_versions.py
  • tests/test_build_release_benchmark_docs_script.py
  • tox.ini
  • zensical.toml
✅ Files skipped from review due to trivial changes (4)
  • README.md
  • zensical.toml
  • docs/index.md
  • docs/performance-benchmarks.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • .github/workflows/llms-txt.yaml
  • .github/workflows/generated-docs-sync.yaml
  • tox.ini
  • scripts/build_preset_docs.py

@koxudaxi koxudaxi force-pushed the release-benchmark-docs branch from 2237462 to 3790e49 Compare June 21, 2026 16:35
@koxudaxi koxudaxi force-pushed the release-benchmark-docs branch from 3790e49 to 3c83177 Compare June 21, 2026 16:37
Comment thread scripts/build_release_benchmark_docs.py Fixed
Comment thread scripts/collect_release_benchmarks.py Fixed
@koxudaxi koxudaxi merged commit 00cf006 into main Jun 22, 2026
62 checks passed
@koxudaxi koxudaxi deleted the release-benchmark-docs branch June 22, 2026 14:58
@github-actions

Copy link
Copy Markdown
Contributor

Breaking Change Analysis

Result: No breaking changes detected

Reasoning: PR #3465 only adds release benchmark documentation and tooling. All changed files are CI workflows, docs, benchmark scripts/data, tests for those scripts, and build config (tox.ini, zensical.toml). Nothing in the diff modifies the datamodel_code_generator package source, CLI options of the tool, generated code output, Jinja2 templates, error handling, or supported Python versions. The single deleted line is a docstring fragment in scripts/build_preset_docs.py that was extended with appended text (a new "Performance Benchmarks" link), not removed behavior. No options, parameters, classes, enum values, or functions appear as removed lines. Therefore there are no breaking changes for users of the code generator.


This analysis was performed by Claude Code Action

@github-actions

Copy link
Copy Markdown
Contributor

🎉 Released in 0.65.1

This PR is now available in the latest release. See the release notes for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change-analyzed run-release-benchmarks Run release benchmark collection on a PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants