Description
Feature or enhancement
Regular file objects returned by the open()
building have name
and name
and mode
attributes. Some code may use these optional attributes for different purposes, for example to distinguish readable files from writable files, binary files from text files, or just for formatting the repr or error messages. For example:
Line 1666 in 5a83292
Line 1669 in 5a83292
Line 455 in 5a83292
Line 201 in 5a83292
cpython/Lib/asyncio/base_events.py
Line 982 in 5a83292
Line 654 in 5a83292
There are several file-like objects in compressing modules gzip
, bz2
and lama
and archiving modules zipfile
and tarfile
. They usually implement the raw or buffered file protocols from io
, but not always have name
and mode
attributes, and when they have, they not always have common semantic.
GzipFile
, unlike to BZ2File
and LZMAFile
, has name
and mode
attributes, but mode
is an integer, that confuses tarfile
(see #62775).
ZipExtFile
has the mode
attribute which is always 'r'
. It is a legacy from Python 2, when it could also be 'U'
or 'rU'
for files with universal newlines. But this mode was removed long time ago, and since it is a binary file, its mode should be 'rb'
.
See also #68446, #91373, #91374. I opened this issue because consider it all the parts of larger image.
Linked PRs
- gh-115961: Improve tests for compressed file-like objects #115963
- [3.12] gh-115961: Improve tests for compressed file-like objects (GH-115963) #116032
- gh-115961: Add name and mode attributes for compressed file-like objects #116036
- [3.11] gh-115961: Improve tests for compressed file-like objects (GH-115963) #116039
Metadata
Metadata
Assignees
Labels
Projects
Status
Status
Status