]> SALOME platform Git repositories - tools/sat.git/commitdiff
Salome HOME
spns #41954: support python 3.12
authorGuytri KASTANE <guytri.kastane@cea.fr>
Mon, 24 Jun 2024 12:56:54 +0000 (14:56 +0200)
committerNabil Ghodbane <nabil.ghodbane@cea.fr>
Fri, 30 Aug 2024 14:17:53 +0000 (16:17 +0200)
commands/generate.py
src/salomeTools.py
src/test_module.py

index a6a83ce33d3185d0086bd28920313aa8280d84f4..67df03d01abc5832803bb03d2475ff4e2bdf2f09 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..4e4681f62e6daa5781438ece6a801081abd56e11 100755 (executable)
@@ -26,7 +26,6 @@ This file is the main API file for salomeTools
 """
 
 import sys
-
 # exit OKSYS and KOSYS seems equal on linux or windows
 _OKSYS = 0  # OK
 _KOSYS = 1  # KO
@@ -45,7 +44,11 @@ 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..3792b13ce09a096100d11160428137f4c53d149d 100644 (file)
@@ -30,7 +30,10 @@ 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