Revert "Issue #16121: Fix line number accounting in shlex"
This commit is contained in:
commit
e766c742c1
16
Lib/shlex.py
16
Lib/shlex.py
|
@ -45,7 +45,6 @@ class shlex:
|
||||||
self.state = ' '
|
self.state = ' '
|
||||||
self.pushback = deque()
|
self.pushback = deque()
|
||||||
self.lineno = 1
|
self.lineno = 1
|
||||||
self._lines_found = 0
|
|
||||||
self.debug = 0
|
self.debug = 0
|
||||||
self.token = ''
|
self.token = ''
|
||||||
self.filestack = deque()
|
self.filestack = deque()
|
||||||
|
@ -116,23 +115,12 @@ class shlex:
|
||||||
return raw
|
return raw
|
||||||
|
|
||||||
def read_token(self):
|
def read_token(self):
|
||||||
if self._lines_found:
|
|
||||||
self.lineno += self._lines_found
|
|
||||||
self._lines_found = 0
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
quoted = False
|
quoted = False
|
||||||
escapedstate = ' '
|
escapedstate = ' '
|
||||||
while True:
|
while True:
|
||||||
i += 1
|
|
||||||
nextchar = self.instream.read(1)
|
nextchar = self.instream.read(1)
|
||||||
if nextchar == '\n':
|
if nextchar == '\n':
|
||||||
# In case newline is the first character increment lineno
|
self.lineno = self.lineno + 1
|
||||||
if i == 1:
|
|
||||||
self.lineno += 1
|
|
||||||
else:
|
|
||||||
self._lines_found += 1
|
|
||||||
|
|
||||||
if self.debug >= 3:
|
if self.debug >= 3:
|
||||||
print("shlex: in state", repr(self.state), \
|
print("shlex: in state", repr(self.state), \
|
||||||
"I see character:", repr(nextchar))
|
"I see character:", repr(nextchar))
|
||||||
|
@ -152,7 +140,6 @@ class shlex:
|
||||||
continue
|
continue
|
||||||
elif nextchar in self.commenters:
|
elif nextchar in self.commenters:
|
||||||
self.instream.readline()
|
self.instream.readline()
|
||||||
# Not considered a token so incrementing lineno directly
|
|
||||||
self.lineno = self.lineno + 1
|
self.lineno = self.lineno + 1
|
||||||
elif self.posix and nextchar in self.escape:
|
elif self.posix and nextchar in self.escape:
|
||||||
escapedstate = 'a'
|
escapedstate = 'a'
|
||||||
|
@ -220,7 +207,6 @@ class shlex:
|
||||||
continue
|
continue
|
||||||
elif nextchar in self.commenters:
|
elif nextchar in self.commenters:
|
||||||
self.instream.readline()
|
self.instream.readline()
|
||||||
# Not considered a token so incrementing lineno directly
|
|
||||||
self.lineno = self.lineno + 1
|
self.lineno = self.lineno + 1
|
||||||
if self.posix:
|
if self.posix:
|
||||||
self.state = ' '
|
self.state = ' '
|
||||||
|
|
|
@ -189,15 +189,6 @@ class ShlexTest(unittest.TestCase):
|
||||||
self.assertEqual(shlex.quote("test%s'name'" % u),
|
self.assertEqual(shlex.quote("test%s'name'" % u),
|
||||||
"'test%s'\"'\"'name'\"'\"''" % u)
|
"'test%s'\"'\"'name'\"'\"''" % u)
|
||||||
|
|
||||||
def testLineNumbers(self):
|
|
||||||
data = '"a \n b \n c"\n"x"\n"y"'
|
|
||||||
for is_posix in (True, False):
|
|
||||||
s = shlex.shlex(data, posix=is_posix)
|
|
||||||
for i in (1, 4, 5):
|
|
||||||
s.read_token()
|
|
||||||
self.assertEqual(s.lineno, i)
|
|
||||||
|
|
||||||
|
|
||||||
# Allow this test to be used with old shlex.py
|
# Allow this test to be used with old shlex.py
|
||||||
if not getattr(shlex, "split", None):
|
if not getattr(shlex, "split", None):
|
||||||
for methname in dir(ShlexTest):
|
for methname in dir(ShlexTest):
|
||||||
|
|
|
@ -855,7 +855,6 @@ Jonathan Niehof
|
||||||
Gustavo Niemeyer
|
Gustavo Niemeyer
|
||||||
Oscar Nierstrasz
|
Oscar Nierstrasz
|
||||||
Hrvoje Niksic
|
Hrvoje Niksic
|
||||||
Birk Nilson
|
|
||||||
Gregory Nofi
|
Gregory Nofi
|
||||||
Jesse Noller
|
Jesse Noller
|
||||||
Bill Noon
|
Bill Noon
|
||||||
|
|
|
@ -181,9 +181,6 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- Issue #16121: Fix line number accounting in shlex. Patch by Birk
|
|
||||||
Nilson.
|
|
||||||
|
|
||||||
- Issue #14720: sqlite3: Convert datetime microseconds correctly.
|
- Issue #14720: sqlite3: Convert datetime microseconds correctly.
|
||||||
Patch by Lowe Thiderman.
|
Patch by Lowe Thiderman.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue