+
        5                        a  R t0 t ^ RIHt ^ RIHt ^RIHtHt ^RIH	t	 ^RI
HtHtHt ^RIHt ^RIHt ]! ]4      t] ^ k ]! RRR	7       ! R
 R]4      4       tR R lt ! R R]4      tR# )    )defaultdict)	dataclass)RoleType)DiffResultDescriptor)
DifferenceDifferenceResultSymbolWrapper)SymbolCachetype_wrapper_factoryT)frozenorderc                   0   a  ] tR t^t o RtV 3R ltRtV tR# )ModifiedRolez'Difference details for a modified role.c                z   < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   # )   roleadded_typesremoved_typesmatched_types)r   setr   )format__classdict__s   "9/usr/lib64/python3.14/site-packages/setools/diff/roles.py__annotate__ModifiedRole.__annotate__   sD     
 J  T  t9  t9      N)__name__
__module____qualname____firstlineno____doc____annotate_func____static_attributes____classdictcell__r   s   @r   r   r      s      2  r   r   c                F    V ^8  d   QhR\         R\        \         ,          /# )r   r   return)r   r
   )r   s   "r   r   r      s      t d(; r   c                     \         V P                  ,          V ,          #   \         d+    \        T 4      pT\         T P                  ,          T &   Tu # i ; i)zl
Wrap roles from the specified policy.

This caches results to prevent duplicate wrapper
objects in memory.
)_roles_cachepolicyKeyErrorr
   )r   rs   & r   role_wrapper_factoryr0      sL    DKK(.. $*+T[[!$'s     2AAc                      a  ] tR t^-t o RtV 3R lR lt]],          ! ]4      t]],          ! ]4      t	]]
,          ! ]4      tV 3R lR ltRtV tR# )RolesDifferencez7Determine the difference in roles between two policies.c                   < V ^8  d   QhRR/# r   r*   Nr   )r   r   s   "r   r   RolesDifference.__annotate__1   s     H HD Hr   c           	     h   V P                   P                  RV P                   RV P                   24       V P	                  R V P                  P                  4        4       R V P                  P                  4        4       4      w  V n        V n        p\        \        ,          ! 4       V n
        V F}  w  r#V P	                  R VP                  4        4       R VP                  4        4       4      w  rEpV'       g   V'       g   KV  V P                  P                  \        VVVV4      4       K  	  R# )z6Generate the difference in roles between the policies.z!Generating role differences from z to c              3   8   "   T F  p\        V4      x  K  	  R # 5iNr0   .0r/   s   & r   	<genexpr>-RolesDifference.diff_roles.<locals>.<genexpr>8   s     G.F!!$$.F   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir8   r9   r:   s   & r   r<   r=   9   s     H.G!!$$.Gr>   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir8   r   r;   ts   & r   r<   r=   B   s     D2CQ%a((2Cr>   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir8   r   rA   s   & r   r<   r=   C   s     E2DQ%a((2Dr>   N)loginfoleft_policyright_policy	_set_diffrolesadded_rolesremoved_roleslistr   modified_rolestypesappend)selfmatched_roles	left_role
right_roler   r   r   s   &      r   
diff_rolesRolesDifference.diff_roles1   s    	/0@0@/AdFWFWEXY	[ ?CnnGd.>.>.D.D.FGHd.?.?.E.E.GH?J;$,m #<02%2!I 9=D)//2CDE*2B2B2DE9G5K mm##**<	8C8E8E,G H &3r   c                   < V ^8  d   QhRR/# r4   r   )r   r   s   "r   r   r5   R   s        T  r   c                H    V P                   P                  R4       V =V =V =R# )z%Reset diff results on policy changes.zResetting role differencesN)rD   debugrJ   rK   rM   )rP   s   &r   _reset_diffRolesDifference._reset_diffR   s%    34r   )rJ   rM   rK   N)r    r!   r"   r#   r$   rT   r   r   rJ   rK   r   rM   rY   r&   r'   r(   s   @r   r2   r2   -   sM     AH H4 't,Z8K(.z:M),7
CN
   r   r2   c                V    V ^8  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r   r,   )__conditional_annotations__r   r   )r   s   "r   r   r      s     # # 4 3k$ 3 $r   N)r\   collectionsr   dataclassesr   	policyrepr   r   descriptorsr   
differencer   r	   r
   typingr   rN   r   dictr,   r   r0   r2   r   )r\   s   @r   <module>rd      sd    $ # ! " - C C  '"-d"3 3 $d##  $* j * r   