From 24898e06404fdade3c37c9229402ea817d068e75 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Sun, 5 Jan 2020 14:15:51 -0300 Subject: [PATCH] Remove usage of parser module, deprecated in Python 3.9 Fix #6404 --- changelog/6404.trivial.rst | 1 + src/_pytest/_code/source.py | 9 ++------- 2 files changed, 3 insertions(+), 7 deletions(-) create mode 100644 changelog/6404.trivial.rst diff --git a/changelog/6404.trivial.rst b/changelog/6404.trivial.rst new file mode 100644 index 0000000000..8252098b6a --- /dev/null +++ b/changelog/6404.trivial.rst @@ -0,0 +1 @@ +Remove usage of ``parser`` module, deprecated in Python 3.9. diff --git a/src/_pytest/_code/source.py b/src/_pytest/_code/source.py index c8a4b6adf3..b35e97b9ce 100644 --- a/src/_pytest/_code/source.py +++ b/src/_pytest/_code/source.py @@ -123,18 +123,13 @@ def isparseable(self, deindent=True): """ return True if source is parseable, heuristically deindenting it by default. """ - from parser import suite as syntax_checker - if deindent: source = str(self.deindent()) else: source = str(self) try: - # compile(source+'\n', "x", "exec") - syntax_checker(source + "\n") - except KeyboardInterrupt: - raise - except Exception: + ast.parse(source) + except (SyntaxError, ValueError, TypeError): return False else: return True