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ÚFSUseé)ÚContextWrapper)ÚDiffResultDescriptor)Ú DifferenceÚWrapperc@s*eZdZUdZeed<eed<eed<dS)Ú ModifiedFSUsez+Difference details for a modified fs_use_*.ÚruleZ added_contextZremoved_contextN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚ__annotations__r©rrú8/usr/lib64/python3.9/site-packages/setools/diff/fsuse.pyr s r c@sDeZdZdZedƒZedƒZedƒZddœdd„Zddœdd„Z dS) ÚFSUsesDifferencez@Determine the difference in fs_use_* rules between two policies.Ú diff_fs_usesN)Ú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 fs_use rules between the policies.zHGenerating fs_use_* differences from {0.left_policy} to {0.right_policy}css|]}t|ƒVqdS©N©Ú FSUseWrapper©Ú.0ÚfsrrrÚ 'óz0FSUsesDifference.diff_fs_uses..css|]}t|ƒVqdSrrrrrrr(rN)ÚlogÚinfoÚformatZ _set_diffZ left_policyZfs_usesZ right_policyÚ added_fs_usesÚremoved_fs_usesÚmodified_fs_usesrÚcontextÚappendr )ÚselfZmatchedZ left_ruleZ right_rulerrrrs ÿÿþ  þzFSUsesDifference.diff_fs_usescCs"|j d¡d|_d|_d|_dS)z%Reset diff results on policy changes.z#Resetting fs_use_* rule differencesN)rÚdebugr"r#r$©r'rrrÚ _reset_diff7s zFSUsesDifference._reset_diff) r rrrrr"r#r$rr*rrrrrs rc@s<eZdZdZdZeddœdd„Zdd„Zd d „Zd d „Z dS) rz,Wrap fs_use_* rules to allow set operations.)Úruletyperr%N)r rcCs0||_|j|_|j|_t|jƒ|_t|ƒ|_dSr)Úoriginr+rrr%ÚhashÚkey)r'r rrrÚ__init__Es  zFSUseWrapper.__init__cCs|jSr©r.r)rrrÚ__hash__LszFSUseWrapper.__hash__cCs |j|jkSrr0©r'ÚotherrrrÚ__lt__OszFSUseWrapper.__lt__cCs|j|jko|j|jkSr)r+rr2rrrÚ__eq__RszFSUseWrapper.__eq__) r rrrÚ __slots__rr/r1r4r5rrrrr?s rN)ÚtypingrZ policyreprrr%rZ descriptorsrÚ differencer r r rrrrrrÚs    (