[Patches] [ python-Patches-651082 ] tarfile module implementation

noreply@sourceforge.net noreply@sourceforge.net
Sun, 22 Dec 2002 16:14:03 -0800


Patches item #651082, was opened at 2002-12-09 15:51
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=651082&group_id=5470

Category: Library (Lib)
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Lars Gustäbel (gustaebel)
Assigned to: Nobody/Anonymous (nobody)
Summary: tarfile module implementation

Initial Comment:
The tarfile module provides a comprehensive interface
to tar archive files with transparent gzip and bzip2
compression. The attachment includes tarfile.py itself,
the documentation and the tests.

----------------------------------------------------------------------

>Comment By: Neal Norwitz (nnorwitz)
Date: 2002-12-22 19:14

Message:
Logged In: YES 
user_id=33168

The code looks pretty good.  I ran the test on Linux and it
passed.  However, I don't like that testtar.tar has to be in
the local directory.  It would probably be better to allow
this file to be in the Lib/test directory.

I think this would be a good addition to the stdlib.  My
biggest concern is portability issues to win/mac.  Has there
been any testing on these platforms?  In particular, make a
tar file with symlinks, block devices, different users and
try to unpack on win/mac.

In TarFile.open(), where you do:
      filemode, comptype = mode.split(":")
You should add 1 to the call to split:
      filemode, comptype = mode.split(":", 1)

Same deal further down when splitting on '|'

I noticed sometimes you raise an exception when self.closed,
other times just return.  Do you need the self.closed flag?
 Could you use the underlying file-objects behaviour, ie,
assume that the file is open?

Does the normpath/lambda code work on the mac/windows?

In ExFileObject._readsparse(), is the loop likely to be
executed much?  If there is a performance concern here,
suggest you use a list.  Then outside the loop, do a data =
''.join(list) ; size -= len(data).  (You could move the size
-= len(buf) outside the loop, if you get the len(data).)

What does TarFile.list() print, rather than return a list of
strings or something else?

Should TarFile._extract_member() use normpath() instead of
os.path.normpath()?

os.makenod() & os.makedev() are not guaranteed to exist. 
Should there be a try/except AttributeError in
TarFile.makedev()?
Same comment applies to os.geteuid() in chown.

Do the pwd and grp modules work on windows/mac?

Now on to the pychecker warnings :-)

Lib/tarfile.py:950: Parameter (compresslevel) not used
Lib/tarfile.py:1409: Parameter (tarinfo) not used
Lib/tarfile.py:1435: Parameter (tarinfo) not used
Lib/tarfile.py:1878: Module (time) re-imported
Lib/tarfile.py:1898: Parameter (compress_type) not used

The last one Paramter (compress_type) not used may be ok,
not sure about others.

----------------------------------------------------------------------

Comment By: Lars Gustäbel (gustaebel)
Date: 2002-12-17 09:41

Message:
Logged In: YES 
user_id=642936

I had to fix a small bug in TarFile.bz2open.

----------------------------------------------------------------------

Comment By: Lars Gustäbel (gustaebel)
Date: 2002-12-09 15:54

Message:
Logged In: YES 
user_id=642936

There's no uploaded file!  You have to check the
checkbox labeled "Check to Upload & Attach File"
when you upload a file.

Please try again.

(This is a SourceForge annoyance that we can do
nothing about. :-( )

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=651082&group_id=5470