a ©!cVã@sšddlmZddlmZddlmZddlZddlZddlZddl Z ddl Z ddl Z ddl Z e   d¡ZGdd„deƒZGdd „d eƒZGd d „d eƒZdS) é)Úabsolute_import)Úunicode_literals)Ú_NÚdnfc@s,eZdZdd„Zgfdd„Zedd„ƒZdS)ÚJSONDBcCs0tj |¡s,tj tj |¡¡| |g¡dS©N)ÚosÚpathÚisfilerÚutilZ ensure_dirÚdirnameÚ_write_json_db)ÚselfÚ json_path©rú1/usr/lib/python3.9/site-packages/dnf/persistor.pyÚ_check_json_db*s zJSONDB._check_json_dbc Csšt|dƒ}| ¡}Wdƒn1s(0Y|dkrXt tdƒ|¡| ||¡n>zt |¡}Wn.ty”}zt |¡WYd}~n d}~00|S)NÚrÚz%s is empty file) ÚopenÚreadÚloggerÚwarningrr ÚjsonÚloadsÚ ValueError)rrÚdefaultÚfÚcontentÚerrrÚ _get_json_db0s & zJSONDB._get_json_dbcCs:t|dƒ}t ||¡Wdƒn1s,0YdS)NÚw)rrÚdump)rrrrrrr >s zJSONDB._write_json_dbN)Ú__name__Ú __module__Ú __qualname__rr Ú staticmethodr rrrrr(s rc@s<eZdZdZdd„Zedd„ƒZdd„Zdd „Zd d „Z d S) Ú RepoPersistorzePersistent data kept for repositories. Is arch/releasever specific and stores to cachedir. cCs*||_tj |jd¡|_tƒ|_d|_dS)Nzexpired_repos.jsonF)Úcachedirrr ÚjoinÚdb_pathÚsetÚexpired_to_addÚreset_last_makecache©rr(rrrÚ__init__KszRepoPersistor.__init__cCstj |jd¡S)NZlast_makecache)rr r)r(©rrrrÚ_last_makecache_pathQsz"RepoPersistor._last_makecache_pathc CsZz| |j¡t| |j¡ƒWStyT}zt tdƒ|¡WYd}~dSd}~00dS)Nz&Failed to load expired repos cache: %s)rr*r+r ÚOSErrorrrr©rrrrrÚget_expired_reposUs  zRepoPersistor.get_expired_reposc Csžz$| |j¡| |jt|jƒ¡Wn6tyZ}zt tdƒ|¡WYd}~dSd}~00|j ršzt j   |j ¡WdSty˜t tdƒ¡YdS0dS)Nz'Failed to store expired repos cache: %sFTz#Failed storing last makecache time.)rr*r Úlistr,r2rrrr-rr Útouchr1ÚIOErrorr3rrrÚsave]s  zRepoPersistor.savecCs<zttj |j¡ƒWSty6t tdƒ¡YdS0dS)Nz'Failed determining last makecache time.) Úintrr Zfile_ager1r2rrrr0rrrÚsince_last_makecachels  z"RepoPersistor.since_last_makecacheN) r#r$r%Ú__doc__r/Úpropertyr1r4r8r:rrrrr'Ds r'c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTempfilePersistorcCs"tj |d¡|_tƒ|_d|_dS)Nztempfiles.jsonF)rr r)r*r+Útempfiles_to_addÚ_emptyr.rrrr/vszTempfilePersistor.__init__cCs| |j¡| |j¡Sr)rr*r r0rrrÚget_saved_tempfiles{s z%TempfilePersistor.get_saved_tempfilescCsl|js|jsdS| |j¡|jr4| |jg¡dS|jrht| |j¡ƒ}| |j¡| |jt|ƒ¡dSr) r?r>rr*r r+r Úupdater5)rÚdatarrrr8s   zTempfilePersistor.savecCs d|_dS)NT)r?r0rrrÚempty‹szTempfilePersistor.emptyN)r#r$r%r/r@r8rCrrrrr=ts r=)Z __future__rrZdnf.i18nrZdnf.utilrÚerrnoÚfnmatchrZloggingrÚreZ getLoggerrÚobjectrr'r=rrrrÚs    0