I think it depends on the goal here. If there is strong consensus that we want new heap/SortedList in Python and someone is willing to take it on, then, at least from my POV, it would be essential.
Otherwise - a lot of work.
However, a lot of things can be inferred without doing it:
Memory
all heaps are in-place by definition. Few exceptions: tournament tree (not a heap) is 2n memory, quickheap is O(logn) extra memory.
There are others with extra memory for double structures or extra structures for optimal “decrease key”, but these are quite explicit in definitions.
Regarding memory importance in Python. int is of size 28. pointer is of size 8. so at worst, it means that with 2n memory, your queue will be 25% more memory heavy than in-place heapq.
Performance
Quite a lot of work to implement and make sure implementations are optimized and measures optimally across HW. However, again a lot can be inferred.
Tournament Tree is the raw representation of what mergesort does, just instead of going layer by layer, it bubbles up elements one-by-one individually from POV of the tree. This results in exactly the same comparison count (but worse cache locality). Any heap which is derived from this, in terms of performace, is a downgrade - they sacrifice stability & comparisons / data moves for in-place-ness.
Then there are QuickHeaps / RadixHeaps and other, which are in a different class. I don’t know much about these, apart from the fact that QuickHeap by definition has good cache locality and performance of quicksort, except that it is online, meaning, it all boils down to memory management strategies, laziness, etc - it is not hard to see why good variants of it will be at the top of the list in terms of performance.
Then there are full SortedList options:
sortedcontainers approach with a fair bit of wiggle room.
LazySortedList is possible via partitioning. Also using bins in a similar manner as sortedcontainers does. @tim.one has prototyped offline version of this in another thread.
- tiered vector - data is stored in contiguous array, but needs small percentage of memory for maintenance.