# HG changeset patch # User Siddharth Agarwal # Date 1495398377 25200 # Node ID 397e3a2e9347fcc180f01fe5b6a0d4071897ea8f # Parent b4810bf95c038528a7badf50c4de53f7249aefee python3: allow hgloader to work with lazy loaders Don't clobber the loader returned from find_spec. This brings `hg version` down from 0.27 seconds to 0.17. diff -r b4810bf95c03 -r 397e3a2e9347 mercurial/__init__.py --- a/mercurial/__init__.py Sun May 21 12:51:01 2017 -0700 +++ b/mercurial/__init__.py Sun May 21 13:26:17 2017 -0700 @@ -53,7 +53,14 @@ # TODO need to support loaders from alternate specs, like zip # loaders. - spec.loader = hgloader(spec.name, spec.origin) + loader = hgloader(spec.name, spec.origin) + # Can't use util.safehasattr here because that would require + # importing util, and we're in import code. + if hasattr(spec.loader, 'loader'): # hasattr-py3-only + # This is a nested loader (maybe a lazy loader?) + spec.loader.loader = loader + else: + spec.loader = loader return spec def replacetokens(tokens, fullname):