draftwright 0.5.0rc5__tar.gz → 0.5.0rc7__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.5.0rc5 → draftwright-0.5.0rc7}/PKG-INFO +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/docs/reference/sheet.md +4 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/pyproject.toml +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_geometry.py +73 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_diameters.py +4 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_gdt.py +139 -34
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_height_ladder.py +12 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_leader_fixed_ink.py +23 -3
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_machined_leaders.py +3 -9
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_placement_occupancy.py +19 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/from_model.py +0 -2
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/holes.py +81 -62
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/sections.py +56 -3
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/build_policy.py +25 -6
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/builder.py +25 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/drawing.py +17 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_hole_family_evidence.py +11 -3
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_pocket_evidence.py +2 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/layout_safety.py +2 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/orchestration.py +8 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/pmi_coverage.py +287 -9
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/quality.py +16 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/structural.py +204 -62
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/__init__.py +2 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/callout.py +95 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/compiled.py +48 -10
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/declare.py +2 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/ir.py +6 -2
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/ir_foundation.py +59 -5
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/manufacturing_schedule.py +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/pmi_lowering.py +414 -41
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/pmi.py +38 -10
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/registry.py +3 -2
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/reporting.py +5 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet.py +9 -3
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_emit.py +39 -7
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_feature_lines.py +25 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_complexity_baseline.json +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_function_length_baseline.json +0 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_tier_manifest.py +36 -2
- draftwright-0.5.0rc7/tests/fixtures/grm03_edge_face_finish_ap242.step +982 -0
- draftwright-0.5.0rc7/tests/fixtures/grm03_specify_pmi_ap242.step +879 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/grid_plate.json +3 -3
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_adr0018_view_selection.py +9 -13
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_arrangement_gate.py +18 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_build_drawing_entrypoints.py +4 -22
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_compose_then_pack.py +1 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_dimension_lane_canary_issue_1757.py +19 -12
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_gdt_placement.py +119 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_hole_annotations.py +46 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_hole_pattern_callouts.py +7 -7
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_interior_label_placement.py +118 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1116_ap242_hole_tolerance_lowering.py +86 -23
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1130_view_planning_evidence.py +23 -53
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1155_grm04_sheet_use.py +3 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1262_automatic_turned_views.py +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1296_cylindrical_diameter_pmi.py +185 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1298_manufacturing_requirements.py +109 -10
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1299_page_escalation.py +11 -12
- draftwright-0.5.0rc7/tests/test_issue_1338_scale_before_page_escalation.py +257 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1370_hole_pattern_completeness_evidence.py +10 -11
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1396_layout_advisories.py +5 -2
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1460_step_inspection.py +1 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_safety.py +15 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_manufacturing_schedule.py +22 -2
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pareto_loop_canary_issue_1753.py +7 -4
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_part_model.py +41 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pmi.py +85 -82
- draftwright-0.5.0rc7/tests/test_pmi_manufacturing_finish.py +853 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pocket_pattern.py +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pocket_pattern_completeness_evidence.py +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_emit.py +21 -5
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_slot_completeness.py +24 -11
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_slot_pattern.py +1 -1
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_tier_manifest.py +63 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_typed_remediation_projection_issue_1759.py +11 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_view_plan.py +8 -5
- draftwright-0.5.0rc5/tests/test_issue_1338_scale_before_page_escalation.py +0 -104
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/.gitignore +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/CHANGELOG.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/LICENSE +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/README.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/docs/adr/README.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/docs/reference/recogniser-capabilities.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/docs/research/1062-repeating-radial-profile-evidence.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/skills/SKILL.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/__init__.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_build_profile.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_core.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_pmi_datum_geometry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_pmi_linear_geometry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_pmi_part21.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_pmi_schema.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_pmi_support_blockers.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_pmi_topology.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/_warnings.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/analysis.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/angular_geometry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotate.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotation_layout_profile.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/__init__.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_axial_render.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_circular_recesses.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_common.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_dimension_ink.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_dimension_ink_repair.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_edge_callouts.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_envelope.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_hole_leader_placement.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_leader_candidates.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_leader_commit.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_locations.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_patterns.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_placement_geometry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_pmi_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_pocket_pad.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_polygonal_prisms.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_sheet_furniture.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_slots.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_step_lengths.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_strip_postsolve.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_thin_profiles.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/angular.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/balloons.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/drawing_port.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/gears.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/hole_leader_candidates.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/hole_locations.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/leaders.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/orchestrator.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/routed.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/solve_trace.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/audit.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/auxiliary_layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/blend_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/build_once.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/build_options.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/cli.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/compose.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/contract_values.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/document.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/document_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/document_input.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/drawing_diagnostics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/drawing_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/drawing_export.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/drawing_state.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/drawing_tables.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/__init__.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_double_d_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_edge_profile_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_flat_polygonal_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_groove_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_prismatic_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/_turned_step_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/evaluation/step_analysis.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/explicit_scale.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/export.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/family_table.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/feature_identity.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/fits.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/fonts/IBMPlexMono-Regular.ttf +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/fonts/IBMPlexSansCondensed-Regular.ttf +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/fonts/LICENSE-IBMPlexMono-OFL.txt +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/fonts/LICENSE-IBMPlexSansCondensed-OFL.txt +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/fonts/__init__.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/inspection.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/inspection_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/intent_drain.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/intent_routing.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/intents.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/layout_scheme.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/layout_selection.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/leader_policy.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/__init__.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/_coverage_common.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/_parameter_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/_registry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/angled_step_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/angular.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/blend_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/boss_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/chamfer_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/channel_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/circular_blind_step_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/envelope_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/fillet_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/flat_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/gear_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/groove_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/gusset_rib_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/hole_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/ink_overlap.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/issues.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/oriented_slot_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/pad_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/paired_ramp_step_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/passage_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/plate_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/pocket_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/pocket_pattern_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/polygonal_boss_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/polygonal_stock_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/prismatic_pocket_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/profiled_bore_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/rectangular_blind_slot_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/requirements.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/round_bottom_blind_slot_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/schedule_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/section_recess_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/slot_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/suggest.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/through_step_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/linting/turned_step_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/location_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/make_drawing.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/measurement_support.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/detect.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/detect_inventory.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/detect_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/dimension_intent.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/oriented_slot_geometry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/model/planner.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/obligations.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/oriented_slot_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/pdf_text.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/plate_correspondence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/profile_angles.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/progress.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/projection.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/py.typed +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recogniser_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recogniser_policy.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recogniser_schema.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recognition/__init__.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recognition_cache.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recognition_frame.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/recognition_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/repair.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/replay_assessment.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/score.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/section_recess_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_features.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_layout_controls.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_metadata.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_object_source.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/sheet_views.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/view_plan.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_burden_report.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_corpus_cover.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_drawing_helpers.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_evidence_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_issue_module_baseline.txt +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_kernel.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_layout_helpers.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_layout_sig.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_mutation_corpus.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_pad_rendering_fixtures.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_parts.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_pattern_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_recogniser_public_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_section_recess_cases.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/_unit_manifest.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/conftest.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/annotation-layout-corpus-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/annotation-layout-corpus-v2.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/annotation-layout-holdout-ftc09-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/annotation-layout-holdout-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/ap242_single_cylinder_diameter.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/README.md +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/ambiguous-open-semicircle.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/blind-hole.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-asymmetric.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-compound.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-overlap.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-plain.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-planar-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-planar-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-planar-z.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/chamfer-turned.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-chamfers-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-countersinks-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-double-d-bores-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-fillets-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-flats-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-grooves-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-hole-patterns-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-plates-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-pocket-patterns-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-pockets-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-polygonal-bosses-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-polygonal-stock-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-rectangular-pads-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-turned-steps-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/corpus-v1.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/countersink-deburr.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/countersink-external-cone.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/countersink-mixed-pair.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/countersink-single.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/countersink-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/countersink-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-axis-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-axis-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-blind.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-coaxial-compound.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-opposed-blind.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-roll-30.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-round-bore.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-single-z.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/double-d-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-compound.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-overlap.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-plain.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-planar-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-planar-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-planar-z.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-repeated.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/fillet-turned.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-coaxial.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-double-d.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-lone-d.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-nonround.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-slanted-double-d.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/flat-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-compound.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-lone-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-lone-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-lone-z.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-monotonic-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-narrow.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/groove-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-compound-equal.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-detached-body-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-full-span-ledge-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-nested-staircase-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-x-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-x-positive.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-y-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-y-positive.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-z-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pad-z-positive.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pattern-ambiguous.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pattern-grid.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pattern-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pattern-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plain-block.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-compound-equal.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-cross-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-cross-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-detached-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-rotational-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-single-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-t-xz.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-t-yz.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-thick-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-u-additive.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/plate-u-cut.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-compound.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-edge-anchored.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-lone.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-opposed.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-pattern-ambiguous.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-pattern-grid.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-pattern-linear.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-pattern-pair.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-pattern-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-pattern-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-prismatic-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-side.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-through-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/pocket-two-equal.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-compound-equal.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-detached-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-in-plane-rotated.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-other-protrusions-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-recess-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-stock-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-boss-z.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-compound-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-cylinder-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-irregular-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-octagon-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-recess-negative.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-roll17.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-translated.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/polygonal-stock-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-axis-x.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-axis-y.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-axis-z.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-compound.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-repeated-lengths.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-through-bore.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-topology-a.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-topology-b.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/evaluation/turned-step-translated-blind-bore.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/grm03_thumbwheel_drive_screw.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/grm03_thumbwheel_drive_screw_ap242_pmi.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/grm04_drive_plate.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/if_step_flat_across_cylinder.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/issue_1058_wheel_rh.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/issue_1247_angled_blind_step.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/issue_1595_whistle_key_frame.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/issue_1595_whistle_key_lever.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/issue_909_basic_part_design_017_body.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/issue_915_case_study_2.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_01_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_01_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_02_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_02_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_03_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_03_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_04_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_04_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_05_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ctc_05_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/nist_ftc_09_asme1_ap242-e1.stp +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/tuner_jig_blind_obround_pockets.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/fixtures/whistle_frame_reference.step +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/bracket_section.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/centered_rebate.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/chamfered.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/filleted.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/flange_dense.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/grooved_shaft.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/hex_bar.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/holed_slot.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/pocketed.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/prismatic_ladder.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/scattered_plate.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/side_drilled.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/refactor_golden/turned_stepped.json +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_add_dimension.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_adr0018_view_routing.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_adr_corpus.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_agent_improvement_canary_issue_1716.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_agents_guide.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_analysis_geometry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_angle_patterns.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_angular_references.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_angular_rendering.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_annotation_box_composition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_annotation_box_corpus.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_annotation_layout_product.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_annotation_scheme_compare_script.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_annotation_scheme_corpus_script.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_annotation_scheme_shadow_script.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_api_docs.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_architecture_docs.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_assessment_comparison_issue_1712.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_audit_differential.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_auxiliary_layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_axial_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_balloon_ring_standoff.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_blind_slot_completeness.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_blind_slot_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_boss_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_build_profile_harness.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_burden_report.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_candidate_evidence_issue_1726.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_candidate_preview_sheet_holdout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_canonical_angles.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_carve_free_position_callers.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_channel_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_circular_blind_step_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_cli_behavior.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_cli_report_sidecar.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_clone_budget.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_compiled_plan_boundary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_contract_values.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_corpus_cover.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_counting_calls.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_coverage_mode.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_declaration_identity_issue_1710.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_declaration_report_issue_1710.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_declare.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_declared_recognition_gate.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_declared_report_issue_1688.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_deferred_edits.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_dense_sheet_canary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_deprecation_dates.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_depth_estimators.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_derived_view_integration.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_derived_view_planning.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_detail_views.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_detect_once.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_detect_registry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_diameter_deduplication.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_diameter_leaders.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_dimension_intent_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_dimension_role_vocabulary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_document_build.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_document_claim_authority.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_document_claims.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_document_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_document_report.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_document_report_authority.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_drawing_encapsulation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_drawing_operations.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_drawing_state.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_dynamic_corridors.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_e2e_slice.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_e2e_standards.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_edge_profile_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_envelope_view_route_issue_1813.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_equivalent_dimension_presentations_issue_1759.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_export_dxf_curves.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_export_dxf_zoom.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_export_formats.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_export_reproducible.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_export_shape.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_external_recognition_boundary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_family_table.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_feature_edit_corridors.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_feature_edit_replay.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_feature_edit_verbs.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_feature_leader_candidate_regions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_feature_provenance.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_feature_queries.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_fillets_adjacency.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_fit_calculations.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_fits.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_flat_callout_precision.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_flat_completeness.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_flat_stock_identity.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_flat_stock_opposition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_format_selector.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_formatting.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_framed_step_family_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_gdt_ink_shared.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_geometry_graph_spike.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_grid_lattice_convention.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_groove_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_groove_profile.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_gusset_rib_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_hole_table.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_import_boundaries.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_inspection_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_ir_foundation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_iso_detail_growth.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_iso_layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_iso_nts_caption_placement.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_isometric_orientation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_isometric_placement.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1000_envelope_reuse.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1006_measurement_comparison.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1058_wheel_profile.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1073_cross_body_patterns.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1082_polygonal_stock.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1086_declared_gears.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1126_requesting_less_never_scores_better.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1132_turned_profile_span_is_reported.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1142_hole_leader_labels.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1143_hole_completeness.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1144_transactional_hole_table.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1146_scale_completeness.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1147_legibility_pair_aggregation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1153_contradictory_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1154_one_owner_per_measurement.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1157_no_implicit_general_tolerance.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1166_cross_pass_feature_leaders.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1176_quality_fidelity.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1177_angular_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1187_unroutable_leaders.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1188_per_view_assignment.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1190_section_decision.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1196_deterministic_view_names.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1202_observed_drawing_consumer.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1204_multiscale_view_issues.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1209_linear_pmi_witnesses.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1215_envelope_tolerance.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1215_no_approved_tolerance_is_dropped.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1216_callout_reservation_measures_ink.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1216_pairwise_across_scale_groups.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1217_claimed_representations.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1217_the_facility_is_shared.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1219_location_claims_its_own_axis.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1229_ledger_member_keying.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1240_iso_above_strip_visibility.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1245_passage_disposition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1246_prismatic_pocket_disposition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1247_angled_step_disposition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1254_turned_chamfers.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1260_view_constraints.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1276_turned_leader_targets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1281_turned_fillets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1308_machined_leader_analytics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1312_engine_costs.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1325_nominal_agreement.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1332_overlap_remedy.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1333_bounded_ink_repair.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1334_prevent_ink.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1336_grm03_ap242_pmi_fixture.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1349_precision_display.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1350_detected_takeover.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1351_structured_note_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1352_searchable_pdf_text.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1353_cnc_authoritative_workflow.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1357_framed_activation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1357_framed_boundary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1357_plural_turned_profiles.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1357_pmi_frame.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1360_thread_depth.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1369_hole_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1370_countersink_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1370_double_d_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1371_flat_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1371_polygonal_stock_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1373_plate_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1374_chamfer_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1374_fillet_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1374_turned_step_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1378_diameter_leader_targets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1392_recognisers_048.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1395_degenerate_iso_region.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1397_unverifiable_requirement_message.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1432_adoption.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1432_boundary_failures.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1432_oriented_slot_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1433_blend_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1450_boss_blend_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1466_dimension_options.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1466_semantic_sides.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1479_radius_leader_targets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1485_curved_pockets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1485_quiddity_024_boundary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1485_rounded_pockets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1505_diameter_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1505_short_axial_chains.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1511_turned_boss_heights.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1514_projection_safeguard.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1515_first_angle.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1516_dimension_text.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1517_through_indicator.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1518_explicit_rear.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1524_tolerance_magnitude.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1530_section_provenance.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1531_semantic_hole_counts.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1532_authored_section_examples.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1533_review_diagnostics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1534_build_progress.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1536_title_overflow.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1543_feature_schedules.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1543_schedule_requirements.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1544_frame_document_canary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1555_turned_recognition_format_invariance.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1560_envelope_axes.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1563_sheet_pmi_reconciliation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1585_title_block_date.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1593_title_block_keepout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1596_bolt_circle_corroboration.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1598_hex_pockets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1604_internal_section.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1612_frame_sergio_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1612_sheet_margins.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_1613_circular_channel.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_367_leader_ink.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_443_grm03_axial_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_563_placement_intent.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_676_polygonal_boss.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_676_polygonal_boss_declare.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_740_leader_assignment.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_798_floor_cardinality.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_798_material_field.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_798_silhouette_lint.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_827_real_part_canary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_883_location_identity.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_885_prismatic_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_909_sloped_profile.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_915_dense_case.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_916_pocket_leader.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_917_open_channel.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_924_zero_length_shoulders.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_955_height_contingency.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_issue_958_cross_solid_recognition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_label_provenance.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_cleanliness.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_constants.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_evidence_issue_1711.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_generalisation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_hypothesis.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_override_lane_issue_1757.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_override_side_issue_1757.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_property.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_layout_scheme.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_leader_footprint.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_leader_region_policy.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_box_cache.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_coverage_common.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_ink_overlap.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_reconciliation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_structural.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_suggestions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_lint_summary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_linting.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_location_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_location_vocabulary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_machined_feature_callouts.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_make_drawing_entrypoints.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_manufacturing_pmi_lowering.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_nested_recognition_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_nominal_step_pmi.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_note_verb.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_object_aspects.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_occupancy_boxes.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_occurrence_recognition_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_overall_height_coverage.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pad_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pad_rendering.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_paired_ramp_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_parameter_id.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_part_classification.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pattern_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pattern_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pitch_dim_footprint.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_place_dimension.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_plate_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pmi_common_labels.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pmi_datum_lowering.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pmi_gtol_lowering.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pmi_part21.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pmi_records.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pocket_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pocket_pattern_recognition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_polygonal_boss_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_pre_render_profile_choice.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_principal_profile_classifier.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_prismatic_boss_diameter.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_prismatic_classification.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_prismatic_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_private_test_attr_reads.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_private_test_imports.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_profile_angles.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_projection_symbol_default.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_quality_components.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_quiddity_lifecycle_boundary.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_real_part_fixtures.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recogniser_adoption.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recogniser_capabilities.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recogniser_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recogniser_policy.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recogniser_step_inventory.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recognition_boundary_failures.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recognition_evidence_schema.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recognition_policy_dispositions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_recognition_result.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_refactor_golden.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_registry.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_remaining_ink_overlaps.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_render_seam.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_repack_geometry_seam.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_repair.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_replay_assessment_issue_1715.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_report_projection.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_report_status_reasons_issue_1618.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_report_writer.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_requirement_applicability.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_requirement_carriers.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_requirement_catalog.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_requirement_catalog_families.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_requirement_dimension_sharing.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_scale_policy.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_scale_selection.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_score.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_script_detail_parity.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_section_hatching.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_section_recess_contract.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_section_recess_pockets.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_shared_box_memo.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_shared_drawing_cache.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_fallback_issue_1797.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_furniture.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_gdt.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_generation_snapshot.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_identity_invariant.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_notes.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_of.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_section.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_sheet_tables.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_slanted_blind_step.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_slot_pattern_recognition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_slot_recognition.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_soft_deprecation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_solve_trace.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_source_shape.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_step_analysis_evaluation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_step_profile_grouping.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_strip_layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_strip_zones.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_suite_shape.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_suppression_ledger.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_suppression_marks.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_through_step_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_through_step_semantics.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_title_block_units_format.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_tolerances.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_turned_diameters.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_turned_lengths.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_turned_step_ownership.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_turned_steps.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_two_pass_layout.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_typ_dimensions.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_version_bump_ci.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_view_blocks.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_view_coordinates.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_witness_label_reconciliation.py +0 -0
- {draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/tests/test_workflows.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: draftwright
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0rc7
|
|
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
|
|
@@ -867,6 +867,10 @@ A location intent's precision applies to all its selected directional values, in
|
|
|
867
867
|
side-drilled holes and slots. The policy survives generated-script replay. When several
|
|
868
868
|
location intents share one coincident mark, give them matching display precision; incompatible
|
|
869
869
|
printed values raise an actionable error instead of silently choosing one intent's label.
|
|
870
|
+
For a diameter that references an imported knurl maximum, the numeric value sets a
|
|
871
|
+
minimum number of decimal places: `format(decimals=1)` cannot print `ø10.05` as
|
|
872
|
+
`ø10.1`. The numeric PMI fields are floats; this policy does not preserve trailing
|
|
873
|
+
zeroes from the retained source prose.
|
|
870
874
|
|
|
871
875
|
|
|
872
876
|
::: draftwright.sheet.DimensionIntent
|
|
@@ -261,6 +261,18 @@ def _radial_axis_in_view(axis: str, view: str) -> str:
|
|
|
261
261
|
raise ValueError(f"no radial axis for shaft axis {axis!r} in view {view!r}") from e
|
|
262
262
|
|
|
263
263
|
|
|
264
|
+
def _cylindrical_finish_site(reference):
|
|
265
|
+
"""Preferred visible site for one external orthographic cylinder finish."""
|
|
266
|
+
axis = reference.principal_axis.lower()
|
|
267
|
+
if reference.sense != "external" or axis not in _EDGE_ON:
|
|
268
|
+
return None
|
|
269
|
+
view = _EDGE_ON[axis]
|
|
270
|
+
radial = _radial_axis_in_view(axis, view)
|
|
271
|
+
site = list(reference.midpoint)
|
|
272
|
+
site["xyz".index(radial)] += reference.radius
|
|
273
|
+
return (tuple(site), view, "above" if radial == "z" else "right")
|
|
274
|
+
|
|
275
|
+
|
|
264
276
|
def _canonical_profile_site(site, centre, axis: str, view: str) -> tuple[float, float, float]:
|
|
265
277
|
"""Rotate a turned surface *site* about its shaft onto the selected profile plane.
|
|
266
278
|
|
|
@@ -641,6 +653,11 @@ def _boxes_overlap(a, b) -> bool:
|
|
|
641
653
|
return bool(a[0] < b[2] and a[2] > b[0] and a[1] < b[3] and a[3] > b[1])
|
|
642
654
|
|
|
643
655
|
|
|
656
|
+
def detail_caption_text_gap(font_size: float) -> float:
|
|
657
|
+
"""Minimum page-space gap between a detail caption and another label."""
|
|
658
|
+
return font_size / 3.0
|
|
659
|
+
|
|
660
|
+
|
|
644
661
|
def _segment_crosses_box(p1, p2, box) -> bool:
|
|
645
662
|
"""True when line segment *p1*-*p2* intersects axis-aligned *box*
|
|
646
663
|
``(x0, y0, x1, y1)`` — the precise counterpart of ``_box_hits`` for a
|
|
@@ -1027,6 +1044,62 @@ def material_span(p, q, field: MaterialField) -> float:
|
|
|
1027
1044
|
)
|
|
1028
1045
|
|
|
1029
1046
|
|
|
1047
|
+
def label_on_narrow_material(box, field: MaterialField) -> bool:
|
|
1048
|
+
"""Whether text covers material too close to its projected boundary.
|
|
1049
|
+
|
|
1050
|
+
A projected edge can miss a text box by a fraction of a millimetre while
|
|
1051
|
+
the glyphs still fill a thin shaft. A broad face keeps room around the box.
|
|
1052
|
+
Probe both centre lines and half the shorter label extent beyond each edge; the
|
|
1053
|
+
material field is the same one used for leader routing. An edge of a broad
|
|
1054
|
+
face alone is not a narrow shaft: the local material band across the label's
|
|
1055
|
+
short axis must also be less than three short-axis extents.
|
|
1056
|
+
"""
|
|
1057
|
+
if not field or field.box is None:
|
|
1058
|
+
return False
|
|
1059
|
+
x0, y0, x1, y1 = box
|
|
1060
|
+
width, height = x1 - x0, y1 - y0
|
|
1061
|
+
if width <= 0.0 or height <= 0.0:
|
|
1062
|
+
return False
|
|
1063
|
+
x = (x0 + x1) / 2.0
|
|
1064
|
+
y = (y0 + y1) / 2.0
|
|
1065
|
+
if (
|
|
1066
|
+
material_span((x0, y), (x1, y), field) < width - MATERIAL_VISIBLE_FLOOR
|
|
1067
|
+
or material_span((x, y0), (x, y1), field) < height - MATERIAL_VISIBLE_FLOOR
|
|
1068
|
+
):
|
|
1069
|
+
return False
|
|
1070
|
+
short = min(width, height)
|
|
1071
|
+
if width <= height:
|
|
1072
|
+
p, q, centre = (field.box[0], y), (field.box[2], y), x
|
|
1073
|
+
axis = 0
|
|
1074
|
+
else:
|
|
1075
|
+
p, q, centre = (x, field.box[1]), (x, field.box[3]), y
|
|
1076
|
+
axis = 1
|
|
1077
|
+
span = q[axis] - p[axis]
|
|
1078
|
+
if span <= 0.0:
|
|
1079
|
+
return False
|
|
1080
|
+
centre_tick = round((centre - p[axis]) / span * _MATERIAL_SPAN_TICKS)
|
|
1081
|
+
local_band = next(
|
|
1082
|
+
(
|
|
1083
|
+
span * (hi - lo) / _MATERIAL_SPAN_TICKS
|
|
1084
|
+
for lo, hi in material_intervals(p, q, field)
|
|
1085
|
+
if lo <= centre_tick <= hi
|
|
1086
|
+
),
|
|
1087
|
+
None,
|
|
1088
|
+
)
|
|
1089
|
+
if local_band is None or local_band >= 3.0 * short:
|
|
1090
|
+
return False
|
|
1091
|
+
margin = short / 2.0
|
|
1092
|
+
return any(
|
|
1093
|
+
material_span(p, q, field) < margin - MATERIAL_VISIBLE_FLOOR
|
|
1094
|
+
for p, q in (
|
|
1095
|
+
((x0 - margin, y), (x0, y)),
|
|
1096
|
+
((x1, y), (x1 + margin, y)),
|
|
1097
|
+
((x, y0 - margin), (x, y0)),
|
|
1098
|
+
((x, y1), (x, y1 + margin)),
|
|
1099
|
+
)
|
|
1100
|
+
)
|
|
1101
|
+
|
|
1102
|
+
|
|
1030
1103
|
def material_intervals(
|
|
1031
1104
|
p, q, field: MaterialField, *, bridge: float = 0.0
|
|
1032
1105
|
) -> tuple[tuple[int, int], ...]:
|
|
@@ -898,7 +898,9 @@ def _reroute_crossing_diameters(dwg, *, ctx, material_penalty) -> int:
|
|
|
898
898
|
# axis. The far axial margin is deliberately NOT a candidate — a leader run
|
|
899
899
|
# the whole length of the part to the opposite end reads worse than the
|
|
900
900
|
# near-miss it replaces; restore-and-flag is the honest fallback instead.
|
|
901
|
-
|
|
901
|
+
toward_lo = tip[ax] - lo_b <= hi_b - tip[ax]
|
|
902
|
+
near_a = lo_b - gap if toward_lo else hi_b + gap
|
|
903
|
+
edge_a = lo_b - draft.pad_around_text if toward_lo else hi_b + draft.pad_around_text
|
|
902
904
|
|
|
903
905
|
def _pt(a_val, r_val, _ax=ax):
|
|
904
906
|
p = [0.0, 0.0]
|
|
@@ -907,6 +909,7 @@ def _reroute_crossing_diameters(dwg, *, ctx, material_penalty) -> int:
|
|
|
907
909
|
|
|
908
910
|
candidates = (
|
|
909
911
|
_pt(near_a, tip[rad]),
|
|
912
|
+
_pt(edge_a, tip[rad]),
|
|
910
913
|
_pt(tip[ax], fb[rad] - gap),
|
|
911
914
|
_pt(tip[ax], fb[rad + 2] + gap),
|
|
912
915
|
)
|
|
@@ -18,7 +18,7 @@ from draftwright._core import (
|
|
|
18
18
|
_text_line_spacing_em,
|
|
19
19
|
_text_size,
|
|
20
20
|
)
|
|
21
|
-
from draftwright._geometry import _turned_profile_site
|
|
21
|
+
from draftwright._geometry import _turned_profile_site, material_span
|
|
22
22
|
from draftwright.annotations._common import (
|
|
23
23
|
PRIORITY,
|
|
24
24
|
CorridorCandidate,
|
|
@@ -287,9 +287,48 @@ def _gdt_visual_tolerance(glyph, draft, zone: str, *, modifier: bool = False) ->
|
|
|
287
287
|
return ""
|
|
288
288
|
|
|
289
289
|
|
|
290
|
+
def _gdt_visual_finish(glyph, draft, value: str) -> str:
|
|
291
|
+
"""Trust a finish value only when its glyph faces spell that value."""
|
|
292
|
+
try:
|
|
293
|
+
expected = Text(
|
|
294
|
+
value,
|
|
295
|
+
font_size=draft.font_size,
|
|
296
|
+
font=getattr(draft, "font", "Arial"),
|
|
297
|
+
font_path=getattr(draft, "font_path", DEFAULT_FONT_PATH),
|
|
298
|
+
align=(Align.MIN, Align.MIN),
|
|
299
|
+
mode=Mode.PRIVATE,
|
|
300
|
+
)
|
|
301
|
+
x0, y0, x1, y1 = glyph.label_bbox
|
|
302
|
+
box = expected.bounding_box()
|
|
303
|
+
expected = expected.moved(Location(Vector(x0 - box.min.X, y0 - box.min.Y, 0)))
|
|
304
|
+
tolerance = max(1e-3, draft.font_size * 1e-3)
|
|
305
|
+
faces = [
|
|
306
|
+
face
|
|
307
|
+
for face in glyph.faces()
|
|
308
|
+
if (face_box := face.bounding_box()).min.X >= x0 - tolerance
|
|
309
|
+
and face_box.max.X <= x1 + tolerance
|
|
310
|
+
and face_box.min.Y >= y0 - tolerance
|
|
311
|
+
and face_box.max.Y <= y1 + tolerance
|
|
312
|
+
]
|
|
313
|
+
if not faces:
|
|
314
|
+
return ""
|
|
315
|
+
actual = Sketch(children=faces)
|
|
316
|
+
area_tolerance = max(1e-8, draft.font_size**2 * 1e-8)
|
|
317
|
+
if (
|
|
318
|
+
_cut_area(expected.cut(actual)) <= area_tolerance
|
|
319
|
+
and _cut_area(actual.cut(expected)) <= area_tolerance
|
|
320
|
+
):
|
|
321
|
+
return value
|
|
322
|
+
except Exception:
|
|
323
|
+
return ""
|
|
324
|
+
return ""
|
|
325
|
+
|
|
326
|
+
|
|
290
327
|
def _attach_gdt_text_evidence(leader, glyph, item, draft) -> None:
|
|
291
328
|
"""Keep the placed glyph's value beside PDF text for independent PMI lint."""
|
|
292
329
|
leader.pdf_text_relative_specs = _gdt_pdf_text_specs(glyph, item, draft)
|
|
330
|
+
if item.kind == "finish":
|
|
331
|
+
leader.gdt_visual_finish = _gdt_visual_finish(glyph, draft, item.ra)
|
|
293
332
|
if item.kind == "control_frame":
|
|
294
333
|
zone = _gdt_visual_zone(glyph, draft)
|
|
295
334
|
leader.gdt_visual_tolerance = _gdt_visual_tolerance(
|
|
@@ -310,6 +349,25 @@ def _gdt_retry_sides(side: str, *, normal_side_only: bool) -> tuple[str, ...]:
|
|
|
310
349
|
}[side]
|
|
311
350
|
|
|
312
351
|
|
|
352
|
+
def _datum_label_has_whitespace(label, strip, horizontal, field) -> bool:
|
|
353
|
+
"""A local datum glyph must clear projected material or sit beyond the view."""
|
|
354
|
+
x0, y0, x1, y1 = label
|
|
355
|
+
if horizontal:
|
|
356
|
+
outside = y1 <= strip.anchor if strip.direction < 0 else y0 >= strip.anchor
|
|
357
|
+
else:
|
|
358
|
+
outside = x1 <= strip.anchor if strip.direction < 0 else x0 >= strip.anchor
|
|
359
|
+
if outside:
|
|
360
|
+
return True
|
|
361
|
+
if not field:
|
|
362
|
+
return False
|
|
363
|
+
# The shared view-edge guard rejects partial boundary crossings. These
|
|
364
|
+
# interior probes reject a glyph sitting wholly on a blank projected face.
|
|
365
|
+
return all(
|
|
366
|
+
material_span((x0, y), (x1, y), field) <= 1e-6
|
|
367
|
+
for y in (y0 + (y1 - y0) * 0.1, (y0 + y1) / 2.0, y1 - (y1 - y0) * 0.1)
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
|
|
313
371
|
def _gdt_retry_geometry(state, tier, alt):
|
|
314
372
|
"""Give the deferred carve its strip and glyph extent."""
|
|
315
373
|
alt_strip = getattr(state.zones, alt, None)
|
|
@@ -479,8 +537,57 @@ def _gdt_drop_callback(
|
|
|
479
537
|
return _drop
|
|
480
538
|
|
|
481
539
|
|
|
540
|
+
def _gdt_compact_candidates(
|
|
541
|
+
original, build, strip, size, horizontal, item, site, tier, material_field
|
|
542
|
+
):
|
|
543
|
+
"""Nearest-first same-strip landings checked later against exact ink.
|
|
544
|
+
|
|
545
|
+
Dimension extension lines make their conservative boxes intentionally
|
|
546
|
+
broad. A GD&T leader may pass through the empty part of such a box, so
|
|
547
|
+
the corridor result is an upper bound rather than necessarily the best
|
|
548
|
+
landing. Keep this search finite and inside the requested strip.
|
|
549
|
+
"""
|
|
550
|
+
if original is None:
|
|
551
|
+
return
|
|
552
|
+
original_pos = original.elbow[1 if horizontal else 0]
|
|
553
|
+
extent = size[1 if horizontal else 0]
|
|
554
|
+
if item.kind == "datum_ref" and item.reference_surface_kind:
|
|
555
|
+
# A whole-view strip can be far from a small datum face. First try
|
|
556
|
+
# bounded positions between the face and that strip, while keeping
|
|
557
|
+
# the shaft on the proven surface normal. The shared postsolve
|
|
558
|
+
# checks the complete glyph, view edges and settled annotation ink.
|
|
559
|
+
distance = (original_pos - site) * strip.direction
|
|
560
|
+
first = extent / 2.0 + 1.0
|
|
561
|
+
step = max(tier / 2.0, 1.0)
|
|
562
|
+
for index in range(min(12, max(0, int((distance - first) / step) + 1))):
|
|
563
|
+
travel = first + index * step
|
|
564
|
+
if travel >= distance - 1e-6:
|
|
565
|
+
break
|
|
566
|
+
pos = site + strip.direction * travel
|
|
567
|
+
candidate = build(pos)
|
|
568
|
+
# A symbol inside the whole-view box must sit in projected
|
|
569
|
+
# whitespace, not on a blank face with no visible edge. The
|
|
570
|
+
# shared postsolve also checks visible edges and exact ink.
|
|
571
|
+
if _datum_label_has_whitespace(
|
|
572
|
+
candidate.label_bbox, strip, horizontal, material_field
|
|
573
|
+
):
|
|
574
|
+
yield candidate
|
|
575
|
+
near = strip.anchor + strip.direction * (strip.gap + extent / 2.0)
|
|
576
|
+
distance = (original_pos - near) * strip.direction
|
|
577
|
+
if distance <= 1e-6:
|
|
578
|
+
return
|
|
579
|
+
step = max(tier + strip.spacing, 1.0)
|
|
580
|
+
count = min(64, int(math.ceil(distance / step)) + 1)
|
|
581
|
+
for index in range(count):
|
|
582
|
+
travel = min(distance, index * step)
|
|
583
|
+
pos = near + strip.direction * travel
|
|
584
|
+
if abs(pos - original_pos) <= 1e-6:
|
|
585
|
+
return
|
|
586
|
+
yield build(pos)
|
|
587
|
+
|
|
588
|
+
|
|
482
589
|
def _gdt_candidate_builders(
|
|
483
|
-
item, draft, leader_ctor, fallback_glyph, px, py, horizontal, strip, size, tier
|
|
590
|
+
item, draft, leader_ctor, fallback_glyph, px, py, horizontal, strip, size, tier, material_field
|
|
484
591
|
):
|
|
485
592
|
"""Build one glyph's primary and fallback leaders plus bounded strip retries."""
|
|
486
593
|
|
|
@@ -569,36 +676,18 @@ def _gdt_candidate_builders(
|
|
|
569
676
|
_attach_gdt_text_evidence(leader, _g, _it, draft)
|
|
570
677
|
return leader
|
|
571
678
|
|
|
572
|
-
def _compact_candidates(
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
landing. Keep this search finite and inside the requested strip.
|
|
585
|
-
"""
|
|
586
|
-
if original is None:
|
|
587
|
-
return
|
|
588
|
-
original_pos = original.elbow[1 if _horizontal else 0]
|
|
589
|
-
extent = _size[1 if _horizontal else 0]
|
|
590
|
-
near = _strip.anchor + _strip.direction * (_strip.gap + extent / 2.0)
|
|
591
|
-
distance = (original_pos - near) * _strip.direction
|
|
592
|
-
if distance <= 1e-6:
|
|
593
|
-
return
|
|
594
|
-
step = max(tier + _strip.spacing, 1.0)
|
|
595
|
-
count = min(64, int(math.ceil(distance / step)) + 1)
|
|
596
|
-
for index in range(count):
|
|
597
|
-
travel = min(distance, index * step)
|
|
598
|
-
pos = near + _strip.direction * travel
|
|
599
|
-
if abs(pos - original_pos) <= 1e-6:
|
|
600
|
-
return
|
|
601
|
-
yield _build(pos)
|
|
679
|
+
def _compact_candidates(original):
|
|
680
|
+
return _gdt_compact_candidates(
|
|
681
|
+
original,
|
|
682
|
+
_build,
|
|
683
|
+
strip,
|
|
684
|
+
size,
|
|
685
|
+
horizontal,
|
|
686
|
+
item,
|
|
687
|
+
py if horizontal else px,
|
|
688
|
+
tier,
|
|
689
|
+
material_field,
|
|
690
|
+
)
|
|
602
691
|
|
|
603
692
|
def _ink_repair_candidates(
|
|
604
693
|
original,
|
|
@@ -698,7 +787,7 @@ def render_gdt(
|
|
|
698
787
|
# Prefer the one nearest this strip's anchor; the farther datum retains
|
|
699
788
|
# the ordinary side/sheet fallback if its first corridor becomes full.
|
|
700
789
|
datum_stem_rank = 0
|
|
701
|
-
if item.kind == "datum_ref":
|
|
790
|
+
if item.kind == "datum_ref" and strip is not None:
|
|
702
791
|
perp, stack = (px, py) if horizontal else (py, px)
|
|
703
792
|
distance = abs(stack - strip.anchor)
|
|
704
793
|
for other in items:
|
|
@@ -733,6 +822,12 @@ def render_gdt(
|
|
|
733
822
|
)
|
|
734
823
|
continue
|
|
735
824
|
size = (gb.X, gb.Y)
|
|
825
|
+
placed_view = dwg.views.get(item.view)
|
|
826
|
+
field = (
|
|
827
|
+
dwg.material_fields().get(id(placed_view[0]))
|
|
828
|
+
if item.kind == "datum_ref" and item.reference_surface_kind and placed_view
|
|
829
|
+
else None
|
|
830
|
+
)
|
|
736
831
|
|
|
737
832
|
(
|
|
738
833
|
_build,
|
|
@@ -741,7 +836,17 @@ def render_gdt(
|
|
|
741
836
|
_compact_candidates,
|
|
742
837
|
_ink_repair_candidates,
|
|
743
838
|
) = _gdt_candidate_builders(
|
|
744
|
-
item,
|
|
839
|
+
item,
|
|
840
|
+
draft,
|
|
841
|
+
leader_ctor,
|
|
842
|
+
fallback_glyph,
|
|
843
|
+
px,
|
|
844
|
+
py,
|
|
845
|
+
horizontal,
|
|
846
|
+
strip,
|
|
847
|
+
size,
|
|
848
|
+
tier,
|
|
849
|
+
field,
|
|
745
850
|
)
|
|
746
851
|
|
|
747
852
|
_drop = _gdt_drop_callback(
|
|
@@ -128,8 +128,19 @@ def register_height_ladder_candidates(
|
|
|
128
128
|
_tolerances = {c[0]: c[8] for c in chain}
|
|
129
129
|
|
|
130
130
|
names = [c[0] for c in chain]
|
|
131
|
+
side_right_space = (
|
|
132
|
+
frame.zones("side").right.outer_limit - frame.zones("side").right.anchor
|
|
133
|
+
if "side" in dwg.views
|
|
134
|
+
else float("inf")
|
|
135
|
+
)
|
|
136
|
+
overall_side = (
|
|
137
|
+
"left"
|
|
138
|
+
if side_right_space < frame.zones(view).right.outer_limit - frame.zones(view).right.anchor
|
|
139
|
+
and frame.zones(view).left.anchor - frame.zones(view).left.outer_limit >= tier
|
|
140
|
+
else "right"
|
|
141
|
+
)
|
|
131
142
|
sides = {
|
|
132
|
-
name: (overall.rungs[0].side or
|
|
143
|
+
name: (overall.rungs[0].side or overall_side)
|
|
133
144
|
if name == "dim_height" and overall is not None
|
|
134
145
|
else "right"
|
|
135
146
|
for name in names
|
{draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_leader_fixed_ink.py
RENAMED
|
@@ -357,9 +357,8 @@ def _fixed_ink_hull(polygon):
|
|
|
357
357
|
return hull if len(hull) >= 3 else None
|
|
358
358
|
|
|
359
359
|
|
|
360
|
-
def
|
|
361
|
-
"""
|
|
362
|
-
|
|
360
|
+
def _reserved_fixed_ink(dwg, name, annotation, max_components):
|
|
361
|
+
"""Return a complete block reservation when the annotation owns one."""
|
|
363
362
|
if isinstance(annotation, DerivedViewReservation):
|
|
364
363
|
# A future required view owns its entire planned rectangle, not merely
|
|
365
364
|
# the strokes it will eventually draw. Keep it hard even in the bounded
|
|
@@ -371,6 +370,27 @@ def _annotation_fixed_ink(dwg, name, annotation, *, max_components=None):
|
|
|
371
370
|
),
|
|
372
371
|
)
|
|
373
372
|
|
|
373
|
+
if getattr(annotation, "table_rows", None) is not None:
|
|
374
|
+
# A table reserves its cells as a block. Individual glyph/line faces leave
|
|
375
|
+
# apparently free pockets where another annotation can cross a cell.
|
|
376
|
+
if max_components is not None and max_components < 1:
|
|
377
|
+
return _FIXED_INVENTORY_EXHAUSTED
|
|
378
|
+
box = _coerce_box(_geom_box(annotation, getattr(dwg, "box_cache", None)))
|
|
379
|
+
if box is None:
|
|
380
|
+
if max_components is not None:
|
|
381
|
+
return _FIXED_INVENTORY_EXHAUSTED
|
|
382
|
+
box = (0.0, 0.0, float(dwg.page_w), float(dwg.page_h))
|
|
383
|
+
return (_FixedInkComponent(f"{name}:table", box=box, kind="Table"),)
|
|
384
|
+
return None
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
def _annotation_fixed_ink(dwg, name, annotation, *, max_components=None):
|
|
388
|
+
"""Exact-width fixed ink components for one already-rendered annotation."""
|
|
389
|
+
|
|
390
|
+
reserved = _reserved_fixed_ink(dwg, name, annotation, max_components)
|
|
391
|
+
if reserved is not None:
|
|
392
|
+
return reserved
|
|
393
|
+
|
|
374
394
|
components: list[_FixedInkComponent] = []
|
|
375
395
|
owner = dwg.registry.feature_of(name)
|
|
376
396
|
kind = type(annotation).__name__
|
{draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_machined_leaders.py
RENAMED
|
@@ -14,6 +14,7 @@ from typing import Any
|
|
|
14
14
|
|
|
15
15
|
from build123d_drafting.helpers import DEFAULT_FONT_PATH
|
|
16
16
|
|
|
17
|
+
from draftwright.annotations._placement_occupancy import label_clears_foreign_annotations
|
|
17
18
|
from draftwright.annotations.leaders import (
|
|
18
19
|
FeatureLeaderCandidate,
|
|
19
20
|
FeatureLeaderJob,
|
|
@@ -39,7 +40,6 @@ class MachinedLeaderBindings:
|
|
|
39
40
|
collect_feature_leader: Callable
|
|
40
41
|
place_feature_leader_jobs: Callable[..., int]
|
|
41
42
|
attribute_annotations: Callable
|
|
42
|
-
boxes_overlap: Callable
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
@dataclass
|
|
@@ -75,14 +75,8 @@ class _MachinedJobContext:
|
|
|
75
75
|
for _name, owner, box, has_label in self.bindings.attribute_annotations(self.dwg)
|
|
76
76
|
if owner != view
|
|
77
77
|
)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return not any(
|
|
81
|
-
self.bindings.boxes_overlap(
|
|
82
|
-
padded,
|
|
83
|
-
(box[0] - pad, box[1] - pad, box[2] + pad, box[3] + pad) if has_label else box,
|
|
84
|
-
)
|
|
85
|
-
for box, has_label in self.foreign_boxes_by_view[view]
|
|
78
|
+
return label_clears_foreign_annotations(
|
|
79
|
+
label, self.foreign_boxes_by_view[view], self.dwg.draft.pad_around_text
|
|
86
80
|
)
|
|
87
81
|
|
|
88
82
|
def lower(self, row) -> FeatureLeaderJob:
|
{draftwright-0.5.0rc5 → draftwright-0.5.0rc7}/src/draftwright/annotations/_placement_occupancy.py
RENAMED
|
@@ -6,6 +6,7 @@ Shared by corridor placement, late furniture, and the isometric fit.
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
8
|
import math
|
|
9
|
+
from collections.abc import Iterable
|
|
9
10
|
from itertools import chain
|
|
10
11
|
|
|
11
12
|
from build123d_drafting.helpers import Dimension, Leader, Note, SafeDimension
|
|
@@ -713,3 +714,21 @@ def view_label_clearance(dwg, view):
|
|
|
713
714
|
return None
|
|
714
715
|
entries = _view_edge_entries(placed[0], {})
|
|
715
716
|
return lambda box: entries is not None and not _edges_intersect_rect(entries, box)
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
def label_clears_foreign_annotations(
|
|
720
|
+
box: tuple[float, float, float, float],
|
|
721
|
+
foreign_boxes: Iterable[tuple[tuple[float, float, float, float], bool]],
|
|
722
|
+
pad: float,
|
|
723
|
+
) -> bool:
|
|
724
|
+
"""Keep a candidate label clear of another view's settled text and ink."""
|
|
725
|
+
protected = (box[0] - pad, box[1] - pad, box[2] + pad, box[3] + pad)
|
|
726
|
+
return not any(
|
|
727
|
+
_boxes_overlap(
|
|
728
|
+
protected,
|
|
729
|
+
(other[0] - pad, other[1] - pad, other[2] + pad, other[3] + pad)
|
|
730
|
+
if has_label
|
|
731
|
+
else other,
|
|
732
|
+
)
|
|
733
|
+
for other, has_label in foreign_boxes
|
|
734
|
+
)
|
|
@@ -49,7 +49,6 @@ from draftwright._core import (
|
|
|
49
49
|
layout_frame,
|
|
50
50
|
)
|
|
51
51
|
from draftwright._geometry import (
|
|
52
|
-
_boxes_overlap,
|
|
53
52
|
_segment_clips_box,
|
|
54
53
|
)
|
|
55
54
|
from draftwright.annotations._axial_render import (
|
|
@@ -708,7 +707,6 @@ def place_machined_leader_jobs(
|
|
|
708
707
|
collect_feature_leader=collect_feature_leader,
|
|
709
708
|
place_feature_leader_jobs=place_feature_leader_jobs,
|
|
710
709
|
attribute_annotations=_attribute_annotations,
|
|
711
|
-
boxes_overlap=_boxes_overlap,
|
|
712
710
|
),
|
|
713
711
|
)
|
|
714
712
|
|