draftwright 0.4.34__tar.gz → 0.5.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/PKG-INFO +26 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/README.md +25 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/docs/reference/sheet.md +58 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/pyproject.toml +3 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/_core.py +175 -8
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/analysis.py +464 -23
- draftwright-0.5.0rc1/src/draftwright/annotation_layout_profile.py +153 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/_common.py +484 -34
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/from_model.py +497 -99
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/holes.py +204 -20
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/leaders.py +105 -10
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/orchestrator.py +97 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/routed.py +52 -21
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/sections.py +363 -72
- draftwright-0.5.0rc1/src/draftwright/auxiliary_layout.py +71 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/builder.py +474 -47
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/cli.py +36 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/compose.py +468 -42
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/document.py +52 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/drawing.py +92 -4
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/layout.py +13 -5
- draftwright-0.5.0rc1/src/draftwright/layout_safety.py +568 -0
- draftwright-0.5.0rc1/src/draftwright/layout_scheme.py +722 -0
- draftwright-0.5.0rc1/src/draftwright/layout_selection.py +636 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/__init__.py +2 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/evidence.py +8 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/pmi_coverage.py +77 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/quality.py +7 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/callout.py +28 -5
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/ir.py +16 -1
- draftwright-0.5.0rc1/src/draftwright/model/manufacturing_schedule.py +134 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/pmi_lowering.py +204 -2
- draftwright-0.5.0rc1/src/draftwright/obligations.py +22 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/projection.py +47 -11
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/reporting.py +16 -4
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/sheet.py +39 -11
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/sheet_emit.py +68 -16
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/view_plan.py +2 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_unit_manifest.py +1 -0
- draftwright-0.5.0rc1/tests/fixtures/annotation-layout-corpus-v1.json +29 -0
- draftwright-0.5.0rc1/tests/fixtures/annotation-layout-corpus-v2.json +172 -0
- draftwright-0.5.0rc1/tests/fixtures/annotation-layout-holdout-ftc09-v1.json +18 -0
- draftwright-0.5.0rc1/tests/fixtures/annotation-layout-holdout-v1.json +73 -0
- draftwright-0.5.0rc1/tests/fixtures/nist_ftc_09_asme1_ap242-e1.stp +52386 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_adr0018_view_selection.py +5 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_agent_improvement_canary_issue_1716.py +21 -12
- draftwright-0.5.0rc1/tests/test_annotation_layout_product.py +722 -0
- draftwright-0.5.0rc1/tests/test_annotation_scheme_compare_script.py +750 -0
- draftwright-0.5.0rc1/tests/test_annotation_scheme_corpus_script.py +552 -0
- draftwright-0.5.0rc1/tests/test_annotation_scheme_shadow_script.py +57 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_arrangement_gate.py +76 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_audit_differential.py +4 -0
- draftwright-0.5.0rc1/tests/test_auxiliary_layout.py +88 -0
- draftwright-0.5.0rc1/tests/test_candidate_preview_sheet_holdout.py +68 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_cli_behavior.py +1 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_cli_report_sidecar.py +7 -4
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_compiled_plan_boundary.py +0 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_declared_recognition_gate.py +4 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_declared_report_issue_1688.py +9 -1
- draftwright-0.5.0rc1/tests/test_derived_view_integration.py +92 -0
- draftwright-0.5.0rc1/tests/test_derived_view_planning.py +322 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_detail_views.py +370 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_dimension_lane_canary_issue_1757.py +6 -7
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_document_build.py +88 -6
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_drawing_encapsulation.py +4 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_e2e_standards.py +31 -11
- draftwright-0.5.0rc1/tests/test_envelope_view_route_issue_1813.py +73 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_equivalent_dimension_presentations_issue_1759.py +15 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_feature_leader_candidate_regions.py +98 -1
- draftwright-0.5.0rc1/tests/test_gdt_ink_shared.py +286 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_gdt_placement.py +70 -6
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_hole_pattern_callouts.py +40 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_import_boundaries.py +12 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_interior_label_placement.py +83 -16
- draftwright-0.5.0rc1/tests/test_iso_detail_growth.py +121 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_isometric_placement.py +2 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1116_ap242_hole_tolerance_lowering.py +31 -6
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1142_hole_leader_labels.py +15 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1143_hole_completeness.py +1 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1144_transactional_hole_table.py +32 -4
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1155_grm04_sheet_use.py +13 -17
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1166_cross_pass_feature_leaders.py +20 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1187_unroutable_leaders.py +10 -2
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1240_iso_above_strip_visibility.py +16 -2
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1247_angled_step_disposition.py +1 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1298_manufacturing_requirements.py +289 -61
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1299_page_escalation.py +37 -75
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1334_prevent_ink.py +15 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1338_scale_before_page_escalation.py +18 -28
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1351_structured_note_coverage.py +4 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1357_plural_turned_profiles.py +4 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1396_layout_advisories.py +7 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1397_unverifiable_requirement_message.py +14 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1421_rectangular_blind_slot_semantics.py +3 -6
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1460_step_inspection.py +7 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1534_build_progress.py +12 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1563_sheet_pmi_reconciliation.py +3 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1598_hex_pockets.py +3 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1601_flat_precision.py +1 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_443_grm03_axial_coverage.py +23 -5
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_740_leader_assignment.py +34 -33
- draftwright-0.5.0rc1/tests/test_layout_safety.py +756 -0
- draftwright-0.5.0rc1/tests/test_layout_scheme.py +583 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_leader_region_policy.py +11 -1
- draftwright-0.5.0rc1/tests/test_manufacturing_schedule.py +136 -0
- draftwright-0.5.0rc1/tests/test_nominal_step_pmi.py +141 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_parameter_id.py +6 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pareto_loop_canary_issue_1753.py +4 -6
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pmi.py +10 -7
- draftwright-0.5.0rc1/tests/test_pre_render_profile_choice.py +282 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_prismatic_dimensions.py +3 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_private_test_attr_reads.py +1 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_private_test_imports.py +4 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_real_part_fixtures.py +12 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_registry.py +3 -0
- draftwright-0.5.0rc1/tests/test_remaining_ink_overlaps.py +242 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_report_projection.py +16 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_script_detail_parity.py +55 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_emit.py +28 -11
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_fallback_issue_1797.py +23 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_gdt.py +5 -1
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_identity_invariant.py +6 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_solve_trace.py +32 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_strip_layout.py +121 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_tier_manifest.py +49 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_turned_diameters.py +27 -26
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_view_blocks.py +120 -3
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_view_plan.py +26 -43
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_workflows.py +174 -14
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/.gitignore +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/CHANGELOG.md +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/LICENSE +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/docs/adr/README.md +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/docs/reference/recogniser-capabilities.md +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/docs/research/1062-repeating-radial-profile-evidence.md +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/skills/SKILL.md +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/__init__.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/_build_profile.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/_geometry.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/_pmi_part21.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/_warnings.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/angular_geometry.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotate.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/__init__.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/angular.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/balloons.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/annotations/gears.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/audit.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/blend_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/document_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/document_input.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/evaluation/__init__.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/evaluation/step_analysis.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/export.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/feature_identity.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/fits.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/fonts/IBMPlexMono-Regular.ttf +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/fonts/IBMPlexSansCondensed-Regular.ttf +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/fonts/LICENSE-IBMPlexMono-OFL.txt +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/fonts/LICENSE-IBMPlexSansCondensed-OFL.txt +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/fonts/__init__.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/inspection.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/inspection_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/intents.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/leader_policy.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/_registry.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/angled_step_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/angular.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/blend_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/boss_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/chamfer_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/channel_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/circular_blind_step_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/envelope_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/fillet_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/flat_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/gear_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/groove_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/gusset_rib_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/hole_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/ink_overlap.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/issues.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/oriented_slot_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/pad_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/paired_ramp_step_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/passage_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/plate_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/pocket_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/pocket_pattern_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/polygonal_boss_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/polygonal_stock_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/prismatic_pocket_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/profiled_bore_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/rectangular_blind_slot_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/requirements.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/round_bottom_blind_slot_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/schedule_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/section_recess_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/slot_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/structural.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/suggest.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/through_step_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/linting/turned_step_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/location_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/make_drawing.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/measurement_support.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/__init__.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/compiled.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/declare.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/detect.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/model/planner.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/oriented_slot_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/plate_correspondence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/pmi.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/profile_angles.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/progress.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/py.typed +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recogniser_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recogniser_policy.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recogniser_schema.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recognition/__init__.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recognition_cache.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recognition_frame.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/recognition_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/registry.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/repair.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/replay_assessment.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/score.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/src/draftwright/section_recess_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_burden_report.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_corpus_cover.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_drawing_helpers.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_evidence_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_kernel.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_layout_helpers.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_layout_sig.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_mutation_corpus.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_parts.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_recogniser_public_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_section_recess_cases.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/_tier_manifest.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/conftest.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/ap242_single_cylinder_diameter.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/README.md +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/ambiguous-open-semicircle.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/blind-hole.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-asymmetric.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-compound.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-overlap.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-plain.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-planar-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-planar-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-planar-z.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/chamfer-turned.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-chamfers-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-countersinks-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-double-d-bores-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-fillets-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-flats-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-grooves-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-hole-patterns-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-plates-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-pocket-patterns-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-pockets-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-polygonal-bosses-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-polygonal-stock-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-rectangular-pads-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-turned-steps-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/corpus-v1.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/countersink-deburr.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/countersink-external-cone.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/countersink-mixed-pair.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/countersink-single.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/countersink-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/countersink-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-axis-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-axis-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-blind.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-coaxial-compound.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-opposed-blind.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-roll-30.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-round-bore.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-single-z.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/double-d-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-compound.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-overlap.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-plain.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-planar-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-planar-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-planar-z.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-repeated.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/fillet-turned.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-coaxial.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-double-d.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-lone-d.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-nonround.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-slanted-double-d.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/flat-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-compound.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-lone-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-lone-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-lone-z.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-monotonic-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-narrow.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/groove-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-compound-equal.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-detached-body-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-full-span-ledge-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-nested-staircase-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-x-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-x-positive.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-y-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-y-positive.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-z-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pad-z-positive.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pattern-ambiguous.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pattern-grid.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pattern-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pattern-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plain-block.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-compound-equal.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-cross-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-cross-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-detached-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-rotational-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-single-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-t-xz.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-t-yz.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-thick-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-u-additive.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/plate-u-cut.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-compound.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-edge-anchored.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-lone.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-opposed.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-pattern-ambiguous.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-pattern-grid.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-pattern-linear.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-pattern-pair.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-pattern-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-pattern-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-prismatic-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-side.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-through-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/pocket-two-equal.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-compound-equal.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-detached-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-in-plane-rotated.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-other-protrusions-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-recess-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-stock-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-boss-z.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-compound-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-cylinder-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-irregular-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-octagon-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-recess-negative.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-roll17.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-translated.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/polygonal-stock-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-axis-x.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-axis-y.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-axis-z.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-compound.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-repeated-lengths.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-through-bore.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-topology-a.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-topology-b.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/evaluation/turned-step-translated-blind-bore.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/grm03_thumbwheel_drive_screw.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/grm03_thumbwheel_drive_screw_ap242_pmi.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/grm04_drive_plate.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/if_step_flat_across_cylinder.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/issue_1058_wheel_rh.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/issue_1247_angled_blind_step.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/issue_1595_whistle_key_frame.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/issue_1595_whistle_key_lever.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/issue_909_basic_part_design_017_body.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/issue_915_case_study_2.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_01_asme1_ap203.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_01_asme1_ap242.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_02_asme1_ap203.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_02_asme1_ap242.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_03_asme1_ap203.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_03_asme1_ap242.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_04_asme1_ap203.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_04_asme1_ap242.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_05_asme1_ap203.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/nist_ctc_05_asme1_ap242.stp +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/tuner_jig_blind_obround_pockets.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/fixtures/whistle_frame_reference.step +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/bracket_section.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/centered_rebate.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/chamfered.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/filleted.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/flange_dense.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/grid_plate.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/grooved_shaft.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/hex_bar.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/holed_slot.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/pocketed.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/prismatic_ladder.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/scattered_plate.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/side_drilled.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/refactor_golden/turned_stepped.json +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_add_dimension.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_adr0018_view_routing.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_adr_corpus.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_agents_guide.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_analysis_geometry.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_angle_patterns.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_angular_references.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_angular_rendering.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_annotation_box_composition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_annotation_box_corpus.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_api_docs.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_architecture_docs.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_assessment_comparison_issue_1712.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_axial_dimensions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_balloon_ring_standoff.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_boss_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_build_drawing_entrypoints.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_build_profile_harness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_burden_report.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_candidate_evidence_issue_1726.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_canonical_angles.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_carve_free_position_callers.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_channel_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_circular_blind_step_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_clone_budget.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_compose_then_pack.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_corpus_cover.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_counting_calls.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_coverage_mode.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_declaration_identity_issue_1710.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_declaration_report_issue_1710.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_declare.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_deferred_edits.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_dense_sheet_canary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_deprecation_dates.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_depth_estimators.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_detect_once.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_detect_registry.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_diameter_deduplication.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_diameter_leaders.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_dimension_role_vocabulary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_document_claim_authority.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_document_claims.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_document_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_document_report.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_document_report_authority.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_drawing_operations.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_drawing_state.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_dynamic_corridors.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_e2e_slice.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_export_dxf_curves.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_export_dxf_zoom.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_export_formats.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_export_reproducible.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_export_shape.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_external_recognition_boundary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_feature_edit_corridors.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_feature_edit_replay.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_feature_edit_verbs.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_feature_provenance.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_feature_queries.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_fillets_adjacency.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_fit_calculations.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_fits.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_flat_completeness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_flat_stock_identity.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_flat_stock_opposition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_format_selector.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_formatting.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_framed_step_family_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_geometry_graph_spike.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_grid_lattice_convention.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_groove_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_groove_profile.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_gusset_rib_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_hole_annotations.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_hole_table.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_inspection_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_iso_layout.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_iso_nts_caption_placement.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_isometric_orientation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1000_envelope_reuse.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1006_measurement_comparison.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1058_wheel_profile.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1073_cross_body_patterns.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1082_polygonal_stock.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1086_declared_gears.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1126_requesting_less_never_scores_better.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1130_view_planning_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1132_turned_profile_span_is_reported.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1146_scale_completeness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1147_legibility_pair_aggregation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1153_contradictory_dimensions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1154_one_owner_per_measurement.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1157_no_implicit_general_tolerance.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1176_quality_fidelity.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1177_angular_dimensions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1188_per_view_assignment.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1190_section_decision.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1196_deterministic_view_names.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1202_observed_drawing_consumer.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1204_multiscale_view_issues.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1209_linear_pmi_witnesses.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1215_envelope_tolerance.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1215_no_approved_tolerance_is_dropped.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1216_callout_reservation_measures_ink.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1216_pairwise_across_scale_groups.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1217_claimed_representations.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1217_the_facility_is_shared.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1219_location_claims_its_own_axis.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1229_ledger_member_keying.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1245_passage_disposition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1246_prismatic_pocket_disposition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1254_turned_chamfers.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1260_view_constraints.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1262_automatic_turned_views.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1276_turned_leader_targets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1281_turned_fillets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1296_cylindrical_diameter_pmi.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1308_machined_leader_analytics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1312_engine_costs.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1325_nominal_agreement.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1332_overlap_remedy.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1332_zone_labels.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1333_bounded_ink_repair.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1336_grm03_ap242_pmi_fixture.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1349_precision_display.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1350_detected_takeover.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1352_searchable_pdf_text.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1353_cnc_authoritative_workflow.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1357_framed_activation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1357_framed_boundary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1357_pmi_frame.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1360_thread_depth.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1369_hole_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1370_countersink_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1370_double_d_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1370_hole_pattern_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1371_flat_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1371_polygonal_stock_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1373_plate_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1374_chamfer_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1374_fillet_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1374_turned_step_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1378_diameter_leader_targets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1390_sheet_registration.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1392_recognisers_048.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1395_degenerate_iso_region.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1421_rectangular_blind_slot_completeness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1421_round_bottom_blind_slot_completeness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1421_round_bottom_blind_slot_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1432_adoption.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1432_boundary_failures.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1432_oriented_slot_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1433_blend_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1450_boss_blend_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1466_dimension_options.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1466_semantic_sides.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1479_radius_leader_targets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1485_curved_pockets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1485_quiddity_024_boundary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1485_rounded_pockets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1505_diameter_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1505_short_axial_chains.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1511_turned_boss_heights.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1514_projection_safeguard.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1515_first_angle.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1516_dimension_text.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1517_through_indicator.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1518_explicit_rear.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1524_tolerance_magnitude.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1530_section_provenance.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1531_semantic_hole_counts.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1532_authored_section_examples.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1533_review_diagnostics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1536_title_overflow.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1543_feature_schedules.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1543_schedule_requirements.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1544_frame_document_canary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1555_turned_recognition_format_invariance.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1560_envelope_axes.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1585_title_block_date.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1593_title_block_keepout.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1596_bolt_circle_corroboration.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1599_duplicate_slot_widths.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1603_cli_output_paths.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1604_internal_section.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1612_frame_sergio_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1612_sheet_margins.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_1613_circular_channel.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_367_leader_ink.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_563_placement_intent.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_676_polygonal_boss.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_676_polygonal_boss_declare.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_798_floor_cardinality.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_798_material_field.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_798_silhouette_lint.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_827_real_part_canary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_883_location_identity.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_885_prismatic_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_909_sloped_profile.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_915_dense_case.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_916_pocket_leader.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_917_open_channel.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_924_zero_length_shoulders.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_955_height_contingency.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_issue_958_cross_solid_recognition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_label_provenance.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_cleanliness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_constants.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_evidence_issue_1711.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_generalisation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_hypothesis.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_override_lane_issue_1757.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_override_side_issue_1757.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_layout_property.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_leader_footprint.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_box_cache.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_ink_overlap.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_reconciliation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_structural.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_suggestions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_lint_summary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_linting.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_location_dimensions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_location_vocabulary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_machined_feature_callouts.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_make_drawing_entrypoints.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_nested_recognition_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_note_verb.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_object_aspects.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_occupancy_boxes.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_occurrence_recognition_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_overall_height_coverage.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pad_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_paired_ramp_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_part_classification.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_part_model.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pattern_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pitch_dim_footprint.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_place_dimension.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_plate_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pmi_common_labels.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pmi_datum_lowering.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pmi_gtol_lowering.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pmi_part21.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pocket_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pocket_pattern.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pocket_pattern_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_pocket_pattern_recognition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_polygonal_boss_completeness_evidence.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_principal_profile_classifier.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_prismatic_boss_diameter.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_prismatic_classification.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_profile_angles.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_projection_symbol_default.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_quality_components.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_quiddity_lifecycle_boundary.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recogniser_adoption.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recogniser_capabilities.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recogniser_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recogniser_policy.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recogniser_step_inventory.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recognition_boundary_failures.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recognition_evidence_schema.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recognition_policy_dispositions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_recognition_result.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_refactor_golden.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_render_seam.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_repack_geometry_seam.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_repair.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_replay_assessment_issue_1715.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_report_status_reasons_issue_1618.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_report_writer.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_requirement_applicability.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_requirement_carriers.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_requirement_catalog.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_requirement_catalog_families.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_scale_policy.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_scale_selection.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_score.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_section_hatching.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_section_recess_contract.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_section_recess_pockets.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_shared_box_memo.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_shared_drawing_cache.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_furniture.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_generation_snapshot.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_notes.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_of.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_section.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_sheet_tables.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_slanted_blind_step.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_slot_completeness.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_slot_pattern.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_slot_pattern_recognition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_slot_recognition.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_soft_deprecation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_step_analysis_evaluation.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_strip_zones.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_suite_shape.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_suppression_ledger.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_suppression_marks.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_through_step_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_through_step_semantics.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_title_block_units_format.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_tolerances.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_turned_lengths.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_turned_step_ownership.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_turned_steps.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_two_pass_layout.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_typ_dimensions.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_typed_remediation_projection_issue_1759.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_version_bump_ci.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_view_coordinates.py +0 -0
- {draftwright-0.4.34 → draftwright-0.5.0rc1}/tests/test_witness_label_reconciliation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: draftwright
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0rc1
|
|
4
4
|
Summary: Automated technical-drawing generation for build123d
|
|
5
5
|
Project-URL: Homepage, https://github.com/pzfreo/draftwright
|
|
6
6
|
Project-URL: Repository, https://github.com/pzfreo/draftwright
|
|
@@ -954,6 +954,31 @@ build_drawing(part, scale=1.0, page="A4", scale_policy="strict")
|
|
|
954
954
|
build_drawing(part, scale=1.0, page="A4", scale_policy="permissive")
|
|
955
955
|
```
|
|
956
956
|
|
|
957
|
+
### Choose an annotation planning algorithm
|
|
958
|
+
|
|
959
|
+
```python
|
|
960
|
+
dwg = build_drawing(part, annotation_layout="estimated-strips") # original planning
|
|
961
|
+
dwg = build_drawing(part, annotation_layout="demand-guided") # current one-build default
|
|
962
|
+
dwg = build_drawing(part, annotation_layout="compare") # multi-build comparison
|
|
963
|
+
print(dwg.annotation_scheme_decision) # selected trial and finished-drawing evidence
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
Both planning algorithms use the same annotation placement solver. `estimated-strips`
|
|
967
|
+
reserves annotation corridors from feature-based estimates; `demand-guided` uses typed
|
|
968
|
+
annotation demand to choose a planning profile before rendering. The current default
|
|
969
|
+
is `demand-guided`; `estimated-strips` remains an explicit compatibility choice.
|
|
970
|
+
|
|
971
|
+
`compare` builds the estimated-strips layout first, then tries a bounded alternative on
|
|
972
|
+
the **same sheet and scale**. It selects an alternative only when rendered annotation
|
|
973
|
+
meaning and required coverage are preserved, no new required blocker appears, and
|
|
974
|
+
the finished drawing has fewer layout defects or a substantially larger isometric
|
|
975
|
+
view on an otherwise clean sheet. `Sheet`, `make_drawing()`, generated scripts, and the
|
|
976
|
+
CLI (for example `--annotation-layout demand-guided`) accept the same names. The
|
|
977
|
+
former spellings `baseline`, `candidate-preview`, and `best` remain accepted aliases.
|
|
978
|
+
|
|
979
|
+
The comparison costs at least two drawing builds and may try up to three candidate
|
|
980
|
+
variants for a crowded part. Export runs only for the selected drawing.
|
|
981
|
+
|
|
957
982
|
### Edit, critique, and self-repair
|
|
958
983
|
|
|
959
984
|
Edit a `Drawing` in **domain vocabulary** — the engine places annotations
|
|
@@ -251,6 +251,31 @@ build_drawing(part, scale=1.0, page="A4", scale_policy="strict")
|
|
|
251
251
|
build_drawing(part, scale=1.0, page="A4", scale_policy="permissive")
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
+
### Choose an annotation planning algorithm
|
|
255
|
+
|
|
256
|
+
```python
|
|
257
|
+
dwg = build_drawing(part, annotation_layout="estimated-strips") # original planning
|
|
258
|
+
dwg = build_drawing(part, annotation_layout="demand-guided") # current one-build default
|
|
259
|
+
dwg = build_drawing(part, annotation_layout="compare") # multi-build comparison
|
|
260
|
+
print(dwg.annotation_scheme_decision) # selected trial and finished-drawing evidence
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Both planning algorithms use the same annotation placement solver. `estimated-strips`
|
|
264
|
+
reserves annotation corridors from feature-based estimates; `demand-guided` uses typed
|
|
265
|
+
annotation demand to choose a planning profile before rendering. The current default
|
|
266
|
+
is `demand-guided`; `estimated-strips` remains an explicit compatibility choice.
|
|
267
|
+
|
|
268
|
+
`compare` builds the estimated-strips layout first, then tries a bounded alternative on
|
|
269
|
+
the **same sheet and scale**. It selects an alternative only when rendered annotation
|
|
270
|
+
meaning and required coverage are preserved, no new required blocker appears, and
|
|
271
|
+
the finished drawing has fewer layout defects or a substantially larger isometric
|
|
272
|
+
view on an otherwise clean sheet. `Sheet`, `make_drawing()`, generated scripts, and the
|
|
273
|
+
CLI (for example `--annotation-layout demand-guided`) accept the same names. The
|
|
274
|
+
former spellings `baseline`, `candidate-preview`, and `best` remain accepted aliases.
|
|
275
|
+
|
|
276
|
+
The comparison costs at least two drawing builds and may try up to three candidate
|
|
277
|
+
variants for a crowded part. Export runs only for the selected drawing.
|
|
278
|
+
|
|
254
279
|
### Edit, critique, and self-repair
|
|
255
280
|
|
|
256
281
|
Edit a `Drawing` in **domain vocabulary** — the engine places annotations
|
|
@@ -127,6 +127,14 @@ solve still measures the whole notes block and checks all occupied regions. If i
|
|
|
127
127
|
page; do not remove engineering content merely to silence a diagnostic. General notes remain
|
|
128
128
|
uncredited text: they do not automatically satisfy missing dimensions or unsupported features.
|
|
129
129
|
|
|
130
|
+
Page selection also measures visible imported general notes before choosing a sheet. Derived
|
|
131
|
+
sections and details claim their less-flexible space first; notes and tables take remaining
|
|
132
|
+
regions. The late block placer prefers 6 mm of separation but retries the existing minimum
|
|
133
|
+
ink clearance when necessary. An automatic section likewise prefers a wider gap from its
|
|
134
|
+
parent row, and an unreserved detail prefers space around its complete footprint only when
|
|
135
|
+
that keeps its requested scale. These are readability preferences, not permission to shrink,
|
|
136
|
+
omit, or overlap required content.
|
|
137
|
+
|
|
130
138
|
### Dimension position and reading direction
|
|
131
139
|
|
|
132
140
|
Position and reading direction are independent drawing-wide settings:
|
|
@@ -176,6 +184,41 @@ retains a non-default selection in its `Sheet(...)` constructor. A feature carry
|
|
|
176
184
|
stronger than the drawing-wide preference. The policy affects feature leaders only—not linear
|
|
177
185
|
dimensions, free notes, tables, or view placement—and never supplies coordinates.
|
|
178
186
|
|
|
187
|
+
The `demand-guided` annotation layout additionally reserves a blank 6 mm gutter
|
|
188
|
+
between the front/plan annotation bands and between the column and side view,
|
|
189
|
+
growing toward 12 mm when the selected sheet has spare room. Its facing strips
|
|
190
|
+
cannot spend that gutter. `estimated-strips` retains its established shared
|
|
191
|
+
corridors; this change does not silently alter that layout's sheet selection.
|
|
192
|
+
|
|
193
|
+
For separate linear hole patterns whose pitch marks have the same projected
|
|
194
|
+
stations and printed value in one view, the renderer keeps one dimension rather
|
|
195
|
+
than repeating the same pitch beside parallel rows. That mark retains the
|
|
196
|
+
measurement identities and feature ownership of every covered pattern. Rotated
|
|
197
|
+
or nonmatching rows remain separate; an unplaced pitch is still reported rather
|
|
198
|
+
than silently treated as covered.
|
|
199
|
+
|
|
200
|
+
### Acceptable recovered leaders
|
|
201
|
+
|
|
202
|
+
A sheet-wide recovery is a last resort, not permission to send a callout around the
|
|
203
|
+
page. Draftwright accepts a recovered feature leader only when:
|
|
204
|
+
|
|
205
|
+
- its tip remains attached to the proved feature in its owning view;
|
|
206
|
+
- its label stays on the sheet and outside projected views and settled
|
|
207
|
+
annotation text;
|
|
208
|
+
- its shaft stays out of other views and does not cross settled annotation text
|
|
209
|
+
or non-crossable strokes; ordinary dimension-line crossings retain the
|
|
210
|
+
existing documented crossing policy;
|
|
211
|
+
- it has at most one routing bend before the normal label shelf, never doubles
|
|
212
|
+
back, and stays local (each leg no longer than the owning view's diagonal, the
|
|
213
|
+
complete route no longer than twice that diagonal; a 30 mm floor keeps very
|
|
214
|
+
small views usable).
|
|
215
|
+
|
|
216
|
+
If no candidate passes, the callout drops with a lint finding. The length and
|
|
217
|
+
bend limits are Draftwright readability rules, **not** ISO- or ASME-prescribed
|
|
218
|
+
numbers. They prevent a callout such as CTC04's 4×R13 from taking a long U-shaped
|
|
219
|
+
detour into the next view. Ordinary feature leaders are still solved jointly;
|
|
220
|
+
these additional limits govern the sheet-wide recovery path.
|
|
221
|
+
|
|
179
222
|
## Through-hole wording
|
|
180
223
|
|
|
181
224
|
The optional argument to a hole handle's `through()` controls its printed indicator:
|
|
@@ -215,6 +258,21 @@ measurement should also appear beside a view. Ordinary `table(...)` text has no
|
|
|
215
258
|
authority. See [shared drawing documents](document.md#feature-schedules) for an executable
|
|
216
259
|
recipe, verified cell evidence and the document report contract.
|
|
217
260
|
|
|
261
|
+
For an automatic `pmi="annotate"` drawing with multiple long imported thread/knurl
|
|
262
|
+
requirements, the engine may instead place a **manufacturing requirements** table.
|
|
263
|
+
The diameter or hole callout keeps its canonical size and a short `SEE MFG n` reference;
|
|
264
|
+
the table carries the complete source-owned manufacturing terms. Its measured footprint
|
|
265
|
+
participates in page selection, and the references are used only after the table fits.
|
|
266
|
+
If it cannot be placed, full direct callouts remain. Lint reports a short reference whose
|
|
267
|
+
source-matched table row is removed or altered. This does not apply to `pmi="off"` or
|
|
268
|
+
replace an authored feature schedule.
|
|
269
|
+
|
|
270
|
+
An imported datum-scheme sentence is omitted from the sheet only when its whole
|
|
271
|
+
meaning is proven by placed, source-owned datum symbols on the matching geometry.
|
|
272
|
+
The original AP242 text and the symbol source IDs remain in the model. A missing
|
|
273
|
+
symbol, unmatched geometry, or extra instruction keeps the note (or produces a
|
|
274
|
+
source-coverage lint error if a previously proven symbol is later removed).
|
|
275
|
+
|
|
218
276
|
## Grooves on coaxial bodies
|
|
219
277
|
|
|
220
278
|
When different turned bodies share an axis line, give their steps distinct `profile_group`
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "draftwright"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.0rc1"
|
|
8
8
|
description = "Automated technical-drawing generation for build123d"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -184,6 +184,8 @@ dev = [
|
|
|
184
184
|
"pytest-split>=0.8",
|
|
185
185
|
"pytest-timeout>=2",
|
|
186
186
|
"pytest-xdist>=3",
|
|
187
|
+
# Offline layout-cost workers need peak working-set and host RAM on Windows.
|
|
188
|
+
"psutil>=5.9",
|
|
187
189
|
"ruff>=0.4",
|
|
188
190
|
"tomli>=2; python_version < '3.11'",
|
|
189
191
|
]
|
|
@@ -407,7 +407,7 @@ def _table_metrics(rows, font_size, pad_around_text, block_cols=None):
|
|
|
407
407
|
return lefts, rights, cursor, row_h * len(rows), row_h, bc
|
|
408
408
|
|
|
409
409
|
|
|
410
|
-
def _build_table(rows, draft, block_cols=None):
|
|
410
|
+
def _build_table(rows, draft, block_cols=None, left_align_cols=()):
|
|
411
411
|
"""Build a generic data-table annotation at the origin (bottom-left ``(0, 0)``).
|
|
412
412
|
|
|
413
413
|
*rows* is a list of equal-length string tuples; ``rows[0]`` is the header,
|
|
@@ -443,12 +443,15 @@ def _build_table(rows, draft, block_cols=None):
|
|
|
443
443
|
display = _font_safe_text(cell)
|
|
444
444
|
if not display:
|
|
445
445
|
continue
|
|
446
|
-
|
|
446
|
+
left_aligned = ci in left_align_cols
|
|
447
|
+
cx = (
|
|
448
|
+
lefts[ci] + draft.pad_around_text if left_aligned else (lefts[ci] + rights[ci]) / 2
|
|
449
|
+
)
|
|
447
450
|
text = Text(
|
|
448
451
|
txt=display,
|
|
449
452
|
font_size=fs,
|
|
450
453
|
font_path=PLEX_MONO,
|
|
451
|
-
align=(Align.CENTER, Align.CENTER),
|
|
454
|
+
align=(Align.MIN if left_aligned else Align.CENTER, Align.CENTER),
|
|
452
455
|
mode=Mode.PRIVATE,
|
|
453
456
|
).locate(Location((cx, cy, 0)))
|
|
454
457
|
children.extend(text.faces())
|
|
@@ -550,6 +553,37 @@ def _text_size(
|
|
|
550
553
|
return (bb.size.X, bb.size.Y)
|
|
551
554
|
|
|
552
555
|
|
|
556
|
+
_LONG_CALLOUT_LINE_MM = 48.0
|
|
557
|
+
|
|
558
|
+
|
|
559
|
+
def _wrap_callout_text(
|
|
560
|
+
text: str, font_size: float, *, max_width: float = _LONG_CALLOUT_LINE_MM
|
|
561
|
+
) -> str:
|
|
562
|
+
"""Break a long manufacturing sentence into measured, intact words.
|
|
563
|
+
|
|
564
|
+
This is one typography policy for both compose-time width reservation and
|
|
565
|
+
rendered leaders. Short labels are unchanged. A single overlong word stays
|
|
566
|
+
intact, so the planner cannot pretend it will fit by clipping it.
|
|
567
|
+
"""
|
|
568
|
+
if not text or _text_width(text, font_size) <= max_width:
|
|
569
|
+
return text
|
|
570
|
+
lines: list[str] = []
|
|
571
|
+
line = ""
|
|
572
|
+
for word in text.split():
|
|
573
|
+
candidate = f"{line} {word}" if line else word
|
|
574
|
+
if line and _text_width(candidate, font_size) > max_width:
|
|
575
|
+
lines.append(line)
|
|
576
|
+
line = word
|
|
577
|
+
else:
|
|
578
|
+
line = candidate
|
|
579
|
+
if line.endswith(";") and _text_width(line, font_size) >= max_width * 0.5:
|
|
580
|
+
lines.append(line)
|
|
581
|
+
line = ""
|
|
582
|
+
if line:
|
|
583
|
+
lines.append(line)
|
|
584
|
+
return "\n".join(lines)
|
|
585
|
+
|
|
586
|
+
|
|
553
587
|
@functools.lru_cache(maxsize=32)
|
|
554
588
|
def _text_line_spacing_em(
|
|
555
589
|
font_size: float,
|
|
@@ -1043,9 +1077,9 @@ class DetailRequest:
|
|
|
1043
1077
|
:class:`ViewCoordinates`, mapped via ``coords.pp``) and returns the count
|
|
1044
1078
|
placed (0 → the detailer drops the detail without committing a view, #840).
|
|
1045
1079
|
Called on the SCRATCH-projected coords before the view is committed, so a
|
|
1046
|
-
zero result needs no rollback; the main view
|
|
1047
|
-
head/block
|
|
1048
|
-
|
|
1080
|
+
zero result needs no rollback; the main view may carry only a synthetic
|
|
1081
|
+
head/block, so the resolver must report any exact detail-owned
|
|
1082
|
+
measurements that cannot be placed.
|
|
1049
1083
|
pad_top: page-mm band reserved above the detail view (a horizontal
|
|
1050
1084
|
chain); reserved in the fit + placement.
|
|
1051
1085
|
pads: optional ``pads(detail_scale) -> (pad_right, pad_top)`` for a
|
|
@@ -1064,6 +1098,10 @@ class DetailRequest:
|
|
|
1064
1098
|
kind: short label for logging.
|
|
1065
1099
|
measurement_ids/measurement_spans: exact compiler-owned requirements the detail
|
|
1066
1100
|
is recovering. Empty for purely geometric/authored details.
|
|
1101
|
+
profile_support_points: model-space points on required visible geometry that
|
|
1102
|
+
an automatic secondary crop must retain. Turned shoulders use
|
|
1103
|
+
outer-profile edges; prismatic steps use physical face witness
|
|
1104
|
+
sites. These certify geometry, not dimension extension endpoints.
|
|
1067
1105
|
"""
|
|
1068
1106
|
|
|
1069
1107
|
axis: str
|
|
@@ -1092,6 +1130,126 @@ class DetailRequest:
|
|
|
1092
1130
|
source: object | None = None
|
|
1093
1131
|
measurement_ids: tuple = ()
|
|
1094
1132
|
measurement_spans: tuple = ()
|
|
1133
|
+
profile_support_points: tuple[tuple[float, float, float], ...] = ()
|
|
1134
|
+
#: Render-time refusal retained so the owner can report the real constraint,
|
|
1135
|
+
#: rather than mislabelling an invalid crop as a page-fit failure.
|
|
1136
|
+
failure_reason: str | None = None
|
|
1137
|
+
failure_code: str | None = None
|
|
1138
|
+
placed_scale: float | None = None
|
|
1139
|
+
fit_evidence: dict[str, object] | None = None
|
|
1140
|
+
|
|
1141
|
+
|
|
1142
|
+
def _detail_caption(req: DetailRequest, letter: str, scale: float, bb) -> str:
|
|
1143
|
+
"""Identify a genuinely truncated profile independently of detail family."""
|
|
1144
|
+
partial_profile = False
|
|
1145
|
+
if req.cross_axis is not None and req.cross_lo is not None and req.cross_hi is not None:
|
|
1146
|
+
axis = req.cross_axis.upper()
|
|
1147
|
+
partial_profile = (
|
|
1148
|
+
req.cross_lo > getattr(bb.min, axis) + 1e-6
|
|
1149
|
+
or req.cross_hi < getattr(bb.max, axis) - 1e-6
|
|
1150
|
+
)
|
|
1151
|
+
qualifier = " — PARTIAL PROFILE" if partial_profile else ""
|
|
1152
|
+
return f"DETAIL {letter}{qualifier} — SCALE {format_drawing_scale(scale)}"
|
|
1153
|
+
|
|
1154
|
+
|
|
1155
|
+
def y_chain_detail_scale_needed(
|
|
1156
|
+
segments: tuple[tuple[float, float, float], ...],
|
|
1157
|
+
label_widths: tuple[float, ...],
|
|
1158
|
+
*,
|
|
1159
|
+
arrow_length: float,
|
|
1160
|
+
text_padding: float,
|
|
1161
|
+
) -> float | None:
|
|
1162
|
+
"""Return the minimum enlargement for an unreadable Y-turned step chain.
|
|
1163
|
+
|
|
1164
|
+
Segment endpoints are projected page X coordinates; their third value is the
|
|
1165
|
+
approved world-space step length. ``None`` means the principal-view chain
|
|
1166
|
+
already has room for every label and both inside arrows. The same pure rule
|
|
1167
|
+
can be consumed by pre-sheet planning and the render pass (#1872).
|
|
1168
|
+
"""
|
|
1169
|
+
|
|
1170
|
+
if len(segments) != len(label_widths):
|
|
1171
|
+
raise ValueError("Y-chain segments and label widths must correspond")
|
|
1172
|
+
if not segments:
|
|
1173
|
+
return None
|
|
1174
|
+
centres = sorted(
|
|
1175
|
+
((pa + pb) / 2, width) for (pa, pb, _length), width in zip(segments, label_widths)
|
|
1176
|
+
)
|
|
1177
|
+
labels_clear = all(
|
|
1178
|
+
next_centre - centre >= (width + next_width) / 2 + text_padding
|
|
1179
|
+
for (centre, width), (next_centre, next_width) in zip(centres, centres[1:])
|
|
1180
|
+
)
|
|
1181
|
+
inside_arrows_fit = all(
|
|
1182
|
+
abs(pb - pa) >= width + 2 * arrow_length + 2 * text_padding
|
|
1183
|
+
for (pa, pb, _length), width in zip(segments, label_widths)
|
|
1184
|
+
)
|
|
1185
|
+
if labels_clear and inside_arrows_fit:
|
|
1186
|
+
return None
|
|
1187
|
+
return max(
|
|
1188
|
+
(width + 2 * arrow_length + 2 * text_padding) / length
|
|
1189
|
+
for (_pa, _pb, length), width in zip(segments, label_widths)
|
|
1190
|
+
if length > 0
|
|
1191
|
+
)
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
def crowded_horizontal_step_runs(
|
|
1195
|
+
spans: tuple[tuple[float, float], ...], scale: float, arrow_length: float
|
|
1196
|
+
) -> tuple[tuple[int, ...], ...]:
|
|
1197
|
+
"""Runs of at least two consecutive steps narrower than two page arrowheads.
|
|
1198
|
+
|
|
1199
|
+
The semantic pre-sheet planner and X-turned renderer must identify the same
|
|
1200
|
+
head requirements; neither may invent a different crowded-step threshold.
|
|
1201
|
+
"""
|
|
1202
|
+
short = [
|
|
1203
|
+
index for index, (lo, hi) in enumerate(spans) if abs(hi - lo) * scale < 2 * arrow_length
|
|
1204
|
+
]
|
|
1205
|
+
runs: list[list[int]] = []
|
|
1206
|
+
for index in short:
|
|
1207
|
+
if runs and index == runs[-1][-1] + 1:
|
|
1208
|
+
runs[-1].append(index)
|
|
1209
|
+
else:
|
|
1210
|
+
runs.append([index])
|
|
1211
|
+
return tuple(tuple(run) for run in runs if len(run) >= 2)
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
_DETAIL_PROFILE_CONTEXT_PAGE_MM = 2.0 # Draftwright policy, not a drafting-standard minimum.
|
|
1215
|
+
_DETAIL_PROFILE_MIN_WORLD_MM = 0.1 # Keep the Boolean crop wider than OCC's fuzzy edge.
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
def supported_secondary_crop(
|
|
1219
|
+
points: tuple[tuple[float, float, float], ...],
|
|
1220
|
+
axis: Literal["x", "y", "z"],
|
|
1221
|
+
full_lo: float,
|
|
1222
|
+
full_hi: float,
|
|
1223
|
+
detail_scale: float,
|
|
1224
|
+
) -> tuple[float, float] | None:
|
|
1225
|
+
"""Smallest supported band with page context where the body extent permits.
|
|
1226
|
+
|
|
1227
|
+
The caller must provide every controlled physical support point. Missing or
|
|
1228
|
+
invalid evidence refuses the partial crop, leaving the full profile visible.
|
|
1229
|
+
The bounded page-space margin is shared by turned, prismatic, and authored
|
|
1230
|
+
details; no feature-family radius or fixed world-space threshold is needed.
|
|
1231
|
+
"""
|
|
1232
|
+
if (
|
|
1233
|
+
not points
|
|
1234
|
+
or not math.isfinite(full_lo)
|
|
1235
|
+
or not math.isfinite(full_hi)
|
|
1236
|
+
or full_lo >= full_hi
|
|
1237
|
+
or not math.isfinite(detail_scale)
|
|
1238
|
+
or detail_scale <= 0
|
|
1239
|
+
):
|
|
1240
|
+
return None
|
|
1241
|
+
index = "xyz".index(axis)
|
|
1242
|
+
if any(
|
|
1243
|
+
len(point) != 3 or any(not math.isfinite(value) for value in point) for point in points
|
|
1244
|
+
):
|
|
1245
|
+
return None
|
|
1246
|
+
stations = [point[index] for point in points]
|
|
1247
|
+
if min(stations) < full_lo - 1e-6 or max(stations) > full_hi + 1e-6:
|
|
1248
|
+
return None
|
|
1249
|
+
context = max(_DETAIL_PROFILE_MIN_WORLD_MM, _DETAIL_PROFILE_CONTEXT_PAGE_MM / detail_scale)
|
|
1250
|
+
lo = max(full_lo, min(stations) - context)
|
|
1251
|
+
hi = min(full_hi, max(stations) + context)
|
|
1252
|
+
return (lo, hi) if lo < hi else None
|
|
1095
1253
|
|
|
1096
1254
|
|
|
1097
1255
|
@dataclass(frozen=True)
|
|
@@ -1371,6 +1529,9 @@ class Analysis:
|
|
|
1371
1529
|
# from the effective mode so the ignored-PMI diagnostic can distinguish that default from
|
|
1372
1530
|
# an explicit opt-out without widening the three-mode renderer contract (#623).
|
|
1373
1531
|
pmi_defaulted: bool
|
|
1532
|
+
# Planned alternate carrier for multiple long imported manufacturing terms.
|
|
1533
|
+
# The renderer activates its short feature references only after this table fits.
|
|
1534
|
+
manufacturing_schedule: object | None = None
|
|
1374
1535
|
# True when this layout is a member projection of a Document's sealed acquisition.
|
|
1375
1536
|
document_member: bool = False
|
|
1376
1537
|
# Exact top-level annotation objects supplied by the Document acquisition. Member-authored
|
|
@@ -1441,6 +1602,9 @@ class Analysis:
|
|
|
1441
1602
|
planned_iso: bool = True
|
|
1442
1603
|
#: ``None`` lets the orientation iso auto-fit; a number is an authored exact factor.
|
|
1443
1604
|
planned_iso_scale: float | None = None
|
|
1605
|
+
#: Distinguishes a caller's exact factor from an engine-selected NTS starting factor.
|
|
1606
|
+
#: Only the former is a hard constraint that settlement must never reduce.
|
|
1607
|
+
planned_iso_scale_authored: bool = False
|
|
1444
1608
|
#: Immutable ADR 2 (was 0018) authored input, retained for the resolver/diagnostics without making
|
|
1445
1609
|
#: this low-level module depend on the view-planning leaf at runtime.
|
|
1446
1610
|
view_constraints: object | None = None
|
|
@@ -1456,6 +1620,9 @@ class Analysis:
|
|
|
1456
1620
|
RV_X: float = 0.0
|
|
1457
1621
|
RV_Y: float = 0.0
|
|
1458
1622
|
rv_zones: ViewZones | None = None
|
|
1623
|
+
#: Planned hard page boxes for required derived views, carried from composition
|
|
1624
|
+
#: to annotation placement. Empty until a supported pre-sheet demand exists.
|
|
1625
|
+
derived_view_boxes: tuple[tuple[str, tuple[float, float, float, float]], ...] = ()
|
|
1459
1626
|
|
|
1460
1627
|
sheet_margins: SheetMargins | None = None
|
|
1461
1628
|
content_margins: SheetMargins | None = None
|
|
@@ -1699,7 +1866,7 @@ def _add_title_block(dwg, a: Analysis):
|
|
|
1699
1866
|
dwg.items,
|
|
1700
1867
|
tb,
|
|
1701
1868
|
"title_block",
|
|
1702
|
-
feature=dwg.
|
|
1869
|
+
feature=dwg.general_tolerance_source,
|
|
1703
1870
|
)
|
|
1704
1871
|
|
|
1705
1872
|
|
|
@@ -1785,7 +1952,7 @@ def _add_default_surface_finish(dwg, a: Analysis):
|
|
|
1785
1952
|
The reserved band above the title block is sheet furniture space. A document default
|
|
1786
1953
|
belongs there: hanging it from model geometry would falsely narrow its scope to one face.
|
|
1787
1954
|
"""
|
|
1788
|
-
requirement = dwg.
|
|
1955
|
+
requirement = dwg.default_surface_finish_source
|
|
1789
1956
|
if requirement is None:
|
|
1790
1957
|
return
|
|
1791
1958
|
|