A beginner-friendly Python library for learning, practicing, and observing data structures and algorithms.
Project description
Pandusha
Pandusha is a beginner-friendly educational Python library for learning, practicing, and observing data structures and algorithms. It is built by Cem Berk Çakır and Yasemin Serdengeçti as a shared DSA learning project.
Version 0.2 focuses on a stable, test-covered foundation: linked lists were cleaned up, Pythonic helpers were added, and the roadmap now includes heaps, hash tables, tries, graph algorithms, sorting, searching, and dynamic programming examples.
Current Content
- Linked lists:
LinkedList,DoublyLinkedList - Linear structures:
Stack,Queue - Trees:
BinarySearchTree,AVLTree - Graphs:
Graphwith BFS, DFS, unweighted shortest path, Dijkstra, and topological sort - Other structures:
MinHeap,MaxHeap,PriorityQueue,HashTable,Trie,DisjointSet - Sorting:
bubble_sort,selection_sort,insertion_sort,merge_sort,quick_sort,heap_sort - Searching:
linear_search,binary_search,jump_search - Dynamic programming:
fibonacci_memo,fibonacci_tabulation,climbing_stairs,coin_change_min
Installation
Install from PyPI:
python3 -m pip install pandusha
Or use the source directly:
git clone https://github.com/Agueria/pandusha.git
cd pandusha
For local development:
python3 -m pip install -e .
python3 -m pytest -q
python3 -m compileall src tests
Without editable install, run examples with PYTHONPATH=src.
Examples
from pandusha import LinkedList, MinHeap, binary_search, merge_sort
linked = LinkedList(1)
linked.append(2)
linked.append(3)
print(list(linked)) # [1, 2, 3]
heap = MinHeap([5, 1, 3])
print(heap.remove()) # 1
print(merge_sort([3, 1, 2])) # [1, 2, 3]
print(binary_search([1, 2, 3], 2)) # 1
API Style
Existing educational method names are kept where possible. Pythonic helpers are also available on the relevant structures:
len(structure)list(structure)repr(structure)is_empty()to_list()clear()for linked lists
License
Pandusha is distributed under the Apache License 2.0. See LICENSE.
Changelog
0.2.1
- Refined PyPI package metadata and project description.
- Corrected package author order to
Cem Berk Çakır, Yasemin Serdengeçti. - Kept the public API unchanged from 0.2.0.
0.2.0
- Fixed linked list and doubly linked list edge cases.
- Added Pythonic helpers and controlled package exports.
- Added Heap, HashTable, Trie, DisjointSet, and AVLTree.
- Added sorting, searching, graph, BST traversal, and DP helpers.
- Added pytest coverage for public behavior and examples.
- Updated docs and package metadata.
- Published on PyPI as
pandusha.
0.1.0
- Added initial LinkedList, DoublyLinkedList, Stack, Queue, BinarySearchTree, and Graph implementations.
Project details
Release history Release notifications | RSS feed
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pandusha-0.2.1.tar.gz.
File metadata
- Download URL: pandusha-0.2.1.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fba02018fca0c0beb10de98263742cc028ff7d634146e44ba383d459a87ebe51
|
|
| MD5 |
a520c2ced49b71d8e30c3e8dc9bdd2d1
|
|
| BLAKE2b-256 |
5aa3b4784b924da431f0285f0291b7b500903337026b653433c080bb0637d9df
|
File details
Details for the file pandusha-0.2.1-py3-none-any.whl.
File metadata
- Download URL: pandusha-0.2.1-py3-none-any.whl
- Upload date:
- Size: 18.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61757f36bd9ed45069ca0328969cfe94cb5769c5d5c2434a9e4617fe10619e19
|
|
| MD5 |
618d9673972356cdc178902b25c5a090
|
|
| BLAKE2b-256 |
dcabad36525cc631e7f934cf3e510432839eba463ce9ca0bf937300d3ff5d605
|