def _install()

in core/maxframe/tensor/arithmetic/__init__.py [0:0]


def _install():
    from ..core import TENSOR_TYPE, Tensor, TensorData
    from ..datasource import tensor as astensor
    from .add import add, radd
    from .bitand import bitand, rbitand
    from .bitor import bitor, rbitor
    from .bitxor import bitxor, rbitxor
    from .divide import divide, rdivide
    from .floordiv import floordiv, rfloordiv
    from .lshift import lshift, rlshift
    from .mod import mod, rmod
    from .multiply import multiply, rmultiply
    from .power import power, rpower
    from .rshift import rrshift, rshift
    from .subtract import rsubtract, subtract
    from .truediv import rtruediv, truediv

    def _wrap_equal(func):
        def eq(x1, x2, **kwargs):
            if is_build_mode():
                return astensor(x1)._equals(x2)
            return func(x1, x2, **kwargs)

        return eq

    for cls in TENSOR_TYPE:
        setattr(cls, "__add__", add)
        setattr(cls, "__iadd__", _wrap_iop(add))
        setattr(cls, "__radd__", radd)
        setattr(cls, "__sub__", subtract)
        setattr(cls, "__isub__", _wrap_iop(subtract))
        setattr(cls, "__rsub__", rsubtract)
        setattr(cls, "__mul__", multiply)
        setattr(cls, "__imul__", _wrap_iop(multiply))
        setattr(cls, "__rmul__", rmultiply)
        setattr(cls, "__div__", divide)
        setattr(cls, "__idiv__", _wrap_iop(divide))
        setattr(cls, "__rdiv__", rdivide)
        setattr(cls, "__truediv__", truediv)
        setattr(cls, "__itruediv__", _wrap_iop(truediv))
        setattr(cls, "__rtruediv__", rtruediv)
        setattr(cls, "__floordiv__", floordiv)
        setattr(cls, "__ifloordiv__", _wrap_iop(floordiv))
        setattr(cls, "__rfloordiv__", rfloordiv)
        setattr(cls, "__pow__", power)
        setattr(cls, "__ipow__", _wrap_iop(power))
        setattr(cls, "__rpow__", rpower)
        setattr(cls, "__mod__", mod)
        setattr(cls, "__imod__", _wrap_iop(mod))
        setattr(cls, "__rmod__", rmod)
        setattr(cls, "__lshift__", lshift)
        setattr(cls, "__ilshift__", _wrap_iop(lshift))
        setattr(cls, "__rlshift__", rlshift)
        setattr(cls, "__rshift__", rshift)
        setattr(cls, "__irshift__", _wrap_iop(rshift))
        setattr(cls, "__rrshift__", rrshift)

        setattr(cls, "__eq__", _wrap_equal(equal))
        setattr(cls, "__ne__", not_equal)
        setattr(cls, "__lt__", less)
        setattr(cls, "__le__", less_equal)
        setattr(cls, "__gt__", greater)
        setattr(cls, "__ge__", greater_equal)
        setattr(cls, "__and__", bitand)
        setattr(cls, "__iand__", _wrap_iop(bitand))
        setattr(cls, "__rand__", rbitand)
        setattr(cls, "__or__", bitor)
        setattr(cls, "__ior__", _wrap_iop(bitor))
        setattr(cls, "__ror__", rbitor)
        setattr(cls, "__xor__", bitxor)
        setattr(cls, "__ixor__", _wrap_iop(bitxor))
        setattr(cls, "__rxor__", rbitxor)

        setattr(cls, "__neg__", negative)
        setattr(cls, "__pos__", positive)
        setattr(cls, "__abs__", abs)
        setattr(cls, "__invert__", invert)

    setattr(Tensor, "round", round_)
    setattr(Tensor, "conj", conj)
    setattr(Tensor, "conjugate", conjugate)
    setattr(TensorData, "round", round_)
    setattr(TensorData, "conj", conj)
    setattr(TensorData, "conjugate", conjugate)