+
                                 ^ RI Ht ^ RIt^RIHtHtHt ^RIHt ^RI	H
t
HtHt ^RIHt ]! RRR7       ! R	 R
]4      4       t ! R R]
4      t ! R R]],          4      tR# )    )	dataclassN)BoundsBoundsRuletypeType)DiffResultDescriptor)
DifferenceDifferenceResultWrapper)type_wrapper_factoryT)frozenorderc                   0   a  ] tR t^t o RtV 3R ltRtV tR# )ModifiedBoundsz.Difference details for a modified bounds rule.c                >   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[;R&   # )   ruleadded_boundremoved_bound)r   r   )format__classdict__s   ":/usr/lib64/python3.14/site-packages/setools/diff/bounds.py__annotate__ModifiedBounds.__annotate__   s+     
 L          N)__name__
__module____qualname____firstlineno____doc____annotate_func____static_attributes____classdictcell__r   s   @r   r   r      s      9  r   r   c                      a  ] tR t^t o RtV 3R lR lt]],          ! ]4      t]],          ! ]4      t	]]
,          ! ]4      tRtRtV 3R lR ltV 3R lR ltV 3R	 ltR
tV tR# )BoundsDifferencez9Determine the difference in *bounds between two policies.c                   < V ^8  d   QhRR/# r   returnNr   )r   r   s   "r   r   BoundsDifference.__annotate__   s     H H Hr   c                   V P                   P                  RV P                   RV P                   24       V P                  e   V P
                  f   V P                  4        V P                  R \        P                  ! \        \        ,          V P                  4       4       R \        P                  ! \        \        ,          V P
                  4       4       R R7      w  V n        V n        p\        \        ,          ! 4       V n        V Fm  w  r#\!        VP"                  4      \!        VP"                  4      8w  g   K4  V P                  P%                  \        W#P"                  VP"                  4      4       Ko  	  R# )z@Generate the difference in typebound rules between the policies.z'Generating typebounds differences from z to Nc              3   8   "   T F  p\        V4      x  K  	  R # 5iNBoundsWrapper.0cs   & r   	<genexpr>3BoundsDifference.diff_typebounds.<locals>.<genexpr>(   s     X'W!]1'W   c              3   8   "   T F  p\        V4      x  K  	  R # 5ir-   r.   r0   s   & r   r3   r4   )   s     Y'X!]1'Xr5   c                 ,    \        V P                  4      # r-   )strchild)bs   &r   <lambda>2BoundsDifference.diff_typebounds.<locals>.<lambda>*   s    #agg,r   key)loginfoleft_policyright_policy_left_typebounds_right_typebounds_create_typebound_lists	_set_difftypingcastlistr   added_typeboundsremoved_typeboundsr   modified_typeboundsr   parentappend)selfmatched_typebounds
left_boundright_bounds   &   r   diff_typebounds BoundsDifference.diff_typebounds   s%    	5d6F6F5GtDL]L]K^_	a   (D,B,B,J((*MQ^^Xv{{4<AVAV'WXYv{{4<AWAW'XY& N\ N(Jt68J
 $(#7#9 '9#J#J$5$56:N{OaOa:bb((// 2 2J4E4E1G H (:r   Nc                   < V ^8  d   QhRR/# r(   r   )r   r   s   "r   r   r*   >   s     _ _ _r   c                :   . V n         V P                  P                  4        Fh  pVP                  \        P
                  8X  d   V P                   P                  V4       K?  V P                  P                  RVP                   R24       Kj  	  . V n	        V P                  P                  4        Fh  pVP                  \        P
                  8X  d   V P                  P                  V4       K?  V P                  P                  RVP                   R24       Kj  	  R# )z$Create rule lists for both policies.zUnknown rule type: z (This is an SETools bug)N)rC   rA   boundsruletyper   
typeboundsrN   r?   errorrD   rB   rO   r   s   & r   rE   (BoundsDifference._create_typebound_lists>   s     "$$++-D}} 9 99%%,,T2!4T]]OC\]^	 . "$%%,,.D}} 9 99&&--d3!4T]]OC\]^	 /r   c                   < V ^8  d   QhRR/# r(   r   )r   r   s   "r   r   r*   N   s     & &T &r   c                `    V P                   P                  R4       V =V =RV n        RV n        R# )z%Reset diff results on policy changes.z!Resetting all *bounds differencesN)r?   debugrJ   rK   rC   rD   rO   s   &r   _reset_diffBoundsDifference._reset_diffN   s1    :;!# !%!%r   c                n   < V ^8  d   Qh/ S[ S[,          R,          ;R&   S[ S[,          R,          ;R&   # )r   NrC   rD   )rI   r   )r   r   s   "r   r   r*      s1     < 6lT)0= > F|d*1? r   )rC   rD   rJ   rL   rK   )r   r   r   r   r    rS   r   r   rJ   rK   r   rL   rC   rD   rE   ra   r!   r"   r#   r$   s   @r   r&   r&      sr     CH H* ,F3OD-f5oF.~>O -1-1
_ _ & &i  r   r&   c                   L   a  ] tR t^Yt o RtR	tV 3R lR ltR tR tR t	Rt
V tR# )
r/   zWrap *bounds for diff purposes.c                $   < V ^8  d   QhRS[ RR/# )r   r   r)   N)r   )r   r   s   "r   r   BoundsWrapper.__annotate___   s      V  r   c                    Wn         VP                  V n        \        VP                  4      V n        \        VP                  4      V n        \        V4      V n        R # r-   )originrX   r   rM   r9   hashr>   r[   s   &&r   __init__BoundsWrapper.__init___   s=    *4;;7)$**5
:r   c                    V P                   # r-   r=   r`   s   &r   __hash__BoundsWrapper.__hash__f   s    xxr   c                4    V P                   VP                   8  # r-   r=   rO   others   &&r   __lt__BoundsWrapper.__lt__i   s    xx%))##r   c                v    V P                   VP                   8H  ;'       d    V P                  VP                  8H  # r-   )rX   r9   rp   s   &&r   __eq__BoundsWrapper.__eq__l   s1    }}. & &JJ%++%	&r   )r9   r>   rh   rM   rX   N)rX   rM   r9   )r   r   r   r   r    	__slots__rj   rm   rr   ru   r"   r#   r$   s   @r   r/   r/   Y   s+     )/I $& &r   r/   )dataclassesr   rG   	policyrepr   r   r   descriptorsr   
differencer   r	   r
   typesr   r   r&   r/   r   r   r   <module>r}      s_    "  4 4 - = = ' $d#%  $<&z <&~&GFO &r   