Skip to content

Commit d65a037

Browse files
Bump minimal python to 3.7
1 parent b45e19f commit d65a037

40 files changed

+217
-208
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ repos:
1010
rev: v3.1.0
1111
hooks:
1212
- id: reorder-python-imports
13-
args: [ "--application-directories=.:src" , --py3-plus]
13+
args: [ "--application-directories=.:src" , --py37-plus, --add-import, 'from __future__ import annotations']
1414
- repo: https://github.com/pre-commit/pre-commit-hooks
1515
rev: v4.2.0
1616
hooks:
@@ -26,7 +26,7 @@ repos:
2626
rev: v2.32.0
2727
hooks:
2828
- id: pyupgrade
29-
args: [--py36-plus]
29+
args: [--py37-plus]
3030
- repo: https://github.com/asottile/setup-cfg-fmt
3131
rev: v1.20.1
3232
hooks:

CHANGELOG.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
v7.0.0
2+
=======
3+
4+
* drop python 3.6 support
5+
* include git archival support
6+
7+
18
v6.4.3
29
======
310

mypy.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
[mypy]
2-
python_version = 3.6
2+
python_version = 3.7
33
warn_return_any = True
44
warn_unused_configs = True
55
mypy_path = $MYPY_CONFIG_FILE_DIR/src
66

77
[mypy-setuptools_scm.*]
88
# disabled as it will take a bit
99
# disallow_untyped_defs = True
10-
# strict = true
10+
strict = true

setup.cfg

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ classifiers =
1515
Programming Language :: Python
1616
Programming Language :: Python :: 3
1717
Programming Language :: Python :: 3 :: Only
18-
Programming Language :: Python :: 3.6
1918
Programming Language :: Python :: 3.7
2019
Programming Language :: Python :: 3.8
2120
Programming Language :: Python :: 3.9
@@ -31,7 +30,7 @@ install_requires =
3130
packaging>=20.0
3231
setuptools
3332
tomli>=1.0.0 # keep in sync
34-
python_requires = >=3.6
33+
python_requires = >=3.7
3534
package_dir =
3635
=src
3736
zip_safe = true

setup.py

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,29 +9,15 @@
99
1010
pip usage is recommended
1111
"""
12+
from __future__ import annotations
13+
1214
import os
1315
import sys
14-
from typing import NoReturn
15-
from typing import Optional
1616

1717
import setuptools
18-
from setuptools.command.bdist_egg import bdist_egg as original_bdist_egg
19-
20-
21-
class bdist_egg(original_bdist_egg):
22-
def run(self) -> NoReturn:
23-
raise SystemExit(
24-
"%s is forbidden, "
25-
"please update to setuptools>=45 which uses pip" % type(self).__name__
26-
)
2718

2819

2920
def scm_version() -> str:
30-
31-
if sys.version_info < (3, 6):
32-
raise RuntimeError(
33-
"support for python < 3.6 has been removed in setuptools_scm>=6.0.0"
34-
)
3521
here = os.path.dirname(os.path.abspath(__file__))
3622
src = os.path.join(here, "src")
3723

@@ -46,7 +32,7 @@ def scm_version() -> str:
4632

4733
from setuptools_scm.version import ScmVersion
4834

49-
def parse(root: str, config: Configuration) -> Optional[ScmVersion]:
35+
def parse(root: str, config: Configuration) -> ScmVersion | None:
5036
try:
5137
return parse_pkginfo(root, config)
5238
except OSError:
@@ -69,5 +55,4 @@ def parse(root: str, config: Configuration) -> Optional[ScmVersion]:
6955
],
7056
"test": ["pytest>=6.2", "virtualenv>20"],
7157
},
72-
cmdclass={"bdist_egg": bdist_egg},
7358
)

src/setuptools_scm/__init__.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
:copyright: 2010-2015 by Ronny Pfannschmidt
33
:license: MIT
44
"""
5+
from __future__ import annotations
6+
57
import os
68
import warnings
79
from typing import Any
810
from typing import Callable
9-
from typing import Optional
1011
from typing import TYPE_CHECKING
11-
from typing import Union
1212

