From a0440607302749d2f3ff09565cfe040986b0421f Mon Sep 17 00:00:00 2001 From: Denis Laxalde Date: Wed, 21 Feb 2024 11:24:14 +0100 Subject: [PATCH] Handle new collections.abc imports through the compat module --- pgactivity/activities.py | 3 ++- pgactivity/compat.py | 22 ++++++++++++++++++++++ pgactivity/pg.py | 4 +++- pgactivity/types.py | 13 ++----------- pgactivity/views.py | 4 ++-- 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/pgactivity/activities.py b/pgactivity/activities.py index b0662266..6cc596f0 100644 --- a/pgactivity/activities.py +++ b/pgactivity/activities.py @@ -3,12 +3,13 @@ import builtins import os import time -from typing import Sequence, TypeVar +from typing import TypeVar from warnings import catch_warnings, simplefilter import attr import psutil +from .compat import Sequence from .types import ( BlockingProcess, IOCounter, diff --git a/pgactivity/compat.py b/pgactivity/compat.py index d615664c..ee505dbb 100644 --- a/pgactivity/compat.py +++ b/pgactivity/compat.py @@ -1,6 +1,7 @@ from __future__ import annotations import operator +import sys from importlib.metadata import version from typing import Any @@ -8,6 +9,27 @@ import attr.validators import blessed +__all__ = [ + "Callable", + "Iterable", + "Iterator", + "Mapping", + "MutableSet", + "Sequence", +] + +if sys.version_info >= (3, 9): + from collections.abc import ( + Callable, + Iterable, + Iterator, + Mapping, + MutableSet, + Sequence, + ) +else: + from typing import Callable, Iterable, Iterator, Mapping, MutableSet, Sequence + ATTR_VERSION = tuple(int(x) for x in version("attrs").split(".", 2)[:2]) BLESSED_VERSION = tuple(int(x) for x in version("blessed").split(".", 2)[:2]) diff --git a/pgactivity/pg.py b/pgactivity/pg.py index 10e45120..6c6929c4 100644 --- a/pgactivity/pg.py +++ b/pgactivity/pg.py @@ -2,7 +2,9 @@ import logging import os -from typing import Any, Callable, Sequence, TypeVar, overload +from typing import Any, TypeVar, overload + +from .compat import Callable, Sequence Row = TypeVar("Row") diff --git a/pgactivity/types.py b/pgactivity/types.py index 653b24ed..9cee6173 100644 --- a/pgactivity/types.py +++ b/pgactivity/types.py @@ -4,23 +4,14 @@ import functools from datetime import timedelta from ipaddress import IPv4Address, IPv6Address -from typing import ( - Any, - Callable, - Iterable, - Iterator, - Mapping, - MutableSet, - Sequence, - TypeVar, - overload, -) +from typing import Any, TypeVar, overload import attr import psutil from attr import validators from . import colors, compat, pg, utils +from .compat import Callable, Iterable, Iterator, Mapping, MutableSet, Sequence from .config import Configuration, Flag diff --git a/pgactivity/views.py b/pgactivity/views.py index a5110506..a73f7614 100644 --- a/pgactivity/views.py +++ b/pgactivity/views.py @@ -4,13 +4,13 @@ import inspect import itertools from textwrap import TextWrapper, dedent -from typing import Any, Callable, Iterable, Iterator, Sequence +from typing import Any from blessed import Terminal from . import colors, utils from .activities import sorted as sorted_processes -from .compat import link +from .compat import Callable, Iterable, Iterator, Sequence, link from .keys import BINDINGS, EXIT_KEY from .keys import HELP as HELP_KEY from .keys import (