Re: Inconsistencies between zipfile and tarfile APIs



On 7/22/2011 12:48 AM, rantingrick wrote:
On Jul 21, 11:13 pm, Corey Richardson<kb1...@xxxxxxx> wrote:
Excerpts from rantingrick's message of Thu Jul 21 23:46:05 -0400 2011:

I may have found the mother of all inconsitency warts when comparing
the zipfile and tarfile modules. Not only are the API's different, but
the entry and exits are differnet AND zipfile/tarfile do not behave
like proper file objects should.

I agree, actually.

Hmm. Archives are more like directories than files. Windows, at least, seems to partly treat zipfiles as more or less as such. Certainly, 7zip present a directory interface. So opening a zipfile/tarfile would be like opening a directory, which we normally do not do. On the other hand, I am not sure I like python's interface to directories that much.

It would be more sensible to open files within the archives. Certainly, it would be nice to have the result act like file objects as much as possible.

Seaching open issues for 'tarfile' or 'zipfile' returns about 40 issues each. So I think some people would care more about fixing bugs than adjusting the interfaces. Of course, some of the issues may be about the interface and increasing consistency where it can be done without compatibility issues. However, I do not think there are any active developers focued on those two modules.

Unfortunately i know what the "powers that be" are going to say about
fixing this wart.

PTB: "Sorry we cannot break backwards compatibility"

Do you propose we break compatibility more than we do? You are not the only Python ranter. People at Google march into Guido's office to complain instead of posting here.

Rick: But what about Python 3000?
PTB: " Oh, well, umm, lets see. Well that was then and this is now!

The changes made for 3.0 were more than enough for some people to discourage migration to Py3. And we *have* made additional changes since. So the resistance to incompatible feature changes has increased.

Maybe i can offer a solution. A NEW module called "archive.py" (could
even be a package!) which exports both the zip and tar file classes.
However, unlike the current situation this archive module will be
consistent with it's API.

from archive import ZipFile, TarFile
zf = ZipFile(path, *args)
tf = TarFile(path, *args)

Not a bad idea. Put it on PyPI and see how much support you can get.

--
Terry Jan Reedy

.