diff options
author | Thomas Kluyver <takowl@gmail.com> | 2015-09-12 12:06:42 +0100 |
---|---|---|
committer | Thomas Kluyver <takowl@gmail.com> | 2015-09-12 12:06:42 +0100 |
commit | 0d9d6581f2edd389cc21f0d363708ac517258fec (patch) | |
tree | d23485ae34035259c86dada9866be02649d922c8 /pexpect | |
parent | 0b3d2a354960b2a9138a230929da3df057b680cb (diff) | |
download | pexpect-git-0d9d6581f2edd389cc21f0d363708ac517258fec.tar.gz |
Update unicode interface for PopenSpawn
Diffstat (limited to 'pexpect')
-rw-r--r-- | pexpect/popen_spawn.py | 19 |
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)) |