From 7aae8d1687af3ce1c5dad7f19485ea6027d57bae Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Thu, 27 Apr 2023 10:21:05 +0200 Subject: chore: bump min setuptools version to 61 required for pyproject.toml support in setuptools --- src/setuptools_scm/integration.py | 19 ++++--------------- testing/test_integration.py | 6 +++--- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/setuptools_scm/integration.py b/src/setuptools_scm/integration.py index 9df4f3e..42ea95d 100644 --- a/src/setuptools_scm/integration.py +++ b/src/setuptools_scm/integration.py @@ -26,27 +26,16 @@ if TYPE_CHECKING: def _warn_on_old_setuptools(_version: str = setuptools.__version__) -> None: - if int(_version.split(".")[0]) < 45: + if int(_version.split(".")[0]) < 61: warnings.warn( RuntimeWarning( f""" -ERROR: setuptools=={_version} is used in combination with setuptools_scm>=6.x +ERROR: setuptools=={_version} is used in combination with setuptools_scm>=8.x Your build configuration is incomplete and previously worked by accident! -setuptools_scm requires setuptools>=45 +setuptools_scm requires setuptools>=61 - -This happens as setuptools is unable to replace itself when a activated build dependency -requires a more recent setuptools version -(it does not respect "setuptools>X" in setup_requires). - - -setuptools>=31 is required for setup.cfg metadata support -setuptools>=42 is required for pyproject.toml configuration support - -Suggested workarounds if applicable: - - preinstalling build dependencies like setuptools_scm before running setup.py - - installing setuptools_scm using the system package manager to ensure consistency +Suggested workaround if applicable: - migrating from the deprecated setup_requires mechanism to pep517/518 and using a pyproject.toml to declare build dependencies which are reliably pre-installed before running the build tools diff --git a/testing/test_integration.py b/testing/test_integration.py index c0594ad..06cc95c 100644 --- a/testing/test_integration.py +++ b/testing/test_integration.py @@ -139,9 +139,9 @@ def test_pretend_version_accepts_bad_string( def testwarn_on_broken_setuptools() -> None: - _warn_on_old_setuptools("45") - with pytest.warns(RuntimeWarning, match="ERROR: setuptools==44"): - _warn_on_old_setuptools("44") + _warn_on_old_setuptools("61") + with pytest.warns(RuntimeWarning, match="ERROR: setuptools==60"): + _warn_on_old_setuptools("60") @pytest.mark.issue(611) -- cgit v1.2.1 From 9889d8376d4a00ce7a6d3750f2f90841c3288849 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Thu, 27 Apr 2023 15:49:12 +0200 Subject: restore logging functionality there was an unintended misconfiguration in the logging setup enforcing always warning levels --- src/setuptools_scm/__init__.py | 33 +++++++++++++++------------------ src/setuptools_scm/_log.py | 23 ++++------------------- testing/test_internal_log_level.py | 15 +++++++++++++++ 3 files changed, 34 insertions(+), 37 deletions(-) create mode 100644 testing/test_internal_log_level.py diff --git a/src/setuptools_scm/__init__.py b/src/setuptools_scm/__init__.py index faea673..01b3da8 100644 --- a/src/setuptools_scm/__init__.py +++ b/src/setuptools_scm/__init__.py @@ -152,26 +152,23 @@ def get_version( def _get_version(config: Configuration) -> str | None: - from ._log import magic_debug - - with magic_debug(): - parsed_version = _do_parse(config) - if parsed_version is None: - return None - version_string = _format_version( - parsed_version, - version_scheme=config.version_scheme, - local_scheme=config.local_scheme, + parsed_version = _do_parse(config) + if parsed_version is None: + return None + version_string = _format_version( + parsed_version, + version_scheme=config.version_scheme, + local_scheme=config.local_scheme, + ) + if config.write_to is not None: + dump_version( + root=config.root, + version=version_string, + write_to=config.write_to, + template=config.write_to_template, ) - if config.write_to is not None: - dump_version( - root=config.root, - version=version_string, - write_to=config.write_to, - template=config.write_to_template, - ) - return version_string + return version_string # Public API diff --git a/src/setuptools_scm/_log.py b/src/setuptools_scm/_log.py index abbdd0c..1247d46 100644 --- a/src/setuptools_scm/_log.py +++ b/src/setuptools_scm/_log.py @@ -9,6 +9,7 @@ import os import sys from typing import IO from typing import Iterator +from typing import Mapping log = logging.getLogger(__name__.rsplit(".", 1)[0]) log.propagate = False @@ -46,19 +47,9 @@ _default_handler = make_default_handler() log.addHandler(_default_handler) -def _default_log_level() -> str | int: - val: str = os.environ.get("SETUPTOOLS_SCM_DEBUG", "") - level: str | int - if val: - level = logging.DEBUG - levelname: str | int = logging.getLevelName(val) - if isinstance(levelname, int): - level = val - else: - level = logging.WARNING - else: - level = logging.WARNING - return level +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 log.setLevel(_default_log_level()) @@ -92,9 +83,3 @@ def enable_debug(handler: logging.Handler = _default_handler) -> Iterator[None]: handler.setLevel(old_handler_level) if handler is not _default_handler: log.removeHandler(handler) - - -@contextlib.contextmanager -def magic_debug() -> Iterator[None]: - with enable_debug(): - yield diff --git a/testing/test_internal_log_level.py b/testing/test_internal_log_level.py new file mode 100644 index 0000000..68ce8e0 --- /dev/null +++ b/testing/test_internal_log_level.py @@ -0,0 +1,15 @@ +from __future__ import annotations + +import logging + +from setuptools_scm import _log + + +def test_log_levels_when_set() -> None: + assert _log._default_log_level({"SETUPTOOLS_SCM_DEBUG": ""}) == logging.DEBUG + assert _log._default_log_level({"SETUPTOOLS_SCM_DEBUG": "INFO"}) == logging.DEBUG + assert _log._default_log_level({"SETUPTOOLS_SCM_DEBUG": "3"}) == logging.DEBUG + + +def test_log_levels_when_unset() -> None: + assert _log._default_log_level({}) == logging.WARNING -- cgit v1.2.1 From ac595570fece4c53d4547f243423f506baee4141 Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Thu, 27 Apr 2023 16:01:48 +0200 Subject: always install recent setuptools --- .github/workflows/python-tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/python-tests.yml b/.github/workflows/python-tests.yml index f0029c9..373be21 100644 --- a/.github/workflows/python-tests.yml +++ b/.github/workflows/python-tests.yml @@ -79,8 +79,7 @@ jobs: echo "C:\Program Files (x86)\gnupg\bin" >> $env:GITHUB_PATH git config --system gpg.program "C:\Program Files (x86)\gnupg\bin\gpg.exe" if: runner.os == 'Windows' - - run: pip install -U 'setuptools>=60' - if: matrix.python_version != 'msys2' + - run: pip install -U 'setuptools>=61' - uses: actions/download-artifact@v3 with: name: Packages -- cgit v1.2.1