def _parse_request_line(self, line):
        bits = line.split(None, 2)
        if len(bits) != 3:
            raise InvalidRequestLine(line)

        # Method
        if not METHOD_RE.match(bits[0]):
            raise InvalidRequestLine("invalid Method: %s" % bits[0])
        self._method = bits[0].upper()

        # URI
        self._url = bits[1]
        parts = urlparse.urlsplit(bits[1])
        self._scheme = parts.scheme or None
        self._path = parts.path or ""
        self._query_string = parts.query or ""
        if parts.fragment:
            raise InvalidRequestLine(
                "HTTP requests may not contain fragment(s)"
            )

        # Version
        match = VERSION_RE.match(bits[2])
        if match is None:
            raise InvalidRequestLine(bits[2] % "Invalid HTTP version: %s")
        self._version = (int(match.group(1)), int(match.group(2)))

        # update environ
        if hasattr(self, 'environ'):
            self._environ.update({
                "PATH_INFO": self._path,
                "QUERY_STRING": self._query_string,
                "RAW_URI": self._url,
                "REQUEST_METHOD": self._method,
                "SERVER_PROTOCOL": bits[2]})
dataset/ETHPy150Open circuits/circuits/circuits/web/parsers/http.py/HttpParser._parse_request_line/swapped operands of `%`