Merge pull request #1110 from jensgoe/fix_newline_tokenize

ignore newline added by Tokenize module since Python 3.6
(cherry picked from commit 7876de4a32)
This commit is contained in:
Robin Dunn
2018-12-21 14:18:15 -08:00
parent 621c138987
commit 13a65438ae
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