def parsePyLintWarnings(warnings):
warningsDict = {}<EOL>for line in warnings:<EOL><INDENT>match = re.search(P_PYLINT_ERROR, line)<EOL>if match:<EOL><INDENT>matchDict = match.groupdict()<EOL>if not warningsDict.get(matchDict["<STR_LIT:file>"]):<EOL><INDENT>warningsDict[matchDict["<STR_LIT:file>"]] = []<EOL><DEDENT>warningEntry = {<EOL>"<STR_LIT>": matchDict.get("<STR_LIT:file>"),<EOL>"<STR_LIT>": matchDict.get("<STR_LIT:type>") + matchDict.get("<STR_LIT>"),<EOL>}<EOL>if matchDict.get("<STR_LIT>"):<EOL><INDENT>warningEntry["<STR_LIT>"] = matchDict.get("<STR_LIT>")<EOL><DEDENT>warningsDict[matchDict["<STR_LIT:file>"]].append(warningEntry)<EOL><DEDENT><DEDENT>return warningsDict<EOL>
Turns pyLint/TwistedChecker output into something more useful.

@param warnings: The warnings to process. Needs to be in pyLint's
    'parseable' format.

@return: L{dict} of L{list}s