docs: def Gamma(cls,
              shape: 'TensorFluent',
              scale: 'TensorFluent',
              batch_size: Optional[int] = None) -> Tuple[Distribution, 'TensorFluent']:
          '''Returns a TensorFluent for the Gamma sampling op with given shape and scale parameters.
  
          Args:
              shape: The shape parameter of the Gamma distribution.
              scale: The scale parameter of the Gamma distribution.
              batch_size: The size of the batch (optional).
  
          Returns:
              The Gamma distribution and a TensorFluent sample drawn from the distribution.
  
          Raises:
              ValueError: If parameters do not have the same scope.
          '''
          if shape.scope != scale.scope:
              raise ValueError('Gamma distribution: parameters must have same scope!')
          concentration = shape.tensor
          rate = 1 / scale.tensor
          dist = tf.distributions.Gamma(concentration, rate)
          batch = shape.batch or scale.batch
          if not batch and batch_size is not None:
              t = dist.sample(batch_size)
              batch = True
          else:
              t = dist.sample()
          scope = shape.scope.as_list()
          return (dist, TensorFluent(t, scope, batch=batch))