Manages the process of downloading feeds during a solve. We use the solver to get the current best solution and the set of feeds it queried. We download any missing feeds and update any out-of-date ones, resolving each time we have more information.
Find the best selections for these requirements and return them if available without downloading. Returns None if we need to refresh feeds or download any implementations.
Run the solver, then download any feeds that are missing or that need to be updated. Each time a new feed is imported into the cache, the solver is run again, possibly adding new downloads.
Note: if we find we need to download anything, we will refresh everything.
Download any missing implementations needed for a set of selections.
solve_with_downloads
, if possible