code: def _store_request_line(self, req_line):
          
          if not isinstance(req_line, str):
              try:
                  req_line = self.raw_request_line = req_line.decode()
              except UnicodeDecodeError:
                  raise HTTPErrorBadRequest
  
          try:
              self.method_str, self.original_url, self.version = req_line.split()
          except ValueError:
              raise HTTPErrorBadRequest()
  
          if self.version not in ('HTTP/1.1', 'HTTP/1.0'):
              raise HTTPErrorVersionNotSupported(self.version)
  
          # allow lowercase methodname?
          # self.method_str = self.method_str.upper()
  
          # save 'method' and get the correct function to finish processing
          try:
              self.method = HTTPMethod[self.method_str]
          except KeyError:
              # Method not found
              err = "Unknown HTTP Method '{}'".format(self.method_str)
              raise HTTPErrorNotImplemented(err)
  
          self._process_headers = {
              HTTPMethod.GET: self.process_get_headers,
              HTTPMethod.POST: self.process_post_headers
          }.get(self.method, lambda data: True)
  
          _, num_str = self.version.split('/', 1)
          self.HTTP_VERSION = tuple(num_str.split('.'))
          self.version_number = float(num_str)
  
          self.parsed_url = urlparse(self.original_url)
          self.path = unquote(self.parsed_url.path)
          self.query = parse_qs(self.parsed_url.query)
  
          return self.method, self.parsed_url, self.version
docs: Splits the request line given into three components.
          Ensures that the version and method are valid for this server,
          and uses the urllib.parse function to parse the request URI.
  
          Note:
              This method has the additional side effect of updating all
              request line related attributes of the parser.
  
          Returns:
              tuple: Tuple containing the parsed (method, parsed_url,
                  version)
  
          Raises:
              HTTPErrorBadRequest: If request line is invalid
              HTTPErrorNotImplemented: If HTTP method is not recognized
              HTTPErrorVersionNotSupported: If HTTP version is not
                  recognized.