<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

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))