summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Kluyver <takowl@gmail.com>2015-09-12 12:06:42 +0100
committerThomas Kluyver <takowl@gmail.com>2015-09-12 12:06:42 +0100
commit0d9d6581f2edd389cc21f0d363708ac517258fec (patch)
treed23485ae34035259c86dada9866be02649d922c8
parent0b3d2a354960b2a9138a230929da3df057b680cb (diff)
downloadpexpect-git-0d9d6581f2edd389cc21f0d363708ac517258fec.tar.gz
Update unicode interface for PopenSpawn
-rw-r--r--pexpect/popen_spawn.py19
1 files changed, 8 insertions, 11 deletions
diff --git a/pexpect/popen_spawn.py b/pexpect/popen_spawn.py
index 887d0a4..0b8ff77 100644
--- a/pexpect/popen_spawn.py
+++ b/pexpect/popen_spawn.py
@@ -13,7 +13,7 @@ try:
except ImportError:
from Queue import Queue, Empty # Python 2
-from .spawnbase import SpawnBase, SpawnBaseUnicode, PY3
+from .spawnbase import SpawnBase, PY3
from .exceptions import EOF
class PopenSpawn(SpawnBase):
@@ -23,9 +23,11 @@ class PopenSpawn(SpawnBase):
crlf = '\n'
def __init__(self, cmd, timeout=30, maxread=2000, searchwindowsize=None,
- logfile=None, cwd=None, env=None):
+ logfile=None, cwd=None, env=None, encoding=None,
+ codec_errors='strict'):
super(PopenSpawn, self).__init__(timeout=timeout, maxread=maxread,
- searchwindowsize=searchwindowsize, logfile=logfile)
+ searchwindowsize=searchwindowsize, logfile=logfile,
+ encoding=encoding, codec_errors=codec_errors)
kwargs = dict(bufsize=0, stdin=subprocess.PIPE,
stderr=subprocess.STDOUT, stdout=subprocess.PIPE,
@@ -62,7 +64,7 @@ class PopenSpawn(SpawnBase):
timeout = 1e6
t0 = time.time()
- buf = b''
+ buf = self.string_type()
while (time.time() - t0) < timeout and size and len(buf) < size:
try:
incoming = self._read_queue.get_nowait()
@@ -73,7 +75,7 @@ class PopenSpawn(SpawnBase):
self.flag_eof = True
raise EOF('End of File')
- buf += incoming
+ buf += self._decoder.decode(incoming, final=False)
if len(buf) > size:
self.buffer = buf[size:]
@@ -86,7 +88,7 @@ class PopenSpawn(SpawnBase):
"""Run in a thread to move output from a pipe to a queue."""
fileno = self.proc.stdout.fileno()
while 1:
- buf = ''
+ buf = b''
try:
buf = os.read(fileno, 1024)
except OSError as e:
@@ -154,8 +156,3 @@ class PopenSpawn(SpawnBase):
def sendeof(self):
self.proc.stdin.close()
-
-
-class PopenSpawnUnicode(SpawnBaseUnicode, PopenSpawn):
- def _send(self, s):
- super(PopenSpawnUnicode, self)._send(s.encode(self.encoding, self.errors))