Skip to main content

A custom python object for storing and managing states in a temporal sequence.

Project description

TemporalObject

TemporalObject is a custom Python class for storing and managing object states in a temporal sequence. It uses a deque with a fixed maximum length to maintain a rolling buffer of states, providing an efficient way to track the history of changes. Each state can be indexed by an integer, a string ID, or a slice, and the class keeps track of the current state index within the buffer.

Installation

To use TemporalObject, ensure you have the required dependencies installed. You can install LimitedDict from the temporal.util module.

Usage

Class Definition

import uuid
from collections import deque
from typing import Any
from temporal.util import LimitedDict

class TemporalObject:
    """
    An custom object for storing and managing its states in a temporal sequence.

    This class utilizes a deque with a fixed maximum length (maxlen) to maintain
    a rolling buffer of states.

    Each state can be indexed by an integer, a string ID, or a slice. The class
    also tracks the current state index within the buffer.

    Parameters
    ----------
    temporal_depth : int
        The maximum number of states to store.

    Attributes
    ----------
    buffer : deque
        A deque with a maxlen.
    id_index : LimitedDict
        A dictionary with a limit on the number of items it can store.

    Methods
    -------
    add(id: str, state: dict) -> None:
        Appends a state to the buffer.
    update(object) -> None:
        Adds the object's state to the buffer.
    get(key: str, relative_index: int = 0) -> dict:
        Returns the value of the object with the given key and relative index.
    current() -> dict:
        Returns the current state.
    """

Initialization

Create an instance of TemporalObject by specifying the maximum number of states to store.

temporal_object = TemporalObject(temporal_depth=100)

Adding States

Use the add method to append a state to the buffer.

temporal_object.add(id="state1", state={"key": "value"})

Updating States

Use the update method to add the object's state to the buffer. If no temporal ID is provided, a new UUID will be generated.

state = {"key": "new_value"}
temporal_id = temporal_object.update(object_state=state)

Retrieving States

Retrieve a state using the get method by specifying the key and an optional relative index.

state = temporal_object.get(key="state1", relative_index=0)

Accessing the Current State

Get the current state using the current property.

current_state = temporal_object.current

Checking Buffer Length

Check the number of states in the buffer.

buffer_length = len(temporal_object)

Iterating Over States

Iterate over the states in the buffer.

for state in temporal_object:
    print(state)

Accessing States by Index

Access states by their index, temporal ID, or slice.

state_by_index = temporal_object[0]
state_by_id = temporal_object["state1"]

License

This project is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

temporalobject-0.2.0.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

temporalobject-0.2.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file temporalobject-0.2.0.tar.gz.

File metadata

  • Download URL: temporalobject-0.2.0.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for temporalobject-0.2.0.tar.gz
Algorithm Hash digest
SHA256 2ca30a434f9ee50d45d939fff00063cba10c3edc67f845fd10fea422aeaebca6
MD5 bd7109260326b35824468750235e244e
BLAKE2b-256 44ae6e23629a21fade173a3ed2c7effd4dfda9fa38a65bb630d443042b281e39

See more details on using hashes here.

File details

Details for the file temporalobject-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for temporalobject-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6c84ee83336b10be8bbeda9544831e3304932103b2e0d10ecaaa2a1499afe2d6
MD5 5a39ca52b1a3412bd6c6cbff8334252a
BLAKE2b-256 f45c5fcad290245b32883f97cb1f01df2bff90c95c651ed69cf05c124f74ea10

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page