Merging upstream version 6.1.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
3c6d649c90
commit
08ecea3adf
61 changed files with 1844 additions and 1555 deletions
|
@ -115,13 +115,8 @@ class ChangeDistiller:
|
|||
for kept_source_node_id, kept_target_node_id in matching_set:
|
||||
source_node = self._source_index[kept_source_node_id]
|
||||
target_node = self._target_index[kept_target_node_id]
|
||||
if (
|
||||
not isinstance(source_node, LEAF_EXPRESSION_TYPES)
|
||||
or source_node == target_node
|
||||
):
|
||||
edit_script.extend(
|
||||
self._generate_move_edits(source_node, target_node, matching_set)
|
||||
)
|
||||
if not isinstance(source_node, LEAF_EXPRESSION_TYPES) or source_node == target_node:
|
||||
edit_script.extend(self._generate_move_edits(source_node, target_node, matching_set))
|
||||
edit_script.append(Keep(source_node, target_node))
|
||||
else:
|
||||
edit_script.append(Update(source_node, target_node))
|
||||
|
@ -132,9 +127,7 @@ class ChangeDistiller:
|
|||
source_args = [id(e) for e in _expression_only_args(source)]
|
||||
target_args = [id(e) for e in _expression_only_args(target)]
|
||||
|
||||
args_lcs = set(
|
||||
_lcs(source_args, target_args, lambda l, r: (l, r) in matching_set)
|
||||
)
|
||||
args_lcs = set(_lcs(source_args, target_args, lambda l, r: (l, r) in matching_set))
|
||||
|
||||
move_edits = []
|
||||
for a in source_args:
|
||||
|
@ -148,14 +141,10 @@ class ChangeDistiller:
|
|||
matching_set = leaves_matching_set.copy()
|
||||
|
||||
ordered_unmatched_source_nodes = {
|
||||
id(n[0]): None
|
||||
for n in self._source.bfs()
|
||||
if id(n[0]) in self._unmatched_source_nodes
|
||||
id(n[0]): None for n in self._source.bfs() if id(n[0]) in self._unmatched_source_nodes
|
||||
}
|
||||
ordered_unmatched_target_nodes = {
|
||||
id(n[0]): None
|
||||
for n in self._target.bfs()
|
||||
if id(n[0]) in self._unmatched_target_nodes
|
||||
id(n[0]): None for n in self._target.bfs() if id(n[0]) in self._unmatched_target_nodes
|
||||
}
|
||||
|
||||
for source_node_id in ordered_unmatched_source_nodes:
|
||||
|
@ -169,18 +158,13 @@ class ChangeDistiller:
|
|||
max_leaves_num = max(len(source_leaf_ids), len(target_leaf_ids))
|
||||
if max_leaves_num:
|
||||
common_leaves_num = sum(
|
||||
1 if s in source_leaf_ids and t in target_leaf_ids else 0
|
||||
for s, t in leaves_matching_set
|
||||
1 if s in source_leaf_ids and t in target_leaf_ids else 0 for s, t in leaves_matching_set
|
||||
)
|
||||
leaf_similarity_score = common_leaves_num / max_leaves_num
|
||||
else:
|
||||
leaf_similarity_score = 0.0
|
||||
|
||||
adjusted_t = (
|
||||
self.t
|
||||
if min(len(source_leaf_ids), len(target_leaf_ids)) > 4
|
||||
else 0.4
|
||||
)
|
||||
adjusted_t = self.t if min(len(source_leaf_ids), len(target_leaf_ids)) > 4 else 0.4
|
||||
|
||||
if leaf_similarity_score >= 0.8 or (
|
||||
leaf_similarity_score >= adjusted_t
|
||||
|
@ -217,10 +201,7 @@ class ChangeDistiller:
|
|||
matching_set = set()
|
||||
while candidate_matchings:
|
||||
_, _, source_leaf, target_leaf = heappop(candidate_matchings)
|
||||
if (
|
||||
id(source_leaf) in self._unmatched_source_nodes
|
||||
and id(target_leaf) in self._unmatched_target_nodes
|
||||
):
|
||||
if id(source_leaf) in self._unmatched_source_nodes and id(target_leaf) in self._unmatched_target_nodes:
|
||||
matching_set.add((id(source_leaf), id(target_leaf)))
|
||||
self._unmatched_source_nodes.remove(id(source_leaf))
|
||||
self._unmatched_target_nodes.remove(id(target_leaf))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue