Hipster [Heap*]
Description
Hipster provides a thread-safe implementation of the MinHeap and MaxHeap. Each collection type exposes a simple API to push, pop, peek, remove and clear.
The data structure is built on top of the heapq algorithm.
Object Usage
For adding an object to the heap, the object needs to implement it's comparator logic.
class GitRepo:
def __init__(self, url, stars, forks):
self.url = url
self.stars = stars
self.forks = forks
# The object needs to implement the following methods
def __eq__(self, other):
return self.name == other.name and self.stars == other.stars and self.forks == other.forks
def __ne__(self, other):
return self.name != other.name or self.stars != other.stars or self.forks != other.forks
def __lt__(self, other):
# The two repos are first compared based on stars then forks and then sorted lexically based on url
if self.stars == other.stars and self.forks == other.forks return self.url < other.url
def __le__(self, other):
if self.stars == other.stars and self.forks == other.forks return self.url <= other.url
def __gt__(self, other):
if self.stars == other.stars and self.forks == other.forks return self.url > other.url
def __ge__(self, other):
if self.stars == other.stars and self.forks == other.forks return self.url >= other.url
Dependencies
Python 3
Installation
pip install --upgrade hipster
Usage
from hipster.max_heap import MaxHeap
from hipster.min_heap import MinHeap
max_heap = MaxHeap() # Creates an empty MaxHeap
max_heap.push(item) # Pushes a new item on the MaxHeap
item = max_heap.peek() # Returns the largest item from the heap without removing it, throws HeapError when called on an empty Heap
item = max_heap.pop() # Pops an item off the MaxHeap, throws HeapError when called on an empty Heap
max_heap.remove(item) # Removes the item from the heap if its present, or throws HeapError if the item is not present
max_heap.clear() # Removes all items from the heap
min_heap = MinHeap() # Creates an empty MinHeap
min_heap.push(item) # Pushes a new item on the MinHeap
item = min_heap.peek() # Returns the samllest item from the heap without removing it, throws HeapError when called on an empty Heap
item = min_heap.pop() # Pops an item off the MinHeap, throws HeapError when called on an empty Heap
min_heap.remove(item) # Removes the item from the heap if its present, or throws HeapError if the item is not present
min_heap.clear() # Removes all items from the heap
License
MIT
Changelog
3.0.5
Removed copy
3.0.4
Fixed a bug with the copy method
3.0.3
Added copy method
3.0.1
Fixed a bug with thread safety on remove
3.0.0
Added remove, refactored duplicated code to base class, added more tests, updated README
2.0.2
fixed README
2.0.1
Updated object usage example, updated README
2.0.0
Added thread safety, added more tests
Metadata
Release files for hipster 3.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hipster-3.0.5.tar.gz | 3.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hipster-3.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.5 kB
Release files / hipster-3.0.5.tar.gz
| Download URL | hipster-3.0.5.tar.gz |
|---|---|
| Size | 3.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
76de33e61636db63be7ea83779f0fd74cc54432fa53d46659903ea5ebb58ef8f
|
|
BLAKE2b-256 checksum How to use checksums |
928601f43a03676b18046d5b41c38dcd2d9f1d476343f07125684c007a0cd5b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5rc1
|
Release files / hipster-3.0.5-py3-none-any.whl
| Download URL | hipster-3.0.5-py3-none-any.whl |
|---|---|
| Size | 4.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
658108c001068984b825a515a49a264dce0abbc5ab31d1bc2783549e7cec04f4
|
|
BLAKE2b-256 checksum How to use checksums |
e2a0febd144bf30a89df31f26ef0c6b48a5e99a03719b06ecb4ad4e04e30cc92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.7.5rc1
|
Security for hipster 3.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.