in assets/__init__.py [0:0]
def download_assets(entries):
"""
Download the assets of a package.
:param entries: assets entries as generated by :py:func:`.get_assets`
:return: generator yielding (path, content) pairs as they get ready
"""
from requests_futures.sessions import FuturesSession
from concurrent.futures import as_completed
session = FuturesSession()
futures = []
for entry in entries:
future = session.get(entry.download_url)
future.entry = entry
futures.append(future)
for future in as_completed(futures):
res = future.result()
res.raise_for_status()
yield future.entry.path, res.content
session.close()