draftwright 0.5.0rc2__tar.gz → 0.5.0rc3__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.0rc2 → draftwright-0.5.0rc3}/CHANGELOG.md +20 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/PKG-INFO +3 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/README.md +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/pyproject.toml +10 -6
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/skills/SKILL.md +20 -23
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_build_profile.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_core.py +5 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_geometry.py +4 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/analysis.py +6 -6
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotate.py +3 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_axial_render.py +2 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_common.py +6 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_diameters.py +27 -10
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_envelope.py +6 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_locations.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_machined_leaders.py +3 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_patterns.py +2 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_pmi_dimensions.py +12 -12
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_slots.py +4 -9
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_step_lengths.py +5 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/angular.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/balloons.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/from_model.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/hole_locations.py +2 -12
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/holes.py +5 -11
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/leaders.py +27 -17
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/routed.py +6 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/sections.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/audit.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/build_once.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/builder.py +35 -23
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/compose.py +3 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/drawing.py +773 -152
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/drawing_diagnostics.py +9 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/drawing_evidence.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/drawing_export.py +12 -97
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_edge_profile_evidence.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_pocket_evidence.py +4 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_turned_step_evidence.py +2 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/step_analysis.py +4 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/export.py +7 -12
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/layout.py +4 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/layout_selection.py +5 -6
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/angular.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/blend_coverage.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/boss_coverage.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/coverage.py +10 -7
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/envelope_coverage.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/gear_coverage.py +4 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/hole_coverage.py +12 -14
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/orchestration.py +5 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/quality.py +2 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/rectangular_blind_slot_coverage.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/round_bottom_blind_slot_coverage.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/structural.py +33 -7
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/through_step_coverage.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/make_drawing.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/declare.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/detect.py +4 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/ir.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/planner.py +3 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/pmi_lowering.py +9 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/pdf_text.py +28 -18
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/pmi.py +34 -13
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/profile_angles.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/projection.py +5 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recognition_ownership.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/repair.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/reporting.py +1 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/section_recess_contract.py +4 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet.py +2 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet_emit.py +2 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet_views.py +2 -2
- draftwright-0.5.0rc3/tests/_complexity_baseline.json +149 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_tier_manifest.py +305 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_adr_corpus.py +30 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_annotation_box_composition.py +5 -10
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_annotation_box_corpus.py +4 -4
- draftwright-0.5.0rc3/tests/test_architecture_docs.py +53 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_build_drawing_entrypoints.py +26 -17
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_circular_blind_step_semantics.py +26 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_compiled_plan_boundary.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_compose_then_pack.py +7 -7
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_declare.py +5 -10
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_declared_recognition_gate.py +1 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_deprecation_dates.py +34 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_diameter_leaders.py +85 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_document_build.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_drawing_encapsulation.py +79 -5
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_export_formats.py +18 -98
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_feature_leader_candidate_regions.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_gdt_placement.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_hole_annotations.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_import_boundaries.py +197 -47
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1058_wheel_profile.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1166_cross_pass_feature_leaders.py +67 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1176_quality_fidelity.py +7 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1215_envelope_tolerance.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1215_no_approved_tolerance_is_dropped.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1298_manufacturing_requirements.py +0 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1352_searchable_pdf_text.py +8 -6
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1370_double_d_completeness_evidence.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1531_semantic_hole_counts.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_740_leader_assignment.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_798_material_field.py +2 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_798_silhouette_lint.py +44 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_916_pocket_leader.py +11 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_override_lane_issue_1757.py +0 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_safety.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_scheme.py +3 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_summary.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_location_dimensions.py +3 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_note_verb.py +0 -10
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pitch_dim_footprint.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pmi.py +96 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pmi_records.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pocket_completeness_evidence.py +1 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pocket_pattern_recognition.py +6 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_private_test_attr_reads.py +6 -7
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_quality_components.py +4 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_requirement_catalog.py +3 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_emit.py +9 -10
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_section.py +4 -1
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_tables.py +5 -3
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_slot_recognition.py +2 -1
- draftwright-0.5.0rc3/tests/test_source_shape.py +239 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_strip_layout.py +15 -13
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_tier_manifest.py +82 -4
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_turned_diameters.py +48 -12
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_turned_steps.py +2 -2
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_workflows.py +8 -0
- draftwright-0.5.0rc2/src/draftwright/drawing_edits.py +0 -863
- draftwright-0.5.0rc2/tests/test_architecture_docs.py +0 -28
- draftwright-0.5.0rc2/tests/test_source_shape.py +0 -104
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/.gitignore +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/LICENSE +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/docs/adr/README.md +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/docs/reference/recogniser-capabilities.md +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/docs/reference/sheet.md +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/docs/research/1062-repeating-radial-profile-evidence.md +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_pmi_linear_geometry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_pmi_part21.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_pmi_schema.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_pmi_support_blockers.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/_warnings.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/angular_geometry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotation_layout_profile.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_circular_recesses.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_dimension_ink.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_dimension_ink_repair.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_edge_callouts.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_gdt.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_height_ladder.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_hole_leader_placement.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_leader_candidates.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_leader_commit.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_leader_fixed_ink.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_placement_geometry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_placement_occupancy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_pocket_pad.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_polygonal_prisms.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_strip_postsolve.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_thin_profiles.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/gears.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/hole_leader_candidates.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/orchestrator.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/solve_trace.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/auxiliary_layout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/blend_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/build_options.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/build_policy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/cli.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/contract_values.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/document.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/document_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/document_input.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/drawing_state.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/drawing_tables.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_double_d_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_flat_polygonal_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_groove_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_hole_family_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/evaluation/_prismatic_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/explicit_scale.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/feature_identity.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/fits.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/fonts/IBMPlexMono-Regular.ttf +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/fonts/IBMPlexSansCondensed-Regular.ttf +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/fonts/LICENSE-IBMPlexMono-OFL.txt +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/fonts/LICENSE-IBMPlexSansCondensed-OFL.txt +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/fonts/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/inspection.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/inspection_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/intent_drain.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/intent_routing.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/intents.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/layout_safety.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/layout_scheme.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/leader_policy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/_coverage_common.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/_registry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/angled_step_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/chamfer_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/channel_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/circular_blind_step_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/fillet_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/flat_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/groove_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/gusset_rib_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/ink_overlap.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/issues.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/oriented_slot_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/pad_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/paired_ramp_step_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/passage_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/plate_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/pmi_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/pocket_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/pocket_pattern_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/polygonal_boss_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/polygonal_stock_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/prismatic_pocket_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/profiled_bore_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/requirements.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/schedule_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/section_recess_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/slot_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/suggest.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/linting/turned_step_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/location_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/measurement_support.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/callout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/compiled.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/detect_inventory.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/detect_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/dimension_intent.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/ir_foundation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/manufacturing_schedule.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/model/oriented_slot_geometry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/obligations.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/oriented_slot_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/plate_correspondence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/progress.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/py.typed +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recogniser_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recogniser_policy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recogniser_schema.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recognition/__init__.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recognition_cache.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/recognition_frame.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/registry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/replay_assessment.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/score.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet_feature_lines.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet_features.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet_layout_controls.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/sheet_object_source.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/view_plan.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_burden_report.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_corpus_cover.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_drawing_helpers.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_evidence_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_kernel.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_layout_helpers.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_layout_sig.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_mutation_corpus.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_pad_rendering_fixtures.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_parts.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_pattern_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_recogniser_public_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_section_recess_cases.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/_unit_manifest.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/conftest.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/annotation-layout-corpus-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/annotation-layout-corpus-v2.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/annotation-layout-holdout-ftc09-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/annotation-layout-holdout-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/ap242_single_cylinder_diameter.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/README.md +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/ambiguous-open-semicircle.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/blind-hole.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-asymmetric.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-compound.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-overlap.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-plain.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-planar-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-planar-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-planar-z.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/chamfer-turned.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-chamfers-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-countersinks-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-double-d-bores-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-fillets-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-flats-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-grooves-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-hole-patterns-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-plates-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-pocket-patterns-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-pockets-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-polygonal-bosses-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-polygonal-stock-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-rectangular-pads-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-turned-steps-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/corpus-v1.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/countersink-deburr.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/countersink-external-cone.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/countersink-mixed-pair.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/countersink-single.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/countersink-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/countersink-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-axis-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-axis-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-blind.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-coaxial-compound.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-opposed-blind.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-roll-30.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-round-bore.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-single-z.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/double-d-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-compound.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-overlap.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-plain.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-planar-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-planar-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-planar-z.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-repeated.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/fillet-turned.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-coaxial.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-double-d.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-lone-d.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-nonround.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-slanted-double-d.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/flat-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-compound.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-lone-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-lone-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-lone-z.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-monotonic-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-narrow.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/groove-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-compound-equal.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-detached-body-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-full-span-ledge-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-nested-staircase-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-x-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-x-positive.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-y-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-y-positive.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-z-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pad-z-positive.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pattern-ambiguous.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pattern-grid.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pattern-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pattern-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plain-block.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-compound-equal.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-cross-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-cross-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-detached-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-rotational-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-single-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-t-xz.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-t-yz.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-thick-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-u-additive.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/plate-u-cut.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-compound.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-edge-anchored.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-lone.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-opposed.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-pattern-ambiguous.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-pattern-grid.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-pattern-linear.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-pattern-pair.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-pattern-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-pattern-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-prismatic-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-side.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-through-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/pocket-two-equal.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-compound-equal.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-detached-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-in-plane-rotated.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-other-protrusions-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-recess-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-stock-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-boss-z.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-compound-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-cylinder-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-irregular-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-octagon-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-recess-negative.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-roll17.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-translated.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/polygonal-stock-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-axis-x.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-axis-y.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-axis-z.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-compound.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-repeated-lengths.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-through-bore.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-topology-a.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-topology-b.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/evaluation/turned-step-translated-blind-bore.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/grm03_thumbwheel_drive_screw.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/grm03_thumbwheel_drive_screw_ap242_pmi.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/grm04_drive_plate.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/if_step_flat_across_cylinder.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/issue_1058_wheel_rh.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/issue_1247_angled_blind_step.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/issue_1595_whistle_key_frame.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/issue_1595_whistle_key_lever.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/issue_909_basic_part_design_017_body.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/issue_915_case_study_2.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_01_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_01_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_02_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_02_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_03_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_03_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_04_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_04_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_05_asme1_ap203.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ctc_05_asme1_ap242.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/nist_ftc_09_asme1_ap242-e1.stp +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/tuner_jig_blind_obround_pockets.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/fixtures/whistle_frame_reference.step +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/bracket_section.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/centered_rebate.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/chamfered.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/filleted.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/flange_dense.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/grid_plate.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/grooved_shaft.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/hex_bar.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/holed_slot.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/pocketed.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/prismatic_ladder.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/scattered_plate.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/side_drilled.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/refactor_golden/turned_stepped.json +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_add_dimension.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_adr0018_view_routing.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_adr0018_view_selection.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_agent_improvement_canary_issue_1716.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_agents_guide.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_analysis_geometry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_angle_patterns.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_angular_references.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_angular_rendering.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_annotation_layout_product.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_annotation_scheme_compare_script.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_annotation_scheme_corpus_script.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_annotation_scheme_shadow_script.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_api_docs.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_arrangement_gate.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_assessment_comparison_issue_1712.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_audit_differential.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_auxiliary_layout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_axial_dimensions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_balloon_ring_standoff.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_blind_slot_completeness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_blind_slot_semantics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_boss_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_build_profile_harness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_burden_report.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_candidate_evidence_issue_1726.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_candidate_preview_sheet_holdout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_canonical_angles.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_carve_free_position_callers.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_channel_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_cli_behavior.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_cli_report_sidecar.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_clone_budget.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_contract_values.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_corpus_cover.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_counting_calls.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_coverage_mode.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_declaration_identity_issue_1710.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_declaration_report_issue_1710.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_declared_report_issue_1688.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_deferred_edits.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_dense_sheet_canary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_depth_estimators.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_derived_view_integration.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_derived_view_planning.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_detail_views.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_detect_once.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_detect_registry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_diameter_deduplication.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_dimension_intent_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_dimension_lane_canary_issue_1757.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_dimension_role_vocabulary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_document_claim_authority.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_document_claims.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_document_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_document_report.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_document_report_authority.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_drawing_operations.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_drawing_state.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_dynamic_corridors.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_e2e_slice.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_e2e_standards.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_envelope_view_route_issue_1813.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_equivalent_dimension_presentations_issue_1759.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_export_dxf_curves.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_export_dxf_zoom.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_export_reproducible.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_export_shape.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_external_recognition_boundary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_feature_edit_corridors.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_feature_edit_replay.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_feature_edit_verbs.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_feature_provenance.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_feature_queries.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_fillets_adjacency.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_fit_calculations.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_fits.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_flat_callout_precision.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_flat_completeness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_flat_stock_identity.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_flat_stock_opposition.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_format_selector.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_formatting.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_framed_step_family_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_gdt_ink_shared.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_geometry_graph_spike.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_grid_lattice_convention.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_groove_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_groove_profile.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_gusset_rib_semantics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_hole_pattern_callouts.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_hole_table.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_inspection_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_interior_label_placement.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_ir_foundation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_iso_detail_growth.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_iso_layout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_iso_nts_caption_placement.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_isometric_orientation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_isometric_placement.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1000_envelope_reuse.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1006_measurement_comparison.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1073_cross_body_patterns.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1082_polygonal_stock.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1086_declared_gears.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1116_ap242_hole_tolerance_lowering.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1126_requesting_less_never_scores_better.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1130_view_planning_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1132_turned_profile_span_is_reported.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1142_hole_leader_labels.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1143_hole_completeness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1144_transactional_hole_table.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1146_scale_completeness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1147_legibility_pair_aggregation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1153_contradictory_dimensions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1154_one_owner_per_measurement.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1155_grm04_sheet_use.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1157_no_implicit_general_tolerance.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1177_angular_dimensions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1187_unroutable_leaders.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1188_per_view_assignment.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1190_section_decision.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1196_deterministic_view_names.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1202_observed_drawing_consumer.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1204_multiscale_view_issues.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1209_linear_pmi_witnesses.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1216_callout_reservation_measures_ink.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1216_pairwise_across_scale_groups.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1217_claimed_representations.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1217_the_facility_is_shared.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1219_location_claims_its_own_axis.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1229_ledger_member_keying.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1240_iso_above_strip_visibility.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1245_passage_disposition.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1246_prismatic_pocket_disposition.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1247_angled_step_disposition.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1254_turned_chamfers.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1260_view_constraints.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1262_automatic_turned_views.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1276_turned_leader_targets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1281_turned_fillets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1296_cylindrical_diameter_pmi.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1299_page_escalation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1308_machined_leader_analytics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1312_engine_costs.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1325_nominal_agreement.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1332_overlap_remedy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1333_bounded_ink_repair.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1334_prevent_ink.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1336_grm03_ap242_pmi_fixture.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1338_scale_before_page_escalation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1349_precision_display.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1350_detected_takeover.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1351_structured_note_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1353_cnc_authoritative_workflow.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1357_framed_activation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1357_framed_boundary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1357_plural_turned_profiles.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1357_pmi_frame.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1360_thread_depth.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1369_hole_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1370_countersink_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1370_hole_pattern_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1371_flat_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1371_polygonal_stock_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1373_plate_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1374_chamfer_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1374_fillet_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1374_turned_step_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1378_diameter_leader_targets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1392_recognisers_048.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1395_degenerate_iso_region.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1396_layout_advisories.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1397_unverifiable_requirement_message.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1432_adoption.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1432_boundary_failures.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1432_oriented_slot_semantics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1433_blend_semantics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1450_boss_blend_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1460_step_inspection.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1466_dimension_options.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1466_semantic_sides.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1479_radius_leader_targets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1485_curved_pockets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1485_quiddity_024_boundary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1485_rounded_pockets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1505_diameter_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1505_short_axial_chains.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1511_turned_boss_heights.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1514_projection_safeguard.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1515_first_angle.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1516_dimension_text.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1517_through_indicator.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1518_explicit_rear.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1524_tolerance_magnitude.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1530_section_provenance.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1532_authored_section_examples.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1533_review_diagnostics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1534_build_progress.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1536_title_overflow.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1543_feature_schedules.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1543_schedule_requirements.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1544_frame_document_canary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1555_turned_recognition_format_invariance.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1560_envelope_axes.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1563_sheet_pmi_reconciliation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1585_title_block_date.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1593_title_block_keepout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1596_bolt_circle_corroboration.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1598_hex_pockets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1604_internal_section.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1612_frame_sergio_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1612_sheet_margins.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_1613_circular_channel.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_367_leader_ink.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_443_grm03_axial_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_563_placement_intent.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_676_polygonal_boss.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_676_polygonal_boss_declare.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_798_floor_cardinality.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_827_real_part_canary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_883_location_identity.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_885_prismatic_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_909_sloped_profile.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_915_dense_case.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_917_open_channel.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_924_zero_length_shoulders.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_955_height_contingency.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_issue_958_cross_solid_recognition.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_label_provenance.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_cleanliness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_constants.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_evidence_issue_1711.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_generalisation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_hypothesis.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_override_side_issue_1757.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_layout_property.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_leader_footprint.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_leader_region_policy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_box_cache.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_coverage_common.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_ink_overlap.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_reconciliation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_structural.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_lint_suggestions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_linting.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_location_vocabulary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_machined_feature_callouts.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_make_drawing_entrypoints.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_manufacturing_schedule.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_nested_recognition_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_nominal_step_pmi.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_object_aspects.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_occupancy_boxes.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_occurrence_recognition_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_overall_height_coverage.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pad_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pad_rendering.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_paired_ramp_semantics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_parameter_id.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pareto_loop_canary_issue_1753.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_part_classification.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_part_model.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pattern_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pattern_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_place_dimension.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_plate_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pmi_common_labels.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pmi_datum_lowering.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pmi_gtol_lowering.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pmi_part21.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pocket_pattern.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pocket_pattern_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_polygonal_boss_completeness_evidence.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_pre_render_profile_choice.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_principal_profile_classifier.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_prismatic_boss_diameter.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_prismatic_classification.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_prismatic_dimensions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_private_test_imports.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_profile_angles.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_projection_symbol_default.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_quiddity_lifecycle_boundary.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_real_part_fixtures.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recogniser_adoption.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recogniser_capabilities.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recogniser_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recogniser_policy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recogniser_step_inventory.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recognition_boundary_failures.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recognition_evidence_schema.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recognition_policy_dispositions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_recognition_result.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_refactor_golden.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_registry.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_remaining_ink_overlaps.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_render_seam.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_repack_geometry_seam.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_repair.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_replay_assessment_issue_1715.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_report_projection.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_report_status_reasons_issue_1618.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_report_writer.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_requirement_applicability.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_requirement_carriers.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_requirement_catalog_families.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_requirement_dimension_sharing.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_scale_policy.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_scale_selection.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_score.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_script_detail_parity.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_section_hatching.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_section_recess_contract.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_section_recess_pockets.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_shared_box_memo.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_shared_drawing_cache.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_fallback_issue_1797.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_furniture.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_gdt.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_generation_snapshot.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_identity_invariant.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_notes.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_sheet_of.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_slanted_blind_step.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_slot_completeness.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_slot_pattern.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_slot_pattern_recognition.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_soft_deprecation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_solve_trace.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_step_analysis_evaluation.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_strip_zones.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_suite_shape.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_suppression_ledger.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_suppression_marks.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_through_step_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_through_step_semantics.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_title_block_units_format.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_tolerances.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_turned_lengths.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_turned_step_ownership.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_two_pass_layout.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_typ_dimensions.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_typed_remediation_projection_issue_1759.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_version_bump_ci.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_view_blocks.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_view_coordinates.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_view_plan.py +0 -0
- {draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/tests/test_witness_label_reconciliation.py +0 -0
|
@@ -2,6 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- The agent usage guide moved from `AGENTS.md` to `docs/using-draftwright.md`; `AGENTS.md`
|
|
8
|
+
now holds the contributor instructions formerly in `CLAUDE.md` (#1938).
|
|
9
|
+
|
|
10
|
+
### Removed
|
|
11
|
+
|
|
12
|
+
- Removed the eight expired `Drawing` methods (`add`, `add_view`, `clear_annotations`,
|
|
13
|
+
`set_view_coordinates`, `drop_view_coordinates`, `attach_part_model`,
|
|
14
|
+
`attach_solve_trace`, and `export_pdf`) and the legacy `Drawing.export` tuple
|
|
15
|
+
forms at their published 0.5.0 target. Pass `formats=` explicitly; export
|
|
16
|
+
returns a `{format: path}` dict. `Drawing.place_dim`, `Sheet.add_view`,
|
|
17
|
+
`Sheet.export`'s PDF default, and `make_drawing`'s SVG/DXF tuple remain (#2113).
|
|
18
|
+
|
|
19
|
+
## v0.4.11–v0.5.0-rc1 — cumulative notes since v0.4.10
|
|
20
|
+
|
|
21
|
+
These entries accumulated across patch releases and were all present by v0.4.31.
|
|
22
|
+
They describe changes included by RC1; they do not assign each change to its first
|
|
23
|
+
released version.
|
|
24
|
+
|
|
5
25
|
### Added
|
|
6
26
|
|
|
7
27
|
- A hash-pinned AP242 CTC-01 canary now proves the full Pareto-first layout loop against
|
|
@@ -86,11 +106,6 @@
|
|
|
86
106
|
`make_drawing`, and the CLI, including generated-script replay (#1612, #1589). Sergio's
|
|
87
107
|
25/10/10/10 mm margins and 175 mm block are explicit options; existing defaults remain.
|
|
88
108
|
|
|
89
|
-
### Changed
|
|
90
|
-
|
|
91
|
-
- The agent usage guide moved from `AGENTS.md` to `docs/using-draftwright.md`; `AGENTS.md`
|
|
92
|
-
now holds the contributor instructions formerly in `CLAUDE.md` (#1938).
|
|
93
|
-
|
|
94
109
|
### Fixed
|
|
95
110
|
|
|
96
111
|
- Assessment comparison now rejects an apparent resolution of measurement uncertainty when the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: draftwright
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.0rc3
|
|
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
|
|
@@ -807,8 +807,8 @@ issues = dwg.lint() # list[LintIssue] — coverage, page b
|
|
|
807
807
|
paths = dwg.export("my_part", formats=("svg", "dxf")) # {"svg": ..., "dxf": ...}
|
|
808
808
|
```
|
|
809
809
|
|
|
810
|
-
`export()`
|
|
811
|
-
|
|
810
|
+
`Drawing.export()` requires `formats=` and returns a `{format: path}` dict. For the
|
|
811
|
+
SVG/DXF pair, pass `formats=("svg", "dxf")` (see [docs/deprecations.md](docs/deprecations.md)).
|
|
812
812
|
|
|
813
813
|
### Declarative drawings — reference features, declare intent
|
|
814
814
|
|
|
@@ -104,8 +104,8 @@ issues = dwg.lint() # list[LintIssue] — coverage, page b
|
|
|
104
104
|
paths = dwg.export("my_part", formats=("svg", "dxf")) # {"svg": ..., "dxf": ...}
|
|
105
105
|
```
|
|
106
106
|
|
|
107
|
-
`export()`
|
|
108
|
-
|
|
107
|
+
`Drawing.export()` requires `formats=` and returns a `{format: path}` dict. For the
|
|
108
|
+
SVG/DXF pair, pass `formats=("svg", "dxf")` (see [docs/deprecations.md](docs/deprecations.md)).
|
|
109
109
|
|
|
110
110
|
### Declarative drawings — reference features, declare intent
|
|
111
111
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "draftwright"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.0rc3"
|
|
8
8
|
description = "Automated technical-drawing generation for build123d"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { file = "LICENSE" }
|
|
@@ -89,17 +89,17 @@ testpaths = ["tests"]
|
|
|
89
89
|
timeout = 300
|
|
90
90
|
# `slow` covers end-to-end integration builds, including the large NIST CTC fixtures
|
|
91
91
|
# (minutes each), deselected by default. `smoke` is a curated, build-light subset
|
|
92
|
-
#
|
|
92
|
+
# for a quick local "did I break something obvious" check — run it with
|
|
93
93
|
# `uv run pytest -m smoke`. The default run is the full supported-behavior tier
|
|
94
|
-
# (`-m 'not slow and not scheduled'`; runtime depends on worker count).
|
|
95
|
-
#
|
|
96
|
-
#
|
|
94
|
+
# (`-m 'not slow and not scheduled'`; runtime depends on worker count). Ordinary PR
|
|
95
|
+
# CI selects fast modules by changed source, with a bounded real-part canary; the
|
|
96
|
+
# scheduled tier runs after merge, and the full-matrix label widens the PR sweep.
|
|
97
97
|
markers = [
|
|
98
98
|
"slow: end-to-end integration builds, including CTC fixtures (deselected by default)",
|
|
99
99
|
"ctc04: scheduled tests that construct the CPU-heavy NIST CTC-04 drawing",
|
|
100
100
|
"scheduled: compatibility and broad-corpus contracts selected by the scheduled tier",
|
|
101
101
|
"real_part_canary: bounded real STEP semantic/export gate, selected once in PR CI",
|
|
102
|
-
"smoke: curated build-light subset for a
|
|
102
|
+
"smoke: curated build-light subset for a quick local check",
|
|
103
103
|
"unit: pure-logic inner-loop tier — constructs NO OCC geometry (enforced by conftest, #656)",
|
|
104
104
|
]
|
|
105
105
|
# `SoftDeprecationWarning` marks a surface that is discouraged but SUPPORTED and not going
|
|
@@ -163,8 +163,12 @@ target-version = "py310"
|
|
|
163
163
|
|
|
164
164
|
[tool.ruff.lint]
|
|
165
165
|
select = ["E", "F", "I", "UP"]
|
|
166
|
+
extend-select = ["B"]
|
|
166
167
|
ignore = ["E501"]
|
|
167
168
|
|
|
169
|
+
[tool.ruff.lint.flake8-bugbear]
|
|
170
|
+
extend-immutable-calls = ["typer.Option"]
|
|
171
|
+
|
|
168
172
|
[dependency-groups]
|
|
169
173
|
docs = [
|
|
170
174
|
"mkdocs>=1.6,<2",
|
|
@@ -12,12 +12,13 @@ to be installed in the execution environment.
|
|
|
12
12
|
**There are two paths — start with the automatic one.**
|
|
13
13
|
|
|
14
14
|
1. **Automatic (`make_drawing`)** — one call turns a part (or STEP file) into a
|
|
15
|
-
|
|
15
|
+
multi-view SVG + DXF with dimensions, centrelines, and an ISO 7200 title
|
|
16
16
|
block.
|
|
17
17
|
2. **Builder (`build_drawing`)** — the same pipeline, but it hands back a live
|
|
18
18
|
`Drawing` you can edit before export.
|
|
19
19
|
|
|
20
|
-
Requires `draftwright >= 0.4.0
|
|
20
|
+
Requires `draftwright >= 0.4.0`; the current package requires
|
|
21
|
+
`build123d-drafting-helpers >= 0.15.5`.
|
|
21
22
|
Install: `pip install draftwright`.
|
|
22
23
|
|
|
23
24
|
(The old floor said 0.1.9, which cannot run this guide: none of the feature-backed
|
|
@@ -63,8 +64,8 @@ svg, dxf = make_drawing(
|
|
|
63
64
|
)
|
|
64
65
|
```
|
|
65
66
|
|
|
66
|
-
`make_drawing` chooses the scale
|
|
67
|
-
|
|
67
|
+
`make_drawing` chooses the scale, ISO page size, and views required by the part,
|
|
68
|
+
then annotates, lints, and writes both SVG and DXF.
|
|
68
69
|
|
|
69
70
|
Automatic annotation covers **prismatic parts in full**: every recognised hole
|
|
70
71
|
gets a grouped callout ("4× ø10 THRU", counterbore/depth symbols), bolt circles
|
|
@@ -87,11 +88,10 @@ name a detected *feature* and the measurement you want; the engine decides the
|
|
|
87
88
|
offset, stacking, and strip slot.** You give *what*, never *where on the page*:
|
|
88
89
|
placement is automatic and constraint-based.
|
|
89
90
|
|
|
90
|
-
|
|
91
|
-
`drop`)
|
|
92
|
-
`add`, `add_view`, the view-coordinate
|
|
93
|
-
`docs/deprecations.md
|
|
94
|
-
layout solve, so it cannot be re-flowed when anything around it moves.
|
|
91
|
+
Use the feature-backed verbs (`dimension` / `locate` / `callout` / `note` /
|
|
92
|
+
`drop`) for edits. `Drawing.place_dim` remains a deprecated raw-coordinate
|
|
93
|
+
escape hatch; `Drawing.add`, `Drawing.add_view`, and the public view-coordinate
|
|
94
|
+
plumbing were removed in 0.5.0. See `docs/deprecations.md`.
|
|
95
95
|
|
|
96
96
|
```python
|
|
97
97
|
from draftwright import build_drawing
|
|
@@ -109,7 +109,7 @@ dwg.annotations() # {name: type} of every named annotation already on
|
|
|
109
109
|
dwg.get_annotation(name) # the named annotation object, or None
|
|
110
110
|
dwg.view_bounds("front") # (x_min, y_min, x_max, y_max) page bbox of a view, or None
|
|
111
111
|
dwg.items # the ordered, mutable list of annotation objects
|
|
112
|
-
dwg.views #
|
|
112
|
+
dwg.views # selected view names → (visible, hidden) compounds
|
|
113
113
|
dwg.draft / dwg.scale / dwg.page_w / dwg.page_h
|
|
114
114
|
```
|
|
115
115
|
|
|
@@ -179,16 +179,15 @@ paths = dwg.export("drawings/bracket", formats=("svg", "dxf", "pdf"))
|
|
|
179
179
|
svg, dxf = paths["svg"], paths["dxf"]
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
-
Pass `formats=` and read the `{format: path}` dict.
|
|
183
|
-
`formats`
|
|
184
|
-
|
|
185
|
-
warn from 0.4.0. See `docs/deprecations.md`.
|
|
182
|
+
Pass `formats=` and read the `{format: path}` dict. `Drawing.export()` without
|
|
183
|
+
`formats`, with `formats=None`, or with the old `svg=`/`dxf=` booleans was removed
|
|
184
|
+
in 0.5.0. See `docs/deprecations.md`.
|
|
186
185
|
|
|
187
186
|
`make_drawing(...)` is unaffected and does not warn: it still returns
|
|
188
187
|
`(svg_path, dxf_path)`, and passes `formats=` internally to get them.
|
|
189
188
|
|
|
190
|
-
`make_drawing(...)`
|
|
191
|
-
|
|
189
|
+
`make_drawing(...)` calls `build_drawing(...).export(formats=("svg", "dxf"))`
|
|
190
|
+
and returns the two paths as a tuple.
|
|
192
191
|
|
|
193
192
|
**Authored section views** use `section_view()` alongside an explicit dimension and
|
|
194
193
|
view set. This complete example declares the bore diameter and overall extents;
|
|
@@ -240,14 +239,12 @@ method for your view source above. `Drawing.section()` remains the automatic
|
|
|
240
239
|
post-build section operation: it may return no section when the geometry does not
|
|
241
240
|
warrant one. It does not replace an explicit authored section request.
|
|
242
241
|
|
|
243
|
-
Arbitrary **auxiliary** views have no public
|
|
244
|
-
|
|
245
|
-
of the supported surface.
|
|
242
|
+
Arbitrary **auxiliary** views have no public `Drawing` verb, so a custom viewing
|
|
243
|
+
direction is not currently part of the supported surface.
|
|
246
244
|
|
|
247
|
-
`add_view()` and
|
|
248
|
-
|
|
249
|
-
view projection
|
|
250
|
-
compose-then-pack layout.
|
|
245
|
+
`Drawing.add_view()` and its public view-coordinate plumbing were removed in
|
|
246
|
+
0.5.0 (#2113). `Sheet.add_view()` is a separate supported verb for augmenting an
|
|
247
|
+
automatic view set; view projection itself remains engine plumbing.
|
|
251
248
|
|
|
252
249
|
---
|
|
253
250
|
|
|
@@ -100,7 +100,7 @@ def pytest_configure(config) -> None:
|
|
|
100
100
|
# The public lazy package attribute and Sheet's import-time binding otherwise bypass a
|
|
101
101
|
# patch installed only on builder.py. That omission made the first #1307 census a lower
|
|
102
102
|
# bound, so all three bindings are explicit here.
|
|
103
|
-
setattr(draftwright, "build_drawing", builder_public)
|
|
103
|
+
setattr(draftwright, "build_drawing", builder_public) # noqa: B010 - lazy package attribute
|
|
104
104
|
sheet.build_drawing = _timed("sheet.build_drawing", sheet.build_drawing)
|
|
105
105
|
builder._build_drawing_once = _timed(
|
|
106
106
|
"builder._build_drawing_once", builder._build_drawing_once
|
|
@@ -1184,21 +1184,22 @@ def y_chain_detail_scale_needed(
|
|
|
1184
1184
|
if not segments:
|
|
1185
1185
|
return None
|
|
1186
1186
|
centres = sorted(
|
|
1187
|
-
((pa + pb) / 2, width)
|
|
1187
|
+
((pa + pb) / 2, width)
|
|
1188
|
+
for (pa, pb, _length), width in zip(segments, label_widths, strict=True)
|
|
1188
1189
|
)
|
|
1189
1190
|
labels_clear = all(
|
|
1190
1191
|
next_centre - centre >= (width + next_width) / 2 + text_padding
|
|
1191
|
-
for (centre, width), (next_centre, next_width) in zip(centres, centres[1:])
|
|
1192
|
+
for (centre, width), (next_centre, next_width) in zip(centres, centres[1:], strict=False)
|
|
1192
1193
|
)
|
|
1193
1194
|
inside_arrows_fit = all(
|
|
1194
1195
|
abs(pb - pa) >= width + 2 * arrow_length + 2 * text_padding
|
|
1195
|
-
for (pa, pb, _length), width in zip(segments, label_widths)
|
|
1196
|
+
for (pa, pb, _length), width in zip(segments, label_widths, strict=True)
|
|
1196
1197
|
)
|
|
1197
1198
|
if labels_clear and inside_arrows_fit:
|
|
1198
1199
|
return None
|
|
1199
1200
|
return max(
|
|
1200
1201
|
(width + 2 * arrow_length + 2 * text_padding) / length
|
|
1201
|
-
for (_pa, _pb, length), width in zip(segments, label_widths)
|
|
1202
|
+
for (_pa, _pb, length), width in zip(segments, label_widths, strict=True)
|
|
1202
1203
|
if length > 0
|
|
1203
1204
|
)
|
|
1204
1205
|
|
|
@@ -315,7 +315,9 @@ def _turned_profile_site(site, axis: str, view: str, cylinders) -> tuple[float,
|
|
|
315
315
|
)
|
|
316
316
|
surface_gap = abs(radial_distance - float(cylinder["diameter"]) / 2)
|
|
317
317
|
direction = tuple(float(value) for value in cylinder["dir_xyz"])
|
|
318
|
-
axial_station = sum(
|
|
318
|
+
axial_station = sum(
|
|
319
|
+
value * component for value, component in zip(values, direction, strict=False)
|
|
320
|
+
)
|
|
319
321
|
s_lo = float(cylinder["s_lo"])
|
|
320
322
|
s_hi = float(cylinder["s_hi"])
|
|
321
323
|
axial_gap = max(s_lo - axial_station, 0.0, axial_station - s_hi)
|
|
@@ -615,7 +617,7 @@ def _fmt_angle(value, decimals=None, tolerance=None) -> str:
|
|
|
615
617
|
|
|
616
618
|
def _boxes_overlap(a, b) -> bool:
|
|
617
619
|
"""True when two ``(x0, y0, x1, y1)`` AABBs overlap (strict: a touch is not
|
|
618
|
-
an overlap).
|
|
620
|
+
an overlap). A shared pairwise test behind both the placement-side
|
|
619
621
|
``_box_hits`` and the lint-side overlap checks (#700). Nuance: a degenerate
|
|
620
622
|
(zero-width/height) box strictly inside the other counts as overlapping
|
|
621
623
|
here, where the pre-#700 ``_box_hits`` form said no — the conservative
|
|
@@ -157,13 +157,14 @@ def _automatic_y_chain_detail_footprints(
|
|
|
157
157
|
# line. A single pre-sheet box would otherwise plan a phantom combined
|
|
158
158
|
# chain and could enlarge the sheet without any matching detail request.
|
|
159
159
|
if any(
|
|
160
|
-
abs(previous[1] - current[0]) > 1e-3 + 1e-9
|
|
160
|
+
abs(previous[1] - current[0]) > 1e-3 + 1e-9
|
|
161
|
+
for previous, current in zip(rows, rows[1:], strict=False)
|
|
161
162
|
):
|
|
162
163
|
return None
|
|
163
164
|
# The renderer states a contiguous repeated pitch of three or more once on
|
|
164
165
|
# the parent view. Such a chain does not request an enlarged detail.
|
|
165
166
|
repeat = 1
|
|
166
|
-
for prev, current in zip(rows, rows[1:]):
|
|
167
|
+
for prev, current in zip(rows, rows[1:], strict=False):
|
|
167
168
|
old, new = prev[2], current[2]
|
|
168
169
|
same_text = (
|
|
169
170
|
old.value_text == new.value_text
|
|
@@ -302,7 +303,8 @@ def _automatic_x_head_detail_footprints(
|
|
|
302
303
|
# different physically sorted run until both boundaries share ordering.
|
|
303
304
|
return None
|
|
304
305
|
if any(
|
|
305
|
-
abs(previous[1] - current[0]) > 1e-3 + 1e-9
|
|
306
|
+
abs(previous[1] - current[0]) > 1e-3 + 1e-9
|
|
307
|
+
for previous, current in zip(rows, rows[1:], strict=False)
|
|
306
308
|
):
|
|
307
309
|
return None
|
|
308
310
|
# The renderer crops against the controlled step's physical profile, not
|
|
@@ -1063,7 +1065,7 @@ def _validate_explicit_scale(
|
|
|
1063
1065
|
if advisories is not None:
|
|
1064
1066
|
advisories.append(("legibility_floor_breached", message))
|
|
1065
1067
|
if warn_advisory:
|
|
1066
|
-
warnings.warn(message)
|
|
1068
|
+
warnings.warn(message, stacklevel=1)
|
|
1067
1069
|
|
|
1068
1070
|
|
|
1069
1071
|
@dataclass(frozen=True)
|
|
@@ -1939,7 +1941,6 @@ def _select_sheet(
|
|
|
1939
1941
|
_measure_strips(
|
|
1940
1942
|
strip_sizing_model,
|
|
1941
1943
|
n_steps_i,
|
|
1942
|
-
bb,
|
|
1943
1944
|
arrow_length=_arrow_length,
|
|
1944
1945
|
pad_around_text=_pad_around_text,
|
|
1945
1946
|
bore_callout_width=bore_callout_width,
|
|
@@ -2090,7 +2091,6 @@ def _place_sheet(
|
|
|
2090
2091
|
_measure_strips(
|
|
2091
2092
|
strip_sizing_model,
|
|
2092
2093
|
n_steps,
|
|
2093
|
-
bb,
|
|
2094
2094
|
arrow_length=_arrow_length,
|
|
2095
2095
|
pad_around_text=_pad_around_text,
|
|
2096
2096
|
bore_callout_width=bore_callout_width,
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"""Compat facade: the annotation passes moved to the annotations/ subpackage (#164).
|
|
2
2
|
|
|
3
|
-
`_auto_annotate`
|
|
4
|
-
|
|
5
|
-
the
|
|
6
|
-
so `from draftwright.annotate import _auto_annotate` keeps working.
|
|
3
|
+
`_auto_annotate` and its companion entry points live in
|
|
4
|
+
`annotations.orchestrator`; rendering passes live in `annotations/`. This module
|
|
5
|
+
retains the historical import path for callers of those entry points.
|
|
7
6
|
"""
|
|
8
7
|
|
|
9
8
|
import warnings
|
|
@@ -117,7 +117,7 @@ def _step_measurements(segs: list[_StepChainSegment]) -> tuple[Any, ...]:
|
|
|
117
117
|
return tuple(result)
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
def _record_step_chain_drop(
|
|
120
|
+
def _record_step_chain_drop(why: str, *, ctx, measurement=()) -> None:
|
|
121
121
|
"""Record the ``step_dim_dropped`` warning for unresolved turned lengths.
|
|
122
122
|
These drops were silent (debug log only) — the user got
|
|
123
123
|
a drawing with no step-length dimensioning and no signal. Mirrors
|
|
@@ -221,7 +221,7 @@ def _draw_step_chain(
|
|
|
221
221
|
def _clear(items):
|
|
222
222
|
return all(
|
|
223
223
|
c2 - c1 >= (w1 + w2) / 2 + draft.pad_around_text
|
|
224
|
-
for (c1, w1), (c2, w2) in zip(items, items[1:])
|
|
224
|
+
for (c1, w1), (c2, w2) in zip(items, items[1:], strict=False)
|
|
225
225
|
)
|
|
226
226
|
|
|
227
227
|
if _clear(cw):
|
|
@@ -231,7 +231,6 @@ def _draw_step_chain(
|
|
|
231
231
|
else:
|
|
232
232
|
_log.info("step-length chain skipped: too dense even when staggered")
|
|
233
233
|
_record_step_chain_drop(
|
|
234
|
-
dwg,
|
|
235
234
|
"shoulders too dense to dimension even when staggered",
|
|
236
235
|
ctx=ctx,
|
|
237
236
|
measurement=_step_measurements(segs),
|
|
@@ -300,7 +299,6 @@ def _draw_step_chain(
|
|
|
300
299
|
page[0] <= box[0] and box[2] <= page[2] and page[1] <= box[1] and box[3] <= page[3]
|
|
301
300
|
):
|
|
302
301
|
_record_step_chain_drop(
|
|
303
|
-
dwg,
|
|
304
302
|
"a dimension would fall off the drawable page",
|
|
305
303
|
ctx=ctx,
|
|
306
304
|
measurement=measurements,
|
|
@@ -1286,6 +1286,9 @@ class PlacementContext:
|
|
|
1286
1286
|
source=None,
|
|
1287
1287
|
outcome_stage=None,
|
|
1288
1288
|
evidence_reason=None,
|
|
1289
|
+
annotation_name=None,
|
|
1290
|
+
view=None,
|
|
1291
|
+
related_annotation_names=(),
|
|
1289
1292
|
) -> None:
|
|
1290
1293
|
"""Record a build-time lint issue on the run's registry (#639). Replaces the passes'
|
|
1291
1294
|
old `dwg._record_build_issue`."""
|
|
@@ -1316,6 +1319,9 @@ class PlacementContext:
|
|
|
1316
1319
|
outcome_stage=outcome_stage,
|
|
1317
1320
|
measurement_spans=spans,
|
|
1318
1321
|
evidence_reason=evidence_reason,
|
|
1322
|
+
annotation_name=annotation_name,
|
|
1323
|
+
view=view,
|
|
1324
|
+
related_annotation_names=tuple(related_annotation_names),
|
|
1319
1325
|
)
|
|
1320
1326
|
)
|
|
1321
1327
|
|
|
@@ -73,9 +73,9 @@ def _diameter_row_below(
|
|
|
73
73
|
"""ø-callout row BELOW the front view for X-turned step/boss diameters (#77).
|
|
74
74
|
*items* is ``[(anchor, dia, value_text, feature, tolerance, thread, mids), ...]``. The row is dropped clear of anything
|
|
75
75
|
already below the profile; labels spread along page-x by the ADR 2 (was 0003) strip
|
|
76
|
-
solve. Skips (returns 0) if there is no room
|
|
77
|
-
|
|
78
|
-
placed/dropped item per callout."""
|
|
76
|
+
solve. Skips (returns 0) if there is no room; the caller may then try radial
|
|
77
|
+
leaders, and any still-missing diameter reaches coverage lint. *trace* (#736): one
|
|
78
|
+
``pass_events`` record with a placed/dropped item per callout."""
|
|
79
79
|
if not items:
|
|
80
80
|
return 0
|
|
81
81
|
ev = trace.pass_event("diameter_row_below", view="front") if trace is not None else None
|
|
@@ -86,8 +86,8 @@ def _diameter_row_below(
|
|
|
86
86
|
# `view_bounds` has always documented `None` for a view it does not have; with a
|
|
87
87
|
# fixed four-view topology that could not happen, so the caller unpacked it directly
|
|
88
88
|
# and a view set without the front crashed here. Skipping is the established
|
|
89
|
-
# behaviour of this function when there is no room
|
|
90
|
-
#
|
|
89
|
+
# behaviour of this function when there is no room. Later radial fallback or
|
|
90
|
+
# coverage lint resolves the outcome, letting the requirement gate WEIGH a view
|
|
91
91
|
# set instead of the build dying inside a pass.
|
|
92
92
|
return 0
|
|
93
93
|
fx0, fy0, fx1, _ = bounds
|
|
@@ -95,8 +95,25 @@ def _diameter_row_below(
|
|
|
95
95
|
for o in dwg.items:
|
|
96
96
|
try:
|
|
97
97
|
ob = o.bounding_box()
|
|
98
|
-
except Exception: # noqa: BLE001 —
|
|
99
|
-
|
|
98
|
+
except Exception as exc: # noqa: BLE001 — an unreadable obstacle cannot be ignored
|
|
99
|
+
for _, _, text, _, _, _, mids in items:
|
|
100
|
+
ctx.record_issue(
|
|
101
|
+
"warning",
|
|
102
|
+
"diameter_row_obstacle_unverified",
|
|
103
|
+
f"ø{text} shared row withheld: below-front obstacle could not be measured "
|
|
104
|
+
f"({type(exc).__name__})",
|
|
105
|
+
measurement=mids,
|
|
106
|
+
evidence_reason="obstacle_unverified",
|
|
107
|
+
)
|
|
108
|
+
if ev is not None:
|
|
109
|
+
ev["items"].append(
|
|
110
|
+
{
|
|
111
|
+
"label": f"ø{text}",
|
|
112
|
+
"outcome": "dropped",
|
|
113
|
+
"reason": "obstacle_unverified",
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
return 0
|
|
100
117
|
if ob.min.Y < fy0 and ob.max.X > fx0 and ob.min.X < fx1:
|
|
101
118
|
obstacle_bottom = min(obstacle_bottom, ob.min.Y)
|
|
102
119
|
label_y = obstacle_bottom - (draft.font_size + 4 * draft.pad_around_text)
|
|
@@ -156,7 +173,7 @@ def _diameter_row_below(
|
|
|
156
173
|
return out
|
|
157
174
|
|
|
158
175
|
def _collides(ivals):
|
|
159
|
-
pairs = zip(sorted(ivals), sorted(ivals)[1:])
|
|
176
|
+
pairs = zip(sorted(ivals), sorted(ivals)[1:], strict=False)
|
|
160
177
|
return any(a1 > b0 for (_a0, a1), (b0, _b1) in pairs)
|
|
161
178
|
|
|
162
179
|
while len(survivors) > 1 and _collides(_label_ivals(survivors, xs)):
|
|
@@ -179,7 +196,7 @@ def _diameter_row_below(
|
|
|
179
196
|
for s in specs
|
|
180
197
|
if id(s) not in kept
|
|
181
198
|
)
|
|
182
|
-
for i, ((tip,
|
|
199
|
+
for i, ((tip, _dia, label, feat, mids), lx) in enumerate(zip(survivors, xs, strict=True)):
|
|
183
200
|
ctx.place(
|
|
184
201
|
Leader(tip=(tip[0], tip[1], 0), elbow=(lx, label_y, 0), label=label, draft=draft),
|
|
185
202
|
f"m_dia_x{start + i}",
|
|
@@ -258,7 +275,7 @@ def _diameter_column_left(
|
|
|
258
275
|
)
|
|
259
276
|
occupied = strip_obstacles(dwg, view="front", crossable=CROSSABLE_TYPES)
|
|
260
277
|
placed = 0
|
|
261
|
-
for i, ((tip,
|
|
278
|
+
for i, ((tip, _dia, label, feat, mids), ly) in enumerate(zip(survivors, ys, strict=True)):
|
|
262
279
|
ldr = Leader(tip=(tip[0], tip[1], 0), elbow=(elbow_x, ly, 0), label=label, draft=draft)
|
|
263
280
|
if _box_hits(_anno_box(ldr), occupied):
|
|
264
281
|
if ev is not None:
|
|
@@ -268,7 +268,7 @@ def render_envelope(
|
|
|
268
268
|
# The same model-space X span is visible in front. Route it there
|
|
269
269
|
# before the shared corridor solve if that view has a real tier;
|
|
270
270
|
# neither a later drop nor an interior retry can create strip depth.
|
|
271
|
-
def _one_tier_fits(strip):
|
|
271
|
+
def _one_tier_fits(strip, slot=slot):
|
|
272
272
|
if strip is None:
|
|
273
273
|
return False
|
|
274
274
|
lo, hi, _inner = strip_free_span(strip)
|
|
@@ -299,6 +299,7 @@ def render_envelope(
|
|
|
299
299
|
p1, p2 = dwg.at(view, *start_pt), dwg.at(view, *end_pt)
|
|
300
300
|
witness = p1[1] - _WITNESS_LIFT_MM
|
|
301
301
|
zones = frame.zones(view)
|
|
302
|
+
label = _env_label(extent, dwg.draft)
|
|
302
303
|
_queue(
|
|
303
304
|
ann_name,
|
|
304
305
|
zones.below,
|
|
@@ -307,8 +308,8 @@ def render_envelope(
|
|
|
307
308
|
slot,
|
|
308
309
|
abs(end_pt[index] - start_pt[index]),
|
|
309
310
|
(p1[0], p2[0]),
|
|
310
|
-
|
|
311
|
-
lambda pos, _p1=p1, _p2=p2, _w=witness, _v=
|
|
311
|
+
label,
|
|
312
|
+
lambda pos, _p1=p1, _p2=p2, _w=witness, _v=label: dim_builder(
|
|
312
313
|
(_p1[0], _w, 0),
|
|
313
314
|
(_p2[0], _w, 0),
|
|
314
315
|
"below",
|
|
@@ -319,8 +320,8 @@ def render_envelope(
|
|
|
319
320
|
# Measure the same rendered label used by the Dimension. The span
|
|
320
321
|
# usually dominates this footprint, but outside arrows can make the
|
|
321
322
|
# label affect its extent.
|
|
322
|
-
footprint=lambda pos, _p1=p1, _p2=p2, _w=witness, _v=
|
|
323
|
-
|
|
323
|
+
footprint=lambda pos, _p1=p1, _p2=p2, _w=witness, _v=label: dim_footprint(
|
|
324
|
+
(_p1[0], _w, 0), (_p2[0], _w, 0), "below", _w - pos, dwg.draft, _v
|
|
324
325
|
),
|
|
325
326
|
measurement=extent.id,
|
|
326
327
|
measurement_span=extent.span,
|
|
@@ -722,7 +722,7 @@ def _register_y_locations(
|
|
|
722
722
|
and any(SX(ry) + 10 > iso_x0 - 4 for _, ry, _feat, _pin, _mids, _facts, _entries in y_refs)
|
|
723
723
|
):
|
|
724
724
|
a.sv_zones.above.outer_limit = min(a.sv_zones.above.outer_limit, iso_y0 - 4)
|
|
725
|
-
for i, (
|
|
725
|
+
for i, (_rx, ry, feat, pin_ref, mids, location_facts, location_entries) in enumerate(
|
|
726
726
|
sorted(y_refs, key=lambda r: abs(r[1] - datum_y))
|
|
727
727
|
):
|
|
728
728
|
if abs(ry - datum_y) * a.SCALE < 1.0:
|
{draftwright-0.5.0rc2 → draftwright-0.5.0rc3}/src/draftwright/annotations/_machined_leaders.py
RENAMED
|
@@ -72,9 +72,7 @@ class _MachinedJobContext:
|
|
|
72
72
|
if view not in self.foreign_boxes_by_view:
|
|
73
73
|
self.foreign_boxes_by_view[view] = tuple(
|
|
74
74
|
(box, has_label)
|
|
75
|
-
for _name, owner, box, has_label in self.bindings.attribute_annotations(
|
|
76
|
-
self.dwg, self.a
|
|
77
|
-
)
|
|
75
|
+
for _name, owner, box, has_label in self.bindings.attribute_annotations(self.dwg)
|
|
78
76
|
if owner != view
|
|
79
77
|
)
|
|
80
78
|
pad = self.dwg.draft.pad_around_text
|
|
@@ -362,14 +360,14 @@ class _MachinedJobContext:
|
|
|
362
360
|
)
|
|
363
361
|
search_tip = normal_stub
|
|
364
362
|
|
|
365
|
-
def build_at(elbow, _tip=tip, _feature=feature):
|
|
363
|
+
def build_at(elbow, _tip=tip, _feature=feature, normal_stub=normal_stub):
|
|
366
364
|
if normal_stub is not None:
|
|
367
365
|
return decorate(
|
|
368
366
|
bindings.RoutedLeader(_tip, (normal_stub,), elbow, label, dwg.draft)
|
|
369
367
|
)
|
|
370
368
|
return build(_tip, (*elbow, 0), _feature)
|
|
371
369
|
|
|
372
|
-
def build_routed(bends, elbow, _tip=tip):
|
|
370
|
+
def build_routed(bends, elbow, _tip=tip, normal_stub=normal_stub):
|
|
373
371
|
route_bends = (normal_stub, *bends) if normal_stub is not None else bends
|
|
374
372
|
return decorate(bindings.RoutedLeader(_tip, route_bends, elbow, label, dwg.draft))
|
|
375
373
|
|
|
@@ -132,7 +132,8 @@ def _coalesce_aligned_linear_pitch_dims(dwg, a: Analysis, *, ctx) -> None:
|
|
|
132
132
|
dwg.remove(name)
|
|
133
133
|
identity["measurement"] = tuple(measurements)
|
|
134
134
|
ctx.registry.reapply(chosen_name, identity)
|
|
135
|
-
|
|
135
|
+
# Feature annotations acquire this provenance after they are built.
|
|
136
|
+
setattr(chosen, "source_features", tuple(owners)) # noqa: B010
|
|
136
137
|
|
|
137
138
|
|
|
138
139
|
def _add_grid_pitch_dims(
|