summarylogtreecommitdiffstats
path: root/0001-fix-Replace-use-of-imp-with-importlib.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-fix-Replace-use-of-imp-with-importlib.patch')
-rw-r--r--0001-fix-Replace-use-of-imp-with-importlib.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/0001-fix-Replace-use-of-imp-with-importlib.patch b/0001-fix-Replace-use-of-imp-with-importlib.patch
new file mode 100644
index 000000000000..ff3c6add3333
--- /dev/null
+++ b/0001-fix-Replace-use-of-imp-with-importlib.patch
@@ -0,0 +1,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
+