code: def parse_mapping(value):
      
      if not value.startswith("<") or not value.endswith(">"):
          raise exceptions.InvalidHeaderException(
              "Header mapping value was not wrapped in angular brackets"
          )
      # split the comma-separated list into pairs, ignoring commas in quotes
      pairs = split_quoted_string(value[1:-1], delim=",", quote='"')
      # split these pairs into key/value pairs, converting flags to mappings
      # to True
      key_values = []
      for pair in pairs:
          if "=" in pair:
              key, value = split_mapping(pair)
              if value.startswith('"') and value.endswith('"'):
                  value = ast.literal_eval(value)
              elif value.startswith("[") and value.endswith("]"):
                  value = [v.strip() for v in value[1:-1].split(",")]
          else:
              key, value = pair, True
          key_values.append((key, value))
      # return completely parsed mapping as OrderedDict
      return OrderedDict(key_values)
docs: Parse the given VCF header line mapping
  
      Such a mapping consists of "key=value" pairs, separated by commas and
      wrapped into angular brackets ("<...>").  Strings are usually quoted,
      for certain known keys, exceptions are made, depending on the tag key.
      this, however, only gets important when serializing.
  
      :raises: :py:class:`vcfpy.exceptions.InvalidHeaderException` if
          there was a problem parsing the file