]> SALOME platform Git repositories - tools/sat.git/commitdiff
Salome HOME
use importlib instead of imp spns/41954
authorGuytri KASTANE <guytri.kastane@cea.fr>
Mon, 24 Jun 2024 12:56:54 +0000 (14:56 +0200)
committerGuytri KASTANE <guytri.kastane@cea.fr>
Mon, 24 Jun 2024 12:56:54 +0000 (14:56 +0200)
commands/generate.py
src/salomeTools.py
src/test_module.py

index a6a83ce33d3185d0086bd28920313aa8280d84f4..9d5bf54e8cb9a736f667e9e558b11eb355e88eea 100644 (file)
 import os
 import sys
 import shutil
-import imp
+if sys.version_info[:2] >= (3,12):
+    import importlib
+    import importlib.util
+else: import imp
 import subprocess
 
 import src
index 2b1a50d442a1b9c3706346f7dbd0fbeb517f0d97..877ef83abcb58477fbf056121f6193ee9885b70b 100755 (executable)
@@ -45,7 +45,10 @@ ERROR: 'salomeTools.py' is not main command entry (CLI) for salomeTools.
 import os
 import re
 import tempfile
-import imp
+if sys.version_info[:2] >= (3,12):
+    import importlib
+    import importlib.util
+else: import imp
 import types
 import gettext
 import traceback
@@ -361,8 +364,13 @@ class Sat(object):
                     continue
 
             # load the module that has name nameCmd in dirPath
-            (file_, pathname, description) = imp.find_module(nameCmd, [dirPath])
-            module = imp.load_module(nameCmd, file_, pathname, description)
+            if sys.version_info[:2] >= (3,12):
+                spec = importlib.machinery.PathFinder().find_spec(nameCmd, [dirPath])
+                module = importlib.util.module_from_spec(spec)
+                spec.loader.exec_module(module)
+            else:
+                (file_, pathname, description) = imp.find_module(nameCmd, [dirPath])
+                module = imp.load_module(nameCmd, file_, pathname, description)
             
             def run_command(args='',
                             options=None,
@@ -609,7 +617,12 @@ class Sat(object):
         # Try to execute the script, catch the exception if it fails
         try:
             # import the module (in the sense of python)
-            pymodule = imp.load_source(cmd_name, hook_script_path)
+            if sys.version_info[:2] >= (3,12):
+                spec = importlib.machinery.PathFinder().find_spec(cmd_name, hook_script_path)
+                pymodule = importlib.util.module_from_spec(spec)
+                spec.loader.exec_module(pymodule)
+            else:
+                pymodule = imp.load_source(cmd_name, hook_script_path)
             
             # format a message to be printed at hook execution
             msg = src.printcolors.printcWarning(_("Run hook script"))
@@ -676,8 +689,13 @@ class Sat(object):
             raise src.SatException(_("Command '%s' does not exist") % module)
 
         # load the module
-        (file_, pathname, description) = imp.find_module(module, [cmdsdir])
-        module = imp.load_module(module, file_, pathname, description)
+        if sys.version_info[:2] >= (3,12):
+            spec = importlib.util.find_spec(module)
+            module = importlib.util.module_from_spec(spec)
+            spec.loader.exec_module(module)
+        else:
+            (file_, pathname, description) = imp.find_module(module, [cmdsdir])
+            module = imp.load_module(module, file_, pathname, description)
         return module
 
 ##################################################################
index 218ba182e1073ff4afb26afbefe335ae6da7fc34..285635d4fde4c3ec3450f608a4b554ed9dcc8a09 100644 (file)
@@ -30,7 +30,9 @@ import sys
 import datetime
 import shutil
 import string
-import imp
+if sys.version_info[:2] >= (3,12):
+    import importlib
+else: import imp
 import subprocess
 import glob
 import pprint as PP