def get(self, filename):
        timer = Timer()
        self.check_prerequisites()
        with PatchedBotoConfig():
            # Check if the distribution archive is available.
            raw_key = self.get_cache_key(filename)
            logger.info("Checking if distribution archive is available in S3 bucket: %s", raw_key)
            key = self.s3_bucket.get_key(raw_key)
            if key is None:
                logger.debug("Distribution archive is not available in S3 bucket.")
            else:
                # Download the distribution archive to the local binary index.
                # TODO Shouldn't this use LocalCacheBackend.put() instead of
                #      implementing the same steps manually?!
                logger.info("Downloading distribution archive from S3 bucket ..")
                file_in_cache = os.path.join(self.config.binary_cache, filename)
                makedirs(os.path.dirname(file_in_cache))
                with AtomicReplace(file_in_cache) as temporary_file:
                    key.get_contents_to_filename(temporary_file)
                logger.debug("Finished downloading distribution archive from S3 bucket in %s.", timer)
                return file_in_cache
Download a distribution archive from the configured Amazon S3 bucket.
dataset/ETHPy150Open paylogic/pip-accel/pip_accel/caches/s3.py/S3CacheBackend.get