Skip to content

Commit bc58e98

Browse files
committed
cleanup
1 parent 915b77f commit bc58e98

6 files changed

Lines changed: 24 additions & 45 deletions

File tree

dfetch/project/archivesubproject.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
from dfetch.log import get_logger
5050
from dfetch.manifest.project import ProjectEntry
5151
from dfetch.manifest.version import Version
52-
from dfetch.project.subproject import SubProject, VcsDependency
52+
from dfetch.project.metadata import Dependency
53+
from dfetch.project.subproject import SubProject
5354
from dfetch.vcs.archive import (
5455
ARCHIVE_EXTENSIONS,
5556
ArchiveLocalRepo,
@@ -166,7 +167,7 @@ def wanted_version(self) -> Version:
166167
return Version(revision=self._project_entry.hash)
167168
return Version(revision=self.remote)
168169

169-
def _fetch_impl(self, version: Version) -> tuple[Version, list[VcsDependency]]:
170+
def _fetch_impl(self, version: Version) -> tuple[Version, list[Dependency]]:
170171
"""Download and extract the archive to the local destination.
171172
172173
1. Download the archive to a temporary file.

dfetch/project/gitsubproject.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
from dfetch.log import get_logger
77
from dfetch.manifest.project import ProjectEntry
88
from dfetch.manifest.version import Version
9-
from dfetch.project.subproject import SubProject, VcsDependency
9+
from dfetch.project.metadata import Dependency
10+
from dfetch.project.subproject import SubProject
1011
from dfetch.util.util import LICENSE_GLOBS, safe_rm
1112
from dfetch.vcs.git import GitLocalRepo, GitRemote, get_git_version
1213

@@ -56,7 +57,7 @@ def list_tool_info() -> None:
5657
)
5758
SubProject._log_tool("git", "<not found in PATH>")
5859

59-
def _fetch_impl(self, version: Version) -> tuple[Version, list[VcsDependency]]:
60+
def _fetch_impl(self, version: Version) -> tuple[Version, list[Dependency]]:
6061
"""Get the revision of the remote and place it at the local path."""
6162
rev_or_branch_or_tag = self._determine_what_to_fetch(version)
6263

@@ -83,7 +84,7 @@ def _fetch_impl(self, version: Version) -> tuple[Version, list[VcsDependency]]:
8384
f" ({submodule.url} @ {Version(tag=submodule.tag, branch=submodule.branch, revision=submodule.sha)})",
8485
)
8586
vcs_deps.append(
86-
VcsDependency(
87+
Dependency(
8788
remote_url=submodule.url,
8889
destination=submodule.path,
8990
branch=submodule.branch,

dfetch/project/subproject.py

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import pathlib
55
from abc import ABC, abstractmethod
66
from collections.abc import Callable, Sequence
7-
from typing import NamedTuple
87

98
from dfetch.log import get_logger
109
from dfetch.manifest.project import ProjectEntry
@@ -18,28 +17,6 @@
1817
logger = get_logger(__name__)
1918

2019

21-
class VcsDependency(NamedTuple):
22-
"""Information about a vcs dependency."""
23-
24-
destination: str
25-
remote_url: str
26-
branch: str
27-
tag: str
28-
revision: str
29-
source_type: str
30-
31-
def to_dependency(self) -> Dependency:
32-
"""Convert this vcs dependency to a Dependency object."""
33-
return Dependency(
34-
destination=self.destination,
35-
remote_url=self.remote_url,
36-
branch=self.branch,
37-
tag=self.tag,
38-
revision=self.revision,
39-
source_type=self.source_type,
40-
)
41-
42-
4320
class SubProject(ABC):
4421
"""Abstract SubProject object.
4522
@@ -168,7 +145,7 @@ def update(
168145
skiplist=[self.__metadata.FILENAME] + post_fetch_ignored,
169146
),
170147
patch_=applied_patches,
171-
dependencies=[dependency.to_dependency() for dependency in dependency],
148+
dependencies=list(dependency),
172149
)
173150

174151
logger.debug(f"Writing repo metadata to: {self.__metadata.path}")
@@ -416,7 +393,7 @@ def _are_there_local_changes(self, files_to_ignore: Sequence[str]) -> bool:
416393
)
417394

