509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
©ft`o  ã               @   s¢   d dl mZ d dl mZ d dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZejdƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZdS )é    )Úabsolute_import)Úunicode_literals)Ú_NÚdnfc               @   s,   e Zd Zdd„ Zg fdd„Zedd„ ƒZdS )ÚJSONDBc             C   s0   t jj|ƒs,tjjt jj|ƒƒ | j|g ƒ d S )N)ÚosÚpathÚisfiler   ÚutilZ
ensure_dirÚdirnameÚ_write_json_db)ÚselfÚ	json_path© r   ú/usr/lib/python3.6/persistor.pyÚ_check_json_db+   s    zJSONDB._check_json_dbc             C   s„   t |dƒ�}|jƒ }W d Q R X |dkrDtjtdƒ|ƒ | j||ƒ n<ytj|ƒ}W n, tk
r~ } ztj|ƒ W Y d d }~X nX |S )NÚrÚ z%s is empty file)	ÚopenÚreadÚloggerÚwarningr   r   ÚjsonÚloadsÚ
ValueError)r   r   ÚdefaultÚfÚcontentÚer   r   r   Ú_get_json_db1   s    zJSONDB._get_json_dbc          
   C   s&   t | dƒ�}tj||ƒ W d Q R X d S )NÚw)r   r   Údump)r   r   r   r   r   r   r   ?   s    zJSONDB._write_json_dbN)Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr   r   r   r   r   r   )   s   r   c               @   s<   e Zd ZdZdd„ Zedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dS )ÚRepoPersistorzePersistent data kept for repositories.

    Is arch/releasever specific and stores to cachedir.

    c             C   s*   || _ tjj| j dƒ| _tƒ | _d| _d S )Nzexpired_repos.jsonF)Úcachedirr   r   ÚjoinÚdb_pathÚsetÚexpired_to_addÚreset_last_makecache)r   r'   r   r   r   Ú__init__L   s    zRepoPersistor.__init__c             C   s   t jj| jdƒS )NZlast_makecache)r   r   r(   r'   )r   r   r   r   Ú_last_makecache_pathR   s    z"RepoPersistor._last_makecache_pathc             C   sR   y| j | jƒ t| j| jƒƒS  tk
rL } ztjtdƒ|ƒ d S d }~X nX d S )Nz&Failed to load expired repos cache: %s)r   r)   r*   r   ÚOSErrorr   r   r   )r   r   r   r   r   Úget_expired_reposV   s    zRepoPersistor.get_expired_reposc             C   s–   y$| j | jƒ | j| jt| jƒƒ W n0 tk
rT } ztjtdƒ|ƒ dS d }~X nX | j	r’yt
jj| jƒ dS  tk
r�   tjtdƒƒ dS X d S )Nz'Failed to store expired repos cache: %sFTz#Failed storing last makecache time.)r   r)   r   Úlistr+   r/   r   r   r   r,   r   r
   Ztouchr.   ÚIOError)r   r   r   r   r   Úsave^   s    zRepoPersistor.savec             C   s:   yt tjj| jƒƒS  tk
r4   tjtdƒƒ d S X d S )Nz'Failed determining last makecache time.)	Úintr   r
   Zfile_ager.   r/   r   r   r   )r   r   r   r   Úsince_last_makecachem   s
    z"RepoPersistor.since_last_makecacheN)
r"   r#   r$   Ú__doc__r-   Úpropertyr.   r0   r3   r5   r   r   r   r   r&   E   s   r&   c               @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTempfilePersistorc             C   s"   t jj|dƒ| _tƒ | _d| _d S )Nztempfiles.jsonF)r   r   r(   r)   r*   Útempfiles_to_addÚ_empty)r   r'   r   r   r   r-   w   s    zTempfilePersistor.__init__c             C   s   | j | jƒ | j| jƒS )N)r   r)   r   )r   r   r   r   Úget_saved_tempfiles|   s    z%TempfilePersistor.get_saved_tempfilesc             C   sp   | j  r| j rd S | j| jƒ | j r8| j| jg ƒ d S | jrlt| j| jƒƒ}|j| jƒ | j| jt|ƒƒ d S )N)	r:   r9   r   r)   r   r*   r   Úupdater1   )r   Údatar   r   r   r3   €   s    zTempfilePersistor.savec             C   s
   d| _ d S )NT)r:   )r   r   r   r   ÚemptyŒ   s    zTempfilePersistor.emptyN)r"   r#   r$   r-   r;   r3   r>   r   r   r   r   r8   u   s   r8   )Z
__future__r   r   Zdnf.i18nr   Zdistutils.versionZ	distutilsZdnf.utilr   ÚerrnoZfnmatchr   Zloggingr   ÚreZ	getLoggerr   Úobjectr   r&   r8   r   r   r   r   Ú<module>   s   
0