89 REPORT_FORMAT = { |
90 REPORT_FORMAT = { |
90 'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s', |
91 'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s', |
91 'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s', |
92 'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s', |
92 } |
93 } |
93 |
94 |
94 PyCF_ONLY_AST = 1024 |
|
95 SINGLETONS = frozenset(['False', 'None', 'True']) |
95 SINGLETONS = frozenset(['False', 'None', 'True']) |
96 KEYWORDS = frozenset(keyword.kwlist + ['print']) - SINGLETONS |
96 KEYWORDS = frozenset(keyword.kwlist + ['print']) - SINGLETONS |
97 UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-']) |
97 UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-']) |
98 ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-']) |
98 ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-']) |
99 WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%']) |
99 WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%']) |
1350 orig_number, orig_offset, code, check, *args) |
1350 orig_number, orig_offset, code, check, *args) |
1351 self.previous_logical = self.logical_line |
1351 self.previous_logical = self.logical_line |
1352 |
1352 |
1353 def check_ast(self): |
1353 def check_ast(self): |
1354 try: |
1354 try: |
1355 tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST) |
1355 tree = compile(''.join(self.lines), '', 'exec', ast.PyCF_ONLY_AST) |
1356 except (SyntaxError, TypeError): |
1356 except (SyntaxError, TypeError): |
1357 return self.report_invalid_syntax() |
1357 return self.report_invalid_syntax() |
1358 for name, cls, _ in self._ast_checks: |
1358 for name, cls, _ in self._ast_checks: |
1359 # extended API for eric5 integration |
1359 # extended API for eric5 integration |
1360 checker = cls(tree, self.filename, self.options) |
1360 checker = cls(tree, self.filename, self.options) |