Metadata-Version: 2.4
Name: pandusha
Version: 0.2.0
Summary: Pandusha — A clean, modular Python library for fundamental Data Structures & Algorithms. Built incrementally, starting from Linked Lists (SLL & DLL) and expanding towards a complete DSA toolkit.
Author: Yasemin Serdengeçti, Cem Berk Çakır
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/Agueria/pandusha
Project-URL: Repository, https://github.com/Agueria/pandusha
Project-URL: Issues, https://github.com/Agueria/pandusha/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Pandusha

Pandusha is a small educational Python library for practicing data structures
and algorithms. 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: `Graph` with 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

Pandusha is not published on PyPI yet. Use the source directly:

```bash
git clone https://github.com/Agueria/pandusha.git
cd pandusha
```

For local development:

```bash
python3 -m pip install -e .
python3 -m pytest -q
python3 -m compileall src tests
```

Without editable install, run examples with `PYTHONPATH=src`.

## Examples

```python
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.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.

### 0.1.0

- Added initial LinkedList, DoublyLinkedList, Stack, Queue, BinarySearchTree, and Graph implementations.
