Skip to content

Commit 2d6bae8

Browse files
Add encoding attribute to fake stdout/stderr.
Start storing an original file object on the fake one.
1 parent ddb6d3f commit 2d6bae8

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

bpython/curtsiesfrontend/coderunner.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ def request_from_main_context(self, force_refresh=False):
205205

206206

207207
class FakeOutput(object):
208-
def __init__(self, coderunner, on_write, fileno=1):
208+
def __init__(self, coderunner, on_write, real_fileobj):
209209
"""Fakes sys.stdout or sys.stderr
210210
211211
on_write should always take unicode
@@ -215,7 +215,7 @@ def __init__(self, coderunner, on_write, fileno=1):
215215
"""
216216
self.coderunner = coderunner
217217
self.on_write = on_write
218-
self.real_fileno = fileno
218+
self._real_fileobj = real_fileobj
219219

220220
def write(self, s, *args, **kwargs):
221221
if not py3 and isinstance(s, str):
@@ -227,7 +227,7 @@ def write(self, s, *args, **kwargs):
227227
# have a method called fileno. One example is pwntools. This
228228
# is not a widespread issue, but is annoying.
229229
def fileno(self):
230-
return self.real_fileno
230+
return self._real_fileobj.fileno()
231231

232232
def writelines(self, l):
233233
for s in l:
@@ -238,3 +238,7 @@ def flush(self):
238238

239239
def isatty(self):
240240
return True
241+
242+
@property
243+
def encoding(self):
244+
return self._real_fileobj.encoding

bpython/curtsiesfrontend/repl.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -421,12 +421,12 @@ def __init__(
421421
self.stdout = FakeOutput(
422422
self.coderunner,
423423
self.send_to_stdouterr,
424-
fileno=sys.__stdout__.fileno(),
424+
real_fileobj=sys.__stdout__,
425425
)
426426
self.stderr = FakeOutput(
427427
self.coderunner,
428428
self.send_to_stdouterr,
429-
fileno=sys.__stderr__.fileno(),
429+
real_fileobj=sys.__stderr__,
430430
)
431431
self.stdin = FakeStdin(self.coderunner, self, self.edit_keys)
432432

0 commit comments

Comments
 (0)