From 3faa5226eb4c70b0682c07409ae9714a73422edf Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:09:34 +0100 Subject: [PATCH 1/7] Apply ruff/flake8-pie rule PIE790 PIE790 Unnecessary `pass` statement --- src/setuptools_scm/git.py | 2 -- src/setuptools_scm/hg.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/setuptools_scm/git.py b/src/setuptools_scm/git.py index 246df477..5ccea89f 100644 --- a/src/setuptools_scm/git.py +++ b/src/setuptools_scm/git.py @@ -224,8 +224,6 @@ def version_from_describe( config: Configuration, describe_command: _t.CMD_TYPE | None, ) -> ScmVersion | None: - pass - if config.git_describe_command is not None: describe_command = config.git_describe_command diff --git a/src/setuptools_scm/hg.py b/src/setuptools_scm/hg.py index 43fb295b..d8307c78 100644 --- a/src/setuptools_scm/hg.py +++ b/src/setuptools_scm/hg.py @@ -102,8 +102,8 @@ def get_meta(self, config: Configuration) -> ScmVersion | None: return meta(tag, config=config, node_date=node_date) except ValueError: + # unpacking failed, old hg log.exception("error") - pass # unpacking failed, old hg return None From 46e5b2f6d2e443f33e4de7126c3bc5cccebbfde2 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:13:38 +0100 Subject: [PATCH 2/7] Apply ruff/flake8-logging rule LOG009 LOG009 Use of undocumented `logging.WARN` constant --- src/setuptools_scm/_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setuptools_scm/_log.py b/src/setuptools_scm/_log.py index 7e4b7db7..5dd2964e 100644 --- a/src/setuptools_scm/_log.py +++ b/src/setuptools_scm/_log.py @@ -51,7 +51,7 @@ def make_default_handler() -> logging.Handler: def _default_log_level(_env: Mapping[str, str] = os.environ) -> int: val: str | None = _env.get("SETUPTOOLS_SCM_DEBUG") - return logging.WARN if val is None else logging.DEBUG + return logging.WARNING if val is None else logging.DEBUG log.setLevel(_default_log_level()) From 62121f2fc547be0634055b3683e463d5964730af Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:32:48 +0100 Subject: [PATCH 3/7] Apply ruff/pygrep-hooks rule PGH003 PGH003 Use specific rule codes when ignoring type issues --- src/setuptools_scm/_version_cls.py | 8 ++++++-- testing/test_file_finder.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/setuptools_scm/_version_cls.py b/src/setuptools_scm/_version_cls.py index bb89bbb1..05dac6c0 100644 --- a/src/setuptools_scm/_version_cls.py +++ b/src/setuptools_scm/_version_cls.py @@ -8,8 +8,12 @@ from packaging.version import InvalidVersion from packaging.version import Version as Version except ImportError: - from setuptools.extern.packaging.version import InvalidVersion # type: ignore - from setuptools.extern.packaging.version import Version as Version # type: ignore + from setuptools.extern.packaging.version import ( # type: ignore[import-untyped, no-redef] + InvalidVersion, + ) + from setuptools.extern.packaging.version import ( # type: ignore[no-redef] + Version as Version, + ) from . import _log log = _log.log.getChild("version_cls") diff --git a/testing/test_file_finder.py b/testing/test_file_finder.py index cc1a08fd..5902d8e5 100644 --- a/testing/test_file_finder.py +++ b/testing/test_file_finder.py @@ -16,7 +16,7 @@ def inwd( request: pytest.FixtureRequest, wd: WorkDir, monkeypatch: pytest.MonkeyPatch ) -> WorkDir: - param: str = request.param # type: ignore + param: str = request.param # type: ignore[attr-defined] if param == "git": try: wd("git init") From f3e8c7887e04255fa3ec6bb30c850a3744e0df62 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:23:01 +0100 Subject: [PATCH 4/7] Apply ruff/pygrep-hooks rule PGH004 PGH004 Use specific rule codes when using `noqa` --- src/setuptools_scm/_version_cls.py | 2 +- testing/test_cli.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/setuptools_scm/_version_cls.py b/src/setuptools_scm/_version_cls.py index 05dac6c0..493ed836 100644 --- a/src/setuptools_scm/_version_cls.py +++ b/src/setuptools_scm/_version_cls.py @@ -87,7 +87,7 @@ def _validate_version_cls( elif isinstance(version_cls, str): try: return cast(Type[_VersionT], import_name(version_cls)) - except: # noqa + except Exception: raise ValueError( f"Unable to import version_cls='{version_cls}'" ) from None diff --git a/testing/test_cli.py b/testing/test_cli.py index 7bb87f4a..050fe031 100644 --- a/testing/test_cli.py +++ b/testing/test_cli.py @@ -9,7 +9,7 @@ from setuptools_scm._cli import main from .conftest import DebugMode -from .test_git import wd as wd_fixture # NOQA evil fixture reuse +from .test_git import wd as wd_fixture # noqa: F401 (evil fixture reuse) from .wd_wrapper import WorkDir PYPROJECT_TOML = "pyproject.toml" From 21af19b99f6f656686ba36785645919637b8d5f6 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:49:52 +0100 Subject: [PATCH 5/7] Apply ruff/Pylint PLR5501 PLR5501 Use `elif` instead of `else` then `if`, to reduce indentation --- src/setuptools_scm/_version_cls.py | 21 +++++++++------------ src/setuptools_scm/version.py | 15 +++++++-------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/setuptools_scm/_version_cls.py b/src/setuptools_scm/_version_cls.py index 493ed836..be178f28 100644 --- a/src/setuptools_scm/_version_cls.py +++ b/src/setuptools_scm/_version_cls.py @@ -80,16 +80,13 @@ def _validate_version_cls( "`normalize=False`" ) return NonNormalizedVersion + # Use `version_cls` if provided, default to packaging or pkg_resources + elif version_cls is None: + return Version + elif isinstance(version_cls, str): + try: + return cast(Type[_VersionT], import_name(version_cls)) + except Exception: + raise ValueError(f"Unable to import version_cls='{version_cls}'") from None else: - # Use `version_cls` if provided, default to packaging or pkg_resources - if version_cls is None: - return Version - elif isinstance(version_cls, str): - try: - return cast(Type[_VersionT], import_name(version_cls)) - except Exception: - raise ValueError( - f"Unable to import version_cls='{version_cls}'" - ) from None - else: - return version_cls + return version_cls diff --git a/src/setuptools_scm/version.py b/src/setuptools_scm/version.py index ef36be4f..633351c9 100644 --- a/src/setuptools_scm/version.py +++ b/src/setuptools_scm/version.py @@ -263,15 +263,14 @@ def guess_next_simple_semver( def simplified_semver_version(version: ScmVersion) -> str: if version.exact: return guess_next_simple_semver(version, retain=SEMVER_LEN, increment=False) + elif version.branch is not None and "feature" in version.branch: + return version.format_next_version( + guess_next_simple_semver, retain=SEMVER_MINOR + ) else: - if version.branch is not None and "feature" in version.branch: - return version.format_next_version( - guess_next_simple_semver, retain=SEMVER_MINOR - ) - else: - return version.format_next_version( - guess_next_simple_semver, retain=SEMVER_PATCH - ) + return version.format_next_version( + guess_next_simple_semver, retain=SEMVER_PATCH + ) def release_branch_semver_version(version: ScmVersion) -> str: From 1cb6a805884c4113b7269ab951a2c4de3dd3a046 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:52:19 +0100 Subject: [PATCH 6/7] Apply ruff/Pylint rule PLW0120 PLW0120 `else` clause on loop without a `break` statement; remove the `else` and dedent its contents --- _own_version_helper.py | 3 +-- src/setuptools_scm/_entrypoints.py | 3 +-- src/setuptools_scm/git.py | 15 +++++++-------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/_own_version_helper.py b/_own_version_helper.py index da7484fe..d0d7433c 100644 --- a/_own_version_helper.py +++ b/_own_version_helper.py @@ -44,8 +44,7 @@ def parse(root: str, config: Configuration) -> ScmVersion | None: else: if parsed is not None: return parsed - else: - return None + return None def scm_version() -> str: diff --git a/src/setuptools_scm/_entrypoints.py b/src/setuptools_scm/_entrypoints.py index 5eab1ed2..811fb5f5 100644 --- a/src/setuptools_scm/_entrypoints.py +++ b/src/setuptools_scm/_entrypoints.py @@ -72,8 +72,7 @@ def _get_ep(group: str, name: str) -> Any | None: for ep in iter_entry_points(group, name): log.debug("ep found: %s", ep.name) return ep.load() - else: - return None + return None def _get_from_object_reference_str(path: str, group: str) -> Any | None: diff --git a/src/setuptools_scm/git.py b/src/setuptools_scm/git.py index 5ccea89f..5be2f89d 100644 --- a/src/setuptools_scm/git.py +++ b/src/setuptools_scm/git.py @@ -321,15 +321,14 @@ def archival_to_version( version = tag_to_version(ref, config) if version is not None: return meta(version, config=config) + node = data.get("node") + if node is None: + return None + elif "$FORMAT" in node.upper(): + warnings.warn("unprocessed git archival found (no export subst applied)") + return None else: - node = data.get("node") - if node is None: - return None - elif "$FORMAT" in node.upper(): - warnings.warn("unprocessed git archival found (no export subst applied)") - return None - else: - return meta("0.0", node=node, config=config) + return meta("0.0", node=node, config=config) def parse_archival(root: _t.PathT, config: Configuration) -> ScmVersion | None: From 46db47bbd84716ae9ce6cd35d0a9497276916c52 Mon Sep 17 00:00:00 2001 From: Dimitri Papadopoulos <3234522+DimitriPapadopoulos@users.noreply.github.com> Date: Sat, 22 Feb 2025 21:53:13 +0100 Subject: [PATCH 7/7] Apply ruff/Pylint rule PLW3201 PLW3201 Dunder method `__init___` has no special meaning in Python 3 --- src/setuptools_scm/_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setuptools_scm/_log.py b/src/setuptools_scm/_log.py index 5dd2964e..f25a9130 100644 --- a/src/setuptools_scm/_log.py +++ b/src/setuptools_scm/_log.py @@ -18,7 +18,7 @@ class AlwaysStdErrHandler(logging.StreamHandler): # type: ignore[type-arg] - def __init___(self) -> None: + def __init__(self) -> None: super().__init__(sys.stderr) @property # type: ignore [override]