Source code for lighttuner.hpo.value.value

from operator import __neg__, __pos__

from ..space import BaseSpace


[docs]class HyperValue:
[docs] def __init__(self, space: BaseSpace, funcs=None): self.__space = space self.__funcs = tuple(funcs or ())
@property def space(self) -> BaseSpace: return self.__space def trans(self, x): v = x for func in self.__funcs: v = func(v) return v def _then(self, f): return self.__class__(self.__space, (*self.__funcs, f)) def __rshift__(self, other): return self._then(other) def __add__(self, other): return self._then(lambda x: x + other) def __radd__(self, other): return self._then(lambda x: other + x) def __sub__(self, other): return self._then(lambda x: x - other) def __rsub__(self, other): return self._then(lambda x: other - x) def __mul__(self, other): return self._then(lambda x: x * other) def __rmul__(self, other): return self._then(lambda x: other * x) def __floordiv__(self, other): return self._then(lambda x: x // other) def __rfloordiv__(self, other): return self._then(lambda x: other // x) def __truediv__(self, other): return self._then(lambda x: x / other) def __rtruediv__(self, other): return self._then(lambda x: other / x) def __mod__(self, other): return self._then(lambda x: x % other) def __rmod__(self, other): return self._then(lambda x: other % x) def __pow__(self, other): return self._then(lambda x: x ** other) def __rpow__(self, other): return self._then(lambda x: other ** x) def __neg__(self): return self._then(__neg__) def __pos__(self): return self._then(__pos__)