code: def Rz(rads: Union[float, sympy.Basic]) -> ZPowGate:
      
      pi = sympy.pi if protocols.is_parameterized(rads) else np.pi
      return ZPowGate(exponent=rads / pi, global_shift=-0.5)
docs: Returns a gate with the matrix e^{-i Z rads / 2}.