HEX
Server: Apache
System: Linux br384.hostgator.com.br 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User: regi8665 (2159)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: //usr/libexec/kcare/python/kcarectl/utils.pyc
�
��ic@s7ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Z
ddlmZe
r�ddlmZmZmZmZmZmZmZmZmZedded	ef�Znejd
�ZdZed�Zed�Zed
�Ze
ddd�Z dd�Z!dd�Z"dd�Z#d�Z$dddd�Z&dedd�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d�Z-e$d��Z.d �Z/dd!�Z0dd"�Z1d#�Z2d$d%�Z3d&�Z4d'�Z5de6fdd(�Z7dS()i����(tprint_functionN(tdatetimei(t	constants(	tAnytCallabletDicttListtOptionaltSettTupletTypeVartUniontTtbound.s^(\d+[.]\d+[-]\d+)itutwi�c

Cs<tjj|�}|r;tjj|�r;tj|�nytj|�j}Wntk
rj|}nXtj	d|d|dtjj
|�ddt��P}tj|j
�|�|j|�|j�tj|j
��|j}WdQXtj|tj�}	ztj|	�Wdtj|	�Xtj||�dS(Ntmodetdirtprefixt.tdelete(tostpathtdirnametexiststmakedirststattst_modet	ExceptionttempfiletNamedTemporaryFiletbasenametFalsetfchmodtfilenotwritetflushtfsynctnametopentO_RDONLYtclosetrename(
tfnametcontentt
ensure_dirRtcreate_modetdnameRtft	tmp_fnamet	folder_fd((s+/usr/libexec/kcare/python/kcarectl/utils.pytatomic_write"s$

7

sutf-8cCsFt|�tkr|St|�tkr5|j|�S|j|�SdS(N(ttypetntypetbtypetdecodetencode(tdatatencoding((s+/usr/libexec/kcare/python/kcarectl/utils.pytnstr>s

tlatin1cCs(t|�tkr$|j|�}n|S(N(R4tutypeR8(R9R:((s+/usr/libexec/kcare/python/kcarectl/utils.pytbstrHscCs(t|�tkr$|j|�}n|S(N(R4R6R7(R9R:((s+/usr/libexec/kcare/python/kcarectl/utils.pytustrOscsIi�tj����fd��}�|_�j|_�|_|S(NcsY|tt|j���f}y�|SWntk
r=nX�||�}�|<|S(N(ttupletsortedtitemstKeyError(targstkwargst	cache_keytresult(tcachetfn(s+/usr/libexec/kcare/python/kcarectl/utils.pytinnerZs
(t	functoolstwrapsRHtcleartorig(RIRJ((RHRIs+/usr/libexec/kcare/python/kcarectl/utils.pytcachedVs!
		csm�dkrtj�n�dkr0tj�n�dkrHtj�ni������fd�}|S(Ncs"������fd�}|S(Ncs��}xt��D]q}y�||�SWn(tk
rT}�|��sU�qUnXtj|�t|tjd��tj�}qWy�||�SWn&tk
r�}t	|d���nXdS(Nitattempts(
trangeRttimetsleeptmintrandomtuniformRtRETRY_MAX_DELAYtsetattr(RDREtldelayt_textfinal_ex(tbackofftcheck_retrytcounttdelayRItstate(s+/usr/libexec/kcare/python/kcarectl/utils.pyRJvs

&((RIRJ(R]R^R_R`Ra(RIs+/usr/libexec/kcare/python/kcarectl/utils.pyt	decoratorus(tNoneRtRETRY_DELAYtRETRY_COUNTt
RETRY_BACKOFF(R^R_R`R]Rb((R]R^R_R`Ras+/usr/libexec/kcare/python/kcarectl/utils.pytretryjsc
Cstjj|�sdSg}tj|�}|dk	rLtj||�}nxa|D]Y}tjj||�}||kr�|jtj	|�j
|f�n|jdt�qSWxY||D]M\}}	tjj
|	�s�tjj|	�r�tj|	�q�tj|	�q�WdS(Ntreverse(RRRtlistdirRctfnmatchtfiltertjointappendRtst_mtimetsorttTruetisfiletislinktremovetshutiltrmtree(
t	directorytexclude_pathtkeep_ntpatternR9RBtitemt	full_pathRZtentry((s+/usr/libexec/kcare/python/kcarectl/utils.pytclean_directory�s
"$cCspttjjtjd�dd�ttjjtjd�dd�tjjtj�rltjtj�ndS(NtmodulesRxitpatches(	R}RRRlRtPATCH_CACHERtCACHE_KEY_DUMP_PATHtunlink(((s+/usr/libexec/kcare/python/kcarectl/utils.pytclear_all_cache�s""cCs}tjj|�}tjj|�s4tj|�nt|d��4}tj||�|j�tj	|j
��WdQXdS(Ntwb(RRRRRR'RttcopyfileobjR$R%R"(tresponsetdstt
parent_dirR0((s+/usr/libexec/kcare/python/kcarectl/utils.pytsave_to_file�s
cCs(tj|�}|r$|jd�p'|S(Ni(t
VERSION_REtmatchtgroup(tversionR�((s+/usr/libexec/kcare/python/kcarectl/utils.pytstrip_version_timestamp�scCsI|jd�\}}}|s9|jd�\}}}ntj|d�S(NRt s%Y-%m-%d(t	partitionRtstrptime(tstr_rawtstr_datetsepRZ((s+/usr/libexec/kcare/python/kcarectl/utils.pytparse_response_date�scGs=ddlm}djd�td|j�f|�D��S(Ni(tipv6_supportt/css|]}|jd�VqdS(R�N(tstrip(t.0tit((s+/usr/libexec/kcare/python/kcarectl/utils.pys	<genexpr>�s(RR�RlRkRctget_patch_server(tpartsR�((s+/usr/libexec/kcare/python/kcarectl/utils.pytget_patch_server_url�scCs?tjj|�sdSt|��}|j�j�SWdQXdS(N(RRRRcR'treadR�(tfilenameR0((s+/usr/libexec/kcare/python/kcarectl/utils.pyttry_to_read�scCs
ttj�S(N(R�RR�(((s+/usr/libexec/kcare/python/kcarectl/utils.pyt
get_cache_key�scCs<tjj|�s|St||��}|j�SWdQXdS(N(RRRR'R�(R+RtdefaultR0((s+/usr/libexec/kcare/python/kcarectl/utils.pyt
_read_file�scCst|d|�}|S(Ntr(R�(R+R�RG((s+/usr/libexec/kcare/python/kcarectl/utils.pyt	read_file�scCst|d|�}|S(Ntrb(R�(R+R�RG((s+/usr/libexec/kcare/python/kcarectl/utils.pyt
read_file_bin�scCsai}|j�}xH|D]@}|r|jd�\}}}|rY|j�||<qYqqW|S(Nt:(t
splitlinesR�R�(R9RGt
data_linestlinetkeyt	delimitertvalue((s+/usr/libexec/kcare/python/kcarectl/utils.pytdata_as_dict�s
tcvecCsCt�}x3|D]+}|j|�}|r|j|�qqW|S(s
    Extract unique CVEs from a list of patches.

    Args:
        patches: List of patch dictionaries
        cve_field: Field name to extract CVE from (default 'cve' for userspace, 'kpatch-cve' for kernel)

    Returns:
        Set of unique CVE strings
    (tsettgettadd(Rt	cve_fieldtunique_cvestpatchR�((s+/usr/libexec/kcare/python/kcarectl/utils.pytextract_unique_cves�s	
cCstttj���S(N(tstrtintRR(((s+/usr/libexec/kcare/python/kcarectl/utils.pyt
timestamp_strscGst|�dS(sa workaround to fix T201N(tprint(tvalues((s+/usr/libexec/kcare/python/kcarectl/utils.pyt
print_wrapperscs���fd�}|S(Ncs+tj������fd��}|S(Ncs�y�||�SWn��k
r�}�r�g|D]}t|�^q0g|j�D]\}}dj||�^qR}�dj�jdj|�|��n�SXdS(Ns{0}={1}s{0}({1}) failed: {2}s, (R�RBtformatt__name__Rl(RDREtetatktvtarg_list(tdefault_returnterrorsRItlogger(s+/usr/libexec/kcare/python/kcarectl/utils.pyRJsN((RKRL(RIRJ(R�R�R�(RIs+/usr/libexec/kcare/python/kcarectl/utils.pyRbs'((R�R�R�Rb((R�R�R�s+/usr/libexec/kcare/python/kcarectl/utils.pytcatch_errorss(8t
__future__RRjRKRRUtreRtRRRRRRR ttypingRRRRRRR	R
RRtcompileR�t
CACHE_ENTRIESR4R5R6R=R3R;R>R?RORcRgR}R�R�R�R�R�R�R�R�R�R�R�R�R�R�RR�(((s+/usr/libexec/kcare/python/kcarectl/utils.pyt<module>sP@
	$