From 714a9a222d4ba08bdc69cafa5e545f5d1a9ab883 Mon Sep 17 00:00:00 2001 From: jensgoe Date: Wed, 12 Dec 2018 13:52:36 +0100 Subject: [PATCH] ignore newline added by Tokenize module since Python 3.6 (fixes #1109) --- unittests/test_py_introspect.py | 21 +++++++++++++++++++++ wx/py/introspect.py | 9 +++++---- 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 unittests/test_py_introspect.py diff --git a/unittests/test_py_introspect.py b/unittests/test_py_introspect.py new file mode 100644 index 00000000..8e2d37a0 --- /dev/null +++ b/unittests/test_py_introspect.py @@ -0,0 +1,21 @@ +import sys +import unittest + +import wx.py.introspect as inrspct + +#--------------------------------------------------------------------------- + +class py_introspect_Tests(unittest.TestCase): + + def test_getAutoCompleteList(self): + # introspect is expecting this! usually inited by wx.py.interpreter + sys.ps2 = '... ' + attributes = inrspct.getAutoCompleteList("wx.") + self.assertTrue(len(attributes) > 100) + + +#--------------------------------------------------------------------------- + + +if __name__ == '__main__': + unittest.main() diff --git a/wx/py/introspect.py b/wx/py/introspect.py index 80a89599..c911f6de 100644 --- a/wx/py/introspect.py +++ b/wx/py/introspect.py @@ -228,11 +228,12 @@ def getRoot(command, terminator=None): command = rtrimTerminus(command, terminator) if terminator == '.': tokens = getTokens(command) - if not tokens: - return '' - if tokens[-1][0] is tokenize.ENDMARKER: + if tokens and tokens[-1][0] is tokenize.ENDMARKER: # Remove the end marker. del tokens[-1] + if tokens and tokens[-1][0] is tokenize.NEWLINE: + # Remove newline. + del tokens[-1] if not tokens: return '' if terminator == '.' and \ @@ -258,7 +259,7 @@ def getRoot(command, terminator=None): tokentype = token[0] tokenstring = token[1] line = token[4] - if tokentype is tokenize.ENDMARKER: + if tokentype in (tokenize.ENDMARKER, tokenize.NEWLINE): continue if PY3 and tokentype is tokenize.ENCODING: line = lastline