Ë
   z˜–z”aã                   óX   — d dl Zd dlmc mZ d dlmZ d dlm	Z	 d dl
mZ  G d„ de	«      Zy)é    N)Úfind_integer)ÚShrinker)Úidentityc                   óD   — e Zd ZdZefd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚOrderingz£A shrinker that tries to make a sequence more sorted.

    Will not change the length or the contents, only tries to reorder
    the elements of the sequence.
    c                 ó   — || _         y ©N©Úkey)Úselfr   s     úv/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/internal/conjecture/shrinking/ordering.pyÚsetupzOrdering.setup   s	   € Øˆ�ó    c                 ó   — t        |«      S r	   )Útuple)r   Úvalues     r   Úmake_immutablezOrdering.make_immutable   s   € Ü�U‹|Ðr   c                 ób   — | j                  t        | j                  | j                  ¬«      «      S ©Nr
   )ÚconsiderÚsortedÚcurrentr   ©r   s    r   Úshort_circuitzOrdering.short_circuit   s    € à�}‰}œV D§L¡L°d·h±hÔ?Ó@Ð@r   c                 ó€   — t        t        | j                  |«      «      t        t        | j                  |«      «      k  S r	   )r   Úmapr   )r   ÚleftÚrights      r   Úleft_is_betterzOrdering.left_is_better!   s-   € Ü”S˜Ÿ™ 4Ó(Ó)¬E´#°d·h±hÀÓ2FÓ,GÑGÐGr   c           
      ó  — t        |«      }| j                  }t        |«      }||k(  }|�s”t        j                  d|fd||f«      dt	        j
                  «       v st        j                  t         «      rt        j                  t         «      nddt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      dt	        j
                  «       v st        j                  t         «      rt        j                  t         «      nddt	        j
                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}t        |«      }| j                  }t        |«      }||k(  }|�s”t        j                  d|fd||f«      d	t	        j
                  «       v st        j                  t        «      rt        j                  t        «      nd	dt	        j
                  «       v st        j                  |«      rt        j                  |«      ndt        j                  |«      d	t	        j
                  «       v st        j                  t        «      rt        j                  t        «      nd	dt	        j
                  «       v st        j                  | «      rt        j                  | «      ndt        j                  |«      t        j                  |«      dœz  }dd|iz  }t        t        j                  |«      «      ‚d x}x}x}}y )
