in heap.py [0:0]
def remove(self, pos):
if pos != len(self.data) - 1:
self._swap_pos(pos, len(self.data) - 1)
self.invalid_pos.discard(len(self.data) - 1)
self.data.pop()
if pos > 0 and self.cmp(self.data[pos], self.data[self.parent(pos)]):
self.sift_up(pos)
else:
self.sift_down(pos)
else:
self.invalid_pos.discard(len(self.data) - 1)
self.data.pop()