Module kvalchemy.proxy

Home to the proxy class for KVAlchemy.

Expand source code
"""
Home to the proxy class for KVAlchemy.
"""
from typing import TYPE_CHECKING, Any

from kvalchemy.time import ExpirationType
from kvalchemy.values import ENOVAL

if TYPE_CHECKING:
    from kvalchemy.client import KVAlchemy  # pragma: no cover


class Proxy:
    """
    A proxy object for get/setting a specific item in the key-value store.
    """

    def __init__(
        self, kva: "KVAlchemy", key: str, default: Any = ENOVAL, tag: str = ""
    ):
        """
        Initializes the proxy object.

        Takes in a KVAlchemy instance, the key, and optionally a default value and tag.
        """
        self.kva = kva
        self.key = key
        self.default = default
        self.tag = tag

    def set(self, value: Any, expire: ExpirationType = None):
        """
        Sets the value (and expiration) of the key/tag combo.
        """
        self.kva.set(self.key, value, tag=self.tag, expire=expire)

    def get(self, default=ENOVAL, return_expiration: bool = False) -> Any:
        """
        Gets the value of the key/tag combo.

        If the default is given, it will be used first if there is no
        corresponding value. If it is not given, will instead use the class's default.
        If neither default is given, may raise a KeyError if not found.

        If return_expiration is True, will return the (value, (expiration datetime or None)) as a tuple
        """
        # The default may have been overloaded by the proxy initializer.
        # Precedence is default for this func, then default for this class.
        if default != ENOVAL:
            default_to_use = default
        elif self.default != ENOVAL:
            default_to_use = self.default
        else:
            default_to_use = ENOVAL

        return self.kva.get(
            self.key,
            default=default_to_use,
            tag=self.tag,
            return_expiration=return_expiration,
        )

    def delete(self):
        """
        Deletes the key/tag combo from the store.
        """
        self.kva.delete(self.key, tag=self.tag)

Classes

class Proxy (kva: KVAlchemy, key: str, default: Any = <object object>, tag: str = '')

A proxy object for get/setting a specific item in the key-value store.

Initializes the proxy object.

Takes in a KVAlchemy instance, the key, and optionally a default value and tag.

Expand source code
class Proxy:
    """
    A proxy object for get/setting a specific item in the key-value store.
    """

    def __init__(
        self, kva: "KVAlchemy", key: str, default: Any = ENOVAL, tag: str = ""
    ):
        """
        Initializes the proxy object.

        Takes in a KVAlchemy instance, the key, and optionally a default value and tag.
        """
        self.kva = kva
        self.key = key
        self.default = default
        self.tag = tag

    def set(self, value: Any, expire: ExpirationType = None):
        """
        Sets the value (and expiration) of the key/tag combo.
        """
        self.kva.set(self.key, value, tag=self.tag, expire=expire)

    def get(self, default=ENOVAL, return_expiration: bool = False) -> Any:
        """
        Gets the value of the key/tag combo.

        If the default is given, it will be used first if there is no
        corresponding value. If it is not given, will instead use the class's default.
        If neither default is given, may raise a KeyError if not found.

        If return_expiration is True, will return the (value, (expiration datetime or None)) as a tuple
        """
        # The default may have been overloaded by the proxy initializer.
        # Precedence is default for this func, then default for this class.
        if default != ENOVAL:
            default_to_use = default
        elif self.default != ENOVAL:
            default_to_use = self.default
        else:
            default_to_use = ENOVAL

        return self.kva.get(
            self.key,
            default=default_to_use,
            tag=self.tag,
            return_expiration=return_expiration,
        )

    def delete(self):
        """
        Deletes the key/tag combo from the store.
        """
        self.kva.delete(self.key, tag=self.tag)

Methods

def delete(self)

Deletes the key/tag combo from the store.

Expand source code
def delete(self):
    """
    Deletes the key/tag combo from the store.
    """
    self.kva.delete(self.key, tag=self.tag)
def get(self, default=<object object>, return_expiration: bool = False) ‑> Any

Gets the value of the key/tag combo.

If the default is given, it will be used first if there is no corresponding value. If it is not given, will instead use the class's default. If neither default is given, may raise a KeyError if not found.

If return_expiration is True, will return the (value, (expiration datetime or None)) as a tuple

Expand source code
def get(self, default=ENOVAL, return_expiration: bool = False) -> Any:
    """
    Gets the value of the key/tag combo.

    If the default is given, it will be used first if there is no
    corresponding value. If it is not given, will instead use the class's default.
    If neither default is given, may raise a KeyError if not found.

    If return_expiration is True, will return the (value, (expiration datetime or None)) as a tuple
    """
    # The default may have been overloaded by the proxy initializer.
    # Precedence is default for this func, then default for this class.
    if default != ENOVAL:
        default_to_use = default
    elif self.default != ENOVAL:
        default_to_use = self.default
    else:
        default_to_use = ENOVAL

    return self.kva.get(
        self.key,
        default=default_to_use,
        tag=self.tag,
        return_expiration=return_expiration,
    )
def set(self, value: Any, expire: Union[ForwardRef(None), int, float, datetime.timedelta, datetime.datetime] = None)

Sets the value (and expiration) of the key/tag combo.

Expand source code
def set(self, value: Any, expire: ExpirationType = None):
    """
    Sets the value (and expiration) of the key/tag combo.
    """
    self.kva.set(self.key, value, tag=self.tag, expire=expire)