Conversation
|
The rest is OCP: registering 321 packages on import, which costs about a second. upd: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #2097 +/- ##
=======================================
Coverage 95.76% 95.76%
=======================================
Files 30 30
Lines 9584 9587 +3
Branches 1437 1437
=======================================
+ Hits 9178 9181 +3
Misses 250 250
Partials 156 156 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Thanks, but with the exception of |
|
My reasoning was to put each import next to its only use, so that the change stays small and no caller of dxf.py can bring ezdxf back by accident - two files, a dozen lines. Your split reads better in the package, though: the core does not import the I/O modules until it exports, and dxf.py stays a plain module about ezdxf. Agreed. To keep vtk out of OK to touch that one, or ezdxf only for now? |
import cadqueryloaded ezdxf and vtk although most sessions never touch a DXF or a render window. They are now imported by the functions that use them, and a test in a fresh interpreter keeps them out.Here the import drops from 1.50 to 1.10 seconds - 0.35 for ezdxf with fontTools, 0.15 for vtk - and loads 417 modules instead of 693.
Annotations that name vtk types are forward references now;
typing.get_type_hints()on those five functions resolves them once vtk is imported.