Issue 4362: FileIO object in io module (original) (raw)
The attached patch is an attempt to set mode and name attributes to all three objects in the IO stack. For example,
f = open("foo", "U+") f.buffer.name, f.buffer.mode ('foo', 'r+')
See also the unit tests.
There is a little inconsistency that I don't know how to resolve: with my patch, the mode does not round-trip: open(name, mode).mode is not always equal to mode:
f = open("foo", "rb") f.name, f.mode ('t', 'r') The 'b' was removed because f is already a binary file returning bytes.
But it seems better than attaching the initial mode to the FileIO object. Currently,
io.open("foo", "Ub+", buffering=0) _fileio._FileIO(3, 'r+') io.open("foo", "Ub+", buffering=0).mode 'Ub+' Which is even more surprising IMO.