Skip to main content

Pygredients

Version 0.1.3

Pygredients is an open-source Python library for data structures, algorithms and design patterns available on PyPi. 🍎🍊🍋🫐

Installation

You can install Pygredients using pip:

pip install pygredients

For macOS users, please use the following command:

pip3 install pygredients

Usage

To use Pygredients in your Python code, import it as follows:

import pygredients

Data Structures

Linked List

You can create a linked list, add nodes to it, remove nodes from it, and perform other operations using the LinkedList class.

# Create a linked list
ll = LinkedList()

# Add a node to the linked list
ll.append(1)
ll.append(2)
ll.append(3)

# Remove a node from the linked list
ll.remove(2)  # 2

# Check if a value is in the linked list
ll.contains(1)  # True

# Get the head of the linked list
ll.peek()  # 3

# Get the length of the linked list
ll.size()  # 2

# Check if the linked list is empty
ll.is_empty()  # False

# Print the linked list
print(ll)  # [1, 3]

# Limit the length of the linked list
ll.limit = 2
ll.append(4)  # ValueError: Cannot append 4 to Linked List as it is full.

Stack

You can create a stack, push values onto it, pop values from it, and perform other operations using the Stack class.

# Create a stack
stack = Stack()

# Push a value to the stack
stack.push(1)
stack.push(2)
stack.push(3)

# Pop a value from the stack
stack.pop()  # 3

# Peek the top of the stack
stack.peek()  # 2

# Check if a value is in the stack
stack.contains(1)  # True

# Get the length of the stack
stack.size()  # 2

# Check if the stack is empty
stack.is_empty()  # False

# Print the stack
print(stack)  # [1, 2]

# Limit the length of the stack
stack.limit = 2
stack.push(4)  # ValueError: Cannot push 4 to Stack as it is full.

Queue

You can create a queue, enqueue values into it, dequeue values from it, and perform other operations using the Queue class.

# Create a queue
queue = Queue()

# Enqueue a value to the queue
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)

# Dequeue a value from the queue
queue.dequeue()  # 1

# Peek the front of the queue
queue.peek()  # 2

# Check if a value is in the queue
queue.contains(1)  # True

# Get the length of the queue
queue.size()  # 2

# Check if the queue is empty
queue.is_empty()  # False

# Print the queue
print(queue)  # [2, 3]

# Limit the length of the queue
queue.limit = 2
queue.enqueue(4)  # ValueError: Cannot enqueue 4 to Queue as it is full.

Design Patterns

Observer

The Observer pattern is implemented in Pygredients using theObserver and Observable classes. Here's an example usage:

from pygredients.observer.observer import Observer, Observable


class WeatherStation(Observable):
    pass


class DisplayDevice(Observer):
    def __init__(self, name):
        super().__init__(name)
        self.temperature = None

    def notify(self, *args, **kwargs):
        self.temperature = kwargs.get('temperature')
        print(f'{self.name} now displays the temperature: {self.temperature}°C')


# Initialize a WeatherStation and two DisplayDevices
station = WeatherStation()
device1 = DisplayDevice("Device1")
device2 = DisplayDevice("Device2")

# Register the DisplayDevices with the WeatherStation
station.register_observers(device1)
station.register_observers(device2)

# Update the state of the WeatherStation
station.state = {'temperature': 20}

# Unsubscribe device1 and update the state again
device1.unsubscribe()
station.state = {'temperature': 22}

Metadata

Release files for pygredients 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygredients 0.1.3
File Size Uploaded
pygredients-0.1.3.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pygredients 0.1.3
File Interpreter ABI Platform
pygredients-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 30.1 kB

Release files / pygredients-0.1.3.tar.gz

Download URL pygredients-0.1.3.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3c2396746b1f1104c6b6a26d53a50357596c38e8bda61ce1c5ae362923f77430
BLAKE2b-256 checksum
How to use checksums
c56bc9a9ec9314ff1794b198737849e9eb276b3771fa0b6cd435b8faebbfd40b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.9

Release files / pygredients-0.1.3-py3-none-any.whl

Download URL pygredients-0.1.3-py3-none-any.whl
Size 16.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
72963c8f5e753e4eb65e197fa26c44aeb96d3c4a53f9d7f9e6bb6c38a4fbcb94
BLAKE2b-256 checksum
How to use checksums
5e538bf9e2da0530166897e8952a6458304fda27132198370978c64fde8266bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.9

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page