@@ -281,10 +281,7 @@ def write(self, b: bytes) -> None:
281
281
raise TypeError ('a bytes-like object is required, not {}' .format (type (b )))
282
282
self .byte_buf += b
283
283
if self .echo :
284
- if hasattr (self .inner_stream , 'buffer' ):
285
- self .inner_stream .buffer .write (b )
286
- else :
287
- self .inner_stream .write (b .decode (encoding = self .encoding , errors = self .errors ))
284
+ self .inner_stream .buffer .write (b )
288
285
289
286
def __init__ (self , inner_stream , echo : bool = False ,
290
287
encoding : str = 'utf-8' , errors : str = 'replace' ) -> None :
@@ -297,15 +294,17 @@ def __init__(self, inner_stream, echo: bool = False,
297
294
"""
298
295
self .buffer = self .ByteBuf (inner_stream , echo )
299
296
self .inner_stream = inner_stream
297
+ self .echo = echo
300
298
self .encoding = encoding
301
299
self .errors = errors
302
300
303
301
def write (self , s : str ) -> None :
304
302
"""Add str to internal bytes buffer and if echo is True, echo contents to inner stream"""
305
303
if not isinstance (s , str ):
306
304
raise TypeError ('write() argument must be str, not {}' .format (type (s )))
307
- b = s .encode (encoding = self .encoding , errors = self .errors )
308
- self .buffer .write (b )
305
+ self .buffer .byte_buf += s .encode (encoding = self .encoding , errors = self .errors )
306
+ if self .echo :
307
+ self .inner_stream .write (s )
309
308
310
309
def getvalue (self ) -> str :
311
310
"""Get the internal contents as a str"""
0 commit comments