def _value_equality_values_(self):
        """The phases by which we multiply the eigenspaces.

        The default implementation assumes that the eigenspaces are constant
        for the class, and the eigenphases are the only distinguishing
        characteristics. For gates whose eigenspaces can change, such as
        `PhasedISwapPowGate`, this must be overridden to provide the additional
        fields that affect the eigenspaces.
        """
        symbolic = lambda x: isinstance(x, sympy.Expr) and x.free_symbols
        f = lambda x: x if symbolic(x) else float(x)
        shifts = (f(self._exponent) * f(self._global_shift + e) for e in self._eigen_shifts())
        return tuple(s if symbolic(s) else value.PeriodicValue(f(s), 2) for s in shifts)
The phases by which we multiply the eigenspaces.

        The default implementation assumes that the eigenspaces are constant
        for the class, and the eigenphases are the only distinguishing
        characteristics. For gates whose eigenspaces can change, such as
        `PhasedISwapPowGate`, this must be overridden to provide the additional
        fields that affect the eigenspaces.
        
cirq-core/cirq/ops/eigen_gate.py