Issue #10750: The raw attribute of buffered IO objects is now read-only.

This commit is contained in:
Antoine Pitrou 2010-12-21 21:20:59 +00:00
parent cfee0e83eb
commit 7f8f41808b
4 changed files with 32 additions and 9 deletions

View file

@ -676,7 +676,7 @@ class _BufferedIOMixin(BufferedIOBase):
"""
def __init__(self, raw):
self.raw = raw
self._raw = raw
### Positioning ###
@ -720,8 +720,8 @@ class _BufferedIOMixin(BufferedIOBase):
if self.raw is None:
raise ValueError("raw stream already detached")
self.flush()
raw = self.raw
self.raw = None
raw = self._raw
self._raw = None
return raw
### Inquiries ###
@ -735,6 +735,10 @@ class _BufferedIOMixin(BufferedIOBase):
def writable(self):
return self.raw.writable()
@property
def raw(self):
return self._raw
@property
def closed(self):
return self.raw.closed
@ -1465,7 +1469,7 @@ class TextIOWrapper(TextIOBase):
if not isinstance(errors, str):
raise ValueError("invalid errors: %r" % errors)
self.buffer = buffer
self._buffer = buffer
self._line_buffering = line_buffering
self._encoding = encoding
self._errors = errors
@ -1520,6 +1524,10 @@ class TextIOWrapper(TextIOBase):
def line_buffering(self):
return self._line_buffering
@property
def buffer(self):
return self._buffer
def seekable(self):
return self._seekable
@ -1734,8 +1742,8 @@ class TextIOWrapper(TextIOBase):
if self.buffer is None:
raise ValueError("buffer is already detached")
self.flush()
buffer = self.buffer
self.buffer = None
buffer = self._buffer
self._buffer = None
return buffer
def seek(self, cookie, whence=0):