[PATCH v3] py3: handle meta-path finders that only use pre-python3.4 API
Ludovic Chabant
ludovic at chabant.com
Sun Apr 28 00:18:45 EDT 2019
# HG changeset patch
# User Ludovic Chabant <ludovic at chabant.com>
# Date 1555683918 0
# Fri Apr 19 14:25:18 2019 +0000
# Branch stable
# Node ID 3611368a1af3037427eb59635c7dad8dab67c606
# Parent 4a8d9ed864754837a185a642170cde24392f9abf
py3: handle meta-path finders that only use pre-python3.4 API
diff --git a/mercurial/__init__.py b/mercurial/__init__.py
--- a/mercurial/__init__.py
+++ b/mercurial/__init__.py
@@ -54,7 +54,16 @@
if finder == self:
continue
- spec = finder.find_spec(fullname, path, target=target)
+ # Originally the API was a `find_module` method, but it was
+ # renamed to `find_spec` in python 3.4, with a new `target`
+ # argument.
+ find_spec_method = getattr(finder, 'find_spec', None)
+ if find_spec_method:
+ spec = find_spec_method(fullname, path, target=target)
+ else:
+ spec = finder.find_module(fullname)
+ if spec is not None:
+ spec = importlib.util.spec_from_loader(fullname, spec)
if spec:
break
More information about the Mercurial-devel
mailing list