Heiss/py-datatype-redis

View on GitHub
datatype_redis/types/numeric/int.py

Summary

Maintainability
A
1 hr
Test Coverage
from .numeric import Numeric
from ..boolean.bitwise import Bitwise
from ..operator import inplace
from ..pubsub import PubSub
from ..base import ValueDecorator


class Int(Numeric, Bitwise):
    """
    Redis integer <-> Python integer.
    """

    @property
    def value(self):
        return int(float(self.client.get(self.prefixer(self.key)) or 0))

    @value.setter
    def value(self, value):
        if value is not None:
            self.client.set(self.prefixer(self.key), value)

    __iand__ = inplace("number_and")
    __ior__ = inplace("number_or")
    __ixor__ = inplace("number_xor")
    __ilshift__ = inplace("number_lshift")
    __irshift__ = inplace("number_rshift")
    
    number_or = inplace("bit_or")
    number_and = inplace("bit_and")
    number_xor = inplace("bit_xor")
    number_lshift = inplace("bit_lshift")
    number_rshift = inplace("bit_rshift")


class PubSubInt(Int, PubSub):
    pass