a Ri @sddlZddlZddlZddlZddlmZmZmZmZddl m Z dZdddZdd d Zd d Zd dZddZddZddZddZdS)N)config constants log_utilsutils)json_loads_nstri, .kcarestatuscCs$tjtj|}t|tdS)N)ospathjoinr PATCH_CACHEr atomic_write timestamp_str)filenamestatus_filepathr2/usr/libexec/kcare/python/kcarectl/update_utils.pytouch_status_gap_filesrc Cstjtj|}tj|rt|d`}z.decorator..inner) functoolswraps)r>r?r$)r>r decoratorTs z&track_update_status..decorator)r&)r%rBrr$rtrack_update_statusPs rCcCs\t|z*t}||idd}|dtjWStyVtjjdddYdS0dS)Nr/r7zFailed to read update statusTr0) r&r.getrUPDATE_ERROR_MAX_LENGTHrrr*r+)r%r4r/rrrread_update_errores rF)r)r)r@r2r rr7rrrrpy23rAnyCallableDictrrrr&r.r5r;rCrFrrrrs