> On Sep 5, 2018, at 9:30 AM, Tzu-ping Chung <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/5LOCEHV7BC6KNOIUXL7TLXQPIOGJZXAO/

Reply via email to