a qéqeŸ ã@s|ddlmZddlmZmZddlmZddlmZddl m Z m Z Gdd „d eƒZ Gd d „d e ƒZ Gd d „d e eƒZdS)é)Ú NamedTupleé)ÚContextÚGenfsconé)ÚContextWrapper)ÚDiffResultDescriptor)Ú DifferenceÚWrapperc@s*eZdZUdZeed<eed<eed<dS)ÚModifiedGenfsconz,Difference details for a modified genfscons.ÚruleZ added_contextZremoved_contextN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚ__annotations__r©rrú;/usr/lib64/python3.9/site-packages/setools/diff/genfscon.pyr s r c@sDeZdZdZedƒZedƒZedƒZddœdd„Zddœdd„Z dS) ÚGenfsconsDifferencez@Determine the difference in genfscon rules between two policies.Údiff_genfsconsN)ÚreturncCsŒ|j d |¡¡| dd„|j ¡Dƒdd„|j ¡Dƒ¡\|_|_}g|_ |D]4\}}t |j ƒt |j ƒkrR|j   t ||j |j ƒ¡qRdS)z?Generate the difference in genfscon rules between the policies.zHGenerating genfscon differences from {0.left_policy} to {0.right_policy}css|]}t|ƒVqdS©N©ÚGenfsconWrapper©Ú.0ÚfsrrrÚ 'óz5GenfsconsDifference.diff_genfscons..css|]}t|ƒVqdSrrrrrrr(rN)ÚlogÚinfoÚformatZ _set_diffZ left_policyZ genfsconsZ right_policyÚadded_genfsconsÚremoved_genfsconsÚmodified_genfsconsrÚcontextÚappendr )ÚselfZmatchedZ left_ruleZ right_rulerrrrs ÿÿþ  þz"GenfsconsDifference.diff_genfsconscCs"|j d¡d|_d|_d|_dS)z%Reset diff results on policy changes.z#Resetting genfscon rule differencesN)rÚdebugr"r#r$©r'rrrÚ _reset_diff7s zGenfsconsDifference._reset_diff) r rrrrr"r#r$rr*rrrrrs rc@s<eZdZdZdZeddœdd„Zdd„Zd d „Zd d „Z dS) rz,Wrap genfscon rules to allow set operations.)rÚpathÚfiletyper%N)r rcCs8||_|j|_|j|_|j|_t|jƒ|_t|ƒ|_dSr)Úoriginrr+r,rr%ÚhashÚkey)r'r rrrÚ__init__Es  zGenfsconWrapper.__init__cCs|jSr©r/r)rrrÚ__hash__MszGenfsconWrapper.__hash__cCs |j|jkSrr1©r'ÚotherrrrÚ__lt__PszGenfsconWrapper.__lt__cCs$|j|jko"|j|jko"|j|jkSr)rr+r,r3rrrÚ__eq__Ss   ÿ þzGenfsconWrapper.__eq__) r rrrÚ __slots__rr0r2r5r6rrrrr?s rN)ÚtypingrZ policyreprrr%rZ descriptorsrÚ differencer r r rrrrrrÚs    (