add: ignore duplicated entries (#6286)

This commit is contained in:
Saugat Pachhai
2021-07-12 20:43:41 +05:45
committed by GitHub
parent 4557de420c
commit beb610c3ab
3 changed files with 21 additions and 1 deletions
+8 -1
View File
@@ -43,7 +43,14 @@ def check_recursive_and_fname(args):
def transform_targets(args):
args.targets = ensure_list(args.targets)
from funcy import count_reps
counts = count_reps(ensure_list(args.targets))
dupes = [key for key, count in counts.items() if count > 1]
if dupes:
msg = ", ".join(f"[b]{key}[/]" for key in dupes)
ui.error_write(f"ignoring duplicated targets: {msg}", styled=True)
args.targets = list(counts)
def check_arg_combinations(args):
+4
View File
@@ -61,6 +61,8 @@ class Console:
style: str = None,
sep: str = None,
end: str = None,
styled: bool = True,
force: bool = True,
) -> None:
return self.write(
*objects,
@@ -68,6 +70,8 @@ class Console:
sep=sep,
end=end,
stderr=True,
force=force,
styled=styled,
)
def write(
+9
View File
@@ -1229,3 +1229,12 @@ def test_add_does_not_remove_stage_file_on_failure(
assert str(exc_info.value) == exc_msg
assert (tmp_dir / "foo.dvc").exists()
assert (tmp_dir / stage.path).read_text() == dvcfile_contents
def test_add_ignore_duplicated_targets(tmp_dir, dvc, capsys):
tmp_dir.gen({"foo": "foo", "bar": "bar", "foobar": "foobar"})
stages = dvc.add(["foo", "bar", "foobar", "bar", "foo"])
_, err = capsys.readouterr()
assert len(stages) == 3
assert "ignoring duplicated targets: foo, bar" in err