diff options
Diffstat (limited to 'pym')
-rw-r--r-- | pym/portage.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/pym/portage.py b/pym/portage.py index f11e8877e..9dd0ecd92 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -391,6 +391,26 @@ class digraph: del self.nodes[node] self.order.remove(node) + def difference_update(self, t): + """ + Remove all given nodes from node_set. This is more efficient + than multiple calls to the remove() method. + """ + if isinstance(t, (list, tuple)) or \ + not hasattr(t, "__contains__"): + t = frozenset(t) + order = [] + for node in self.order: + if node not in t: + order.append(node) + continue + for parent in self.nodes[node][1]: + del self.nodes[parent][0][node] + for child in self.nodes[node][0]: + del self.nodes[child][1][node] + del self.nodes[node] + self.order = order + def remove_edge(self, child, parent): """ Remove edge in the direction from child to parent. Note that it is |