ezdxf 1.2.1a0__zip → 1.3.0b0__zip

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 (818) hide show
  1. {ezdxf-1.2.1a0/src/ezdxf.egg-info → ezdxf-1.3.0b0}/PKG-INFO +1 -1
  2. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/construct.pyx +73 -2
  3. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/frontend.py +97 -53
  4. ezdxf-1.3.0b0/src/ezdxf/addons/drawing/json.py +590 -0
  5. ezdxf-1.2.1a0/src/ezdxf/addons/drawing/designer.py → ezdxf-1.3.0b0/src/ezdxf/addons/drawing/pipeline.py +391 -227
  6. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/properties.py +39 -27
  7. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dxf2code.py +3 -1
  8. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/geo.py +10 -40
  9. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/document.py +14 -5
  10. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/lwpolyline.py +4 -4
  11. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/mesh.py +2 -2
  12. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/spline.py +2 -3
  13. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/packedtags.py +75 -97
  14. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/tagger.py +19 -35
  15. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/tagwriter.py +32 -43
  16. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_construct.py +87 -1
  17. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_ctypes.py +7 -0
  18. ezdxf-1.3.0b0/src/ezdxf/revcloud.py +115 -0
  19. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/headervars.py +18 -1
  20. ezdxf-1.3.0b0/src/ezdxf/select.py +342 -0
  21. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/version.py +2 -2
  22. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0/src/ezdxf.egg-info}/PKG-INFO +1 -1
  23. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf.egg-info/SOURCES.txt +9 -1
  24. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_005_packed_tags.py +28 -28
  25. ezdxf-1.3.0b0/tests/test_00_dxf_low_level_structs/test_058_json_tags.py +73 -0
  26. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_220_lwpolyline_2.py +26 -27
  27. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_226_spline.py +11 -9
  28. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_228_mesh.py +1 -1
  29. ezdxf-1.3.0b0/tests/test_05_tools/test_543_select.py +322 -0
  30. ezdxf-1.3.0b0/tests/test_05_tools/test_544_revcloud.py +43 -0
  31. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_613_is_point_in_polygon_2d.py +7 -5
  32. ezdxf-1.3.0b0/tests/test_06_math/test_666_wgs84_transform.py +43 -0
  33. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_708b_path_tools.py +2 -2
  34. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_803_entities_to_code.py +8 -5
  35. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_810_drawing_properties.py +18 -14
  36. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_811a_drawing_frontend.py +57 -26
  37. ezdxf-1.3.0b0/tests/test_08_addons/test_826_custom_json_backend.py +98 -0
  38. ezdxf-1.3.0b0/tests/test_08_addons/test_827_geojson_backend.py +98 -0
  39. ezdxf-1.2.1a0/tests/test_00_dxf_low_level_structs/test_058_json_tags.py +0 -43
  40. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/LICENSE +0 -0
  41. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/MANIFEST.in +0 -0
  42. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/README.md +0 -0
  43. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/check_disable_c_ext_by_config_file.py +0 -0
  44. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/check_disable_c_ext_by_env_var.py +0 -0
  45. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/conftest.py +0 -0
  46. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/AC1003_LINE_Example.dxf +0 -0
  47. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/ASCII_R12.dxf +0 -0
  48. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/Leica_Disto_S910.dxf +0 -0
  49. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/MODEL.dxf +0 -0
  50. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/PLOTFILE.plt +0 -0
  51. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/POLI-ALL210_12.DXF +0 -0
  52. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/R12_with_trash_beyond_EOF.dxf +0 -0
  53. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/XRECORD_0.bin +0 -0
  54. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/XRECORD_1.bin +0 -0
  55. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/XRECORD_2.bin +0 -0
  56. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/acad_table_with_blk_ref.dxf +0 -0
  57. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/bin_dxf_r12.dxf +0 -0
  58. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/bin_dxf_r13.dxf +0 -0
  59. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/bin_dxf_r14.dxf +0 -0
  60. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/bin_dxf_r2000.dxf +0 -0
  61. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/cc_dxflib.dxf +0 -0
  62. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/custom_blocks.dxf +0 -0
  63. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/duplicate_handles.dxf +0 -0
  64. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/dxf_unicode.dxf +0 -0
  65. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/dynblks.zip +0 -0
  66. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/empty_handles.dxf +0 -0
  67. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/groups.dxf +0 -0
  68. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/layout_broken_links.dxf +0 -0
  69. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/layout_broken_links_2.dxf +0 -0
  70. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/layout_missing_block_definition.dxf +0 -0
  71. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/layout_missing_block_record.dxf +0 -0
  72. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/mtext_columns_R2007.dxf +0 -0
  73. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/mtext_columns_R2018.dxf +0 -0
  74. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/mtext_framed_columns.dxf +0 -0
  75. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/mtext_text_frame.dxf +0 -0
  76. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/no_layouts.dxf +0 -0
  77. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/recover01.dxf +0 -0
  78. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/recover02.dxf +0 -0
  79. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/small_r13.dxf +0 -0
  80. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/data/small_r14.dxf +0 -0
  81. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_acad_table.py +0 -0
  82. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_all_dimline_styles.py +0 -0
  83. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_all_ellipse_transformations.py +0 -0
  84. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_anonymous_blocks.py +0 -0
  85. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_appsettings.py +0 -0
  86. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_audit_critical_dxf_files.py +0 -0
  87. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_audit_layouts.py +0 -0
  88. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_complex_line_type_2.py +0 -0
  89. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_create_basic_graphics.py +0 -0
  90. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_document_guid.py +0 -0
  91. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_document_page_setup.py +0 -0
  92. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_dxf_info_scanning.py +0 -0
  93. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_dynblkhelper.py +0 -0
  94. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_entities_iterator.py +0 -0
  95. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_fix_dulicate_handles.py +0 -0
  96. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_geo.py +0 -0
  97. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_groups.py +0 -0
  98. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_hpgl2_addon.py +0 -0
  99. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_ignore_junk_beyond_EOF.py +0 -0
  100. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_launcher.py +0 -0
  101. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_leica_disto_r12.py +0 -0
  102. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_load_dxf_unicode_notation.py +0 -0
  103. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_mapbox_earcut.py +0 -0
  104. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_mtext_columns.py +0 -0
  105. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_mtext_explode_addon.py +0 -0
  106. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_mtext_text_frame.py +0 -0
  107. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_new_table_entries.py +0 -0
  108. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_none_ascii_read_write.py +0 -0
  109. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_odafc.py +0 -0
  110. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_open_R13_R14.py +0 -0
  111. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_open_binary_DXF_files.py +0 -0
  112. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_open_coord_order_issue.py +0 -0
  113. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_open_exotic_dxf_files.py +0 -0
  114. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_polyline_entity.py +0 -0
  115. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_preserve_binary_data_in_xrecords.py +0 -0
  116. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_r12export.py +0 -0
  117. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_r12strict.py +0 -0
  118. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_r12writer.py +0 -0
  119. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_read_file_without_handles.py +0 -0
  120. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_read_write_modern_entites.py +0 -0
  121. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_recover.py +0 -0
  122. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_redraw_order.py +0 -0
  123. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_rotated_block_attributes.py +0 -0
  124. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_surface_entities.py +0 -0
  125. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_write_fixed_meta_data.py +0 -0
  126. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_write_without_handles.py +0 -0
  127. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/integration_tests/test_xref_detach.py +0 -0
  128. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/pyproject.toml +0 -0
  129. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/requirements.txt +0 -0
  130. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/setup.cfg +0 -0
  131. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/setup.py +0 -0
  132. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/__init__.py +0 -0
  133. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/__main__.py +0 -0
  134. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/_options.py +0 -0
  135. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/__init__.py +0 -0
  136. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/bezier3p.pyx +0 -0
  137. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/bezier4p.pyx +0 -0
  138. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/bspline.pyx +0 -0
  139. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/constants.h +0 -0
  140. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/linetypes.pyx +0 -0
  141. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/mapbox_earcut.pyx +0 -0
  142. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/matrix44.pxd +0 -0
  143. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/matrix44.pyx +0 -0
  144. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/np_support.pyx +0 -0
  145. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/vector.pxd +0 -0
  146. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acc/vector.pyx +0 -0
  147. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/__init__.py +0 -0
  148. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/abstract.py +0 -0
  149. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/api.py +0 -0
  150. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/const.py +0 -0
  151. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/dbg.py +0 -0
  152. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/dxf.py +0 -0
  153. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/entities.py +0 -0
  154. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/hdr.py +0 -0
  155. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/mesh.py +0 -0
  156. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/sab.py +0 -0
  157. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/acis/sat.py +0 -0
  158. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/__init__.py +0 -0
  159. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/acadctb.py +0 -0
  160. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/acisbrowser/__init__.py +0 -0
  161. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/acisbrowser/browser.py +0 -0
  162. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/acisbrowser/data.py +0 -0
  163. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/binpacking.py +0 -0
  164. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/__init__.py +0 -0
  165. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/bookmarks.py +0 -0
  166. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/browser.py +0 -0
  167. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/data.py +0 -0
  168. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/find_dialog.py +0 -0
  169. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/loader.py +0 -0
  170. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/model.py +0 -0
  171. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/reflinks.py +0 -0
  172. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/tags.py +0 -0
  173. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/browser/views.py +0 -0
  174. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dimlines.py +0 -0
  175. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/__init__.py +0 -0
  176. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/backend.py +0 -0
  177. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/config.py +0 -0
  178. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/debug_backend.py +0 -0
  179. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/debug_utils.py +0 -0
  180. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/dxf.py +0 -0
  181. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/file_output.py +0 -0
  182. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/gfxproxy.py +0 -0
  183. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/hpgl2.py +0 -0
  184. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/layout.py +0 -0
  185. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/matplotlib.py +0 -0
  186. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/mtext_complex.py +0 -0
  187. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/pymupdf.py +0 -0
  188. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/pyqt.py +0 -0
  189. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/qtviewer.py +0 -0
  190. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/recorder.py +0 -0
  191. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/svg.py +0 -0
  192. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/text.py +0 -0
  193. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/text_renderer.py +0 -0
  194. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/type_hints.py +0 -0
  195. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/drawing/unified_text_renderer.py +0 -0
  196. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/__init__.py +0 -0
  197. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/classes_section.py +0 -0
  198. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/const.py +0 -0
  199. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/crc.py +0 -0
  200. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/fileheader.py +0 -0
  201. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/header_section.py +0 -0
  202. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/dwg/loader.py +0 -0
  203. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/genetic_algorithm.py +0 -0
  204. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/gerber_D6673.py +0 -0
  205. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/__init__.py +0 -0
  206. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/api.py +0 -0
  207. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/backend.py +0 -0
  208. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/deps.py +0 -0
  209. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/interpreter.py +0 -0
  210. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/page.py +0 -0
  211. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/plotter.py +0 -0
  212. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/polygon_buffer.py +0 -0
  213. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/properties.py +0 -0
  214. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/tokenizer.py +0 -0
  215. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/hpgl2/viewer.py +0 -0
  216. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/importer.py +0 -0
  217. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/iterdxf.py +0 -0
  218. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/menger_sponge.py +0 -0
  219. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/meshex.py +0 -0
  220. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/mixins.py +0 -0
  221. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/mtextsurrogate.py +0 -0
  222. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/mtxpl.py +0 -0
  223. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/odafc.py +0 -0
  224. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/openscad.py +0 -0
  225. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/pycsg.py +0 -0
  226. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/r12export.py +0 -0
  227. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/r12writer.py +0 -0
  228. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/sierpinski_pyramid.py +0 -0
  229. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/tablepainter.py +0 -0
  230. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/text2path.py +0 -0
  231. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/xplayer.py +0 -0
  232. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/addons/xqt.py +0 -0
  233. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/appsettings.py +0 -0
  234. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/audit.py +0 -0
  235. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/bbox.py +0 -0
  236. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/blkrefs.py +0 -0
  237. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/colors.py +0 -0
  238. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/commands.py +0 -0
  239. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/comments.py +0 -0
  240. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/disassemble.py +0 -0
  241. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/dwginfo.py +0 -0
  242. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/dynblkhelper.py +0 -0
  243. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/__init__.py +0 -0
  244. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/acad_proxy_entity.py +0 -0
  245. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/acad_table.py +0 -0
  246. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/acad_xrec_roundtrip.py +0 -0
  247. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/acis.py +0 -0
  248. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/appdata.py +0 -0
  249. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/appid.py +0 -0
  250. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/arc.py +0 -0
  251. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/attrib.py +0 -0
  252. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/block.py +0 -0
  253. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/blockrecord.py +0 -0
  254. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/boundary_paths.py +0 -0
  255. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/circle.py +0 -0
  256. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/copy.py +0 -0
  257. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dictionary.py +0 -0
  258. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dimension.py +0 -0
  259. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dimstyle.py +0 -0
  260. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dimstyleoverride.py +0 -0
  261. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dxfclass.py +0 -0
  262. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dxfentity.py +0 -0
  263. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dxfgfx.py +0 -0
  264. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dxfgroups.py +0 -0
  265. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dxfns.py +0 -0
  266. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/dxfobj.py +0 -0
  267. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/ellipse.py +0 -0
  268. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/factory.py +0 -0
  269. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/geodata.py +0 -0
  270. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/gradient.py +0 -0
  271. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/hatch.py +0 -0
  272. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/helix.py +0 -0
  273. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/idbuffer.py +0 -0
  274. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/image.py +0 -0
  275. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/insert.py +0 -0
  276. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/layer.py +0 -0
  277. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/layout.py +0 -0
  278. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/leader.py +0 -0
  279. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/light.py +0 -0
  280. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/line.py +0 -0
  281. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/ltype.py +0 -0
  282. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/material.py +0 -0
  283. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/mleader.py +0 -0
  284. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/mline.py +0 -0
  285. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/mpolygon.py +0 -0
  286. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/mtext.py +0 -0
  287. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/mtext_columns.py +0 -0
  288. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/objectcollection.py +0 -0
  289. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/oleframe.py +0 -0
  290. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/pattern.py +0 -0
  291. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/point.py +0 -0
  292. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/polygon.py +0 -0
  293. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/polyline.py +0 -0
  294. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/shape.py +0 -0
  295. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/solid.py +0 -0
  296. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/spatial_filter.py +0 -0
  297. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/subentity.py +0 -0
  298. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/sun.py +0 -0
  299. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/table.py +0 -0
  300. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/text.py +0 -0
  301. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/textstyle.py +0 -0
  302. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/tolerance.py +0 -0
  303. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/ucs.py +0 -0
  304. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/underlay.py +0 -0
  305. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/view.py +0 -0
  306. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/viewport.py +0 -0
  307. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/visualstyle.py +0 -0
  308. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/vport.py +0 -0
  309. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/xdata.py +0 -0
  310. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/xdict.py +0 -0
  311. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entities/xline.py +0 -0
  312. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/entitydb.py +0 -0
  313. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/enums.py +0 -0
  314. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/explode.py +0 -0
  315. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/eztypes.py +0 -0
  316. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/filemanagement.py +0 -0
  317. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/__init__.py +0 -0
  318. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/font_face.py +0 -0
  319. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/font_manager.py +0 -0
  320. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/font_measurements.py +0 -0
  321. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/font_synonyms.py +0 -0
  322. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/fonts.py +0 -0
  323. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/glyphs.py +0 -0
  324. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/lff.py +0 -0
  325. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/shapefile.py +0 -0
  326. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/fonts/ttfonts.py +0 -0
  327. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/gfxattribs.py +0 -0
  328. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/graphicsfactory.py +0 -0
  329. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/groupby.py +0 -0
  330. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/layouts/__init__.py +0 -0
  331. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/layouts/base.py +0 -0
  332. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/layouts/blocklayout.py +0 -0
  333. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/layouts/layout.py +0 -0
  334. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/layouts/layouts.py +0 -0
  335. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/__init__.py +0 -0
  336. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/attributes.py +0 -0
  337. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/const.py +0 -0
  338. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/encoding.py +0 -0
  339. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/extendedtags.py +0 -0
  340. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/fileindex.py +0 -0
  341. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/hdrvars.py +0 -0
  342. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/loader.py +0 -0
  343. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/repair.py +0 -0
  344. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/tags.py +0 -0
  345. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/types.py +0 -0
  346. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/lldxf/validator.py +0 -0
  347. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/__init__.py +0 -0
  348. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_bezier3p.py +0 -0
  349. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_bezier4p.py +0 -0
  350. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_bspline.py +0 -0
  351. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_mapbox_earcut.py +0 -0
  352. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_matrix44.py +0 -0
  353. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/_vector.py +0 -0
  354. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/arc.py +0 -0
  355. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/bbox.py +0 -0
  356. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/bezier.py +0 -0
  357. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/bezier_interpolation.py +0 -0
  358. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/box.py +0 -0
  359. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/bspline.py +0 -0
  360. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/bulge.py +0 -0
  361. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/circle.py +0 -0
  362. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/clipping.py +0 -0
  363. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/clustering.py +0 -0
  364. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/construct2d.py +0 -0
  365. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/construct3d.py +0 -0
  366. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/cspline.py +0 -0
  367. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/curvetools.py +0 -0
  368. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/ellipse.py +0 -0
  369. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/eulerspiral.py +0 -0
  370. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/legacy.py +0 -0
  371. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/linalg.py +0 -0
  372. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/line.py +0 -0
  373. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/offset2d.py +0 -0
  374. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/parametrize.py +0 -0
  375. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/perlin.py +0 -0
  376. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/polyline.py +0 -0
  377. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/rtree.py +0 -0
  378. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/shape.py +0 -0
  379. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/transformtools.py +0 -0
  380. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/triangulation.py +0 -0
  381. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/math/ucs.py +0 -0
  382. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/npshapes.py +0 -0
  383. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/__init__.py +0 -0
  384. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/commands.py +0 -0
  385. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/converter.py +0 -0
  386. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/nesting.py +0 -0
  387. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/path.py +0 -0
  388. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/shapes.py +0 -0
  389. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/path/tools.py +0 -0
  390. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/protocols.py +0 -0
  391. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/proxygraphic.py +0 -0
  392. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/py.typed +0 -0
  393. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/query.py +0 -0
  394. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/queryparser.py +0 -0
  395. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/r12strict.py +0 -0
  396. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/recover.py +0 -0
  397. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/__init__.py +0 -0
  398. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/_linetypes.py +0 -0
  399. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/abstract_mtext_renderer.py +0 -0
  400. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/arrows.py +0 -0
  401. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/curves.py +0 -0
  402. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dim_base.py +0 -0
  403. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dim_curved.py +0 -0
  404. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dim_diameter.py +0 -0
  405. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dim_linear.py +0 -0
  406. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dim_ordinate.py +0 -0
  407. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dim_radius.py +0 -0
  408. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/dimension.py +0 -0
  409. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/forms.py +0 -0
  410. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/hatching.py +0 -0
  411. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/leader.py +0 -0
  412. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/linetypes.py +0 -0
  413. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/mesh.py +0 -0
  414. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/mleader.py +0 -0
  415. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/mline.py +0 -0
  416. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/point.py +0 -0
  417. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/polyline.py +0 -0
  418. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/r12spline.py +0 -0
  419. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/render/trace.py +0 -0
  420. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/reorder.py +0 -0
  421. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/16x16.png +0 -0
  422. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/24x24.png +0 -0
  423. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/256x256.png +0 -0
  424. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/32x32.png +0 -0
  425. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/48x48.png +0 -0
  426. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/64x64.png +0 -0
  427. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-copy-64px.png +0 -0
  428. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-find-64px.png +0 -0
  429. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-goto-bookmark-64px.png +0 -0
  430. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-goto-handle-64px.png +0 -0
  431. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-goto-line-64px.png +0 -0
  432. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-left-arrow-64px.png +0 -0
  433. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-next-entity-64px.png +0 -0
  434. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-prev-entity-64px.png +0 -0
  435. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-right-arrow-64px.png +0 -0
  436. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-show-in-tree-64px.png +0 -0
  437. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/resources/icon-store-bookmark-64px.png +0 -0
  438. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/__init__.py +0 -0
  439. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/acdsdata.py +0 -0
  440. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/blocks.py +0 -0
  441. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/classes.py +0 -0
  442. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/entities.py +0 -0
  443. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/header.py +0 -0
  444. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/objects.py +0 -0
  445. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/table.py +0 -0
  446. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/sections/tables.py +0 -0
  447. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/__init__.py +0 -0
  448. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/_iso_pattern.py +0 -0
  449. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/analyze.py +0 -0
  450. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/binarydata.py +0 -0
  451. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/clipping_portal.py +0 -0
  452. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/codepage.py +0 -0
  453. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/complex_ltype.py +0 -0
  454. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/crypt.py +0 -0
  455. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/debug.py +0 -0
  456. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/difftags.py +0 -0
  457. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/handle.py +0 -0
  458. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/indexing.py +0 -0
  459. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/juliandate.py +0 -0
  460. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/pattern.py +0 -0
  461. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/rawloader.py +0 -0
  462. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/standards.py +0 -0
  463. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/strip.py +0 -0
  464. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/test.py +0 -0
  465. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/text.py +0 -0
  466. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/text_layout.py +0 -0
  467. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/text_size.py +0 -0
  468. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/tools/zipmanager.py +0 -0
  469. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/transform.py +0 -0
  470. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/units.py +0 -0
  471. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/upright.py +0 -0
  472. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/urecord.py +0 -0
  473. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/xclip.py +0 -0
  474. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/xref.py +0 -0
  475. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf/zoom.py +0 -0
  476. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf.egg-info/dependency_links.txt +0 -0
  477. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf.egg-info/entry_points.txt +0 -0
  478. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf.egg-info/not-zip-safe +0 -0
  479. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf.egg-info/requires.txt +0 -0
  480. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/src/ezdxf.egg-info/top_level.txt +0 -0
  481. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/conftest.py +0 -0
  482. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_001_dxf_types.py +0 -0
  483. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_002_dxf_vertex.py +0 -0
  484. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_003_dxf_binary_tag.py +0 -0
  485. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_004_dxf_value.py +0 -0
  486. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_010_binary_data.py +0 -0
  487. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_011_codepage.py +0 -0
  488. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_012_crypt.py +0 -0
  489. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_013_juliandate.py +0 -0
  490. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_014_multi_tags_text.py +0 -0
  491. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_015_entity_structure_validator.py +0 -0
  492. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_016_encoding.py +0 -0
  493. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_018_handle.py +0 -0
  494. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_019_complex_line_type.py +0 -0
  495. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_020_validators_and_fixer.py +0 -0
  496. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_021_fix_line_coordinates.py +0 -0
  497. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_022_set_flag_state.py +0 -0
  498. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_023_fix_invalid_located_group_codes.py +0 -0
  499. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_024_render_tag.py +0 -0
  500. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_040_tags.py +0 -0
  501. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_041_group_tags.py +0 -0
  502. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_042_tags_loader.py +0 -0
  503. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_043_filter_invalid_point_codes.py +0 -0
  504. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_050_extended_tags.py +0 -0
  505. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_051_load_dxf_structure.py +0 -0
  506. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_052_tag_writer.py +0 -0
  507. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_053_embedded_object_tags.py +0 -0
  508. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_054_dxfattr.py +0 -0
  509. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_055_recover_loader.py +0 -0
  510. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_056_special_string_decoding.py +0 -0
  511. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_00_dxf_low_level_structs/test_057_group_code_mapping.py +0 -0
  512. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_101_dxfnamespace.py +0 -0
  513. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_102_appdata.py +0 -0
  514. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_103_reactors.py +0 -0
  515. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_104_extension_dict.py +0 -0
  516. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_105_xdata.py +0 -0
  517. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_110_dxfentity.py +0 -0
  518. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_111_unknown_dxf_entity.py +0 -0
  519. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_112a_dxfgfx.py +0 -0
  520. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_112b_dxfobj.py +0 -0
  521. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_113_dxfclass.py +0 -0
  522. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_114_factory.py +0 -0
  523. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_115_new_empty_drawing.py +0 -0
  524. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_116_dictionary.py +0 -0
  525. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_117_layer_table_entry.py +0 -0
  526. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_118_appid_table_entry.py +0 -0
  527. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_119_ucs_table_entry.py +0 -0
  528. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_120_style_table_entry.py +0 -0
  529. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_121_ltype_table_entry.py +0 -0
  530. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_122_vport_table_entry.py +0 -0
  531. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_123_view_table_entry.py +0 -0
  532. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_124_dimstyle_table_entry.py +0 -0
  533. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_125_image_def.py +0 -0
  534. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_126_image_def_reactor.py +0 -0
  535. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_127_raster_variables.py +0 -0
  536. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_128_pdf_definition.py +0 -0
  537. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_129_xrecord.py +0 -0
  538. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_130_id_buffer.py +0 -0
  539. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_131_field_list.py +0 -0
  540. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_132_layer_filter.py +0 -0
  541. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_133_sun.py +0 -0
  542. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_134_material.py +0 -0
  543. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_135_geo_data.py +0 -0
  544. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_136_vba_project.py +0 -0
  545. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_137_sortentstable.py +0 -0
  546. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_138_setup_visual_styles.py +0 -0
  547. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_139_user_record.py +0 -0
  548. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_140_block_record.py +0 -0
  549. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_141_layer_vp_override.py +0 -0
  550. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_142_copy_strategy.py +0 -0
  551. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_143_spatial_filter.py +0 -0
  552. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_01_dxf_entities/test_144_roundtrip_xrecord.py +0 -0
  553. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/conftest.py +0 -0
  554. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_200_line.py +0 -0
  555. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_201_point.py +0 -0
  556. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_202_circle.py +0 -0
  557. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_203_arc.py +0 -0
  558. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_204_shape.py +0 -0
  559. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_205_solid.py +0 -0
  560. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_206_text.py +0 -0
  561. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_207_attdef.py +0 -0
  562. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_208_attrib.py +0 -0
  563. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_209_vertex.py +0 -0
  564. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_210_polyline_1.py +0 -0
  565. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_210_polyline_2.py +0 -0
  566. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_210_polyline_explode.py +0 -0
  567. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_210_polyline_vertex_attributes.py +0 -0
  568. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_211_viewport.py +0 -0
  569. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_212_insert.py +0 -0
  570. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_213_minsert.py +0 -0
  571. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_214_block.py +0 -0
  572. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_215_dimension.py +0 -0
  573. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_216_dimlines_R12.py +0 -0
  574. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_217_dimlines_R2000.py +0 -0
  575. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_218_poly_line_mesh_face.py +0 -0
  576. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_219_dxf_r2000_generics.py +0 -0
  577. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_220_lwpolyline_1.py +0 -0
  578. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_220_lwpolyline_3.py +0 -0
  579. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_220_lwpolyline_explode.py +0 -0
  580. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_221_ellipse.py +0 -0
  581. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_222_xline.py +0 -0
  582. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_223_ray.py +0 -0
  583. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_224_group.py +0 -0
  584. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_225_mtext.py +0 -0
  585. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_226_spline_with_linear_segments.py +0 -0
  586. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_227_mesh_packed_data.py +0 -0
  587. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_229a_hatch_dxf_interface.py +0 -0
  588. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_229b_hatch_extended.py +0 -0
  589. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_229c_hatch_transformations.py +0 -0
  590. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_230a_image_as_virtual_entity.py +0 -0
  591. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_230b_image_in_layout_context.py +0 -0
  592. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_231_underlay.py +0 -0
  593. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_231_underlay_2.py +0 -0
  594. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_232_acis.py +0 -0
  595. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_232_acis_2.py +0 -0
  596. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_232_surface.py +0 -0
  597. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_233_helix.py +0 -0
  598. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_234_light.py +0 -0
  599. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_235_leader.py +0 -0
  600. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_236_multileader.py +0 -0
  601. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_237_mline.py +0 -0
  602. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_238_tolerance.py +0 -0
  603. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_239_proxy_graphic.py +0 -0
  604. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_240_arc_dimension.py +0 -0
  605. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_241_hyperlink.py +0 -0
  606. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_242_random_transform.py +0 -0
  607. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_243_replace_entity.py +0 -0
  608. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_244_large_radial_dimension.py +0 -0
  609. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_245_wipeout.py +0 -0
  610. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_246_spline_audit.py +0 -0
  611. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_247_mtext_columns_R2018.py +0 -0
  612. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_248_mpolygon.py +0 -0
  613. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_248_mtext_linked_columns_R2000_to_R2013.py +0 -0
  614. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_249_boundary_paths.py +0 -0
  615. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_250_virtual_boundary_path_entities.py +0 -0
  616. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_251_upright.py +0 -0
  617. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_252_acad_proxy_entity.py +0 -0
  618. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_253_ole2frame.py +0 -0
  619. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_02_dxf_graphics/test_254_get_font_name.py +0 -0
  620. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_300_layout.py +0 -0
  621. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_301_add_gfx_to_layout.py +0 -0
  622. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_302_block_references.py +0 -0
  623. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_303_auto_block_references.py +0 -0
  624. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_304_new_entity_space.py +0 -0
  625. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_305_copy_and_move_entity_to_layout.py +0 -0
  626. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_306_copy_linked_entities.py +0 -0
  627. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_307_groupby.py +0 -0
  628. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_308_query.py +0 -0
  629. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_309_query_parser.py +0 -0
  630. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_311_add_foreign_entity.py +0 -0
  631. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_312_virtual_layout.py +0 -0
  632. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_03_dxf_layouts/test_313_redraw_order.py +0 -0
  633. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_401_headersection.py +0 -0
  634. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_402_classessection.py +0 -0
  635. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_403_entity_database.py +0 -0
  636. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_404a_tables.py +0 -0
  637. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_404b_object_collections.py +0 -0
  638. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_405_classes.py +0 -0
  639. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_406_blocks_section.py +0 -0
  640. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_407_entity_section.py +0 -0
  641. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_408_objects_section.py +0 -0
  642. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_409_create_objects.py +0 -0
  643. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_410_table.py +0 -0
  644. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_411_acds_data.py +0 -0
  645. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_412_rename_layer.py +0 -0
  646. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_413_dxfgroups.py +0 -0
  647. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_414_block_reference_content.py +0 -0
  648. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_415_layout_management.py +0 -0
  649. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_416a_disassemble.py +0 -0
  650. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_416b_recursive_decompose.py +0 -0
  651. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_417_bbox.py +0 -0
  652. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_418_copy_entities.py +0 -0
  653. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_420_load_dxf_file.py +0 -0
  654. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_421_new_drawings.py +0 -0
  655. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_422_drawing_object.py +0 -0
  656. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_423_read_proe_r2004.py +0 -0
  657. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_424_audit.py +0 -0
  658. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_425_limits_and_extents.py +0 -0
  659. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_426_ezdxf_metadata.py +0 -0
  660. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_427_appsettings.py +0 -0
  661. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_428_r12_name_translator.py +0 -0
  662. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_04_dxf_high_level_structs/test_429_xclip.py +0 -0
  663. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/conftest.py +0 -0
  664. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_500_units.py +0 -0
  665. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_501_truecolor.py +0 -0
  666. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_502_raw_color.py +0 -0
  667. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_503_indexing.py +0 -0
  668. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_504_suppress_zeros.py +0 -0
  669. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_506_version.py +0 -0
  670. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_508_read_zip.py +0 -0
  671. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_509_comments.py +0 -0
  672. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_510_byte_stream.py +0 -0
  673. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_511_bit_stream.py +0 -0
  674. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_512_pattern.py +0 -0
  675. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_513_reorder_entities.py +0 -0
  676. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_514_text.py +0 -0
  677. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_515a_fonts_truetype.py +0 -0
  678. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_515b_fonts_shapefiles.py +0 -0
  679. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_515c_fonts_lff.py +0 -0
  680. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_516_zoom.py +0 -0
  681. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_517_text_layout.py +0 -0
  682. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_518_header_guid.py +0 -0
  683. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_519_mtext_editor.py +0 -0
  684. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_520_mtext_context.py +0 -0
  685. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_521_mtext_parser.py +0 -0
  686. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_522_text_scanner.py +0 -0
  687. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_523_text_size.py +0 -0
  688. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_524_block_reference_manager.py +0 -0
  689. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_525_transparency.py +0 -0
  690. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_526_explode.py +0 -0
  691. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_527_gfxattribs.py +0 -0
  692. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_528_difftags.py +0 -0
  693. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_529_acis_sat.py +0 -0
  694. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_530_acis_sab.py +0 -0
  695. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_531_acis_entities.py +0 -0
  696. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_532_acis_mesh.py +0 -0
  697. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_533_shapefiles.py +0 -0
  698. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_534_dwg_info.py +0 -0
  699. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_535_xref_basic.py +0 -0
  700. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_536_xref_conflict.py +0 -0
  701. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_537_transform.py +0 -0
  702. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_538_scale_mtext_inline_commands.py +0 -0
  703. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_539_npshapes.py +0 -0
  704. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_540_lff_parser.py +0 -0
  705. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_541_clipping_portal.py +0 -0
  706. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_05_tools/test_542_itertools.py +0 -0
  707. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/conftest.py +0 -0
  708. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_600_base.py +0 -0
  709. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_601_bulge.py +0 -0
  710. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_602_vec3.py +0 -0
  711. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_603_vec2.py +0 -0
  712. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_604_banded_matrix.py +0 -0
  713. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_604_linalg.py +0 -0
  714. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_605_matrix44.py +0 -0
  715. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_606_convexhull.py +0 -0
  716. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_607_perlin_noise.py +0 -0
  717. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_608_intersection_line_line_2d.py +0 -0
  718. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_609_point_on_line.py +0 -0
  719. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_610_ocs.py +0 -0
  720. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_611_ucs.py +0 -0
  721. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_612_ucs_pass_trough.py +0 -0
  722. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_614_construct_3d.py +0 -0
  723. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_615_rytz_axis.py +0 -0
  724. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_616_plane.py +0 -0
  725. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_617_clockwise_orientation.py +0 -0
  726. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_618_clipping.py +0 -0
  727. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_619_greiner_hormann.py +0 -0
  728. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_620_knot.py +0 -0
  729. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_621_bspline.py +0 -0
  730. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_622_bsplineu.py +0 -0
  731. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_623_rbspline.py +0 -0
  732. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_624_global_bspline_interpolation.py +0 -0
  733. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_626_local_bspline_interpolation.py +0 -0
  734. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_627_bspline_basis.py +0 -0
  735. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_629_bezier.py +0 -0
  736. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_630a_bezier4p_base.py +0 -0
  737. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_630b_bezier4p_functions.py +0 -0
  738. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_631_euler_spiral.py +0 -0
  739. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_632_bezier3p.py +0 -0
  740. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_640_bbox.py +0 -0
  741. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_641_construction_ray.py +0 -0
  742. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_642_construction_line.py +0 -0
  743. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_643_construction_box.py +0 -0
  744. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_644_construction_circle.py +0 -0
  745. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_645_construction_arc.py +0 -0
  746. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_646_offset_vertices_2d.py +0 -0
  747. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_647_transform_tools.py +0 -0
  748. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_648_construction_ellipse.py +0 -0
  749. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_650_elliptic_arc_span.py +0 -0
  750. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_651_construction_polyline.py +0 -0
  751. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_652_approx_param_t.py +0 -0
  752. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_653_polyline_intersection.py +0 -0
  753. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_654_rtree.py +0 -0
  754. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_655_dbscan.py +0 -0
  755. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_656_k_means.py +0 -0
  756. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_657_mapbox_earcut.py +0 -0
  757. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_658_bevel_tools.py +0 -0
  758. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_659_intersection_line_polygon_3d.py +0 -0
  759. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_660_intersection_ray_polygon_3d.py +0 -0
  760. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_661_is_face_normal_pointing_outwards.py +0 -0
  761. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_662_is_convex_polygon_2d.py +0 -0
  762. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_663_is_axes_aligned_rectange.py +0 -0
  763. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_664_concave_clipping_polygon.py +0 -0
  764. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_06_math/test_665_inverted_clipping_polygon.py +0 -0
  765. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_701_arrows.py +0 -0
  766. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_702_render_forms.py +0 -0
  767. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_703_mesh_builder.py +0 -0
  768. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_704_render_linear_dimension.py +0 -0
  769. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_705_shape.py +0 -0
  770. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_706_random_path.py +0 -0
  771. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_707_trace.py +0 -0
  772. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_708a_path.py +0 -0
  773. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_708c_matplotlib_path_tools.py +0 -0
  774. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_708d_qpainter_path_tools.py +0 -0
  775. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_708e_path_shapes.py +0 -0
  776. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_708f_path_nesting.py +0 -0
  777. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_709_linetype_renderer.py +0 -0
  778. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_711_points.py +0 -0
  779. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_712_render_curved_dimension.py +0 -0
  780. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_713_mleader_builder.py +0 -0
  781. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_714_mleader_render_engine.py +0 -0
  782. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_715_hatching.py +0 -0
  783. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_07_render/test_715_issue_747_explode_3d_dim.py +0 -0
  784. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_800_mtext_surrogate.py +0 -0
  785. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_801_r12spline.py +0 -0
  786. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_802_table_painter.py +0 -0
  787. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_804_importer.py +0 -0
  788. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_805_pycsg.py +0 -0
  789. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_806_acadctb.py +0 -0
  790. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_807_dwg_loader_basics.py +0 -0
  791. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_811b_drawing_recorder.py +0 -0
  792. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_811c_viewport_processing.py +0 -0
  793. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_812_drawing_graphic_proxy.py +0 -0
  794. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_813_geo_interface.py +0 -0
  795. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_814_text2path.py +0 -0
  796. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_815_dxf_browser.py +0 -0
  797. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_816_bin_packing.py +0 -0
  798. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_817_genetic_algorithm.py +0 -0
  799. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_818_meshex.py +0 -0
  800. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_819_menger_sponge.py +0 -0
  801. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_820_openscad.py +0 -0
  802. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_821_hpgl2.py +0 -0
  803. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_821_hpgl2_polygon_encoded.py +0 -0
  804. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_823_drawing_layout.py +0 -0
  805. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_824_svg_drawing_backend.py +0 -0
  806. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_08_addons/test_825_hpgl2_drawing_backend.py +0 -0
  807. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_09_cython_acceleration/test_901_acc_vec2.py +0 -0
  808. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_09_cython_acceleration/test_902_acc_vec3.py +0 -0
  809. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_09_cython_acceleration/test_903_acc_matrix44.py +0 -0
  810. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_09_cython_acceleration/test_904_acc_bezier4p.py +0 -0
  811. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_09_cython_acceleration/test_905_acc_bezier3p.py +0 -0
  812. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_09_cython_acceleration/test_906_acc_bspline.py +0 -0
  813. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_10_issues/test_issue_414_bbox_calculation.py +0 -0
  814. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_10_issues/test_issue_557_reload_dimension_text_style.py +0 -0
  815. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_10_issues/test_issue_574_flattening_error.py +0 -0
  816. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_10_issues/test_issue_589_incorrect_virtual_face3d.py +0 -0
  817. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_10_issues/test_issue_749_text_layout.py +0 -0
  818. {ezdxf-1.2.1a0 → ezdxf-1.3.0b0}/tests/test_10_issues/test_issue_873_circle_inverted_normal.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ezdxf
