docs: def _unary_op(cls,
              x: 'TensorFluent',
              op: Callable[[tf.Tensor], tf.Tensor],
              dtype: tf.DType) -> 'TensorFluent':
          '''Returns a TensorFluent for the unary `op` applied to fluent `x`.
  
          Args:
              x: The input fluent.
              op: The unary operation.
              dtype: The output's data type.
  
          Returns:
              A TensorFluent wrapping the unary operator's output.
          '''
          x = x.cast(dtype)
          t = op(x.tensor)
          scope = x.scope.as_list()
          batch = x.batch
          return TensorFluent(t, scope, batch=batch)