Metadata-Version: 2.4
Name: dsa-daa-kit
Version: 0.1.0
Summary: A clean, modern, and DAA-friendly Python library that implements all major Data Structures and Algorithms (DSA) with tracing, operation counters, and benchmarking utilities.
Author: Venu Enugula
License: MIT License
        
        Copyright (c) 2025 Venu Enugula
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/Venuenugula/dsa_daa_kit
Project-URL: Bug Tracker, https://github.com/Venuenugula/dsa_daa_kit/issues
Keywords: daa,dsa,algorithms,data-structures,dynamic-programming,graphs,backtracking,branch-bound,teaching,education
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib
Requires-Dist: numpy
Dynamic: license-file

# DAA-Kit
### A Modern Python Library for Data Structures & Algorithm Analysis

**Designed by Venu Enugula**

## 🚀 Overview

**DAA-Kit** is a modern, minimal, production-grade Python library that implements:
- **Core Data Structures**
- **All major DSA algorithms**
- **Complete DAA syllabus algorithms**
- **Optional tracing, complexity counters, and state-wise execution logs**
- **Tools for benchmarking, experimenting, and visualizing algorithms**

This makes it perfect for:
- ✅ DAA Lab programs
- ✅ Engineering semester exams
- ✅ Competitive programming
- ✅ Interview preparation
- ✅ Teaching & research
- ✅ Algorithm experimentation & analysis

---

## 📦 Key Features

### 1. Clean, readable implementations
Every algorithm is written with clarity, type hints, and clean code.

### 2. DAA-friendly tracing
Most algorithms support:
- `return_trace=True`
- Step-by-step execution logs
- Operation counters (comparisons, swaps, relaxations, recursive calls)

### 3. Unified API
Consistent naming across the library:
`binary_search`, `merge_sort`, `dijkstra`, `knapsack_01`, etc.

### 4. Built-in experiment tools
- Time complexity measurement
- Input-scaling experiments
- Auto-plotting (optional)

### 5. Modular structure
- Arrays
- Trees
- Graphs
- Dynamic Programming
- Greedy
- Backtracking
- Branch & Bound

---

## 📁 Repository Structure

```
src/
  dsa_daa_kit/
    arrays.py
    greedy.py
    graphs.py
    dp.py
    backtracking.py
    branch_bound.py
    ...
tests/
  test_arrays.py
  test_graphs.py
  test_dp.py
```

---

## ⚡ Installation

After uploading to PyPI:
```bash
pip install dsa-daa-kit
```

Or from source:
```bash
pip install -e .
```

---

## ✨ Quick Examples

### Binary Search with tracing
```python
from dsa_daa_kit.arrays import binary_search

index, trace = binary_search([1,3,5,7,9], 7, return_trace=True)

print(index)   # 3
print(trace)   # dumps all search steps
```

### 0/1 Knapsack (DP)
```python
from dsa_daa_kit.dp import knapsack_01

value = knapsack_01([10, 20, 30], [60, 100, 120], 50)
print(value)
```

### Dijkstra
```python
from dsa_daa_kit.graphs import dijkstra

dist = dijkstra(graph, source=0)
print(dist)
```

---

## 📚 Included Algorithms

### Arrays & Searching
- Linear Search
- Binary Search (iterative & recursive)
- Merge Sort
- Quick Sort
- Bubble, Insertion, Selection Sort

### Linked Lists
- Singly, Doubly
- Insert, delete, reverse

### Trees
- BST (insert, search, delete)
- Traversals (inorder, preorder, postorder)
- Heap + HeapSort

### Graphs
- BFS, DFS
- Dijkstra, Bellman-Ford
- Kruskal, Prim
- Topological Sort

### Greedy
- Activity Selection
- Fractional Knapsack
- Huffman Coding

### Dynamic Programming
- 0/1 Knapsack
- Unbounded Knapsack
- LIS
- Matrix Chain Multiplication
- Coin Change

### Backtracking
- N-Queens
- Subset Sum
- Sudoku Solver
- TSP (backtracking version)

### Branch & Bound
- 0/1 Knapsack
- TSP
- Job Assignment Problem

---

## 🔍 Tracing & Complexity Tools

```python
from dsa_daa_kit.utils.tracing import OperationCounter

counter = OperationCounter()

binary_search(arr, x, counter=counter)

print(counter.comparisons)
```

---

## 🧪 Testing

```bash
pytest
```

---

## 📜 License

This project is licensed under the MIT License.

---

## 👤 Author

**Venu Enugula**
Python • ML • Systems • Algorithms
