docs: def _padding_to_conv_op_padding(padding):
    """Whether to use SAME or VALID for the underlying convolution op.
  
    Args:
      padding: A tuple of members of ALLOWED_PADDINGS, e.g. as returned from
        `_fill_and_verify_padding`.
  
    Returns:
      One of CONV_OP_ALLOWED_PADDINGS, the padding method to use for the
      underlying convolution op.
  
    Raises:
      ValueError: If padding is not a tuple.
    """
    if not isinstance(padding, tuple):
      raise ValueError("padding should be a tuple.")
    if all(p == SAME for p in padding):
      # If we want SAME padding for all dimensions then we can use SAME for the
      # conv and avoid doing any extra padding.
      return SAME
    else:
      # Otherwise we prefer to use VALID, since we can implement all the other
      # padding types just by adding some extra padding before doing a VALID conv.
      # (We could use SAME but then we'd also have to crop outputs in some cases).
      return VALID