diff options
author | Barry Warsaw <barry@python.org> | 2008-11-20 20:14:50 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2008-11-20 20:14:50 (GMT) |
commit | 40e8246f6a5d659e09b27c4fc0803a0f99e5bb1c (patch) | |
tree | 2d934f969b56f06f2333528d1c2d92dde75e8f2e /Lib/io.py | |
parent | 91cc8fb92b5d59d26cfca0167b32f6f25b453849 (diff) | |
download | cpython-40e8246f6a5d659e09b27c4fc0803a0f99e5bb1c.zip cpython-40e8246f6a5d659e09b27c4fc0803a0f99e5bb1c.tar.gz cpython-40e8246f6a5d659e09b27c4fc0803a0f99e5bb1c.tar.bz2 |
Fix for bug 4362 "FileIO object in io module"; Patch by amaury.forgeotdarc.
Diffstat (limited to 'Lib/io.py')
-rw-r--r-- | Lib/io.py | 26 |
1 files changed, 16 insertions, 10 deletions
@@ -239,8 +239,6 @@ def open(file, mode="r", buffering=None, encoding=None, errors=None, raise ValueError("invalid buffering size") if buffering == 0: if binary: - raw._name = file - raw._mode = mode return raw raise ValueError("can't have unbuffered text I/O") if updating: @@ -252,11 +250,8 @@ def open(file, mode="r", buffering=None, encoding=None, errors=None, else: raise ValueError("unknown mode: %r" % mode) if binary: - buffer.name = file - buffer.mode = mode return buffer text = TextIOWrapper(buffer, encoding, errors, newline, line_buffering) - text.name = file text.mode = mode return text @@ -616,6 +611,10 @@ class FileIO(_fileio._FileIO, RawIOBase): # that _fileio._FileIO inherits from io.RawIOBase (which would be hard # to do since _fileio.c is written in C). + def __init__(self, name, mode="r", closefd=True): + _fileio._FileIO.__init__(self, name, mode, closefd) + self._name = name + def close(self): _fileio._FileIO.close(self) RawIOBase.close(self) @@ -624,11 +623,6 @@ class FileIO(_fileio._FileIO, RawIOBase): def name(self): return self._name - # XXX(gb): _FileIO already has a mode property - @property - def mode(self): - return self._mode - class BufferedIOBase(IOBase): @@ -762,6 +756,14 @@ class _BufferedIOMixin(BufferedIOBase): def closed(self): return self.raw.closed + @property + def name(self): + return self.raw.name + + @property + def mode(self): + return self.raw.mode + ### Lower-level APIs ### def fileno(self): @@ -1464,6 +1466,10 @@ class TextIOWrapper(TextIOBase): def closed(self): return self.buffer.closed + @property + def name(self): + return self.buffer.name + def fileno(self): return self.buffer.fileno() |