Tuning ValueHolder as I could not find better option to generate the double-underscore methods.
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
import functools
|
||||
from functools import partial
|
||||
|
||||
|
||||
def get_name(mixed):
|
||||
try:
|
||||
return mixed.__name__
|
||||
@ -27,181 +31,194 @@ class ValueHolder:
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, value, *, type=None):
|
||||
self.value = value
|
||||
self.type = type
|
||||
def __init__(self, value):
|
||||
self._value = value
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self.value)
|
||||
@property
|
||||
def value(self):
|
||||
# XXX deprecated
|
||||
return self._value
|
||||
|
||||
def __lt__(self, other):
|
||||
return self.value < other
|
||||
def get(self):
|
||||
return self._value
|
||||
|
||||
def __le__(self, other):
|
||||
return self.value <= other
|
||||
def set(self, new_value):
|
||||
self._value = new_value
|
||||
|
||||
def __bool__(self):
|
||||
return bool(self._value)
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.value == other
|
||||
return self._value == other
|
||||
|
||||
def __ne__(self, other):
|
||||
return self.value != other
|
||||
return self._value != other
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self._value)
|
||||
|
||||
def __lt__(self, other):
|
||||
return self._value < other
|
||||
|
||||
def __le__(self, other):
|
||||
return self._value <= other
|
||||
|
||||
def __gt__(self, other):
|
||||
return self.value > other
|
||||
return self._value > other
|
||||
|
||||
def __ge__(self, other):
|
||||
return self.value >= other
|
||||
return self._value >= other
|
||||
|
||||
def __add__(self, other):
|
||||
return self.value + other
|
||||
return self._value + other
|
||||
|
||||
def __radd__(self, other):
|
||||
return other + self.value
|
||||
return other + self._value
|
||||
|
||||
def __iadd__(self, other):
|
||||
self.value += other
|
||||
self._value += other
|
||||
return self
|
||||
|
||||
def __sub__(self, other):
|
||||
return self.value - other
|
||||
return self._value - other
|
||||
|
||||
def __rsub__(self, other):
|
||||
return other - self.value
|
||||
return other - self._value
|
||||
|
||||
def __isub__(self, other):
|
||||
self.value -= other
|
||||
self._value -= other
|
||||
return self
|
||||
|
||||
def __mul__(self, other):
|
||||
return self.value * other
|
||||
return self._value * other
|
||||
|
||||
def __rmul__(self, other):
|
||||
return other * self.value
|
||||
return other * self._value
|
||||
|
||||
def __imul__(self, other):
|
||||
self.value *= other
|
||||
self._value *= other
|
||||
return self
|
||||
|
||||
def __matmul__(self, other):
|
||||
return self.value @ other
|
||||
return self._value @ other
|
||||
|
||||
def __rmatmul__(self, other):
|
||||
return other @ self.value
|
||||
return other @ self._value
|
||||
|
||||
def __imatmul__(self, other):
|
||||
self.value @= other
|
||||
self._value @= other
|
||||
return self
|
||||
|
||||
def __truediv__(self, other):
|
||||
return self.value / other
|
||||
return self._value / other
|
||||
|
||||
def __rtruediv__(self, other):
|
||||
return other / self.value
|
||||
return other / self._value
|
||||
|
||||
def __itruediv__(self, other):
|
||||
self.value /= other
|
||||
self._value /= other
|
||||
return self
|
||||
|
||||
def __floordiv__(self, other):
|
||||
return self.value // other
|
||||
return self._value // other
|
||||
|
||||
def __rfloordiv__(self, other):
|
||||
return other // self.value
|
||||
return other // self._value
|
||||
|
||||
def __ifloordiv__(self, other):
|
||||
self.value //= other
|
||||
self._value //= other
|
||||
return self
|
||||
|
||||
def __mod__(self, other):
|
||||
return self.value % other
|
||||
return self._value % other
|
||||
|
||||
def __rmod__(self, other):
|
||||
return other % self.value
|
||||
return other % self._value
|
||||
|
||||
def __imod__(self, other):
|
||||
self.value %= other
|
||||
self._value %= other
|
||||
return self
|
||||
|
||||
def __divmod__(self, other):
|
||||
return divmod(self.value, other)
|
||||
return divmod(self._value, other)
|
||||
|
||||
def __rdivmod__(self, other):
|
||||
return divmod(other, self.value)
|
||||
return divmod(other, self._value)
|
||||
|
||||
def __pow__(self, other):
|
||||
return self.value**other
|
||||
return self._value**other
|
||||
|
||||
def __rpow__(self, other):
|
||||
return other**self.value
|
||||
return other**self._value
|
||||
|
||||
def __ipow__(self, other):
|
||||
self.value **= other
|
||||
self._value **= other
|
||||
return self
|
||||
|
||||
def __lshift__(self, other):
|
||||
return self.value << other
|
||||
return self._value << other
|
||||
|
||||
def __rlshift__(self, other):
|
||||
return other << self.value
|
||||
return other << self._value
|
||||
|
||||
def __ilshift__(self, other):
|
||||
self.value <<= other
|
||||
self._value <<= other
|
||||
return self
|
||||
|
||||
def __rshift__(self, other):
|
||||
return self.value >> other
|
||||
return self._value >> other
|
||||
|
||||
def __rrshift__(self, other):
|
||||
return other >> self.value
|
||||
return other >> self._value
|
||||
|
||||
def __irshift__(self, other):
|
||||
self.value >>= other
|
||||
self._value >>= other
|
||||
return self
|
||||
|
||||
def __and__(self, other):
|
||||
return self.value & other
|
||||
return self._value & other
|
||||
|
||||
def __rand__(self, other):
|
||||
return other & self.value
|
||||
return other & self._value
|
||||
|
||||
def __iand__(self, other):
|
||||
self.value &= other
|
||||
self._value &= other
|
||||
return self
|
||||
|
||||
def __xor__(self, other):
|
||||
return self.value ^ other
|
||||
return self._value ^ other
|
||||
|
||||
def __rxor__(self, other):
|
||||
return other ^ self.value
|
||||
return other ^ self._value
|
||||
|
||||
def __ixor__(self, other):
|
||||
self.value ^= other
|
||||
self._value ^= other
|
||||
return self
|
||||
|
||||
def __or__(self, other):
|
||||
return self.value | other
|
||||
return self._value | other
|
||||
|
||||
def __ror__(self, other):
|
||||
return other | self.value
|
||||
return other | self._value
|
||||
|
||||
def __ior__(self, other):
|
||||
self.value |= other
|
||||
self._value |= other
|
||||
return self
|
||||
|
||||
def __neg__(self):
|
||||
return -self.value
|
||||
return -self._value
|
||||
|
||||
def __pos__(self):
|
||||
return +self.value
|
||||
return +self._value
|
||||
|
||||
def __abs__(self):
|
||||
return abs(self.value)
|
||||
return abs(self._value)
|
||||
|
||||
def __invert__(self):
|
||||
return ~self.value
|
||||
return ~self._value
|
||||
|
||||
def __len__(self):
|
||||
return len(self.value)
|
||||
return len(self._value)
|
||||
|
||||
|
||||
def get_attribute_or_create(obj, attr, default):
|
||||
|
||||
Reference in New Issue
Block a user