a qqe@sddlmZddlmZddlmZmZmZmZm Z ddl m Z ddl m Z mZddlmZdd lmZdd lmZdd lmZGd d d eZGddde ZGdddeeZGdddee ZdS)) defaultdict) NamedTuple) AnyRBACRule RBACRuletypeRole RoleAllowRoleTransition)DiffResultDescriptor) DifferenceWrapper)class_wrapper_factory)role_wrapper_factory)type_or_attr_wrapper_factory)RuleListc@s*eZdZUdZeed<eed<eed<dS)ModifiedRBACRulez,Difference details for a modified RBAC rule.ruleZ added_defaultZremoved_defaultN)__name__ __module__ __qualname____doc__r__annotations__rrrr5rrr__hash__szRoleAllowWrapper.__hash__cCs |j|jkSr;r@r*otherrrr__lt__szRoleAllowWrapper.__lt__cCs|j|jko|j|jkSr;r7rBrrr__eq__szRoleAllowWrapper.__eq__) rrrr __slots__rr?rArDrErrrrr'~s r'c@s<eZdZdZdZeddddZddZd d Zd d Z dS) r,z3Wrap role_transition rules to allow set operations.r8r9tclassNr:cCs8||_t|j|_t|j|_t|j|_t||_dSr;) r<rr8rr9rrHr=r>r4rrrr?s    zRoleTransitionWrapper.__init__cCs|jSr;r@r5rrrrAszRoleTransitionWrapper.__hash__cCs |j|jkSr;r@rBrrrrDszRoleTransitionWrapper.__lt__cCs$|j|jko"|j|jko"|j|jkSr;rGrBrrrrEs    zRoleTransitionWrapper.__eq__) rrrrrFr r?rArDrErrrrr,s r,N) collectionsrtypingrZ policyreprrrrr Z descriptorsr differencer r ZobjclassrZrolesrtypesrrrrr'r,rrrrs        b