3 ^p @shddlmZddlmZddlmZddlmZmZedddd gZ Gd d d eZ Gd d d eZ dS)) namedtuple)ContextWrapper)DiffResultDescriptor) DifferenceWrapperZmodified_fsuseruleZ added_contextZremoved_contextc@s8eZdZdZedZedZedZddZddZ dS)FSUsesDifferencez@Determine the difference in fs_use_* rules between two policies. diff_fs_usescCs|jjdj||jdd|jjDdd|jjD\|_|_}g|_ x<|D]4\}}t |j t |j krT|j j t ||j |j qTWdS)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).0fsr/usr/lib64/python3.6/fsuse.py /sz0FSUsesDifference.diff_fs_uses..css|]}t|VqdS)N)r )r r rrrr0sN)loginfoformatZ _set_diffZ left_policyZfs_usesZ right_policy added_fs_usesremoved_fs_usesmodified_fs_usesrcontextappendmodified_fsuse_record)selfZmatchedZ left_ruleZ right_rulerrrr 's  zFSUsesDifference.diff_fs_usescCs"|jjdd|_d|_d|_dS)z%Reset diff results on policy changes.z#Resetting fs_use_* rule differencesN)rdebugrrr)rrrr _reset_diff?s zFSUsesDifference._reset_diffN) __name__ __module__ __qualname____doc__rrrrr rrrrrr s r c@s4eZdZdZdZddZddZd d Zd d Zd S)r z,Wrap fs_use_* rules to allow set operations.ruletyper rcCs0||_|j|_|j|_t|j|_t||_dS)N)originr!r rrhashkey)rrrrr__init__Ms  zFSUseWrapper.__init__cCs|jS)N)r$)rrrr__hash__TszFSUseWrapper.__hash__cCs |j|jkS)N)r$)rotherrrr__lt__WszFSUseWrapper.__lt__cCs|j|jko|j|jkS)N)r!r )rr'rrr__eq__ZszFSUseWrapper.__eq__N)r!r r) rrrr __slots__r%r&r(r)rrrrr Gs r N) collectionsrrrZ descriptorsr differencerrrr r rrrrs   (