N)ú==)zm%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py10)s
{%(py10)s = %(py5)s(%(py8)s
{%(py8)s = %(py6)s.current
})
}Úlenr   r   )Úpy0Úpy1Úpy3Úpy5Úpy6Úpy8Úpy10zassert %(py12)sÚpy12r   )r"   r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   )r   r   Ú@py_assert2Ú@py_assert7Ú@py_assert9Ú@py_assert4Ú@py_format11Ú@py_format13s           r   Úcheck_invariantszOrdering.check_invariants$   sÎ  € Ü�5‹zÐ. §¡Ð.œS Ó.Ð.ˆzÐ.Ñ.×.×.Ö.ˆzÐ.×.×.×.×.×.Ñ.Œs×.×.Ó.Œs×.×.×.×.×.Ò.�5×.×.Ó.�5×.×.Ô.ˆz×.×.×.×.×.Ð.œS×.×.Ó.œS×.×.×.×.×.Ò. ×.×.Ó. ×.×.Ô. ×.×.Ò.Ð.×.×.×.×.×.×.Õ.Ü�e‹}Ð4 t§|¡|Ð4¤ |Ó 4Ð4ˆ}Ð 4Ñ4×4×4Ö4ˆ}Ð 4×4×4×4×4×4Ñ4Œv×4×4Ó4Œv×4×4×4×4×4Ò4�e×4×4Ó4�e×4×4Ô4ˆ}×4×4×4×4×4Ð4¤×4×4Ó4¤×4×4×4×4×4Ò4 t×4×4Ó4 t×4×4Ô4 |×4×4Ò4Ð 4×4×4×4×4×4×4Ö4r   c                 óD   — | j                  «        | j                  «        y r	   )Úsort_regionsÚsort_regions_with_gapsr   s    r   Úrun_stepzOrdering.run_step(   s   € Ø×ÑÔØ×#Ñ#Õ%r   c                 óØ   ‡ ‡‡— dŠ‰dz   t        ‰ j                  «      k  rJt        ‰ j                  d‰ «      Št        ˆˆˆ fd„«      }‰|z  Š‰dz   t        ‰ j                  «      k  rŒIyy)zÑGuarantees that for each i we have tried to swap index i with
        index i + 1.

        This uses an adaptive algorithm that works by sorting contiguous
        regions starting from each element.
        r   é   Nc           	      óè   •— ‰| z   t        ‰j                  «      k  xrU ‰j                  ‰t        ‰j                  ‰‰| z    ‰j                  ¬«      z   t        ‰j                  ‰| z   d  «      z   «      S r   )r"   r   r   r   r   Úlist)ÚkÚiÚprefixr   s    €€€r   ú<lambda>z'Ordering.sort_regions.<locals>.<lambda>7   so   ø€ ˜!˜a™%¤3 t§|¡|Ó#4Ñ4ò Ø—M‘MØÜ˜TŸ\™\¨!¨a°!©eÐ4¸$¿(¹(ÔCñDä˜4Ÿ<™<¨¨A©¨Ð0Ó1ñ2óð r   )r"   r   rA   r   )r   rB   rC   rD   s   ` @@r   r;   zOrdering.sort_regions,   se   ú€ ð ˆØ�!‰e”c˜$Ÿ,™,Ó'Ò'Ü˜$Ÿ,™, r¨Ð*Ó+ˆFÜõóˆAð �‰FˆAð �!‰e”c˜$Ÿ,™,Ó'Õ'r   c                 ó4  ‡ ‡‡‡‡— t        dt        ‰ j                  «      dz
  «      D ]n  Š‰ j                  ‰dz
     ‰ j                  ‰   cxk  r‰ j                  ‰dz      k  rn nŒ?ˆˆ fd„Š‰Š‰dz   Š‰t        ˆˆˆfd„«      z  Št        ˆˆˆfd„«       Œp y)a&  Guarantees that for each i we have tried to swap index i with
        index i + 2.

        This uses an adaptive algorithm that works by sorting contiguous
        regions centered on each element, where that element is treated as
        fixed and the elements around it are sorted..
        r?   c                 ó’  •— | dk  s|t        ‰	j                  «      kD  ry| ‰k  }‰|k  }|r|�s	t        j                  d||fd| ‰|f«      dt	        j
                  «       v st        j                  | «      rt        j                  | «      nddt	        j
                  «       v st        j                  ‰«      rt        j                  ‰«      nddt	        j
                  «       v st        j                  |«      rt        j                  |«      nddœz  }d	d
|iz  }t        t        j                  |«      «      ‚d x}}‰| z
  }t        ‰	j                  | ‰ ‰	j                  ‰dz   | z   «      }‰	j                  t        ‰	j                  d |  «      |d | z   ‰	j                  ‰   gz   ||d  z   t        ‰	j                  |d  «      z   «      S )Nr   F)ú<=ú<)z%(py0)s <= %(py3)sz%(py3)s < %(py4)sÚarC   Úb)r#   r%   Úpy4zassert %(py6)sr'   r?   )r"   r   r+   r,   r-   r.   r/   r0   r1   r2   r   r   rA   )
rJ   rK   Ú@py_assert1r3   Ú@py_format5Ú@py_format7ÚsplitÚvaluesrC   r   s
           €€r   Úcan_sortz1Ordering.sort_regions_with_gaps.<locals>.can_sortO   sR  ø€ Ø�q’5˜A¤ D§L¡LÓ 1Ò1Ø Ø˜A‘zÐ!˜A ‘z×!×!×!Ñ!�q˜A ×!×!×!×!×!Ñ!�q×!×!Ó!�q×!×!×!×!×!Ò!˜A×!×!Ó!˜A×!×!×!×!×!Ò! ×!×!Ó! ×!×!×!×!×!×!Ó!Ø˜A™�Ü §¡¨Q¨qÐ 1°D·L±LÀÀQÁÈÐ4KÑ KÓL�Ø—}‘}Ü˜Ÿ™ b qÐ)Ó*Ø˜V˜e�nñ%à—|‘| A‘Ð'ñ(ð ˜U˜V�nñ%ô ˜4Ÿ<™<¨¨Ð+Ó,ñ	-óð r   c                 ó   •—  ‰‰‰| z   «      S r	   © ©rB   rR   r   r   s    €€€r   rE   z1Ordering.sort_regions_with_gaps.<locals>.<lambda>_   s   ø€ ©H°T¸5À1¹9Ó,E€ r   c                 ó   •—  ‰‰| z
  ‰«      S r	   rT   rU   s    €€€r   rE   z1Ordering.sort_regions_with_gaps.<locals>.<lambda>`   s   ø€ ¡8¨D°1©H°eÓ#<€ r   N)Úranger"   r   r   )r   rR   rC   r   r   s   `@@@@r   r<   zOrdering.sort_regions_with_gaps@   s‹   ü€ ô �qœ#˜dŸl™lÓ+¨aÑ/Ó0ò 	>ˆAØ�|‰|˜A ™EÑ" d§l¡l°1¡oÔL¸¿¹ÀaÈ!ÁeÑ9LÕLð õð ˆDØ˜‘EˆEØ”\Õ"EÓFÑFˆEÜÕ<Õ=ñ1	>r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r9   r=   r;   r<   rT   r   r   r   r      s6   „ ñð !ó òòAòHò5ò&òó( >r   r   )Úbuiltinsr-   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter+   Ú)hypothesis.internal.conjecture.junkdrawerr   Ú/hypothesis.internal.conjecture.shrinking.commonr   Ú$hypothesis.internal.conjecture.utilsr   r   rT   r   r   ú<module>rc      s#   ð÷ „ Õ BÝ DÝ 9ôP>ˆxõ P>r   