pyPantry: Your One-Stop Solution for DSA, Design Patterns and etc. in Python
pyPantry is a comprehensive Python library offering robust implementations of numerous data structures and algorithms. It serves as a reliable tool for educators, students, developers, and anyone keen on mastering or utilizing these foundational computer science concepts.
📋 Table of Contents
🌟 Features
Data Structures
-
Graph: Traverse complex networks.
PyGraph.pyPyLinkedGraph.py
-
Heap: Efficient data management.
PyMaxHeap.pyPyMinHeap.py
-
LinkedList: Flexible data storage.
PyCircularLinkedList.pyPyDoublyCircularLinkedList.pyPyDoublyLinkedList.pyPyHeaderLinkedList.pyPyLinkedList.pyPySkipLinkedList.py
-
Queue: FIFO data handling.
PyCircularQueue.pyPyDeque.pyPyPriorityQueue.pyPyQueue.py
-
Stack: LIFO data access.
PyStack.pypyLinkedStack.py
-
Tree: Hierarchical data modeling.
PyAVLTree.pyPyBTree.pyPyBinarySearchTree.pyPyBinaryTree.pyPyGenericTree.py
-
Trie: Rapid text retrieval.
PyTrie.py
Algorithms
Searching
- Binary Search:
PyBinarySearch.py - Jump Search:
PyJumpSearch.py - Linear Search:
PyLinearSearch.py - Fibonacci Search:
PyFibonacciSearch.py - Exponential Search:
PyExponentialSearch.py - Ternary Search:
PyTernarySearch.py - Meta Binary Search:
PyMetaBinarySearch.py - Sentinel Linear Search:
PySentinelLinearSearch.py - Interpolation Search:
PyInterpolationSearch.py
Sorting
- BogoSort:
PyBogoSort.py - Odd-Even Sort:
PyOddEvenSort.py - Sleep Sort:
PySleepSort.py - Cocktail Sort:
PyCocktailSort.py - Radix Sort:
PyRadixSort.py - Bubble Sort:
PyBubbleSort.py - Selection Sort:
PySelectionSort.py - Bingo Sort:
PyBingoSort.py - QuickSort:
PyQuickSort.py - Counting Sort:
PyCountingSort.py - Bucket Sort:
PyBucketSort.py - Gnome Sort:
PyGnomeSort.py - HeapSort:
PyHeapSort.py - Bitonic Sort:
PyBitonicSort.py - Strand Sort:
PyStrandSort.py - Shell Sort:
PyShellSort.py - TimSort:
PyTimSort.py - Pancake Sort:
PyPancakeSort.py
Design Patterns
Architectural Patterns
- Event-Driven Architecture:
PyEventDrivenArchitecturePattern.py - Microservices:
PyMicroservicesPattern.py - Model-View-Controller (MVC):
PyModelViewControllerPattern.py - Model-View-ViewModel (MVVM):
PyModelViewViewModelPattern.py - Service-Oriented Architecture (SOA):
PyServiceOrientedArchitecturePattern.py
Behavioral Patterns
- Chain of Responsibility:
PyChainOfResponsibilityPattern.py - Command:
PyCommandPattern.py - Interpreter:
PyInterpreterPattern.py - Iterator:
PyIteratorPattern.py - Mediator:
PyMediatorPattern.py - Memento:
PyMementoPattern.py - Null Object:
PyNullObjectPattern.py - Observer:
PyObserverPattern.py - Specification:
PySpecificationPattern.py - State:
PyStatePattern.py - Strategy:
PyStrategyPattern.py - Template:
PyTemplatePattern.py - Visitor:
PyVisitorPattern.py
Concurrency Patterns
- Active Object:
PyActiveObjectPattern.py - Half-Sync/Half-Async:
PyHalfSyncOrHalfAsyncPattern.py - Leader-Follower:
PyLeaderOrFollowerPattern.py - Reactor:
PyReactorPattern.py - Thread Pool:
PyThreadPoolPattern.py
Creational Patterns
- Abstract Factory:
PyAbstractFactoryPattern.py - Builder:
PyBuilderPattern.py - Factory Method:
PyFactoryPattern.py - Object Pool:
PyObjectPoolPattern.py - Prototype:
PyPrototypePattern.py - Singleton:
PySingletonPattern.py
Structural Patterns
- Adapter:
PyAdapterPattern.py - Bridge:
PyBridgePattern.py - Composite:
PyCompositePattern.py - Decorator:
PyDecoratorPattern.py - Facade:
PyFacadePattern.py - Flyweight:
PyFlyweightPattern.py - Private Class Data:
PyPrivateClassDataPattern.py - Proxy:
PyProxyPattern.py
🔧 Installation
pip install python-Pantry
🚀 Usage
Data Structures
from pyPantry.DS.Stack.PyStack import PyStack
# Create a new stack
stack = PyStack()
# Push elements onto the stack
stack.push(1)
stack.push(2)
stack.push(3)
# Pop an element from the stack
print(stack.pop()) # Output: 3
Algorithms
from pyPantry.Algo.Sorting.PyBubbleSort import PyBubbleSort
# Sample list to be sorted
sample_list = [64, 34, 25, 12, 22, 11, 90]
# Apply bubble sort
sorted_list = PyBubbleSort(arr=sample_list).sort()
print(sorted_list) # Output: [11, 12, 22, 25, 34, 64, 90]
Design Patterns
Strategy Pattern
from pyPantry.DesignPatterns.Behavioral.Strategy.PyStrategyPattern import PyStrategyPattern
class CreditCardPayment(PyStrategyPattern.PaymentStrategy):
def pay(self, amount):
return f"Paid {amount} using Credit Card"
payment_method = CreditCardPayment()
print(payment_method.pay(100)) # Output: Paid 100 using Credit Card
🧪 Testing
All implementations come with corresponding test files located in the tests directory, ensuring reliability and correctness.
To run tests, use:
python -m unittest discover tests
🤝 Contributing
We welcome and value contributions from the open-source community. Your input, whether it's a bug fix, feature addition, or documentation improvement, helps enhance pyPantry.
- Fork the repository.
- Create a new branch.
- Make your changes.
- Submit a pull request.
👏 Credits
Crafted with ❤️ by Sattyam Jain.
📜 License
Licensed under the MIT License.
📞 Contact
For feedback or queries, contact us. We're always eager to connect!
Metadata
Release files for python-Pantry 3.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_pantry-3.0.2.tar.gz | 54.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_Pantry-3.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 180.3 kB
Release files / python_pantry-3.0.2.tar.gz
| Download URL | python_pantry-3.0.2.tar.gz |
|---|---|
| Size | 54.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c9f8eb4637f73d9d52800169c1bdbaeafbcad4fec70f6b5bad8e93db447943eb
|
|
BLAKE2b-256 checksum How to use checksums |
04b0c080aba8e185a9d8ff77b2f0df8013056ec1da74436e20ce55964bbd1430
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.3
|
Release files / python_Pantry-3.0.2-py3-none-any.whl
| Download URL | python_Pantry-3.0.2-py3-none-any.whl |
|---|---|
| Size | 126.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d45b4e522fa7b4965dbb992b45a5dad5159dfd3151a85b440139b8d6c0bc8dba
|
|
BLAKE2b-256 checksum How to use checksums |
d5c23cc1443e175359e7e045ceff44db07ab13bcfa1d8f227f13a0c61fb7582d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.3
|