+
    ,ic  c                   s   a  R t0 t ^ RIHt ^ RIHt ^RIHt ^RIHtH	t	H
t
Ht ^RIHt ^RIHtHtHt ^RI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# )i    )defaultdict)	dataclass)MLSDisabled)LevelRangeRoleUser)DiffResultDescriptor)
DifferenceDifferenceResultSymbolWrapper)LevelWrapperRangeWrapperrole_wrapper_factory)SymbolCacheT)ZfrozenZorderc                   s0   a  ] tR t^t o RtV 3R ltRtV tR# )ModifiedUserz'Difference details for a modified user.c                s"  < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          ;R&   S[S[,          R,          ;R&   S[S[,          R,          ;R&   S[S[,          R,          ;R&   S[S[,          R,          ;R	&   # )
   useradded_rolesremoved_rolesmatched_rolesNadded_levelremoved_leveladded_rangeremoved_range)r   Zsetr   r   Zstrr   format__classdict__   "9/usr/lib64/python3.14/site-packages/setools/diff/users.py__annotate__ZModifiedUser.__annotate__   s     
 J  T  t9  t9  t##  3;%%  t##  3;%%      N)__name__
__module____qualname____firstlineno____doc__Z__annotate_func____static_attributes____classdictcell__r      @r   r   r      s      2  r    r   c                sF    V ^8  d   QhR\         R\        \         ,          /# )r   r   return)r   r
   r      "r   r   r   $   s      t d(; r    c                s     \         V P                  ,          V ,          #   \         d+    \        T 4      pT\         T P                  ,          T &   Tu # i ; i)zl
Wrap users from the specified policy.

This caches results to prevent duplicate wrapper
objects in memory.
)_users_cacheZpolicyZKeyErrorr
   )r   r   & r   user_wrapper_factoryr1   $   sL    DKK(.. $*+T[[!$'s     2AAc                   s   a  ] tR t^3t 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# )UsersDifferencez7Determine the difference in users between two policies.c                   < V ^8  d   QhRR/# r   r+   Nr!   r   r   r   r   UsersDifference.__annotate__7   s     OH OHD OHr    c                s2   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 EF/  w  r#V P	                  R VP                   4       R VP                   4       4      w  rEp \        VP                  4      p\        VP                  4      pVP                  p	VP                  p
 \        VP                  4      p\        VP                  4      pVP                  pVP                  pW{8w  d   TpT	pMRpRpW8w  d   TpT
pMRpRpV'       g   V'       g   V'       g   V'       g   EK  V P                  P#                  \        VVVVVVVV4      4       EK2  	  R#   \          d    RpRpRp	Rp
 Li ; i  \          d    RpRpRpRp Li ; i)	z6Generate the difference in users between the policies.z!Generating user differences from z to c              3   8   "   T F  p\        V4      x  K  	  R # 5iNr1   Z.0r/   r0   r   	<genexpr>-UsersDifference.diff_users.<locals>.<genexpr>>   s     G.F!!$$.F   c              3   r6   r7   r8   r9   r0   r   r:   r;   ?   s     H.G!!$$.Gr<   c              3   r6   r7   r   r9   r0   r   r:   r;   I   s     B/Q%a((/r<   c              3   r6   r7   r   r9   r0   r   r:   r;   J   s     C2BQ%a((2Br<   NzNone (MLS Disabled))logZinfoZleft_policyZright_policyZ	_set_diffZusersadded_usersremoved_usersZlistr   modified_usersrolesr   Z	mls_levelr   Z	mls_ranger   Zappend)selfZmatched_usersZ	left_userZ
right_userr   r   r   Zleft_level_wrapZleft_range_wrapZ
left_levelZ
left_rangeZright_level_wrapZright_range_wrapZright_levelZright_ranger   r   r   r   s   &                  r   
diff_usersZUsersDifference.diff_users7   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=B)//BC*2B2BC9E5K$	3".y/B/B"C".y/B/B"C&00
&00
	4#/
0D0D#E #/
0D0D#E (22(22 2) *" $2) *" $m}##**<	8C8E8E8C8E8C8E,G Hy &38  3"&"&2
2
	3  4#' #' 33	4s&   /AG'2AH 'G=<G= HHc                r3   r4   r!   r   r   r   r   r5      s        T  r    c                sH    V P                   P                  R4       V =V =V =R# )z%Reset diff results on policy changes.zResetting user differencesN)r=   Zdebugr>   r?   r@   )rB   s   &r   _reset_diffZUsersDifference._reset_diff   s%    34r    )r>   r@   r?   N)r"   r#   r$   r%   r&   rC   r   r   r>   r?   r   r@   rD   r'   r(   r)   r*   r   r2   r2   3   sP     AOH OHb 't,Z8K(.z:M),7
CN
   r    r2   c                sV    V ^8  d   Qh/ ^ \         9   d   \        \        ,          ;R&   # )r   r.   )__conditional_annotations__r   r   r,   r-   r   r   r      s     # # 4 3k$ 3 $r    N)rE   Zcollectionsr    Zdataclassesr   Z	exceptionr   Z	policyrepr   r   r   r   Zdescriptorsr   Z
differencer   r	   r
   Zmlsr   r   rA   r   Ztypingr   Zdictr.   r   r1   r2   r   )rE   r*   r   <module>rF      so    $ # ! # 0 0 - C C + ' "-d"3 3 $d#&# & $&a j a r    