diff --git a/uncompyle6/parser.py b/uncompyle6/parser.py index 682d1069..8a1d56fb 100644 --- a/uncompyle6/parser.py +++ b/uncompyle6/parser.py @@ -10,6 +10,7 @@ from __future__ import print_function import sys +from uncompyle6.code import iscode from uncompyle6.parsers.spark import GenericASTBuilder, DEFAULT_DEBUG as PARSER_DEFAULT_DEBUG class ParserError(Exception): @@ -91,8 +92,7 @@ def get_python_parser(version, debug_parser): def python_parser(version, co, out=sys.stdout, showasm=False, parser_debug=PARSER_DEFAULT_DEBUG): - import inspect - assert hasattr(co, 'co_name') + assert iscode(co) from uncompyle6.scanner import get_scanner scanner = get_scanner(version) tokens, customize = scanner.disassemble(co) @@ -105,8 +105,8 @@ def python_parser(version, co, out=sys.stdout, showasm=False, if __name__ == '__main__': def parse_test(co): - sys_version = sys.version_info.major + (sys.version_info.minor / 10.0) - ast = python_parser(sys_version, co, showasm=True) + from uncompyl6e import PYTHON_VERSION + ast = python_parser(PYTHON_VERSION, co, showasm=True) print(ast) return parse_test(parse_test.__code__) diff --git a/uncompyle6/semantics/fragments.py b/uncompyle6/semantics/fragments.py index d8d3ad3d..de7595a5 100644 --- a/uncompyle6/semantics/fragments.py +++ b/uncompyle6/semantics/fragments.py @@ -643,7 +643,7 @@ class FragmentsWalker(pysource.SourceWalker, object): tokens.append(Token('LAMBDA_MARKER')) try: ast = parser.parse(self.p, tokens, customize) - except parser.ParserError as e: + except (parser.ParserError, AssertionError) as e: raise ParserError(e, tokens) if self.showast: print(repr(ast)) @@ -667,7 +667,7 @@ class FragmentsWalker(pysource.SourceWalker, object): # Build AST from disassembly. try: ast = parser.parse(self.p, tokens, customize) - except parser.ParserError as e: + except (parser.ParserError, AssertionError) as e: raise ParserError(e, tokens) if self.showast: diff --git a/uncompyle6/semantics/pysource.py b/uncompyle6/semantics/pysource.py index b42eae75..f81c31f4 100644 --- a/uncompyle6/semantics/pysource.py +++ b/uncompyle6/semantics/pysource.py @@ -1587,7 +1587,7 @@ class SourceWalker(GenericASTTraversal, object): tokens.append(Token('LAMBDA_MARKER')) try: ast = python_parser.parse(self.p, tokens, customize) - except python_parser.ParserError as e: + except (python_parser.ParserError, AssertionError) as e: raise ParserError(e, tokens) if self.showast: self.print_(repr(ast)) @@ -1610,7 +1610,7 @@ class SourceWalker(GenericASTTraversal, object): # Build AST from disassembly. try: ast = python_parser.parse(self.p, tokens, customize) - except python_parser.ParserError as e: + except (python_parser.ParserError, AssertionError) as e: raise ParserError(e, tokens) if self.showast: