def check_is_supported()

in eland/arithmetics.py [0:0]


    def check_is_supported(self, op_name: str, right: Any) -> bool:
        # supported set is
        # series.number op_name number (all ops)
        # series.string op_name string (only add)
        # series.string op_name int (only mul)
        # series.string op_name float (none)
        # series.int op_name string (none)
        # series.float op_name string (none)

        # see end of https://pandas.pydata.org/pandas-docs/stable/getting_started/basics.html?highlight=dtype
        # for dtype hierarchy
        right_is_integer = np.issubdtype(right.dtype, np.number)
        if np.issubdtype(self.dtype, np.number) and right_is_integer:
            # series.number op_name number (all ops)
            return True

        self_is_object = np.issubdtype(self.dtype, np.object_)
        if self_is_object and np.issubdtype(right.dtype, np.object_):
            # series.string op_name string (only add)
            if op_name == "__add__" or op_name == "__radd__":
                return True

        if self_is_object and right_is_integer:
            # series.string op_name int (only mul)
            if op_name == "__mul__":
                return True

        raise TypeError(
            f"Arithmetic operation on incompatible types {self.dtype} {op_name} {right.dtype}"
        )