This is representative of things I’ve done to ensure import costs are minimal in library code. Youll find zero typing imports that are eager here, and the library is fully typed including complex type signatures: GitHub - mikeshardmind/async-utils: Collection of async utillities It’s a design goal that things using this can import and only incur the cost of what is used, and the only thing I had to do that I wasn’t happy about was remove use of typing.Final, not because of it having any runtime effect, but because type checkers don’t understand Final as a deferrable re-export.