def sift_up()

in heap.py [0:0]


    def sift_up(self, pos):
        root = pos
        if root in self.invalid_pos:
            return
        while root > 0:
            parent = self.parent(root)
            if parent in self.invalid_pos:
                self._swap_pos(root, parent)
                # Because the root was invalid, we have to consider if the
                # other subtree may have a bigger element
                self.sift_down(parent)
                root = parent
            elif self.cmp(self.data[root], self.data[parent]):
                self._swap_pos(root, parent)
                root = parent
            else:
                break
        self.clean_invalid()