summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2023-03-24 10:57:59 +0100
committerRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2023-03-29 17:04:12 +0200
commit71e839f1d7a74ce7f2f24d3661ef76524d2ed814 (patch)
treed6553535a5afbecde68cd2a5e36bb66b41e50294
parentb9ed7bb7f36c2954a2861ea01adbb241bb49455b (diff)
downloadsetuptools-scm-71e839f1d7a74ce7f2f24d3661ef76524d2ed814.tar.gz
remove the utils module
move command utils to _run_cmd move data_from_mime to integration
-rw-r--r--src/setuptools_scm/_file_finders/git.py2
-rw-r--r--src/setuptools_scm/_file_finders/hg.py2
-rw-r--r--src/setuptools_scm/_run_cmd.py24
-rw-r--r--src/setuptools_scm/fallbacks.py2
-rw-r--r--src/setuptools_scm/git.py4
-rw-r--r--src/setuptools_scm/hg.py5
-rw-r--r--src/setuptools_scm/hg_git.py4
-rw-r--r--src/setuptools_scm/integration.py13
-rw-r--r--src/setuptools_scm/scm_workdir.py4
-rw-r--r--src/setuptools_scm/utils.py51
-rw-r--r--testing/conftest.py3
-rw-r--r--testing/test_basic_api.py4
-rw-r--r--testing/test_functions.py2
-rw-r--r--testing/test_git.py2
-rw-r--r--testing/test_hg_git.py2
15 files changed, 52 insertions, 72 deletions
diff --git a/src/setuptools_scm/_file_finders/git.py b/src/setuptools_scm/_file_finders/git.py
index 917ed1e..873b4ba 100644
--- a/src/setuptools_scm/_file_finders/git.py
+++ b/src/setuptools_scm/_file_finders/git.py
@@ -10,7 +10,7 @@ from . import is_toplevel_acceptable
from . import scm_find_files
from .. import _types as _t
from .._run_cmd import run as _run
-from ..utils import data_from_mime
+from ..integration import data_from_mime
log = logging.getLogger(__name__)
diff --git a/src/setuptools_scm/_file_finders/hg.py b/src/setuptools_scm/_file_finders/hg.py
index e1aa1bd..ec8604a 100644
--- a/src/setuptools_scm/_file_finders/hg.py
+++ b/src/setuptools_scm/_file_finders/hg.py
@@ -8,7 +8,7 @@ from .. import _types as _t
from .._file_finders import is_toplevel_acceptable
from .._file_finders import scm_find_files
from .._run_cmd import run as _run
-from ..utils import data_from_mime
+from ..integration import data_from_mime
log = logging.getLogger(__name__)
diff --git a/src/setuptools_scm/_run_cmd.py b/src/setuptools_scm/_run_cmd.py
index 39898b0..3f66f56 100644
--- a/src/setuptools_scm/_run_cmd.py
+++ b/src/setuptools_scm/_run_cmd.py
@@ -4,7 +4,9 @@ import os
import shlex
import subprocess
import textwrap
+import warnings
from typing import Mapping
+from typing import Sequence
from . import _log
from . import _types as _t
@@ -111,3 +113,25 @@ def _unsafe_quote_for_display(item: _t.PathT) -> str:
# give better results than shlex.join in our cases
text = os.fspath(item)
return text if all(c not in text for c in " {[:") else f'"{text}"'
+
+
+def has_command(name: str, args: Sequence[str] = ["help"], warn: bool = True) -> bool:
+ try:
+ p = run([name, *args], cwd=".", timeout=5)
+ except OSError as e:
+ log.warning("command %s missing: %s", name, e)
+ res = False
+ except subprocess.TimeoutExpired as e:
+ log.warning("command %s timed out %s", name, e)
+ res = False
+
+ else:
+ res = not p.returncode
+ if not res and warn:
+ warnings.warn("%r was not found" % name, category=RuntimeWarning)
+ return res
+
+
+def require_command(name: str) -> None:
+ if not has_command(name, warn=False):
+ raise OSError(f"{name!r} was not found")
diff --git a/src/setuptools_scm/fallbacks.py b/src/setuptools_scm/fallbacks.py
index 818c09d..e1ea60c 100644
--- a/src/setuptools_scm/fallbacks.py
+++ b/src/setuptools_scm/fallbacks.py
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING
if TYPE_CHECKING:
from . import _types as _t
from . import Configuration
-from .utils import data_from_mime
+from .integration import data_from_mime
from .version import meta
from .version import ScmVersion
from .version import tag_to_version
diff --git a/src/setuptools_scm/git.py b/src/setuptools_scm/git.py
index dc80fa3..e2a5a79 100644
--- a/src/setuptools_scm/git.py
+++ b/src/setuptools_scm/git.py
@@ -17,10 +17,10 @@ from typing import TYPE_CHECKING
from . import _types as _t
from . import Configuration
+from ._run_cmd import require_command
from ._run_cmd import run
+from .integration import data_from_mime
from .scm_workdir import Workdir
-from .utils import data_from_mime
-from .utils import require_command
from .version import meta
from .version import ScmVersion
from .version import tag_to_version
diff --git a/src/setuptools_scm/hg.py b/src/setuptools_scm/hg.py
index a3b7d59..cb45e03 100644
--- a/src/setuptools_scm/hg.py
+++ b/src/setuptools_scm/hg.py
@@ -8,9 +8,8 @@ from typing import TYPE_CHECKING
from . import Configuration
from ._version_cls import Version
+from .integration import data_from_mime
from .scm_workdir import Workdir
-from .utils import data_from_mime
-from .utils import require_command
from .version import meta
from .version import ScmVersion
from .version import tag_to_version
@@ -18,7 +17,7 @@ from .version import tag_to_version
if TYPE_CHECKING:
from . import _types as _t
-from ._run_cmd import run as _run
+from ._run_cmd import run as _run, require_command
log = logging.getLogger(__name__)
diff --git a/src/setuptools_scm/hg_git.py b/src/setuptools_scm/hg_git.py
index 884c290..f2ea360 100644
--- a/src/setuptools_scm/hg_git.py
+++ b/src/setuptools_scm/hg_git.py
@@ -8,10 +8,10 @@ from datetime import datetime
from subprocess import CompletedProcess
from . import _types as _t
+from ._run_cmd import require_command
from ._run_cmd import run as _run
from .git import GitWorkdir
from .hg import HgWorkdir
-from .utils import require_command
log = logging.getLogger(__name__)
@@ -27,7 +27,7 @@ class GitWorkdirHgClient(GitWorkdir, HgWorkdir):
@classmethod
def from_potential_worktree(cls, wd: _t.PathT) -> GitWorkdirHgClient | None:
- require_command(cls.COMMAND)
+ require_command("hg")
res = _run(["hg", "root"], cwd=wd)
if res.returncode:
return None
diff --git a/src/setuptools_scm/integration.py b/src/setuptools_scm/integration.py
index 4c7cb25..9df4f3e 100644
--- a/src/setuptools_scm/integration.py
+++ b/src/setuptools_scm/integration.py
@@ -2,7 +2,9 @@ from __future__ import annotations
import logging
import os
+import textwrap
import warnings
+from pathlib import Path
from typing import Any
from typing import Callable
from typing import TYPE_CHECKING
@@ -10,6 +12,7 @@ from typing import TYPE_CHECKING
import setuptools
from . import _get_version
+from . import _types as _t
from . import _version_missing
from . import Configuration
from ._integration.setuptools import (
@@ -119,3 +122,13 @@ def infer_version(dist: setuptools.Distribution) -> None:
log.exception(e)
else:
_assign_version(dist, config)
+
+
+def data_from_mime(path: _t.PathT) -> dict[str, str]:
+ content = Path(path).read_text(encoding="utf-8")
+ log.debug("mime %s content:\n%s", path, textwrap.indent(content, " "))
+ # the complex conditions come from reading pseudo-mime-messages
+ data = dict(x.split(": ", 1) for x in content.splitlines() if ": " in x)
+
+ log.debug("mime %s data:\n%s", path, data)
+ return data
diff --git a/src/setuptools_scm/scm_workdir.py b/src/setuptools_scm/scm_workdir.py
index 12935f1..8f6a1cd 100644
--- a/src/setuptools_scm/scm_workdir.py
+++ b/src/setuptools_scm/scm_workdir.py
@@ -1,19 +1,15 @@
from __future__ import annotations
from pathlib import Path
-from typing import ClassVar
from typing import TYPE_CHECKING
-from .utils import require_command
if TYPE_CHECKING:
from . import _types as _t
class Workdir:
- COMMAND: ClassVar[str]
path: Path
def __init__(self, path: _t.PathT):
- require_command(self.COMMAND)
self.path = Path(path)
diff --git a/src/setuptools_scm/utils.py b/src/setuptools_scm/utils.py
deleted file mode 100644
index bb313fc..0000000
--- a/src/setuptools_scm/utils.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""
-utils
-"""
-from __future__ import annotations
-
-import logging
-import subprocess
-import textwrap
-import warnings
-from pathlib import Path
-from typing import Sequence
-from typing import TYPE_CHECKING
-
-from . import _run_cmd
-
-if TYPE_CHECKING:
- from . import _types as _t
-
-log = logging.getLogger(__name__)
-
-
-def data_from_mime(path: _t.PathT) -> dict[str, str]:
- content = Path(path).read_text(encoding="utf-8")
- log.debug("mime %s content:\n%s", path, textwrap.indent(content, " "))
- # the complex conditions come from reading pseudo-mime-messages
- data = dict(x.split(": ", 1) for x in content.splitlines() if ": " in x)
-
- log.debug("mime %s data:\n%s", path, data)
- return data
-
-
-def has_command(name: str, args: Sequence[str] = ["help"], warn: bool = True) -> bool:
- try:
- p = _run_cmd.run([name, *args], cwd=".", timeout=5)
- except OSError as e:
- log.warning("command %s missing: %s", name, e)
- res = False
- except subprocess.TimeoutExpired as e:
- log.warning("command %s timed out %s", name, e)
- res = False
-
- else:
- res = not p.returncode
- if not res and warn:
- warnings.warn("%r was not found" % name, category=RuntimeWarning)
- return res
-
-
-def require_command(name: str) -> None:
- if not has_command(name, warn=False):
- raise OSError(f"{name!r} was not found")
diff --git a/testing/conftest.py b/testing/conftest.py
index 58a2589..ef5883c 100644
--- a/testing/conftest.py
+++ b/testing/conftest.py
@@ -9,7 +9,6 @@ from typing import Iterator
import pytest
-import setuptools_scm.utils
from .wd_wrapper import WorkDir
from setuptools_scm._run_cmd import run
@@ -44,7 +43,7 @@ def pytest_addoption(parser: Any) -> None:
class DebugMode(contextlib.AbstractContextManager): # type: ignore[type-arg]
- __module = setuptools_scm._log
+ from setuptools_scm import _log as __module
def __init__(self) -> None:
self.__stack = contextlib.ExitStack()
diff --git a/testing/test_basic_api.py b/testing/test_basic_api.py
index 561fa62..272fcce 100644
--- a/testing/test_basic_api.py
+++ b/testing/test_basic_api.py
@@ -10,12 +10,12 @@ import setuptools_scm
from setuptools_scm import Configuration
from setuptools_scm import dump_version
from setuptools_scm._run_cmd import run
-from setuptools_scm.utils import data_from_mime
+from setuptools_scm.integration import data_from_mime
from setuptools_scm.version import ScmVersion
from testing.wd_wrapper import WorkDir
-def test_run(cmd: str, tmp_path: Path) -> None:
+def test_run_plain(tmp_path: Path) -> None:
run([sys.executable, "-h"], cwd=tmp_path)
diff --git a/testing/test_functions.py b/testing/test_functions.py
index ceb6cd3..0e07496 100644
--- a/testing/test_functions.py
+++ b/testing/test_functions.py
@@ -8,7 +8,7 @@ from setuptools_scm import Configuration
from setuptools_scm import dump_version
from setuptools_scm import get_version
from setuptools_scm import PRETEND_KEY
-from setuptools_scm.utils import has_command
+from setuptools_scm._run_cmd import has_command
from setuptools_scm.version import format_version
from setuptools_scm.version import guess_next_version
from setuptools_scm.version import meta
diff --git a/testing/test_git.py b/testing/test_git.py
index e23473a..a661e02 100644
--- a/testing/test_git.py
+++ b/testing/test_git.py
@@ -22,9 +22,9 @@ from setuptools_scm import Configuration
from setuptools_scm import git
from setuptools_scm import NonNormalizedVersion
from setuptools_scm._file_finders.git import git_find_files
+from setuptools_scm._run_cmd import has_command
from setuptools_scm._run_cmd import run
from setuptools_scm.git import archival_to_version
-from setuptools_scm.utils import has_command
from setuptools_scm.version import format_version
pytestmark = pytest.mark.skipif(
diff --git a/testing/test_hg_git.py b/testing/test_hg_git.py
index 3f3faf0..ed22b09 100644
--- a/testing/test_hg_git.py
+++ b/testing/test_hg_git.py
@@ -2,8 +2,8 @@ from __future__ import annotations
import pytest
+from setuptools_scm._run_cmd import has_command
from setuptools_scm._run_cmd import run
-from setuptools_scm.utils import has_command
from testing.wd_wrapper import WorkDir