File: Python3.12_imp.patch

package info (click to toggle)
python-coverage-test-runner 1.13.1-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 152 kB
  • sloc: python: 275; makefile: 10; sh: 2
file content (49 lines) | stat: -rw-r--r-- 1,905 bytes parent folder | download
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
Description: Replace deprecated module imp by importlib
             This patch has some issues discussed on the DPT mailing list
               https://lists.debian.org/debian-python/2024/02/msg00044.html
             Thus it is deactivated and python3-zombie-imp is used instead
Bug-Debian: https://bugs.debian.org/1058112
Author: Andreas Tille <tille@debian.org>
Last-Update: Thu, 22 Feb 2024 11:34:00 +0100
Forwarded: No upstream repository any more

--- a/CoverageTestRunner.py
+++ b/CoverageTestRunner.py
@@ -19,7 +19,8 @@ import coverage
 import unittest
 import optparse
 import os
-import imp
+import importlib
+import importlib.machinery
 import sys
 import time
 import logging
@@ -154,12 +155,12 @@ class CoverageTestRunner:
                     self.add_excluded_module(filename)
 
     def _load_module_from_pathname(self, pathname):
-        for tuple in imp.get_suffixes():
-            suffix, mode, type = tuple
-            if pathname.endswith(suffix):
-                name = os.path.basename(pathname[:-len(suffix)])
-                f = open(pathname, mode)
-                return imp.load_module(name, f, pathname, tuple)
+        name = os.path.basename(pathname).split('.')[0]
+        loader = importlib.machinery.SourceFileLoader(name, pathname)
+        spec = importlib.util.spec_from_loader(name, loader)
+        module = importlib.util.module_from_spec(spec)
+        loader.exec_module(module)
+        return module
         raise Exception("Unknown module: %s" % pathname)
 
     def _load_pairs(self):
@@ -207,7 +208,7 @@ class CoverageTestRunner:
             _coverage.exclude(r"#\s*pragma: no cover")
             _coverage.start()
             sys.path.insert(0, os.path.dirname(module.__file__))
-            imp.reload(module)
+            importlib.reload(module)
             del sys.path[0]
             self.disable_logging()
             suite.run(result)