SECTION 19 grows to five tools with drawing_template_list; drawing_new takes a
bundled name (iso_a3_mech, iso_a1_arch, iso_a3_pid, ansi_b_mech, ansi_d_arch)
or a .dwt/.dxf path and reports template: {name|path, path, source}.
scripts/build_templates.py builds templates/*.dxf through EzdxfBackend
(layer set, header DIM variables until group S's styles land, drawing_settings,
sheet tab, ISO 5457 frame on A3, page_setup_apply) and --check pins them
reproducible. One drift the plan's same-process measurement could not see is
fixed at the source rather than masked: ezdxf orders CLASSES by set iteration,
so two processes disagreed on LAYOUT / ACDBPLACEHOLDER; the section is re-keyed
(required list first, then by name) before the save.
The root .gitignore ignores *.dxf as generated output; templates/*.dxf is
un-ignored there, since the bundled set is the one DXF that is committed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FKFStjEFzpGyLq5bMpWxTd
63 lines
1.0 KiB
Plaintext
63 lines
1.0 KiB
Plaintext
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
*.egg-info/
|
|
*.egg
|
|
dist/
|
|
build/
|
|
.eggs/
|
|
|
|
# Virtual environments
|
|
.venv/
|
|
venv/
|
|
env/
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# Testing and tooling
|
|
.pytest_cache/
|
|
.ruff_cache/
|
|
.codex-pytest-temp/
|
|
.release-*/
|
|
.tdd-*/
|
|
.coverage
|
|
coverage.xml
|
|
htmlcov/
|
|
|
|
# Environment
|
|
.env
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
desktop.ini
|
|
|
|
# Generated CAD and benchmark output
|
|
out/
|
|
benchmarks/results/*
|
|
!benchmarks/results/.gitkeep
|
|
!benchmarks/results/published
|
|
!benchmarks/results/published/**
|
|
benchmarks/.competitors/
|
|
*.dxf
|
|
# The bundled templates are the one committed DXF set: built by
|
|
# scripts/build_templates.py and pinned reproducible by its --check.
|
|
!templates/*.dxf
|
|
*.dwg
|
|
*.bak
|
|
|
|
# Local editor/agent state
|
|
.cursor/
|
|
|
|
# NOTE: uv.lock is deliberately *not* ignored. It used to be — back when the
|
|
# committed one was stale and unvetted — but CI now installs from it with
|
|
# `uv sync --locked`, so ignoring it would silently disarm every locked lane.
|
|
# Regenerate with `uv lock` whenever pyproject.toml dependencies change.
|