418395
@abstractmethod
419-
def _fetch_impl(self, version: Version) -> tuple[Version, list[VcsDependency]]:
396+
def _fetch_impl(self, version: Version) -> tuple[Version, list[Dependency]]:
420397
"""Fetch the given version of the subproject, should be implemented by the child class."""
421398

422399
@abstractmethod

dfetch/project/svnsubproject.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
from dfetch.log import get_logger
88
from dfetch.manifest.project import ProjectEntry
99
from dfetch.manifest.version import Version
10-
from dfetch.project.subproject import SubProject, VcsDependency
10+
from dfetch.project.metadata import Dependency
11+
from dfetch.project.subproject import SubProject
1112
from dfetch.util.util import (
1213
find_matching_files,
1314
find_non_matching_files,
@@ -107,7 +108,7 @@ def _remove_ignored_files(self) -> None:
107108
if not (file_or_dir.is_file() and is_license_file(file_or_dir.name)):
108109
safe_rm(file_or_dir)
109110

110-
def _fetch_impl(self, version: Version) -> tuple[Version, list[VcsDependency]]:
111+
def _fetch_impl(self, version: Version) -> tuple[Version, list[Dependency]]:
111112
"""Get the revision of the remote and place it at the local path."""
112113
branch, branch_path, revision = self._determine_what_to_fetch(version)
113114
rev_arg = f"--revision {revision}" if revision else ""

dfetch/vcs/git.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
from dfetch.log import get_logger
1414
from dfetch.util.cmdline import SubprocessCommandError, run_on_cmdline
15-
from dfetch.util.util import in_directory, safe_rm, strip_glob_prefix
15+
from dfetch.util.util import in_directory, is_license_file, safe_rm, strip_glob_prefix
1616
from dfetch.vcs.patch import Patch, PatchType
1717

1818
logger = get_logger(__name__)
@@ -263,10 +263,7 @@ def _configure_sparse_checkout(
263263

264264
with open(".git/info/sparse-checkout", "a", encoding="utf-8") as f:
265265
patterns = list(keeps or [])
266-
src_pattern = f"/{src or '*'}"
267-
268-
if src_pattern not in patterns:
269-
patterns.append(src_pattern)
266+
patterns.append(f"/{src or '*'}")
270267

271268
if ignore:
272269
patterns += self._determine_ignore_paths(src, ignore)
@@ -297,11 +294,7 @@ def checkout_version( # pylint: disable=too-many-arguments
297294
run_on_cmdline(logger, ["git", "checkout", "-b", "dfetch-local-branch"])
298295

299296
if src or ignore:
300-
self._configure_sparse_checkout(
301-
src,
302-
(must_keeps or []) + [f"/{src or '*'}"],
303-
ignore,
304-
)
297+
self._configure_sparse_checkout(src, must_keeps or [], ignore)
305298

306299
run_on_cmdline(
307300
logger,
@@ -342,7 +335,12 @@ def _apply_src_and_ignore(
342335
self._move_src_folder_up(remote, src)
343336

344337
for ignore_path in ignore or []:
345-
safe_rm(glob.glob(ignore_path))
338+
paths = [
339+
p
340+
for p in glob.glob(ignore_path)
341+
if not (os.path.isfile(p) and is_license_file(os.path.basename(p)))
342+
]
343+
safe_rm(paths, within=".")
346344

347345
return [s for s in submodules if os.path.exists(s.path)]
348346

tests/test_subproject.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,14 @@
1010

1111
from dfetch.manifest.project import ProjectEntry
1212
from dfetch.manifest.version import Version
13-
from dfetch.project.subproject import SubProject, VcsDependency
13+
from dfetch.project.metadata import Dependency
14+
from dfetch.project.subproject import SubProject
1415

1516

1617
class ConcreteSubProject(SubProject):
1718
_wanted_version: Version
1819

19-
def _fetch_impl(self, version: Version) -> tuple[Version, list[VcsDependency]]:
20+
def _fetch_impl(self, version: Version) -> tuple[Version, list[Dependency]]:
2021
return Version(), []
2122

2223
def _latest_revision_on_branch(self, branch):

0 commit comments

Comments
 (0)