Skip to content

Commit 6bddc84

Browse files
committed
hashfile.tree: implement update_tree
1 parent c2a6066 commit 6bddc84

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/dvc_data/hashfile/tree.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import logging
33
import posixpath
4-
from typing import TYPE_CHECKING, Dict, Final, Iterable, Optional, Tuple
4+
from typing import TYPE_CHECKING, Dict, Final, Iterable, List, Optional, Tuple
55

66
from dvc_objects.errors import ObjectFormatError
77
from funcy import cached_property
@@ -354,3 +354,20 @@ def update_meta(ours: "Tree", theirs: "Tree") -> "Tree":
354354
updated.hash_info = ours.hash_info
355355
updated.oid = ours.oid
356356
return updated
357+
358+
359+
def update_tree(
360+
tree: "Tree",
361+
update: Dict[Tuple[str, ...], Tuple[Optional["Meta"], "HashInfo"]],
362+
remove: List[Tuple[str, ...]],
363+
) -> "Tree":
364+
d = tree.as_dict()
365+
d.update(update)
366+
for item in remove:
367+
d.pop(item)
368+
369+
new_tree = Tree()
370+
new_tree._dict = d
371+
new_tree.fs = tree.fs
372+
new_tree.digest()
373+
return new_tree

0 commit comments

Comments
 (0)