Skip to content

Commit b5a84cf

Browse files
committed
Check Python version for backports
1 parent ecf71a9 commit b5a84cf

1 file changed

Lines changed: 24 additions & 17 deletions

File tree

‎pathspec/_typing.py‎

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,36 @@
88
"""
99

1010
import functools
11+
import sys
1112
import warnings
1213
from typing import (
1314
Any,
1415
Callable, # Replaced by `collections.abc.Callable` in 3.9.2.
1516
Optional, # Replaced by `X | None` in 3.10.
1617
TypeVar)
17-
try:
18-
from typing import AnyStr # Removed in 3.18.
19-
except ImportError:
20-
AnyStr = TypeVar('AnyStr', str, bytes) # type: ignore[misc]
21-
try:
22-
from typing import Never # Added in 3.11.
23-
except ImportError:
24-
from typing import NoReturn as Never
2518

2619
F = TypeVar('F', bound=Callable[..., Any])
2720

28-
try:
29-
from warnings import deprecated # Added in 3.13. # type: ignore
30-
except ImportError:
21+
# AnyStr is deprecated since 3.13, and will be removed in 3.18.
22+
if sys.version_info >= (3, 18):
23+
AnyStr = TypeVar('AnyStr', str, bytes)
24+
else:
25+
from typing import AnyStr
26+
27+
# Never was added in 3.11.
28+
if sys.version_info >= (3, 11):
29+
from typing import Never
30+
else:
31+
from typing import NoReturn as Never
32+
33+
# deprecated was added in 3.13.
34+
if sys.version_info >= (3, 13):
35+
from warnings import deprecated
36+
else:
3137
try:
32-
from typing_extensions import deprecated # type: ignore
38+
from typing_extensions import deprecated
3339
except ImportError:
34-
def deprecated( # type: ignore[no-redef]
40+
def deprecated(
3541
message: str,
3642
/, *,
3743
category: Optional[type[Warning]] = DeprecationWarning,
@@ -42,12 +48,13 @@ def decorator(f: F) -> F:
4248
def wrapper(*a, **k):
4349
warnings.warn(message, category=category, stacklevel=stacklevel+1)
4450
return f(*a, **k)
45-
return wrapper # type: ignore[return-value]
51+
return wrapper
4652
return decorator
4753

48-
try:
49-
from typing import override # Added in 3.12.
50-
except ImportError:
54+
# override was added in 3.12.
55+
if sys.version_info >= (3, 12):
56+
from typing import override
57+
else:
5158
try:
5259
from typing_extensions import override
5360
except ImportError:

0 commit comments

Comments
 (0)