[Python-ideas] Move tarfile.filemode() into stat module (original) (raw)
Terry Reedy tjreedy at udel.edu
Sat May 12 19:16:05 CEST 2012
- Previous message: [Python-ideas] Move tarfile.filemode() into stat module
- Next message: [Python-ideas] Move tarfile.filemode() into stat module
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 5/12/2012 10:41 AM, Antoine Pitrou wrote:
On Sat, 12 May 2012 16:29:35 +0200 Giampaolo RodolĂ <g.rodola at gmail.com> wrote:
http://hg.python.org/cpython/file/9d9495fabeb9/Lib/tarfile.py#l304 I discovered this undocumented function by accident different years ago and reused it a couple of times since then. I think that leaving it hidden inside tarfile module is unfortunate. What about moving it into stat module and document it? I don't know which of stat or shutil would be the better recipient, but it's a good idea anyway.
I think I would more likely look in stat, and as noted below, the constants used for the table used in the function are already in stat.py.
I checked, and
Bits used in the mode field, values in octal.
#--------------------------------------------------------- S_IFLNK = 0o120000 # symbolic link ...
are only used in
filemode_table = ( ((S_IFLNK, "l"), ...
which is only used in
def filemode(mode): ...
So all three can be cleanly extracted into another module.
However 1) the bit definitions themselves should just be deleted as they duplicate those in stat.py. The S_Ixxx names are the same, the other names are variations of the other stat.S_Ixxxx names. So filemode_table (with '_' added?) could/should be re-written in stat.py to use the public, documented constants already defined there.
However 2) stat.py lacks the nice comments explaining the constants in the file itself, so I would copy the comments to the appropriate lines.
There only seems to be one use of the function in tarfile.py: Line 1998: print(filemode(tarinfo.mode), end=' ')
All the other uses of 'filemode' are as a local name inside the open method, derived from its mode parameter: filemode, comptype = mode.split(":", 1)
+1 on moving the table (probably with private name, and using the existing, documented stat S_Ixxxx constants) and function (public) to stat.py.
-- Terry Jan Reedy
- Previous message: [Python-ideas] Move tarfile.filemode() into stat module
- Next message: [Python-ideas] Move tarfile.filemode() into stat module
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]