Draft: Speedup imports
The import time is quite huge already (6s) due to the unified namespace: every submodule is available when km3pipe
is imported.
One way to improve it is to delay the imports using the __getattr__
and __dir__
on modules (introduced in Python 3.7), see https://snarky.ca/lazy-importing-in-python-3-7/
Or to not load any submodule, only when the user explicitly imports them. This however means that a import km3pipe as kp
and subsequent access to submodules like kp.io.hdf5.HDF5Pump
without any other imports will fail.