draftwright 0.4.35__tar.gz → 0.5.0rc1__tar.gz

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