U n a9@s~ddlZddlZddlmZddlmZddlmZzeWne k rXe e fZYnXddZ Gdd d eZ d d ZdS) N)dedent) BaseCache)CacheControllerc Cstj}|tjtjBO}ttdr*|tjO}ttdr>|tjO}zt|Wntt fk rdYnXt |||}zt |dWSt |YnXdS)N O_NOFOLLOWO_BINARYwb) osO_WRONLYO_CREATO_EXCLhasattrrrremoveIOErrorOSErroropenfdopenclose)filenamefmodeflagsfdrkC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_vendor\cachecontrol\caches\file_cache.py_secure_open_writes      rc@sBeZdZdddZeddZd d Zd d Zd dZddZ dS) FileCacheFNc Cs|dk r|dk rtdzddlm}ddlm}Wn$tk rXtd} t| YnX|rd|}n |dkrp|}||_||_||_ ||_ ||_ dS)Nz/Cannot use use_dir_lock and lock_class togetherr)LockFile) MkdirLockFilez NOTE: In order to use the FileCache you must have lockfile installed. You can install it via pip: pip install lockfile ) ValueErrorlockfilerlockfile.mkdirlockfiler ImportErrorr directoryforeverfilemodedirmode lock_class) selfr$r%r&r' use_dir_lockr(rrnoticerrr__init__:s&  zFileCache.__init__cCst|SN)hashlibsha224encode hexdigest)xrrrr0aszFileCache.encodecCs4||}t|dd|g}tjj|jf|S)N)r0listr pathjoinr$)r)namehashedpartsrrr_fnes z FileCache._fnc CsR||}z,t|d}|W5QRWSQRXWntk rLYdSXdS)Nrb)r:rreadFileNotFoundError)r)keyr7fhrrrgetls    z FileCache.getc Cs|||}zttj||jWnttfk r<YnX||*}t |j|j }| |W5QRXW5QRXdSr-) r:r makedirsr5dirnamer'rrr(rr&write)r)r>valuer7lockr?rrrsetus  z FileCache.setcCs8||}|js4zt|Wntk r2YnXdSr-)r:r%r rr=)r)r>r7rrrdeletes  zFileCache.delete)FrrNN) __name__ __module__ __qualname__r, staticmethodr0r:r@rFrGrrrrr8s '  rcCst|}||S)z\Return the file cache path based on the URL. This does not ensure the file exists! )r cache_urlr:)url filecacher>rrrurl_to_file_paths rO)r.r textwraprcacher controllerrr= NameErrorrrrrrOrrrrs   )T