ó `WôVc@s‡ddlZddljZddlZddlTddlZdefd„ƒYZdde dd„Z d„Z d„Z d„Z dS( iÿÿÿÿN(t*t XCCDFElementcBsYeZd„Zd„ZeeƒZdd„Zd„Zd„Z e d„Z d„Z RS(cCsg||_||_||_||_d|_d|_d|_d|_d|_ d|_ d|_ dS(N( ttagtparenttdepthtattrstNonetcollecttcdatat descriptionttitletversiont preselectt pickselect(tselfRRRR((s xccdf_util.pyt__init__s          cCs|jjdƒS(Ntid(Rtget(R((s xccdf_util.pytgetid scCsbt|ƒtkr!t|ƒ}n|||ƒ|jr^x$|jD]}|j||ƒqAWndS(N(ttypetdictRtwalk(Rtfunctstatetx((s xccdf_util.pyR$s   cCs6|js dSg|jD]}|j|kr|^qS(N(RRR(RRte((s xccdf_util.pytfind,s cCs|j|ƒ}|o|dS(Ni(R(RRtelelist((s xccdf_util.pytfindone1scCsR|jdd|j}|jr9|d|jd7}nd|jkrd|d|jdd7}nd|jkr|d|jdd7}n|jr°|d |jd7}n|jrà|d tjd d |jƒd7}n|rD|jrD|d 7}x%|jD]}||j ƒd 7}qW||jdd|jd7}n |d7}|S(Ns t ss />( RRRRR R tretsubRt__repr__(RtrecurtrepR((s xccdf_util.pyR$5s$   ' # cCs |jƒS(N(R$(R((s xccdf_util.pyt__str__JsN( t__name__t __module__RRtpropertyRRRRRtFalseR$R'(((s xccdf_util.pyRs      c s¼g‰ˆs?igd6gd6gd6gd6gd6gd6‰n‡fd†}‡‡fd†}‡fd †}‡fd †}tjd |d |d |d|d|d|ƒ}|s¸iSˆS(Nt Benchmarkt TailoringtProfiletValuetGrouptRulecstˆƒdd|dGHdS(Ns RR!(tlen(ts(telestack(s xccdf_util.pyt _tagprintTscs×tˆƒrˆdpd}t||tˆƒ|ƒ}|ˆkrWˆ|j|ƒn|rÆt|jƒtk r~g|_n|jj|ƒ|dkrÆd|krÃ|jd|d7_qÃqÆnˆj|ƒdS(NiÿÿÿÿR#Rs(R2RRtappendRRtlistR(RRttopttip(t collectionsR4(s xccdf_util.pyt start_elementWs     cs‰ˆjƒ}tˆƒoˆd}|r…|jdkrF|j|_q…|jdkrd|j|_q…|jdkr…|j|_q…ndS(NiÿÿÿÿR R R (tpopR2RRR R R (t_tagR9R8(R4(s xccdf_util.pyt end_elementfs cs9tˆƒoˆd}|r5|jp(d||_ndS(Niÿÿÿÿt(R2R(tdataR8(R4(s xccdf_util.pyRsstfilenametstringtfailmsgt element_startt element_endR(txml_utiltxmlParse( RARBRCR:R5R;R>RtparseOK((R:R4s xccdf_util.pyt xccdf_collectNs  cCstjt|tƒS(N(tpathtjoint BENCHMARKStXCCDF(t benchmark((s xccdf_util.pyt bench_path„scCs_ytjtƒ}Wn g}nXg|D]!}tjt|ƒƒr*|^q*}|jƒ|S(N(tostlistdirRLRJtisfileROtsort(t benchlisttbt benchmarks((s xccdf_util.pyt bench_list‹s  ! cCsYigd6}td|d|ƒ}g|dD]"}d|jkr-|jd^q-}|S(NR.RAR:R(RIR(txccdfR:tptproflist((s xccdf_util.pytbenchmark_profilesšs  "(RPtos.pathRJR"tcommonRFtobjectRRtTrueRIRORWR[(((s xccdf_util.pyt s    <6