def insert()

in heap.py [0:0]


    def insert(self, elem):
        if self.invalid_pos:
            # Take one of the invalidated positions
            target_pos = self.invalid_pos.pop()
            new_elem = CachedScoreValue(elem, None, None)
            self.data[target_pos] = new_elem
            self.inverse_index[self.keyf(new_elem)] = target_pos
            self.sift_down(target_pos)
            self.sift_up(target_pos)
        else:
            new_elem = CachedScoreValue(elem, None, None)
            self.inverse_index[self.keyf(new_elem)] = len(self.data)
            self.data.append(new_elem)
            self.sift_up(len(self.data) - 1)