summarylogtreecommitdiffstats
path: root/0001-fix-Replace-use-of-imp-with-importlib.patch
blob: ff3c6add33338a8885e11bb1c922afd4744e9581 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
From 13dd00c79865d8a0c23ddade9acd5793e167cdd9 Mon Sep 17 00:00:00 2001
From: Andrew Senetar <arsenetar@gmail.com>
Date: Mon, 19 Feb 2024 09:39:12 -0800
Subject: [PATCH] fix: Replace use of `imp` with `importlib`

Original PR and information found at #1187
---
 hscommon/pygettext.py | 50 +++++++------------------------------------
 1 file changed, 8 insertions(+), 42 deletions(-)

diff --git a/hscommon/pygettext.py b/hscommon/pygettext.py
index 026219bf..85aaf6d9 100644
--- a/hscommon/pygettext.py
+++ b/hscommon/pygettext.py
@@ -15,7 +15,8 @@
 #
 
 import os
-import imp
+import importlib.machinery
+import importlib.util
 import sys
 import glob
 import token
@@ -110,7 +111,7 @@ def _visit_pyfiles(list, dirname, names):
     # get extension for python source files
     if "_py_ext" not in globals():
         global _py_ext
-        _py_ext = [triple[0] for triple in imp.get_suffixes() if triple[2] == imp.PY_SOURCE][0]
+        _py_ext = importlib.machinery.SOURCE_SUFFIXES[0]
 
     # don't recurse into CVS directories
     if "CVS" in names:
@@ -120,45 +121,6 @@ def _visit_pyfiles(list, dirname, names):
     list.extend([os.path.join(dirname, file) for file in names if os.path.splitext(file)[1] == _py_ext])
 
 
-def _get_modpkg_path(dotted_name, pathlist=None):
-    """Get the filesystem path for a module or a package.
-
-    Return the file system path to a file for a module, and to a directory for
-    a package. Return None if the name is not found, or is a builtin or
-    extension module.
-    """
-    # split off top-most name
-    parts = dotted_name.split(".", 1)
-
-    if len(parts) > 1:
-        # we have a dotted path, import top-level package
-        try:
-            file, pathname, description = imp.find_module(parts[0], pathlist)
-            if file:
-                file.close()
-        except ImportError:
-            return None
-
-        # check if it's indeed a package
-        if description[2] == imp.PKG_DIRECTORY:
-            # recursively handle the remaining name parts
-            pathname = _get_modpkg_path(parts[1], [pathname])
-        else:
-            pathname = None
-    else:
-        # plain name
-        try:
-            file, pathname, description = imp.find_module(dotted_name, pathlist)
-            if file:
-                file.close()
-            if description[2] not in [imp.PY_SOURCE, imp.PKG_DIRECTORY]:
-                pathname = None
-        except ImportError:
-            pathname = None
-
-    return pathname
-
-
 def getFilesForName(name):
     """Get a list of module files for a filename, a module or package name,
     or a directory.
@@ -173,7 +135,11 @@ def getFilesForName(name):
             return file_list
 
         # try to find module or package
-        name = _get_modpkg_path(name)
+        try:
+            spec = importlib.util.find_spec(name)
+            name = spec.origin
+        except ImportError:
+            name = None
         if not name:
             return []
 
-- 
2.43.0