summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2023-03-13 14:08:40 +0100
committerRonny Pfannschmidt <opensource@ronnypfannschmidt.de>2023-03-13 14:08:40 +0100
commit3b5b8a7cb3ec62c7a655d51ee272f08a1c44034b (patch)
treefa2c7b456e539d7e6ed2148061547bbf0c5cd802
parent792f61e3ab701cd851d2071885106df581343e0e (diff)
downloadsetuptools-scm-3b5b8a7cb3ec62c7a655d51ee272f08a1c44034b.tar.gz
refactor/breaking: move file finders to private module
-rw-r--r--pyproject.toml10
-rw-r--r--src/setuptools_scm/_cli.py2
-rw-r--r--src/setuptools_scm/_file_finders/__init__.py (renamed from src/setuptools_scm/file_finder.py)19
-rw-r--r--src/setuptools_scm/_file_finders/git.py (renamed from src/setuptools_scm/file_finder_git.py)12
-rw-r--r--src/setuptools_scm/_file_finders/hg.py (renamed from src/setuptools_scm/file_finder_hg.py)19
-rw-r--r--src/setuptools_scm/integration.py16
-rw-r--r--testing/test_file_finder.py2
-rw-r--r--testing/test_git.py14
-rw-r--r--testing/test_mercurial.py6
9 files changed, 51 insertions, 49 deletions
diff --git a/pyproject.toml b/pyproject.toml
index f8cb696..c8a4baa 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -61,18 +61,18 @@ repository = "https://github.com/pypa/setuptools_scm/"
use_scm_version = "setuptools_scm.integration:version_keyword"
[project.entry-points."setuptools.file_finders"]
-setuptools_scm = "setuptools_scm.integration:find_files"
+setuptools_scm = "setuptools_scm._file_finders:find_files"
[project.entry-points."setuptools.finalize_distribution_options"]
setuptools_scm = "setuptools_scm.integration:infer_version"
[project.entry-points."setuptools_scm.files_command"]
-".git" = "setuptools_scm.file_finder_git:git_find_files"
-".hg" = "setuptools_scm.file_finder_hg:hg_find_files"
+".git" = "setuptools_scm._file_finders.git:git_find_files"
+".hg" = "setuptools_scm._file_finders.hg:hg_find_files"
[project.entry-points."setuptools_scm.files_command_fallback"]
-".git_archival.txt" = "setuptools_scm.file_finder_git:git_archive_find_files"
-".hg_archival.txt" = "setuptools_scm.file_finder_hg:hg_archive_find_files"
+".git_archival.txt" = "setuptools_scm._file_finders.git:git_archive_find_files"
+".hg_archival.txt" = "setuptools_scm._file_finders.hg:hg_archive_find_files"
[project.entry-points."setuptools_scm.local_scheme"]
dirty-tag = "setuptools_scm.version:get_local_dirty_tag"
diff --git a/src/setuptools_scm/_cli.py b/src/setuptools_scm/_cli.py
index 953c471..37bbc9a 100644
--- a/src/setuptools_scm/_cli.py
+++ b/src/setuptools_scm/_cli.py
@@ -6,8 +6,8 @@ import sys
from setuptools_scm import _get_version
from setuptools_scm import Configuration
+from setuptools_scm._file_finders import find_files
from setuptools_scm.discover import walk_potential_roots
-from setuptools_scm.integration import find_files
def main(args: list[str] | None = None) -> None:
diff --git a/src/setuptools_scm/file_finder.py b/src/setuptools_scm/_file_finders/__init__.py
index 27a50d7..5a7a1c0 100644
--- a/src/setuptools_scm/file_finder.py
+++ b/src/setuptools_scm/_file_finders/__init__.py
@@ -1,11 +1,14 @@
from __future__ import annotations
+import itertools
import os
+from typing import Callable
from typing_extensions import TypeGuard
-from . import _types as _t
-from ._trace import trace
+from setuptools_scm import _types as _t
+from setuptools_scm._entrypoints import iter_entry_points
+from setuptools_scm._trace import trace
def scm_find_files(
@@ -84,3 +87,15 @@ def is_toplevel_acceptable(toplevel: str | None) -> TypeGuard[str]:
trace(toplevel, ignored)
return toplevel not in ignored
+
+
+def find_files(path: _t.PathT = "") -> list[str]:
+ for ep in itertools.chain(
+ iter_entry_points("setuptools_scm.files_command"),
+ iter_entry_points("setuptools_scm.files_command_fallback"),
+ ):
+ command: Callable[[_t.PathT], list[str]] = ep.load()
+ res: list[str] = command(path)
+ if res:
+ return res
+ return []
diff --git a/src/setuptools_scm/file_finder_git.py b/src/setuptools_scm/_file_finders/git.py
index 20c04a1..f007d5b 100644
--- a/src/setuptools_scm/file_finder_git.py
+++ b/src/setuptools_scm/_file_finders/git.py
@@ -6,12 +6,12 @@ import subprocess
import tarfile
from typing import IO
-from . import _types as _t
-from ._run_cmd import run as _run
-from ._trace import trace
-from .file_finder import is_toplevel_acceptable
-from .file_finder import scm_find_files
-from .utils import data_from_mime
+from . import is_toplevel_acceptable
+from . import scm_find_files
+from .. import _types as _t
+from .._run_cmd import run as _run
+from .._trace import trace
+from ..utils import data_from_mime
log = logging.getLogger(__name__)
diff --git a/src/setuptools_scm/file_finder_hg.py b/src/setuptools_scm/_file_finders/hg.py
index a02bcce..8f777ea 100644
--- a/src/setuptools_scm/file_finder_hg.py
+++ b/src/setuptools_scm/_file_finders/hg.py
@@ -3,13 +3,12 @@ from __future__ import annotations
import os
import subprocess
-from . import _types as _t
-from ._run_cmd import run as _run
-from ._trace import trace
-from .file_finder import is_toplevel_acceptable
-from .file_finder import scm_find_files
-from .utils import data_from_mime
-from .utils import do_ex
+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 .._trace import trace
+from ..utils import data_from_mime
def _hg_toplevel(path: str) -> str | None:
@@ -31,10 +30,10 @@ def _hg_toplevel(path: str) -> str | None:
def _hg_ls_files_and_dirs(toplevel: str) -> tuple[set[str], set[str]]:
hg_files: set[str] = set()
hg_dirs = {toplevel}
- out, err, ret = do_ex(["hg", "files"], cwd=toplevel)
- if ret:
+ res = _run(["hg", "files"], cwd=toplevel)
+ if res.returncode:
(), ()
- for name in out.splitlines():
+ for name in res.stdout.splitlines():
name = os.path.normcase(name).replace("/", os.path.sep)
fullname = os.path.join(toplevel, name)
hg_files.add(fullname)
diff --git a/src/setuptools_scm/integration.py b/src/setuptools_scm/integration.py
index e2a033e..1d600e2 100644
--- a/src/setuptools_scm/integration.py
+++ b/src/setuptools_scm/integration.py
@@ -1,6 +1,5 @@
from __future__ import annotations
-import itertools
import os
import warnings
from typing import Any
@@ -12,7 +11,6 @@ import setuptools
from . import _get_version
from . import _version_missing
from . import Configuration
-from ._entrypoints import iter_entry_points
from ._integration.setuptools import (
read_dist_name_from_setup_cfg as _read_dist_name_from_setup_cfg,
)
@@ -20,7 +18,7 @@ from ._trace import trace
from ._version_cls import _validate_version_cls
if TYPE_CHECKING:
- from . import _types as _t
+ pass
def _warn_on_old_setuptools(_version: str = setuptools.__version__) -> None:
@@ -99,18 +97,6 @@ def version_keyword(
_assign_version(dist, config)
-def find_files(path: _t.PathT = "") -> list[str]:
- for ep in itertools.chain(
- iter_entry_points("setuptools_scm.files_command"),
- iter_entry_points("setuptools_scm.files_command_fallback"),
- ):
- command = ep.load()
- res: list[str] = command(path)
- if res:
- return res
- return []
-
-
def infer_version(dist: setuptools.Distribution) -> None:
trace(
"finalize hook",
diff --git a/testing/test_file_finder.py b/testing/test_file_finder.py
index 6c7f2d8..3825500 100644
--- a/testing/test_file_finder.py
+++ b/testing/test_file_finder.py
@@ -8,7 +8,7 @@ from typing import Iterable
import pytest
from .wd_wrapper import WorkDir
-from setuptools_scm.integration import find_files
+from setuptools_scm._file_finders import find_files
@pytest.fixture(params=["git", "hg"])
diff --git a/testing/test_git.py b/testing/test_git.py
index 13a8fec..3e1ee67 100644
--- a/testing/test_git.py
+++ b/testing/test_git.py
@@ -15,14 +15,14 @@ from unittest.mock import patch
import pytest
+import setuptools_scm._file_finders
from .conftest import DebugMode
from .wd_wrapper import WorkDir
from setuptools_scm import Configuration
from setuptools_scm import git
-from setuptools_scm import integration
from setuptools_scm import NonNormalizedVersion
+from setuptools_scm._file_finders.git import git_find_files
from setuptools_scm._run_cmd import run
-from setuptools_scm.file_finder_git import git_find_files
from setuptools_scm.git import archival_to_version
from setuptools_scm.utils import has_command
from setuptools_scm.version import format_version
@@ -327,7 +327,7 @@ def test_find_files_stop_at_root_git(wd: WorkDir) -> None:
project = wd.cwd / "project"
project.mkdir()
project.joinpath("setup.cfg").touch()
- assert integration.find_files(str(project)) == []
+ assert setuptools_scm._file_finders.find_files(str(project)) == []
@pytest.mark.issue(128)
@@ -356,7 +356,7 @@ def test_git_archive_export_ignore(
wd("git add test1.txt test2.txt")
wd.commit()
monkeypatch.chdir(wd.cwd)
- assert integration.find_files(".") == [opj(".", "test1.txt")]
+ assert setuptools_scm._file_finders.find_files(".") == [opj(".", "test1.txt")]
@pytest.mark.issue(228)
@@ -366,7 +366,9 @@ def test_git_archive_subdirectory(wd: WorkDir, monkeypatch: pytest.MonkeyPatch)
wd("git add foobar")
wd.commit()
monkeypatch.chdir(wd.cwd)
- assert integration.find_files(".") == [opj(".", "foobar", "test1.txt")]
+ assert setuptools_scm._file_finders.find_files(".") == [
+ opj(".", "foobar", "test1.txt")
+ ]
@pytest.mark.issue(251)
@@ -378,7 +380,7 @@ def test_git_archive_run_from_subdirectory(
wd("git add foobar")
wd.commit()
monkeypatch.chdir(wd.cwd / "foobar")
- assert integration.find_files(".") == [opj(".", "test1.txt")]
+ assert setuptools_scm._file_finders.find_files(".") == [opj(".", "test1.txt")]
@pytest.mark.issue("https://github.com/pypa/setuptools_scm/issues/728")
diff --git a/testing/test_mercurial.py b/testing/test_mercurial.py
index 144e423..7de7ca2 100644
--- a/testing/test_mercurial.py
+++ b/testing/test_mercurial.py
@@ -5,8 +5,8 @@ from pathlib import Path
import pytest
+import setuptools_scm._file_finders
from setuptools_scm import Configuration
-from setuptools_scm import integration
from setuptools_scm.hg import archival_to_version
from setuptools_scm.hg import parse
from setuptools_scm.utils import has_command
@@ -67,11 +67,11 @@ def test_find_files_stop_at_root_hg(
project.mkdir()
project.joinpath("setup.cfg").touch()
# setup.cfg has not been committed
- assert integration.find_files(str(project)) == []
+ assert setuptools_scm._file_finders.find_files(str(project)) == []
# issue 251
wd.add_and_commit()
monkeypatch.chdir(project)
- assert integration.find_files() == ["setup.cfg"]
+ assert setuptools_scm._file_finders.find_files() == ["setup.cfg"]
# XXX: better tests for tag prefixes