D7953: hgdemandimport: disable on Python 3.5
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Tue Jan 21 08:03:10 EST 2020
Closed by commit rHG1292386dd05c: hgdemandimport: disable on Python 3.5 (authored by indygreg).
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7953?vs=19460&id=19466
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7953/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7953
AFFECTED FILES
hgdemandimport/demandimportpy3.py
tests/test-demandimport.py
CHANGE DETAILS
diff --git a/tests/test-demandimport.py b/tests/test-demandimport.py
--- a/tests/test-demandimport.py
+++ b/tests/test-demandimport.py
@@ -22,6 +22,10 @@
if sys.flags.optimize:
sys.exit(80)
+# The demand importer doesn't work on Python 3.5.
+if sys.version_info[0:2] == (3, 5):
+ sys.exit(80)
+
if ispy3:
from importlib.util import _LazyModule
diff --git a/hgdemandimport/demandimportpy3.py b/hgdemandimport/demandimportpy3.py
--- a/hgdemandimport/demandimportpy3.py
+++ b/hgdemandimport/demandimportpy3.py
@@ -36,6 +36,12 @@
_deactivated = False
+# Python 3.5's LazyLoader doesn't work for some reason.
+# https://bugs.python.org/issue26186 is a known issue with extension
+# importing. But it appears to not have a meaningful effect with
+# Mercurial.
+_supported = sys.version_info[0:2] >= (3, 6)
+
class _lazyloaderex(importlib.util.LazyLoader):
"""This is a LazyLoader except it also follows the _deactivated global and
@@ -51,15 +57,9 @@
super().exec_module(module)
-# This is 3.6+ because with Python 3.5 it isn't possible to lazily load
-# extensions. See the discussion in https://bugs.python.org/issue26186 for more.
-if sys.version_info[0:2] >= (3, 6):
- _extensions_loader = _lazyloaderex.factory(
- importlib.machinery.ExtensionFileLoader
- )
-else:
- _extensions_loader = importlib.machinery.ExtensionFileLoader
-
+_extensions_loader = _lazyloaderex.factory(
+ importlib.machinery.ExtensionFileLoader
+)
_bytecode_loader = _lazyloaderex.factory(
importlib.machinery.SourcelessFileLoader
)
@@ -97,6 +97,9 @@
def enable():
+ if not _supported:
+ return
+
sys.path_hooks.insert(0, _makefinder)
To: indygreg, #hg-reviewers, pulkit
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list