def __push_key(self, item):
        """push(item): push the value item onto the heap, maintaining the heap
        invariant."""
        # self._itemid helps to avoid using two times the same id, so they are all
        #   different, so item is never accessed inside __le__
        heappush(self._heap, (self._key(item), self._itemid, item) )
        self._itemid += 1
push(item): push the value item onto the heap, maintaining the heap
        invariant.
recipes/Python/502295_Heap_a_heapq_wrapper_class/recipe-502295.py