From 3f28cf45d4d2b7ecd3bcedeef15f3018f7e425f6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 1 Nov 2022 12:38:24 +0530 Subject: [PATCH] Dont use the deprecated importlib.resources API --- kitty/constants.py | 23 ++++++++++++++++------- kitty_tests/main.py | 8 ++++++-- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/kitty/constants.py b/kitty/constants.py index 3bd81d07f..e21ab7ad8 100644 --- a/kitty/constants.py +++ b/kitty/constants.py @@ -6,7 +6,7 @@ import os import pwd import sys from contextlib import suppress -from typing import TYPE_CHECKING, Any, Iterable, NamedTuple, Optional, Set +from typing import TYPE_CHECKING, Any, Iterator, NamedTuple, Optional, Set from .types import run_once @@ -219,15 +219,24 @@ def running_in_kitty(set_val: Optional[bool] = None) -> bool: return bool(getattr(running_in_kitty, 'ans', False)) -def list_kitty_resources(package: str = 'kitty') -> Iterable[str]: - from importlib.resources import contents - return contents(package) +def list_kitty_resources(package: str = 'kitty') -> Iterator[str]: + try: + from importlib.resources import files + except ImportError: + from importlib.resources import contents + return iter(contents(package)) + else: + return (path.name for path in files(package).iterdir()) def read_kitty_resource(name: str, package_name: str = 'kitty') -> bytes: - from importlib.resources import read_binary - - return read_binary(package_name, name) + try: + from importlib.resources import files + except ImportError: + from importlib.resources import read_binary + return read_binary(package_name, name) + else: + return (files(package_name) / name).read_bytes() def website_url(doc_name: str = '', website: str = 'https://sw.kovidgoyal.net/kitty/') -> str: diff --git a/kitty_tests/main.py b/kitty_tests/main.py index e5e254a85..f8ffaef7c 100644 --- a/kitty_tests/main.py +++ b/kitty_tests/main.py @@ -5,8 +5,12 @@ import importlib import os import shutil import unittest -from importlib.resources import contents -from typing import Callable, Generator, NoReturn, Sequence, Set +from importlib.resources import files +from typing import Callable, Generator, NoReturn, Sequence, Set, Iterator + + +def contents(package: str) -> Iterator[str]: + return (path.name for path in files(package).iterdir()) def itertests(suite: unittest.TestSuite) -> Generator[unittest.TestCase, None, None]: