3 Pf@sTddlZddlZddlmZddlmZddlmZddlm Z GdddeZ dS) N) HTTPAdapter)CacheController) DictCache)CallbackFileWrappercsPeZdZeddgZdfdd ZfddZdfd d Zfd d ZZ S)CacheControlAdapterZPUTZDELETENTc sBtt|j|||pt|_||_|p*t}||j||d|_dS)N) cache_etags serializer)superr__init__rcache heuristicr controller) selfr rZcontroller_classr r argskwZcontroller_factory) __class__/usr/lib/python3.6/adapter.pyr s zCacheControlAdapter.__init__c sV|jdkr>|jj|}|r*|j||ddS|jj|jj|tt|j |f|}|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. GETT) from_cache) methodrZcached_requestbuild_responseZheadersupdateZconditional_headersr rsend)rrequestrcached_responseresp)rrrrs  zCacheControlAdapter.sendFcs| r|jdkr|jr"|jj|}|jdkr`|jj||}||k rFd}|jdd|j|}n\|jdkrz|jj||nBt |j t j |jj|||_ |j r|jfdd}tj|||_tt|j||}|j|jkr|jr|jj|j}|jj|||_|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 ri0TF)Zdecode_contenti-cs|jdkr|jjdS)Nr)Z chunk_left_fpZ_close)r)super_update_chunk_lengthrr_update_chunk_lengthgs z@CacheControlAdapter.build_response.._update_chunk_length)rr ZapplyZstatusrZupdate_cached_responsereadZ release_connZcache_responserr functoolspartialZchunkedr types MethodTyper rrinvalidating_methodsok cache_urlZurlr deleter)rrZresponserrr rr()r)rrr3s<        z"CacheControlAdapter.build_responsecs|jjtt|jdS)N)r closer r)r)rrrr*{s zCacheControlAdapter.close)NTNNN)F) __name__ __module__ __qualname__setr&r rrr* __classcell__rr)rrr s  Hr) r$r"Zpip._vendor.requests.adaptersrrrr rZ filewrapperrrrrrrs