python: Add missing I/O methods to RedirectStream

`RedirectStream` is used to redirect `stdout` and `stderr`, but are
missing certain I/O methods available on other file-like objects.
This causes external plugins (like `colorama`) to crash.

Inheriting from `io.IOBase` adds an abstract implementation of these
methods, which will at least keep the python code running.

Fixes #4045
This commit is contained in:
Dan Strokirk 2016-01-18 17:13:56 +01:00
parent 9c811c6ba6
commit 38435e8a05

View File

@ -1,5 +1,6 @@
"""Legacy python/python3-vim emulation."""
import imp
import io
import logging
import os
import sys
@ -151,7 +152,7 @@ class ScriptHost(object):
current.range = current.buffer.range(start, stop)
class RedirectStream(object):
class RedirectStream(io.IOBase):
def __init__(self, redirect_handler):
self.redirect_handler = redirect_handler
@ -161,9 +162,6 @@ class RedirectStream(object):
def writelines(self, seq):
self.redirect_handler('\n'.join(seq))
def flush(self):
pass
class LegacyEvalHook(neovim.SessionHook):