Inconsistencies between zipfile and tarfile APIs

Terry Reedy tjreedy at udel.edu
Fri Jul 22 07:45:57 CEST 2011


On 7/22/2011 12:48 AM, rantingrick wrote:
> On Jul 21, 11:13 pm, Corey Richardson<kb1... at aim.com>  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




More information about the Python-list mailing list