ignore newline added by Tokenize module since Python 3.6 (fixes #1109)

This commit is contained in:
jensgoe
2018-12-12 13:52:36 +01:00
parent e5d24078fd
commit 714a9a222d
2 changed files with 26 additions and 4 deletions

View File

@@ -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()

View File

@@ -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