Repository navigation
Conversation
|
The rest is OCP: registering 321 packages on import, which costs about a second. upd: |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #2097 +/- ##
==========================================
- Coverage 95.76% 95.68% -0.08%
==========================================
Files 30 30
Lines 9584 9621 +37
Branches 1437 1448 +11
==========================================
+ Hits 9178 9206 +28
- Misses 250 254 +4
- Partials 156 161 +5 ☔ 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 @adam-urbanczyk ? |
|
Yeah, not problem with changing |
As suggested in review, the I/O modules keep plain imports and the functions that export or import load them. STEPExportModeLiterals moves to types, so that Assembly.export needs no exporter import.
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.