Skip to main content

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

  1. Create the recommended directory structure and populate files
  2. Build the package in the same directory as pyproject.toml, which should create a dist/ directory
    python3 -m build
    
  3. 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/*
    
  4. Install your newly uploaded package
    python3 -m pip install hashtable-nicolerg
    
  5. 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

hashtable_nicolerg-1.0.1.tar.gz (5.5 kB view hashes)

Uploaded Source

Built Distribution

hashtable_nicolerg-1.0.1-py3-none-any.whl (4.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page