1313
from . import _types as _t
1414
from ._entrypoints import _call_entrypoint_fn
@@ -46,7 +46,7 @@
4646
}
4747

4848

49-
def version_from_scm(root: _t.PathT) -> Optional[ScmVersion]:
49+
def version_from_scm(root: _t.PathT) -> ScmVersion | None:
5050
warnings.warn(
5151
"version_from_scm is deprecated please use get_version",
5252
category=DeprecationWarning,
@@ -60,7 +60,7 @@ def dump_version(
6060
root: _t.PathT,
6161
version: str,
6262
write_to: _t.PathT,
63-
template: "str | None" = None,
63+
template: str | None = None,
6464
) -> None:
6565
assert isinstance(version, str)
6666
target = os.path.normpath(os.path.join(root, write_to))
@@ -79,7 +79,7 @@ def dump_version(
7979
fp.write(template.format(version=version, version_tuple=version_tuple))
8080

8181

82-
def _do_parse(config: Configuration) -> "ScmVersion|None":
82+
def _do_parse(config: Configuration) -> ScmVersion | None:
8383
pretended = _read_pretended_version_for(config)
8484
if pretended is not None:
8585
return pretended
@@ -90,7 +90,7 @@ def _do_parse(config: Configuration) -> "ScmVersion|None":
9090
raise TypeError(
9191
f"version parse result was {str!r}\nplease return a parsed version"
9292
)
93-
version: Optional[ScmVersion]
93+
version: ScmVersion | None
9494
if parse_result:
9595
assert isinstance(parse_result, ScmVersion)
9696
version = parse_result
@@ -105,7 +105,7 @@ def _do_parse(config: Configuration) -> "ScmVersion|None":
105105
return version
106106

107107

108-
def _version_missing(config: Configuration) -> "NoReturn":
108+
def _version_missing(config: Configuration) -> NoReturn:
109109
raise LookupError(
110110
f"setuptools-scm was unable to detect version for {config.absolute_root}.\n\n"
111111
"Make sure you're either building from a fully intact git repository "
@@ -120,19 +120,19 @@ def _version_missing(config: Configuration) -> "NoReturn":
120120

121121
def get_version(
122122
root: str = ".",
123-
version_scheme: Union[Callable[[ScmVersion], str], str] = DEFAULT_VERSION_SCHEME,
124-
local_scheme: Union[Callable[[ScmVersion], str], str] = DEFAULT_LOCAL_SCHEME,
125-
write_to: Optional[_t.PathT] = None,
126-
write_to_template: Optional[str] = None,
127-
relative_to: Optional[str] = None,
123+
version_scheme: Callable[[ScmVersion], str] | str = DEFAULT_VERSION_SCHEME,
124+
local_scheme: Callable[[ScmVersion], str] | str = DEFAULT_LOCAL_SCHEME,
125+
write_to: _t.PathT | None = None,
126+
write_to_template: str | None = None,
127+
relative_to: str | None = None,
128128
tag_regex: str = DEFAULT_TAG_REGEX,
129-
parentdir_prefix_version: Optional[str] = None,
130-
fallback_version: Optional[str] = None,
129+
parentdir_prefix_version: str | None = None,
130+
fallback_version: str | None = None,
131131
fallback_root: _t.PathT = ".",
132-
parse: Optional[Any] = None,
133-
git_describe_command: Optional[Any] = None,
134-
dist_name: Optional[str] = None,
135-
version_cls: Optional[Any] = None,
132+
parse: Any | None = None,
133+
git_describe_command: Any | None = None,
134+
dist_name: str | None = None,
135+
version_cls: Any | None = None,
136136
normalize: bool = True,
137137
search_parent_directories: bool = False,
138138
) -> str:
@@ -150,7 +150,7 @@ def get_version(
150150
return maybe_version
151151

152152

153-
def _get_version(config: Configuration) -> "str|None":
153+
def _get_version(config: Configuration) -> str | None:
154154
parsed_version = _do_parse(config)
155155
if parsed_version is None:
156156
return None

src/setuptools_scm/__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
from ._cli import main
24

35
if __name__ == "__main__":

src/setuptools_scm/_cli.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
13
import argparse
24
import os
35
import sys

src/setuptools_scm/_entrypoints.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
from __future__ import annotations
2+
13
import warnings
24
from typing import Any
35
from typing import Iterator
4-
from typing import Optional
56
from typing import overload
67
from typing import Protocol
78
from typing import TYPE_CHECKING
@@ -21,17 +22,17 @@ class MaybeConfigFunction(Protocol):
2122
__name__: str
2223

2324
@overload
24-
def __call__(self, root: _t.PathT, config: Configuration) -> Optional[ScmVersion]:
25+
def __call__(self, root: _t.PathT, config: Configuration) -> ScmVersion | None:
2526
pass
2627

2728
@overload
28-
def __call__(self, root: _t.PathT) -> Optional[ScmVersion]:
29+
def __call__(self, root: _t.PathT) -> ScmVersion | None:
2930
pass
3031

3132

3233
def _call_entrypoint_fn(
3334
root: _t.PathT, config: Configuration, fn: MaybeConfigFunction
34-
) -> Optional[ScmVersion]:
35+
) -> ScmVersion | None:
3536
if function_has_arg(fn, "config"):
3637
return fn(root, config=config)
3738
else:
@@ -47,7 +48,7 @@ def _call_entrypoint_fn(
4748

4849
def _version_from_entrypoints(
4950
config: Configuration, fallback: bool = False
50-
) -> "ScmVersion|None":
51+
) -> ScmVersion | None:
5152
if fallback:
5253
entrypoint = "setuptools_scm.parse_scm_fallback"
5354
root = config.fallback_root
@@ -59,7 +60,7 @@ def _version_from_entrypoints(
5960

6061
trace("version_from_ep", entrypoint, root)
6162
for ep in iter_matching_entrypoints(root, entrypoint, config):
62-
version: Optional[ScmVersion] = _call_entrypoint_fn(root, config, ep.load())
63+
version: ScmVersion | None = _call_entrypoint_fn(root, config, ep.load())
6364
trace(ep, version)
6465
if version:
6566
return version
@@ -73,7 +74,7 @@ def _version_from_entrypoints(
7374

7475

7576
def iter_entry_points(
76-
group: str, name: Optional[str] = None
77+
group: str, name: str | None = None
7778
) -> Iterator[_t.EntrypointProtocol]:
7879
all_eps = entry_points()
7980
if hasattr(all_eps, "select"):

src/setuptools_scm/_overrides.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
from __future__ import annotations
2+
13
import os
2-
from typing import Optional
34

45
from .config import Configuration
56
from .utils import trace
@@ -11,14 +12,14 @@
1112
PRETEND_KEY_NAMED = PRETEND_KEY + "_FOR_{name}"
1213

1314

14-
def _read_pretended_version_for(config: Configuration) -> Optional[ScmVersion]:
15+
def _read_pretended_version_for(config: Configuration) -> ScmVersion | None:
1516
"""read a a overridden version from the environment
1617
1718
tries ``SETUPTOOLS_SCM_PRETEND_VERSION``
1819
and ``SETUPTOOLS_SCM_PRETEND_VERSION_FOR_$UPPERCASE_DIST_NAME``
1920
"""
2021
trace("dist name:", config.dist_name)
21-
pretended: Optional[str]
22+
pretended: str | None
2223
if config.dist_name is not None:
2324
pretended = os.environ.get(
2425
PRETEND_KEY_NAMED.format(name=config.dist_name.upper())

0 commit comments

Comments
 (0)