equal
deleted
inserted
replaced
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 ) |