hgdemandimport/demandimportpy3.py
changeset 48958 b8eb29ab3906
parent 48946 642e31cb55f0
child 49536 87516dd774d0
child 49774 48e38b179106
equal deleted inserted replaced
48957:edab75a4c1da 48958:b8eb29ab3906
    30 import sys
    30 import sys
    31 
    31 
    32 from . import tracing
    32 from . import tracing
    33 
    33 
    34 _deactivated = False
    34 _deactivated = False
    35 
       
    36 # Python 3.5's LazyLoader doesn't work for some reason.
       
    37 # https://bugs.python.org/issue26186 is a known issue with extension
       
    38 # importing. But it appears to not have a meaningful effect with
       
    39 # Mercurial.
       
    40 _supported = sys.version_info[0:2] >= (3, 6)
       
    41 
    35 
    42 
    36 
    43 class _lazyloaderex(importlib.util.LazyLoader):
    37 class _lazyloaderex(importlib.util.LazyLoader):
    44     """This is a LazyLoader except it also follows the _deactivated global and
    38     """This is a LazyLoader except it also follows the _deactivated global and
    45     the ignore list.
    39     the ignore list.
   142         )
   136         )
   143     sys.meta_path[:] = new_finders
   137     sys.meta_path[:] = new_finders
   144 
   138 
   145 
   139 
   146 def enable():
   140 def enable():
   147     if not _supported:
       
   148         return
       
   149 
       
   150     new_finders = []
   141     new_finders = []
   151     for finder in sys.meta_path:
   142     for finder in sys.meta_path:
   152         new_finders.append(
   143         new_finders.append(
   153             LazyFinder(finder) if not isinstance(finder, LazyFinder) else finder
   144             LazyFinder(finder) if not isinstance(finder, LazyFinder) else finder
   154         )
   145         )