def _extract_variants(address, variants_str):
  """Return the variants (if any) represented by the given variants_str.

  :returns: The variants or else `None` if there are none.
  :rtype: tuple of tuples (key, value) strings
  """
  def entries():
    for entry in variants_str.split(','):
      key, _, value = entry.partition('=')
      if not key or not value:
        raise ValueError('Invalid variants after the @ in: {}'.format(address))
      yield (key, value)
  return tuple(entries())