Current File : //usr/libexec/kcare/python/kcarectl/__pycache__/utils.cpython-36.pyc
3

��why�@s,ddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ej
d�ZdZe
d�Ze
d�Ze
d�Zd3dd�Zd4dd�Zd5dd�Zd6dd�Zdd�Zd7dd�Zdedfdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zed'd(��Zd)d*�Zd8d+d,�Z d9d-d.�Z!d/d0�Z"d1d2�Z#dS):�N)�datetime�)�	constantsz^(\d+[.]\d+[-]\d+)���F�wcCs�|d}tjj|�}|r0tjj|�r0tj|�t||��&}|j|�|j�tj|j	��WdQRXtj|tj
�}ztj|�Wdtj|�Xtj||�dS)Nz.tmp)
�os�path�dirname�exists�makedirs�open�write�flush�fsync�fileno�O_RDONLY�close�rename)�fname�content�
ensure_dir�modeZ	tmp_fnameZdname�fZ	folder_fd�r�+/usr/libexec/kcare/python/kcarectl/utils.py�atomic_write s

r�utf-8cCs4t|�tkr|St|�tkr&|j|�S|j|�SdS)N)�type�ntype�btype�decode�encode)�data�encodingrrr�nstr7s

r&�latin1cCst|�tkr|j|�}|S)N)r�utyper#)r$r%rrr�bstrAs
r)cCst|�tkr|j|�}|S)N)rr!r")r$r%rrr�ustrHs
r*cs4i�tj����fdd��}�|_�j|_�|_|S)NcsH|tt|j���f}y�|Stk
r0YnX�||�}�|<|S)N)�tuple�sorted�items�KeyError)�args�kwargsZ	cache_key�result)�cache�fnrr�innerSszcached.<locals>.inner)�	functools�wrapsr2�clearZorig)r3r4r)r2r3r�cachedOs
r8csF�dkrtj��dkrtj��dkr*tj�i������fdd�}|S)Ncs������fdd�}|S)Ncs��}xlt��D]`}y
�||�Stk
rJ}z�|��s:�WYdd}~XnXtj|�t|tjd��tj�}qWy
�||�Stk
r�}zt	|d���WYdd}~XnXdS)Nr�attempts)
�range�	Exception�time�sleep�min�random�uniformr�RETRY_MAX_DELAY�setattr)r/r0Zldelay�_�exZfinal_ex)�backoff�check_retry�count�delayr3�staterrr4os



z'retry.<locals>.decorator.<locals>.innerr)r3r4)rErFrGrHrI)r3r�	decoratornszretry.<locals>.decorator)r�RETRY_DELAY�RETRY_COUNT�
RETRY_BACKOFF)rFrGrHrErJr)rErFrGrHrIr�retrycsrNc
Cs�tjj|�sdSg}tj|�}|dk	r2tj||�}xD|D]<}tjj||�}||krh|jtj|�j	|f�|j
dd�q8WxF||d�D]6\}}	tjj|	�s�tjj|	�r�tj
|	�q�tj|	�q�WdS)NT)�reverse)r	r
r�listdir�fnmatch�filter�join�append�stat�st_mtime�sort�isfile�islink�remove�shutil�rmtree)
Z	directory�exclude_path�keep_n�patternr$r-�item�	full_pathrC�entryrrr�clean_directory�s

rccCsNttjjtjd�dd�ttjjtjd�dd�tjjtj�rJtjtj�dS)N�modulesr)r^�patches)	rcr	r
rSr�PATCH_CACHEr�CACHE_KEY_DUMP_PATH�unlinkrrrr�clear_all_cache�sric
Cs^tjj|�}tjj|�s"tj|�t|d��(}tj||�|j�tj	|j
��WdQRXdS)N�wb)r	r
rrr
rr[�copyfileobjrrr)�response�dstZ
parent_dirrrrr�save_to_file�s
rncCstj|�}|r|jd�p|S)Nr)�
VERSION_RE�match�group)�versionrprrr�strip_version_timestamp�s
rscCs0|jd�\}}}|s$|jd�\}}}tj|d�S)N�T� z%Y-%m-%d)�	partitionr�strptime)Zstr_rawZstr_date�seprCrrr�parse_response_date�srycGs0ddlm}djdd�td|j�f|�D��S)Nr)�ipv6_support�/css|]}|jd�VqdS)r{N)�strip)�.0�itrrr�	<genexpr>�sz'get_patch_server_url.<locals>.<genexpr>)rrzrSrR�get_patch_server)�partsrzrrr�get_patch_server_url�sr�c	Cs0tjj|�sdSt|��}|j�j�SQRXdS)N)r	r
rr�readr|)�filenamerrrr�try_to_read�s
r�cCs
ttj�S)N)r�rrgrrrr�
get_cache_key�sr�c	Cs.tjj|�s|St||��
}|j�SQRXdS)N)r	r
rrr�)rr�defaultrrrr�
_read_file�sr�cCst|d|�}|S)N�r)r�)rr�r1rrr�	read_file�sr�cCst|d|�}|S)N�rb)r�)rr�r1rrr�
read_file_bin�sr�cCsBi}|j�}x0|D](}|r|jd�\}}}|r|j�||<qW|S)N�:)�
splitlinesrvr|)r$r1Z
data_lines�line�key�	delimiter�valuerrr�data_as_dict�s
r�cCstttj���S)N)�str�intr<rrrr�
timestamp_str�sr�)Fr)r)r')r')NNN)N)N)$r	rQr5�rer[r?r<rrr�compileroZ
CACHE_ENTRIESrr r!r(rr&r)r*r8rNrcrirnrsryr�r�r�r�r�r�r�r�rrrr�<module>s@	






$
	


Page not found – Hello World !