code: def parse_upgrade_protocol(
      header: str, pos: int, header_name: str
  ) -> Tuple[UpgradeProtocol, int]:
      
      match = _protocol_re.match(header, pos)
      if match is None:
          raise InvalidHeaderFormat(header_name, "expected protocol", header, pos)
      return cast(UpgradeProtocol, match.group()), match.end()
docs: Parse an Upgrade protocol from ``header`` at the given position.
  
      Return the protocol value and the new position.
  
      Raise :exc:`~websockets.exceptions.InvalidHeaderFormat` on invalid inputs.