An exercise to learn about hash tables, unit tests, TDD, and Python packages
Project description
hashtable-nicolerg
: HashTable Python package
This simple package provides a custom implementation of a hash table in Python,
created by following this tutorial written by Bartosz Zaczyński.
The HashTable
class replicates many methods from Python dictionaries, including
HashTable.clear()
and HashTable.update()
.
Installation
This package is available in PyPI.
Use the package manager pip to install HashTable
.
python3 -m pip install hashtable-nicolerg
Alternatively, experiment with HashTable
in a Docker container.
Usage
from hashtable_nicolerg.hashtable import HashTable
# Create an instance of HashTable with initial size 10
# and loading factor threshold 0.5, meaning the HashTable
# will be resized to have 2x capacity whenever the number of
# key-value pairs is at least half the current capacity
hash_table = HashTable(capacity=10, load_factor_threshold=0.5)
hash_table["blue"] = "sea" # Add key-value pair "blue":"sea"
hash_table["list"] = [1,2,3] # Add key-value pair with a mutable value
len(hash_table) # Return number of key-value pairs
hash_table.capacity # Return current capacity
hash_table.load_factor # Return current load factor
hash_table.keys # Return set of keys
hash_table.values # Return list of values
hash_table.pairs # Return list of key-value pairs
del hash_table["list"] # Delete key-value pair for specified key
hash_table.update({"blue":"0000FF"}) # Update value for key "blue" using a dictionary
hash_table["blue"] # Return value for key "blue"
hash_table.clear() # Remove all key-value pairs
Motivation
Developing this package reinforced knowledge in the following areas:
- Python classes, including dunder methods
- Hash table implementation, including handling hash collisions
- Testing, including TDD, unit tests, and
pytest
- Developing Python packages
Dev notes
- Create the recommended directory structure and populate files
- Build the package in the same directory as pyproject.toml, which should create a
dist/
directorypython3 -m build
- Use Twine to upload the package to PyPI. Use username
__token__
and your token value as the password.python3 -m pip install --upgrade twine python3 -m twine upload dist/*
- Install your newly uploaded package
python3 -m pip install hashtable-nicolerg
- To update the package, increment the version in pyproject.toml and repeat steps 3-4.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for hashtable_nicolerg-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69cb3c997e285a0b923007f1642c3615346c1f1de554cb8691d53a77ae8bfbcd |
|
MD5 | 891c88168011e8929e569e13ba4d7bd4 |
|
BLAKE2b-256 | 8fdcfad0ed31566769014004f00fa67e5f3a63a22911ea205212a36ab1d480cc |