From 60a10d05397b410b27d3532be1f7a0cac7b8d3cd Mon Sep 17 00:00:00 2001 From: envolution Date: Sat, 7 Jun 2025 04:13:36 -0400 Subject: [PATCH] replace imp import with importlib.util imp was deprecated in 3.4 and removed in 3.12. this continues to use python system libraries but adds compatibility for python 3.13+ --- src/extension/python/python_extension.py | 31 ++++++++++++++---------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/extension/python/python_extension.py b/src/extension/python/python_extension.py index 80c1058f..62e615bc 100644 --- a/src/extension/python/python_extension.py +++ b/src/extension/python/python_extension.py @@ -1,19 +1,24 @@ from proot import * import ctypes -import imp +import importlib.util +import sys client = None def python_callback(extension, event, data1, data2): - global client - res = 0 - - if event == 11: - if client: - print "Already have a client => refuse to use %s" % (ctypes.string_at(data1)) - else: - client = imp.load_source('client', ctypes.string_at(data1)) - if client: - return client.python_callback(extension, event, data1, data2) - - return 0 + global client + res = 0 + if event == 11: + if client: + print("Already have a client => refuse to use %s" % (ctypes.string_at(data1).decode('utf-8'))) + else: + module_path = ctypes.string_at(data1).decode('utf-8') + + spec = importlib.util.spec_from_file_location("client", module_path) + client = importlib.util.module_from_spec(spec) + sys.modules["client"] = client + spec.loader.exec_module(client) + + if client: + return client.python_callback(extension, event, data1, data2) + return 0