From 0420442e778dd7bc53bdbdb50278eea2c207dc74 Mon Sep 17 00:00:00 2001 From: Pablo Santiago Blum de Aguiar Date: Mon, 10 Jul 2023 14:43:45 +0200 Subject: [PATCH] #1248: Use imp only when importlib.util not available The imp module is deprecated and will be removed in Python 12. --- .github/workflows/test.yml | 2 +- thefuck/conf.py | 12 +++++++++++- thefuck/types.py | 3 +-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2fa403a5..ea7312ea 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"] + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12-dev"] fail-fast: false runs-on: ${{ matrix.os }} steps: diff --git a/thefuck/conf.py b/thefuck/conf.py index 27876ef4..611ec84b 100644 --- a/thefuck/conf.py +++ b/thefuck/conf.py @@ -1,4 +1,3 @@ -from imp import load_source import os import sys from warnings import warn @@ -6,6 +5,17 @@ from six import text_type from . import const from .system import Path +try: + import importlib.util + + def load_source(name, pathname, _file=None): + module_spec = importlib.util.spec_from_file_location(name, pathname) + module = importlib.util.module_from_spec(module_spec) + module_spec.loader.exec_module(module) + return module +except ImportError: + from imp import load_source + class Settings(dict): def __getattr__(self, item): diff --git a/thefuck/types.py b/thefuck/types.py index 96e6ace6..b3b64c35 100644 --- a/thefuck/types.py +++ b/thefuck/types.py @@ -1,9 +1,8 @@ -from imp import load_source import os import sys from . import logs from .shells import shell -from .conf import settings +from .conf import settings, load_source from .const import DEFAULT_PRIORITY, ALL_ENABLED from .exceptions import EmptyCommand from .utils import get_alias, format_raw_script