def pyflakes(codeString, filename): """ Check the Python source given by C{codeString} for flakes. """ # First, compile into an AST and handle syntax errors. try: tree = compile(codeString, filename, "exec", _ast.PyCF_ONLY_AST) except SyntaxError as value: msg = value.args[0] lineno = value.lineno # If there's an encoding problem with the file, the text is None. if value.text is None: # Avoid using msg, since for the only known case, it contains a # bogus message that claims the encoding the file declared was # unknown. msg = "Problem decoding source" lineno = 1 error = Message(filename, lineno) error.message = msg + "%s" error.message_args = "" return [error] else: # Okay, it's syntactically valid. Now check it. w = Checker(tree, filename) w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno)) return w.messages
def check_code(code, name): errors = [] class CustomMessage(object): pass reporter = modReporter._makeDefaultReporter() try: tree = compile(code, name, "exec", _ast.PyCF_ONLY_AST) except SyntaxError: value = sys.exc_info()[1] msg = value.args[0] (lineno, offset, text) = value.lineno, value.offset, value.text # If there's an encoding problem with the file, the text is None. if text is None: # Avoid using msg, since for the only known case, it contains a # bogus message that claims the encoding the file declared was # unknown. reporter.unexpectedError(name, 'problem decoding source') else: reporter.syntaxError(name, msg, lineno, offset, text) loc = CustomMessage() loc.lineno = lineno loc.offset = offset msg = Message(name, loc) msg.message = "SyntaxError" errors.append(msg) except Exception, e: loc = CustomMessage() loc.lineno = lineno loc.offset = offset msg = Message(name, loc) msg.message = "Problem decoding source" errors.append(msg) reporter.unexpectedError(name, 'problem decoding source') logger.error("problem decoding source") logger.exception()
def pyflakes(codeString, filename): """ Check the Python source given by C{codeString} for flakes. """ # First, compile into an AST and handle syntax errors. try: tree = compile(codeString, filename, "exec", _ast.PyCF_ONLY_AST) except SyntaxError, value: msg = value.args[0] lineno = value.lineno # If there's an encoding problem with the file, the text is None. if value.text is None: # Avoid using msg, since for the only known case, it contains a # bogus message that claims the encoding the file declared was # unknown. msg = "Problem decoding source" lineno = 1 error = Message(filename, lineno) error.message = msg + "%s" error.message_args = "" return [error]
def pyflakes(codeString, filename): """ Check the Python source given by C{codeString} for flakes. """ # First, compile into an AST and handle syntax errors. try: if sys.version_info.major == 2 and codeString: lines_match = first_two_lines.match(codeString) if lines_match: lines = lines_match.group(0) encoding_match = encoding_line.search(lines) if encoding_match: encoding = encoding_match.groupdict().get('encoding', None) if encoding: codeString = codeString.encode(encoding) tree = compile(codeString, filename, "exec", _ast.PyCF_ONLY_AST) except SyntaxError as value: msg = value.args[0] # If there's an encoding problem with the file, the text is None. if value.text is None: # Avoid using msg, since for the only known case, it contains a # bogus message that claims the encoding the file declared was # unknown. msg = i18n("Problem decoding source") value.lineno = 1 if not is_old_pyflake_version(): error = Message(filename, value) else: error = Message(filename, value.lineno) error.message = msg + "%s" error.message_args = "" return [error] else: # Okay, it's syntactically valid. Now check it. w = Checker(tree, filename) return w.messages