Skip to content

Commit 7968d36

Browse files
fix: update code for Python 3.10+ minimum version
Since we dropped Python 3.8 and 3.9 support, we can now use Python 3.10+ type features directly from typing module without version checks or typing_extensions. Changes: - Updated mypy.ini python_version from 3.9 to 3.10 - Removed sys.version_info >= (3, 10) checks (now always true) - Moved TypeAlias, Concatenate, ParamSpec, TypeGuard from typing_extensions/TYPE_CHECKING to direct typing imports - Changed Union[X, Y] to X | Y syntax throughout - Added TypeAlias annotations to type alias definitions (_Version, VersionInferenceResult) - Renamed _VersionT to _Version (T suffix is only for TypeVars, not TypeAliases) - Fixed entry_points() to explicitly pass keyword args instead of **kw for better type inference - Fixed module-level import ordering in _version_schemes.py - Removed unused TYPE_CHECKING imports - Added type annotations to fix no-any-return errors - Updated test cases to use renamed _Version type This resolves all ruff UP036, UP007, PYI043, E402, F401 errors and mypy attr-defined, return-value, arg-type errors for Python 3.10+ typing features.
1 parent d9886da commit 7968d36

26 files changed

+144
-979
lines changed

_own_version_helper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import logging
1212
import os
1313

14-
from typing import Callable
14+
from collections.abc import Callable
1515

1616
from setuptools import build_meta as build_meta
1717

mypy.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[mypy]
2-
python_version = 3.9
2+
python_version = 3.10
33
warn_return_any = True
44
warn_unused_configs = True
55
mypy_path = $MYPY_CONFIG_FILE_DIR/src:$MYPY_CONFIG_FILE_DIR/nextgen/vcs-versioning/src

nextgen/vcs-versioning/src/vcs_versioning/_backends/_git.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88
import sys
99
import warnings
1010

11+
from collections.abc import Callable
12+
from collections.abc import Sequence
1113
from datetime import date
1214
from datetime import datetime
1315
from datetime import timezone
1416
from enum import Enum
1517
from os.path import samefile
1618
from pathlib import Path
1719
from typing import TYPE_CHECKING
18-
from typing import Callable
19-
from typing import Sequence
2020

2121
from .. import _discover as discover
2222
from .. import _types as _t

nextgen/vcs-versioning/src/vcs_versioning/_discover.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import logging
44
import os
55

6+
from collections.abc import Iterable
7+
from collections.abc import Iterator
68
from pathlib import Path
79
from typing import TYPE_CHECKING
8-
from typing import Iterable
9-
from typing import Iterator
1010

1111
from . import _entrypoints
1212
from . import _types as _t

nextgen/vcs-versioning/src/vcs_versioning/_entrypoints.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
from __future__ import annotations
22

33
import logging
4-
import sys
54

5+
from collections.abc import Callable
6+
from collections.abc import Iterator
67
from typing import TYPE_CHECKING
78
from typing import Any
8-
from typing import Callable
9-
from typing import Iterator
109
from typing import cast
1110

1211
__all__ = [
@@ -24,24 +23,15 @@
2423
log = logging.getLogger(__name__)
2524

2625

27-
if sys.version_info[:2] < (3, 10):
26+
def entry_points(*, group: str, name: str | None = None) -> im.EntryPoints:
27+
"""Get entry points for a specific group (and optionally name).
2828
29-
def entry_points(*, group: str, name: str | None = None) -> list[im.EntryPoint]:
30-
# Python 3.9: entry_points() returns dict, need to handle filtering manually
31-
32-
eps = im.entry_points() # Returns dict
33-
34-
group_eps = eps.get(group, [])
35-
if name is not None:
36-
return [ep for ep in group_eps if ep.name == name]
37-
return group_eps
38-
else:
39-
40-
def entry_points(*, group: str, name: str | None = None) -> im.EntryPoints:
41-
kw = {"group": group}
42-
if name is not None:
43-
kw["name"] = name
44-
return im.entry_points(**kw)
29+
In Python 3.10+, entry_points() with group= returns EntryPoints directly.
30+
"""
31+
if name is not None:
32+
return im.entry_points(group=group, name=name)
33+
else:
34+
return im.entry_points(group=group)
4535

4636

4737
def version_from_entrypoint(

nextgen/vcs-versioning/src/vcs_versioning/_get_version_impl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import warnings
77

88
from pathlib import Path
9+
from re import Pattern
910
from typing import Any
1011
from typing import NoReturn
11-
from typing import Pattern
1212

1313
from . import _entrypoints
1414
from . import _run_cmd

nextgen/vcs-versioning/src/vcs_versioning/_log.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import os
1010
import sys
1111

12+
from collections.abc import Iterator
13+
from collections.abc import Mapping
1214
from typing import IO
13-
from typing import Iterator
14-
from typing import Mapping
1515

1616
# Logger names that need configuration
1717
LOGGER_NAMES = [

nextgen/vcs-versioning/src/vcs_versioning/_overrides.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import logging
55
import os
66

7+
from collections.abc import Mapping
78
from difflib import get_close_matches
89
from typing import Any
9-
from typing import Mapping
1010

1111
from packaging.utils import canonicalize_name
1212

nextgen/vcs-versioning/src/vcs_versioning/_pyproject_reading.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import sys
77
import warnings
88

9+
from collections.abc import Sequence
910
from dataclasses import dataclass
1011
from pathlib import Path
11-
from typing import Sequence
1212

1313
if sys.version_info >= (3, 11):
1414
from typing import Self

nextgen/vcs-versioning/src/vcs_versioning/_run_cmd.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
import textwrap
88
import warnings
99

10+
from collections.abc import Callable
11+
from collections.abc import Mapping
12+
from collections.abc import Sequence
1013
from typing import TYPE_CHECKING
11-
from typing import Callable
1214
from typing import Final
13-
from typing import Mapping
14-
from typing import Sequence
1515
from typing import TypeVar
1616
from typing import overload
1717

0 commit comments

Comments
 (0)