I see. Thanks for the clarification!

> On 05/9, 2018, at 22:54, Donald Stufft <don...@stufft.io> wrote:
> 
> 
> 
>> On Sep 5, 2018, at 9:30 AM, Tzu-ping Chung <uranu...@gmail.com 
>> <mailto:uranu...@gmail.com>> wrote:
>> 
>> Isn’t zlib only required for compression? It is my impression that zipfile’s 
>> decompressor is pure Python,
>> and only depends on zlib if the archive is encrypted (but wheels are never 
>> encrypted).
>> 
>> zlib also does not provide decompression at its core; for that you need 
>> zlib/contrib/minizip, but I don’t
>> think CPython depends on minizip either.
>> 
>> zlib is technically optional, and not even required to installed wheels.
>> 
>> 
> 
> 
> I don’t think that’s accurate, if you look at zipfile.py, it does: 
> 
> https://github.com/python/cpython/blob/874809ea389e6434787e773a6054a08e0b81f734/Lib/zipfile.py#L17-L22
>  
> <https://github.com/python/cpython/blob/874809ea389e6434787e773a6054a08e0b81f734/Lib/zipfile.py#L17-L22>
> 
> Which attempts to import the zlib module, and if it fails sets zlib to None. 
> Then later one this is used:
> 
> https://github.com/python/cpython/blob/874809ea389e6434787e773a6054a08e0b81f734/Lib/zipfile.py#L682-L683
>  
> <https://github.com/python/cpython/blob/874809ea389e6434787e773a6054a08e0b81f734/Lib/zipfile.py#L682-L683>
> 
> Which doesn’t guard the expression at all, so I believe if you attempt to 
> unzip a wheel that uses ZIP_STORED without the zlib module built, then you’ll 
> get an AttributeError, None type does not have decompressobj exception.
> 
> 
> The Python stdlib zlib module does not appear to have any fallback at all if 
> the zlib library is not available and a recent enough version.

--
Distutils-SIG mailing list -- distutils-sig@python.org
To unsubscribe send an email to distutils-sig-le...@python.org
https://mail.python.org/mm3/mailman3/lists/distutils-sig.python.org/
Message archived at 
https://mail.python.org/mm3/archives/list/distutils-sig@python.org/message/COH66FOLE5UW5HCMGGQJKLP2B34U5L6R/

Reply via email to