Add whitespace for readability.
Extract variable
Write requirements in a deterministic order.
Use StringIO to write out requirements. Use more common convention of adding newline to each line of the file, not just intervening lines.
Update requires.txt to match new, predictable order.
Restore Python 2 compatibility.
Use context managers to reliably close files
Move import to the top
Use iterables for getting best downloader
Actually call close on exit
Refactor test
Use context manager
Replace get_zip_class with a specialized constructor.
Use ContextualZipFile for context manager support
Use context managers in pkg_resources
Update ContextualZipFile to use a single constructor
Clean up whitespace
Use ContextualZipFile and contextlib.closing for archiveutil