1import logging 2 3from pip._vendor import requests 4 5from pip._vendor.cachecontrol.adapter import CacheControlAdapter 6from pip._vendor.cachecontrol.cache import DictCache 7from pip._vendor.cachecontrol.controller import logger 8 9from argparse import ArgumentParser 10 11 12def setup_logging(): 13 logger.setLevel(logging.DEBUG) 14 handler = logging.StreamHandler() 15 logger.addHandler(handler) 16 17 18def get_session(): 19 adapter = CacheControlAdapter( 20 DictCache(), cache_etags=True, serializer=None, heuristic=None 21 ) 22 sess = requests.Session() 23 sess.mount("http://", adapter) 24 sess.mount("https://", adapter) 25 26 sess.cache_controller = adapter.controller 27 return sess 28 29 30def get_args(): 31 parser = ArgumentParser() 32 parser.add_argument("url", help="The URL to try and cache") 33 return parser.parse_args() 34 35 36def main(args=None): 37 args = get_args() 38 sess = get_session() 39 40 # Make a request to get a response 41 resp = sess.get(args.url) 42 43 # Turn on logging 44 setup_logging() 45 46 # try setting the cache 47 sess.cache_controller.cache_response(resp.request, resp.raw) 48 49 # Now try to get it 50 if sess.cache_controller.cached_request(resp.request): 51 print("Cached!") 52 else: 53 print("Not cached :(") 54 55 56if __name__ == "__main__": 57 main() 58