From 8bc77fb831d16c309be13e37f3dec155f5725490 Mon Sep 17 00:00:00 2001 From: jayroplekar Date: Fri, 17 May 2024 22:42:32 -0500 Subject: [PATCH 1/3] Updated to work with Python 3.12.3 --- idlexlib/_version.py | 2 +- idlexlib/extensionManager.py | 9 ++++++--- idlexlib/extensions/CythonScript.py | 6 ++++-- idlexlib/extensions/idlexManager.py | 2 +- idlexlib/idlexMain.py | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/idlexlib/_version.py b/idlexlib/_version.py index 842ab6b..856f837 100644 --- a/idlexlib/_version.py +++ b/idlexlib/_version.py @@ -1,2 +1,2 @@ -__version__ = '1.22.1.dev0' +__version__ = '1.23.0.dev0' diff --git a/idlexlib/extensionManager.py b/idlexlib/extensionManager.py index 0bc36dd..40877ed 100644 --- a/idlexlib/extensionManager.py +++ b/idlexlib/extensionManager.py @@ -50,7 +50,7 @@ -import imp +#import imp try: import importlib HAS_IMPORTLIB = True @@ -70,7 +70,8 @@ def make_config_parser(cfg): # parse the configuration from the fake file confparse = IdleConfParser('') try: - confparse.readfp(fp) + #confparse.readfp(fp) + confparse.read_file(fp) except BaseException as e: print('\n Configuration Parse Error', e) return None @@ -141,7 +142,9 @@ def load_extension(self, name): def find_extension(self, name): """ Locates an extension """ path = self.extension_dir - info = imp.find_module(name, [path]) + #info = imp.find_module(name, [path]) + info =importlib.util.find_spec(name) + def load_extension_cfg(self, extName): diff --git a/idlexlib/extensions/CythonScript.py b/idlexlib/extensions/CythonScript.py index bd15fe5..2ea6be9 100644 --- a/idlexlib/extensions/CythonScript.py +++ b/idlexlib/extensions/CythonScript.py @@ -79,7 +79,8 @@ from idlelib.ColorDelegator import ColorDelegator, make_pat from idlelib.configHandler import idleConf import idlelib.IOBinding -import imp +#import imp +import importlib DEBUG = False @@ -87,7 +88,8 @@ HAS_RELOAD = False try: - imp.find_module('cython') + #imp.find_module('cython') + importlib.util.find_spec('cython') except ImportError: HAS_CYTHON = False diff --git a/idlexlib/extensions/idlexManager.py b/idlexlib/extensions/idlexManager.py index d658efc..be3881c 100644 --- a/idlexlib/extensions/idlexManager.py +++ b/idlexlib/extensions/idlexManager.py @@ -47,7 +47,7 @@ import os import re -import imp +#import imp import __main__ if sys.version < '3': diff --git a/idlexlib/idlexMain.py b/idlexlib/idlexMain.py index 6133a1f..53da4e2 100644 --- a/idlexlib/idlexMain.py +++ b/idlexlib/idlexMain.py @@ -48,7 +48,7 @@ import idlelib import os import __main__ -import imp +#import imp import traceback import re From 0952c1046b82778a764b985584508b18c6524bb9 Mon Sep 17 00:00:00 2001 From: jayroplekar Date: Tue, 21 May 2024 19:24:57 -0500 Subject: [PATCH 2/3] Fix regexes that throw SyntaxError as of Python 3.12.3 --- idlexlib/extensions/Squeezer.py | 2 +- idlexlib/idlefork/idlelib/CallTips.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/idlexlib/extensions/Squeezer.py b/idlexlib/extensions/Squeezer.py index 350a0c8..a361fea 100644 --- a/idlexlib/extensions/Squeezer.py +++ b/idlexlib/extensions/Squeezer.py @@ -132,7 +132,7 @@ def _countlines(s, linewidth=_LINEWIDTH, tabwidth=_TABWIDTH): class ExpandingButton(Tkinter.Button): - color_pat = re.compile('\x01?\x1b\[(.*?)m\x02?') + color_pat = re.compile(r'\x01?\x1b\[(.*?)m\x02?') def __init__(self, s, tags, numoflines, squeezer): self.s = self.strip_ansi_colors(s) diff --git a/idlexlib/idlefork/idlelib/CallTips.py b/idlexlib/idlefork/idlelib/CallTips.py index 81bd5f1..76737ad 100644 --- a/idlexlib/idlefork/idlelib/CallTips.py +++ b/idlexlib/idlefork/idlelib/CallTips.py @@ -120,7 +120,7 @@ def get_entity(expression): _MAX_COLS = 85 _MAX_LINES = 5 # enough for bytes _INDENT = ' '*4 # for wrapped signatures -_first_param = re.compile('(?<=\()\w*\,?\s*') +_first_param = re.compile(r'(?<=\()\w*\,?\s*') _default_callable_argspec = "See source or doc" From 8328d3c366eb299e031fd18ded7a29209709d49f Mon Sep 17 00:00:00 2001 From: jayroplekar Date: Wed, 22 May 2024 20:10:27 -0500 Subject: [PATCH 3/3] fix re.split as well --- idlexlib/idlefork/idlelib/FormatParagraph.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/idlexlib/idlefork/idlelib/FormatParagraph.py b/idlexlib/idlefork/idlelib/FormatParagraph.py index 7a9d185..3ca3e2a 100644 --- a/idlexlib/idlefork/idlelib/FormatParagraph.py +++ b/idlexlib/idlefork/idlelib/FormatParagraph.py @@ -129,7 +129,7 @@ def reformat_paragraph(data, limit): partial = indent1 while i < n and not is_all_white(lines[i]): # XXX Should take double space after period (etc.) into account - words = re.split("(\s+)", lines[i]) + words = re.split(r"(\s+)", lines[i]) for j in range(0, len(words), 2): word = words[j] if not word: