a  ze@s\ddlZddlZddlZddlmZddlmZddlmZddl m Z GdddeZ dS) N) HTTPAdapter)CacheController) DictCache)CallbackFileWrappercsNeZdZddhZdfdd Zdfdd Zdfd d Zfd d ZZS)CacheControlAdapterPUTDELETENTc sXtt|j|i||dur$tn||_||_|p6d|_|p@t} | |j||d|_dS)N)GET) cache_etags serializer) superr__init__rcache heuristiccacheable_methodsr controller) selfrr controller_classr rrargskwcontroller_factory __class__b/opt/bitninja-python-dojo/embedded/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.pyrs  zCacheControlAdapter.__init__c s|p|j}|j|vrfz|j|}Wntjy<d}Yn0|rR|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_headersr rsend)rrequestrr cacheablecached_responseresprrrr%$s   zCacheControlAdapter.sendFc s|p|j}|s|j|vr|jr*|j|}|jdkrh|j||}||urNd}|jdd||}n\|jdkr|j ||nBt |j t |jj |||_ |jr|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_contenti-cs|jdkr|jdS)Nr) chunk_left_fp_closersuper_update_chunk_lengthrr_update_chunk_lengthns z@CacheControlAdapter.build_response.._update_chunk_length)rrrapplystatusrupdate_cached_responseread release_conncache_responserr, functoolspartialchunkedr1types MethodTyper rr!invalidating_methodsok cache_urlurlrdeleter) rr&responserrr'r(r1r)r?rr/rr!9sB        z"CacheControlAdapter.build_responsecs|jtt|dS)N)rcloser rr.rrrrCs zCacheControlAdapter.close)NTNNNN)N)FN) __name__ __module__ __qualname__r=rr%r!rC __classcell__rrrrr sJr) r;r8rZpip._vendor.requests.adaptersrrrrr filewrapperrrrrrrs