3
- Version: 1.2.1a0
3
+ Version: 1.3.0b0
4
4
  Summary: A Python package to create/manipulate DXF drawings.
5
5
  Author-email: Manfred Moitzi <me@mozman.at>
6
6
  Project-URL: Repository, https://github.com/mozman/ezdxf
@@ -2,7 +2,7 @@
2
2
  # Copyright (c) 2020-2024, Manfred Moitzi
3
3
  # License: MIT License
4
4
  from typing import Iterable, TYPE_CHECKING, Sequence, Optional
5
- from libc.math cimport fabs
5
+ from libc.math cimport fabs, M_PI, M_PI_2, M_PI_4, M_E, sin, tan, pow, atan, log
6
6
  from .vector cimport (
7
7
  isclose,
8
8
  Vec2,
@@ -285,4 +285,75 @@ def is_point_in_polygon_2d(
285
285
  return 1 # inside polygon
286
286
  else:
287
287
  return -1 # outside polygon
288
-
288
+
289
+ cdef double WGS84_SEMI_MAJOR_AXIS = 6378137
290
+ cdef double WGS84_SEMI_MINOR_AXIS = 6356752.3142
291
+ cdef double WGS84_ELLIPSOID_ECCENTRIC = 0.08181919092890624
292
+ cdef double RADIANS = M_PI / 180.0
293
+ cdef double DEGREES = 180.0 / M_PI
294
+
295
+
296
+ def gps_to_world_mercator(double longitude, double latitude) -> tuple[float, float]:
297
+ """Transform GPS (long/lat) to World Mercator.
298
+
299
+ Transform WGS84 `EPSG:4326 <https://epsg.io/4326>`_ location given as
300
+ latitude and longitude in decimal degrees as used by GPS into World Mercator
301
+ cartesian 2D coordinates in meters `EPSG:3395 <https://epsg.io/3395>`_.
302
+
303
+ Args:
304
+ longitude: represents the longitude value (East-West) in decimal degrees
305
+ latitude: represents the latitude value (North-South) in decimal degrees.
306
+
307
+ """
308
+ # From: https://epsg.io/4326
309
+ # EPSG:4326 WGS84 - World Geodetic System 1984, used in GPS
310
+ # To: https://epsg.io/3395
311
+ # EPSG:3395 - World Mercator
312
+ # Source: https://gis.stackexchange.com/questions/259121/transformation-functions-for-epsg3395-projection-vs-epsg3857
313
+ longitude = longitude * RADIANS # east
314
+ latitude = latitude * RADIANS # north
315
+ cdef double e_sin_lat = sin(latitude) * WGS84_ELLIPSOID_ECCENTRIC
316
+ cdef double c = pow(
317
+ (1.0 - e_sin_lat) / (1.0 + e_sin_lat), WGS84_ELLIPSOID_ECCENTRIC / 2.0
318
+ ) # 7-7 p.44
319
+ y = WGS84_SEMI_MAJOR_AXIS * log(tan(M_PI_4 + latitude / 2.0) * c) # 7-7 p.44
320
+ x = WGS84_SEMI_MAJOR_AXIS * longitude
321
+ return x, y
322
+
323
+
324
+ def world_mercator_to_gps(double x, double y, double tol = 1e-6) -> tuple[float, float]:
325
+ """Transform World Mercator to GPS.
326
+
327
+ Transform WGS84 World Mercator `EPSG:3395 <https://epsg.io/3395>`_
328
+ location given as cartesian 2D coordinates x, y in meters into WGS84 decimal
329
+ degrees as longitude and latitude `EPSG:4326 <https://epsg.io/4326>`_ as
330
+ used by GPS.
331
+
332
+ Args:
333
+ x: coordinate WGS84 World Mercator
334
+ y: coordinate WGS84 World Mercator
335
+ tol: accuracy for latitude calculation
336
+
337
+ """
338
+ # From: https://epsg.io/3395
339
+ # EPSG:3395 - World Mercator
340
+ # To: https://epsg.io/4326
341
+ # EPSG:4326 WGS84 - World Geodetic System 1984, used in GPS
342
+ # Source: Map Projections - A Working Manual
343
+ # https://pubs.usgs.gov/pp/1395/report.pdf
344
+ cdef double eccentric_2 = WGS84_ELLIPSOID_ECCENTRIC / 2.0
345
+ cdef double t = pow(M_E, (-y / WGS84_SEMI_MAJOR_AXIS)) # 7-10 p.44
346
+ cdef double e_sin_lat, latitude, latitude_prev
347
+
348
+ latitude_prev = M_PI_2 - 2.0 * atan(t) # 7-11 p.45
349
+ while True:
350
+ e_sin_lat = sin(latitude_prev) * WGS84_ELLIPSOID_ECCENTRIC
351
+ latitude = M_PI_2 - 2.0 * atan(
352
+ t * pow(((1.0 - e_sin_lat) / (1.0 + e_sin_lat)), eccentric_2)
353
+ ) # 7-9 p.44
354
+ if fabs(latitude - latitude_prev) < tol:
355
+ break
356
+ latitude_prev = latitude
357
+
358
+ longitude = x / WGS84_SEMI_MAJOR_AXIS # 7-12 p.45
359
+ return longitude * DEGREES, latitude * DEGREES
@@ -91,12 +91,13 @@ from ezdxf import xclip
91
91
  from .type_hints import Color
92
92
 
93
93
  if TYPE_CHECKING:
94
- from .designer import Designer
94
+ from .pipeline import AbstractPipeline
95
95
 
96
96
  __all__ = ["Frontend", "UniversalFrontend"]
97
97
 
98
+ TEntityFunc: TypeAlias = Callable[[DXFGraphic, Properties], None]
99
+ TDispatchTable: TypeAlias = Dict[str, TEntityFunc]
98
100
 
99
- TDispatchTable: TypeAlias = Dict[str, Callable[[DXFGraphic, Properties], None]]
100
101
  POST_ISSUE_MSG = (
101
102
  "Please post sample DXF file at https://github.com/mozman/ezdxf/issues."
102
103
  )
@@ -125,7 +126,7 @@ class UniversalFrontend:
125
126
  def __init__(
126
127
  self,
127
128
  ctx: RenderContext,
128
- designer: Designer,
129
+ pipeline: AbstractPipeline,
129
130
  config: Configuration = Configuration(),
130
131
  bbox_cache: Optional[ezdxf.bbox.Cache] = None,
131
132
  ):
@@ -133,10 +134,10 @@ class UniversalFrontend:
133
134
  # specific DXF document.
134
135
  self.ctx = ctx
135
136
  # the designer is the connection between frontend and backend
136
- self.designer = designer
137
- designer.set_draw_entities_callback(self.draw_entities_callback)
137
+ self.pipeline = pipeline
138
+ pipeline.set_draw_entities_callback(self.draw_entities_callback)
138
139
  self.config = ctx.update_configuration(config)
139
- designer.set_config(self.config)
140
+ pipeline.set_config(self.config)
140
141
 
141
142
  if self.config.pdsize is None or self.config.pdsize <= 0:
142
143
  self.log_message("relative point size is not supported")
@@ -164,9 +165,13 @@ class UniversalFrontend:
164
165
  # time.
165
166
  self._bbox_cache = bbox_cache
166
167
 
168
+ # Entity property override function stack:
169
+ self._property_override_functions: list[TEntityFunc] = []
170
+ self.push_property_override_function(self.override_properties)
171
+
167
172
  @property
168
173
  def text_engine(self):
169
- return self.designer.text_engine
174
+ return self.pipeline.text_engine
170
175
 
171
176
  def _build_dispatch_table(self) -> TDispatchTable:
172
177
  dispatch_table: TDispatchTable = {
@@ -201,15 +206,55 @@ class UniversalFrontend:
201
206
  """Called for skipped entities - override to alter behavior."""
202
207
  self.log_message(f'skipped entity {str(entity)}. Reason: "{msg}"')
203
208
 
209
+ def exec_property_override(
210
+ self, entity: DXFGraphic, properties: Properties
211
+ ) -> None:
212
+ """Execute entity property override functions. (internal API)"""
213
+ for override_fn in self._property_override_functions:
214
+ override_fn(entity, properties)
215
+
204
216
  def override_properties(self, entity: DXFGraphic, properties: Properties) -> None:
205
- """The :meth:`override_properties` filter can change the properties of
206
- an entity independent of the DXF attributes.
217
+ """This method can change the resolved properties of an DXF entity.
218
+
219
+ The method has access to the DXF entity attributes, the current render context
220
+ and the resolved properties. It is recommended to modify only the resolved
221
+ `properties` in this method, because the DXF entities are not copies - except
222
+ for virtual entities.
223
+
224
+ .. versionchanged:: 1.3.0
225
+
226
+ This method is the first function in the stack of new property override
227
+ functions. It is possible to push additional override functions onto this
228
+ stack, see also :meth:`push_property_override_function`.
229
+
230
+ """
231
+
232
+ def push_property_override_function(self, override_fn: TEntityFunc) -> None:
233
+ """The override function can change the resolved properties of an DXF entity.
234
+
235
+ The override function has access to the DXF entity attributes and the resolved
236
+ properties. It is recommended to modify only the resolved `properties` in this
237
+ function, because the DXF entities are not copies - except for virtual entities.
238
+
239
+ The override functions are called after resolving the DXF attributes of an entity
240
+ and before the :meth:`Frontend.draw_entity` method in the order from first to
241
+ last.
242
+
243
+ .. versionadded:: 1.3.0
244
+
245
+ """
246
+ self._property_override_functions.append(override_fn)
247
+
248
+ def pop_property_override_function(self) -> None:
249
+ """Remove the last function from the property override stack.
250
+
251
+ Does not raise an exception if the override stack is empty.
252
+
253
+ .. versionadded:: 1.3.0
207
254
 
208
- This filter has access to the DXF attributes by the `entity` object,
209
- the current render context, and the resolved properties by the
210
- `properties` object. It is recommended to modify only the `properties`
211
- object in this filter.
212
255
  """
256
+ if self._property_override_functions:
257
+ self._property_override_functions.pop()
213
258
 
214
259
  def draw_layout(
215
260
  self,
@@ -239,7 +284,6 @@ class UniversalFrontend:
239
284
 
240
285
  """
241
286
  if layout_properties is not None:
242
- # TODO: this does not work, layer properties have to be re-evaluated!
243
287
  self.ctx.current_layout_properties = layout_properties
244
288
  else:
245
289
  self.ctx.set_current_layout(layout)
@@ -258,7 +302,7 @@ class UniversalFrontend:
258
302
  filter_func=filter_func,
259
303
  )
260
304
  if finalize:
261
- self.designer.finalize()
305
+ self.pipeline.finalize()
262
306
 
263
307
  def set_background(self, color: Color) -> None:
264
308
  policy = self.config.background_policy
@@ -279,7 +323,7 @@ class UniversalFrontend:
279
323
  color = self.config.custom_bg_color
280
324
  if override:
281
325
  self.ctx.current_layout_properties.set_colors(color)
282
- self.designer.set_background(color)
326
+ self.pipeline.set_background(color)
283
327
 
284
328
  def draw_entities(
285
329
  self,
@@ -306,10 +350,10 @@ class UniversalFrontend:
306
350
  properties: resolved entity properties
307
351
 
308
352
  """
309
- self.designer.enter_entity(entity, properties)
353
+ self.pipeline.enter_entity(entity, properties)
310
354
  if not entity.is_virtual:
311
355
  # top level entity
312
- self.designer.set_current_entity_handle(entity.dxf.handle)
356
+ self.pipeline.set_current_entity_handle(entity.dxf.handle)
313
357
  if (
314
358
  entity.proxy_graphic
315
359
  and self.config.proxy_graphic_policy == ProxyGraphicPolicy.PREFER
@@ -340,22 +384,22 @@ class UniversalFrontend:
340
384
  else:
341
385
  self.skip_entity(entity, "unsupported")
342
386
 
343
- self.designer.exit_entity(entity)
387
+ self.pipeline.exit_entity(entity)
344
388
 
345
389
  def draw_line_entity(self, entity: DXFGraphic, properties: Properties) -> None:
346
390
  d, dxftype = entity.dxf, entity.dxftype()
347
391
  if dxftype == "LINE":
348
- self.designer.draw_line(d.start, d.end, properties)
392
+ self.pipeline.draw_line(d.start, d.end, properties)
349
393
 
350
394
  elif dxftype in ("XLINE", "RAY"):
351
395
  start = d.start
352
396
  delta = d.unit_vector * self.config.infinite_line_length
353
397
  if dxftype == "XLINE":
354
- self.designer.draw_line(
398
+ self.pipeline.draw_line(
355
399
  start - delta / 2, start + delta / 2, properties
356
400
  )
357
401
  elif dxftype == "RAY":
358
- self.designer.draw_line(start, start + delta, properties)
402
+ self.pipeline.draw_line(start, start + delta, properties)
359
403
  else:
360
404
  raise TypeError(dxftype)
361
405
 
@@ -373,7 +417,7 @@ class UniversalFrontend:
373
417
  def get_font_face(self, properties: Properties) -> fonts.FontFace:
374
418
  font_face = properties.font
375
419
  if font_face is None:
376
- return self.designer.default_font_face
420
+ return self.pipeline.default_font_face
377
421
  return font_face
378
422
 
379
423
  def draw_text_entity_2d(self, entity: DXFGraphic, properties: Properties) -> None:
@@ -381,7 +425,7 @@ class UniversalFrontend:
381
425
  for line, transform, cap_height in simplified_text_chunks(
382
426
  entity, self.text_engine, font_face=self.get_font_face(properties)
383
427
  ):
384
- self.designer.draw_text(
428
+ self.pipeline.draw_text(
385
429
  line, transform, properties, cap_height, entity.dxftype()
386
430
  )
387
431
  else:
@@ -410,20 +454,20 @@ class UniversalFrontend:
410
454
  for line, transform, cap_height in simplified_text_chunks(
411
455
  mtext, self.text_engine, font_face=self.get_font_face(properties)
412
456
  ):
413
- self.designer.draw_text(
457
+ self.pipeline.draw_text(
414
458
  line, transform, properties, cap_height, mtext.dxftype()
415
459
  )
416
460
 
417
461
  def draw_complex_mtext(self, mtext: MText, properties: Properties) -> None:
418
462
  """Draw the content of a MTEXT entity including inline formatting codes."""
419
- complex_mtext_renderer(self.ctx, self.designer, mtext, properties)
463
+ complex_mtext_renderer(self.ctx, self.pipeline, mtext, properties)
420
464
 
421
465
  def draw_curve_entity(self, entity: DXFGraphic, properties: Properties) -> None:
422
466
  try:
423
467
  path = make_path(entity)
424
468
  except AttributeError: # API usage error
425
469
  raise TypeError(f"Unsupported DXF type {entity.dxftype()}")
426
- self.designer.draw_path(path, properties)
470
+ self.pipeline.draw_path(path, properties)
427
471
 
428
472
  def draw_point_entity(self, entity: DXFGraphic, properties: Properties) -> None:
429
473
  point = cast(Point, entity)
@@ -440,7 +484,7 @@ class UniversalFrontend:
440
484
  pdmode = 0
441
485
 
442
486
  if pdmode == 0:
443
- self.designer.draw_point(entity.dxf.location, properties)
487
+ self.pipeline.draw_point(entity.dxf.location, properties)
444
488
  else:
445
489
  for entity in point.virtual_entities(pdsize, pdmode):
446
490
  dxftype = entity.dxftype()
@@ -448,9 +492,9 @@ class UniversalFrontend:
448
492
  start = entity.dxf.start
449
493
  end = entity.dxf.end
450
494
  if start.isclose(end):
451
- self.designer.draw_point(start, properties)
495
+ self.pipeline.draw_point(start, properties)
452
496
  else: # direct draw by backend is OK!
453
- self.designer.draw_line(start, end, properties)
497
+ self.pipeline.draw_line(start, end, properties)
454
498
  pass
455
499
  elif dxftype == "CIRCLE":
456
500
  self.draw_curve_entity(entity, properties)
@@ -473,16 +517,16 @@ class UniversalFrontend:
473
517
  return
474
518
  edge_visibility = entity.get_edges_visibility()
475
519
  if all(edge_visibility):
476
- self.designer.draw_path(from_vertices(points), properties)
520
+ self.pipeline.draw_path(from_vertices(points), properties)
477
521
  else:
478
522
  for a, b, visible in zip(points, points[1:], edge_visibility):
479
523
  if visible:
480
- self.designer.draw_line(a, b, properties)
524
+ self.pipeline.draw_line(a, b, properties)
481
525
 
482
526
  elif isinstance(entity, Solid):
483
527
  # set solid fill type for SOLID and TRACE
484
528
  properties.filling = Filling()
485
- self.designer.draw_filled_polygon(
529
+ self.pipeline.draw_filled_polygon(
486
530
  entity.wcs_vertices(close=False), properties
487
531
  )
488
532
  else:
@@ -522,7 +566,7 @@ class UniversalFrontend:
522
566
  (e.x, e.y, elevation)
523
567
  )
524
568
  lines.append((s, e))
525
- self.designer.draw_solid_lines(lines, properties)
569
+ self.pipeline.draw_solid_lines(lines, properties)
526
570
 
527
571
  def draw_hatch_entity(
528
572
  self,
@@ -572,10 +616,10 @@ class UniversalFrontend:
572
616
  paths = closed_loops(boundary_paths, ocs, elevation)
573
617
  if show_only_outline:
574
618
  for p in ignore_text_boxes(paths):
575
- self.designer.draw_path(p, properties)
619
+ self.pipeline.draw_path(p, properties)
576
620
  return
577
621
  if paths:
578
- self.designer.draw_filled_paths(ignore_text_boxes(paths), properties)
622
+ self.pipeline.draw_filled_paths(ignore_text_boxes(paths), properties)
579
623
 
580
624
  def draw_mpolygon_entity(self, entity: DXFGraphic, properties: Properties):
581
625
  def resolve_fill_color() -> str:
@@ -610,14 +654,14 @@ class UniversalFrontend:
610
654
  properties.color = line_color
611
655
  # draw boundary paths as lines
612
656
  for loop in loops:
613
- self.designer.draw_path(loop, properties)
657
+ self.pipeline.draw_path(loop, properties)
614
658
 
615
659
  def draw_wipeout_entity(self, entity: DXFGraphic, properties: Properties) -> None:
616
660
  wipeout = cast(Wipeout, entity)
617
661
  properties.filling = Filling()
618
662
  properties.color = self.ctx.current_layout_properties.background_color
619
663
  clipping_polygon = wipeout.boundary_path_wcs()
620
- self.designer.draw_filled_polygon(clipping_polygon, properties)
664
+ self.pipeline.draw_filled_polygon(clipping_polygon, properties)
621
665
 
622
666
  def draw_viewport(self, vp: Viewport) -> None:
623
667
  # the "active" viewport and invisible viewports should be filtered at this
@@ -628,7 +672,7 @@ class UniversalFrontend:
628
672
  if not vp.is_top_view:
629
673
  self.log_message("Cannot render non top-view viewports")
630
674
  return
631
- self.designer.draw_viewport(vp, self.ctx, self._bbox_cache)
675
+ self.pipeline.draw_viewport(vp, self.ctx, self._bbox_cache)
632
676
 
633
677
  def draw_ole2frame_entity(self, entity: DXFGraphic, properties: Properties) -> None:
634
678
  ole2frame = cast(OLE2Frame, entity)
@@ -712,12 +756,12 @@ class UniversalFrontend:
712
756
  use_clipping_boundary=image.dxf.flags & Image.USE_CLIPPING_BOUNDARY,
713
757
  remove_outside=image.dxf.clip_mode == 0,
714
758
  )
715
- self.designer.draw_image(image_data, properties)
759
+ self.pipeline.draw_image(image_data, properties)
716
760
 
717
761
  elif show_filename_if_missing:
718
762
  default_cap_height = 20
719
763
  text = image_def.dxf.filename
720
- font = self.designer.text_engine.get_font(
764
+ font = self.pipeline.text_engine.get_font(
721
765
  self.get_font_face(properties)
722
766
  )
723
767
  text_width = font.text_width_ex(text, default_cap_height)
@@ -732,7 +776,7 @@ class UniversalFrontend:
732
776
  transform = (
733
777
  Matrix44.scale(scale) @ translate @ image.get_wcs_transform()
734
778
  )
735
- self.designer.draw_text(
779
+ self.pipeline.draw_text(
736
780
  text,
737
781
  transform,
738
782
  properties,
@@ -740,7 +784,7 @@ class UniversalFrontend:
740
784
  )
741
785
 
742
786
  points = [v.vec2 for v in image.boundary_path_wcs()]
743
- self.designer.draw_solid_lines(list(zip(points, points[1:])), properties)
787
+ self.pipeline.draw_solid_lines(list(zip(points, points[1:])), properties)
744
788
 
745
789
  elif self.config.image_policy == ImagePolicy.PROXY:
746
790
  self.draw_proxy_graphic(entity.proxy_graphic, entity.doc)
@@ -760,7 +804,7 @@ class UniversalFrontend:
760
804
  props.color = color
761
805
  # default SOLID filling
762
806
  props.filling = Filling()
763
- self.designer.draw_filled_polygon(points, props)
807
+ self.pipeline.draw_filled_polygon(points, props)
764
808
 
765
809
  def draw_mesh_entity(self, entity: DXFGraphic, properties: Properties) -> None:
766
810
  builder = MeshBuilder.from_mesh(entity) # type: ignore
@@ -770,7 +814,7 @@ class UniversalFrontend:
770
814
  self, builder: MeshBuilder, properties: Properties
771
815
  ) -> None:
772
816
  for face in builder.faces_as_vertices():
773
- self.designer.draw_path(
817
+ self.pipeline.draw_path(
774
818
  from_vertices(face, close=True), properties=properties
775
819
  )
776
820
 
@@ -811,10 +855,10 @@ class UniversalFrontend:
811
855
  points = polygon # type: ignore
812
856
  # Set default SOLID filling for LWPOLYLINE
813
857
  properties.filling = Filling()
814
- self.designer.draw_filled_polygon(points, properties)
858
+ self.pipeline.draw_filled_polygon(points, properties)
815
859
  return
816
860
 
817
- self.designer.draw_path(make_path(entity), properties)
861
+ self.pipeline.draw_path(make_path(entity), properties)
818
862
 
819
863
  def draw_composite_entity(self, entity: DXFGraphic, properties: Properties) -> None:
820
864
  def draw_insert(insert: Insert):
@@ -834,7 +878,7 @@ class UniversalFrontend:
834
878
  boundary_path.inner_polygon(),
835
879
  outer_bounds=boundary_path.outer_bounds(),
836
880
  )
837
- self.designer.push_clipping_shape(clipping_shape, None)
881
+ self.pipeline.push_clipping_shape(clipping_shape, None)
838
882
 
839
883
  # draw_entities() includes the visibility check:
840
884
  self.draw_entities(
@@ -845,11 +889,11 @@ class UniversalFrontend:
845
889
  )
846
890
 
847
891
  if is_clipping_active and clip.get_xclip_frame_policy():
848
- self.designer.draw_path(
892
+ self.pipeline.draw_path(
849
893
  path=from_vertices(boundary_path.inner_polygon(), close=True),
850
894
  properties=properties,
851
895
  )
852
- self.designer.pop_clipping_shape()
896
+ self.pipeline.pop_clipping_shape()
853
897
 
854
898
  if isinstance(entity, Insert):
855
899
  self.ctx.push_state(properties)
@@ -905,9 +949,9 @@ class Frontend(UniversalFrontend):
905
949
  config: Configuration = Configuration(),
906
950
  bbox_cache: Optional[ezdxf.bbox.Cache] = None,
907
951
  ):
908
- from .designer import Designer2d
952
+ from .pipeline import RenderPipeline2d
909
953
 
910
- super().__init__(ctx, Designer2d(out), config, bbox_cache)
954
+ super().__init__(ctx, RenderPipeline2d(out), config, bbox_cache)
911
955
 
912
956
 
913
957
  def is_spatial_text(extrusion: Vec3) -> bool:
@@ -968,7 +1012,7 @@ def _draw_entities(
968
1012
  frontend.skip_entity(entity, "Cannot parse DXF entity")
969
1013
  continue
970
1014
  properties = ctx.resolve_all(entity)
971
- frontend.override_properties(entity, properties)
1015
+ frontend.exec_property_override(entity, properties)
972
1016
  if properties.is_visible:
973
1017
  frontend.draw_entity(entity, properties)
974
1018
  else: