o 7]h@s`ddlZddlZddlZddlmZddlmZmZddlm Z ddl m Z GdddeZ dS) N) HTTPAdapter)CacheControllerPERMANENT_REDIRECT_STATUSES) DictCache)CallbackFileWrappercs\eZdZhdZ      d fdd Zdfdd Z dfd d Zfd d ZZS)CacheControlAdapter>PUTPATCHDELETENTc sXtt|j|i||durtn||_||_|pd|_|p t} | |j||d|_dS)N)GET) cache_etags serializer) superr__init__rcache heuristiccacheable_methodsr controller) selfrr controller_classrrrargskwcontroller_factory __class__B/usr/lib/python3/dist-packages/pip/_vendor/cachecontrol/adapter.pyrs   zCacheControlAdapter.__init__c s|p|j}|j|vr3z|j|}Wn tjyd}Ynw|r)|j||ddS|j|j |t t |j |fi|}|S)z Send a request. Use the request information to see if it exists in the cache and cache the response if we need to and can. NT) from_cache) rmethodrcached_requestzliberrorbuild_responseheadersupdateconditional_headersrrsend)rrequestrr cacheablecached_responseresprrrr'(s  zCacheControlAdapter.sendFc s|p|j}|sd|j|vrd|jr|j|}|jdkr4|j||}||ur'd}|jdd||}n0t |jt vrC|j ||n!t |j t|jj |||_ |jrd|jfdd}t|||_tt|||}|j|jvr|jr|j|j} |j| ||_|S)z Build a response by making a request or using the cache. This will end up calling send and returning a potentially cached response i0TF)decode_contentcs"|jdkr|jdSdS)Nr) chunk_left_fp_closersuper_update_chunk_lengthrr_update_chunk_lengthrs z@CacheControlAdapter.build_response.._update_chunk_length)rrrapplystatusrupdate_cached_responseread release_connintrcache_responserr. functoolspartialchunkedr3types MethodTyperrr#invalidating_methodsok cache_urlurlrdeleter) rr(responserrr)r*r3r+rBrr1rr#=sB       z"CacheControlAdapter.build_responsecs|jtt|dSN)rcloserrr0rrrrGs zCacheControlAdapter.close)NTNNNNrF)FN) __name__ __module__ __qualname__r@rr'r#rG __classcell__rrrrrsJr) r>r;r!pip._vendor.requests.adaptersrrrrrr filewrapperrrrrrrs