From f39b17c489f6ed5315be9aa1fd883e7a5be11c27 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 9 Dec 2023 10:52:59 -0500 Subject: [PATCH] Add Python 3.8 compatibility to type annotations. --- .coveragerc | 1 + jaraco/collections/__init__.py | 6 ++++-- jaraco/collections/compat/py38.py | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 jaraco/collections/compat/py38.py diff --git a/.coveragerc b/.coveragerc index 0287948..48c34a8 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,6 +2,7 @@ omit = # leading `*/` for pytest-dev/pytest-cov#456 */.tox/* + */compat/* disable_warnings = couldnt-parse diff --git a/jaraco/collections/__init__.py b/jaraco/collections/__init__.py index 919ed38..04e85eb 100644 --- a/jaraco/collections/__init__.py +++ b/jaraco/collections/__init__.py @@ -5,12 +5,14 @@ import copy import functools import random -from collections.abc import Container, Iterable, Mapping, MutableMapping +from collections.abc import Container, Iterable, Mapping from typing import Any, Callable, Union import jaraco.text from more_itertools import consume +from .compat.py38 import MutableMapping + _Matchable = Union[Callable, Container, Iterable, re.Pattern] @@ -1058,7 +1060,7 @@ def random(self): def remove_matching( - orig: MutableMapping[str, Any], + orig: MutableMapping, predicate: _Matchable, ): """ diff --git a/jaraco/collections/compat/py38.py b/jaraco/collections/compat/py38.py new file mode 100644 index 0000000..d9a1350 --- /dev/null +++ b/jaraco/collections/compat/py38.py @@ -0,0 +1,8 @@ +import collections.abc +import sys +import typing + +if sys.version_info >= (3, 9): + MutableMapping = collections.abc.MutableMapping +else: + MutableMapping = typing.MutableMapping