
    i                     >    S SK Jr  S SKJr  S SKJr   " S S\5      rg)    )find_integer)Shrinker)identityc                   N    \ rS rSrSr\4S jrS rS rS r	S r
S rS	 rS
 rSrg)Ordering   zA 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                     Xl         g Nkey)selfr   s     p/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/hypothesis/internal/conjecture/shrinking/ordering.pysetupOrdering.setup   s        c                     [        U5      $ r
   )tupler   values     r   make_immutableOrdering.make_immutable   s    U|r   c                 \    U R                  [        U R                  U R                  S95      $ Nr   )considersortedcurrentr   r   s    r   short_circuitOrdering.short_circuit   s     }}VDLLdhh?@@r   c                     [        [        U R                  U5      5      [        [        U R                  U5      5      :  $ r
   )r   mapr   )r   leftrights      r   left_is_betterOrdering.left_is_better!   s-    S4()E#dhh2F,GGGr   c                     [        U5      [        U R                  5      :X  d   e[        U5      [        U R                  5      :X  d   eg r
   )lenr   r   r   s     r   check_invariantsOrdering.check_invariants$   s8    5zS....e}t|| 4444r   c                 D    U R                  5         U R                  5         g r
   )sort_regionssort_regions_with_gapsr   s    r   run_stepOrdering.run_step(   s    ##%r   c                    ^ ^^ SmTS-   [        T R                  5      :  aM  [        T R                  ST 5      m[        UUU 4S j5      nTU-  mTS-   [        T R                  5      :  a  ML  gg)zGuarantees 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           	         > TU -   [        TR                  5      :*  =(       aR    TR                  T[        TR                  TTU -    TR                  S9-   [        TR                  TU -   S  5      -   5      $ r   )r'   r   r   r   r   list)kiprefixr   s    r   <lambda>'Ordering.sort_regions.<locals>.<lambda>7   so    !a%3t||#44 MMT\\!a!e4$((CD4<<A012r   )r'   r   r2   r   )r   r3   r4   r5   s   ` @@r   r+   Ordering.sort_regions,   se     !ec$,,''$,,r*+FA FA !ec$,,''r   c                 D  ^ ^^^^ [        S[        T R                  5      S-
  5       Hu  mT R                  TS-
     T R                  T   s=::  a  T R                  TS-      ::  a  O  OMB  UU 4S jmTmTS-   mT[        UUU4S j5      -  m[        UUU4S j5        Mw     g)zGuarantees 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..
r0   c                   > U S:  d  U[        TR                  5      :  a  gU Ts=::  a  U:  d   e   eTU -
  n[        TR                  U T TR                  TS-   U -   5      nTR                  [	        TR                  S U  5      US U -   TR                  T   /-   X2S  -   [	        TR                  US  5      -   5      $ )Nr   Fr0   )r'   r   r   r   r2   )absplitvaluesr4   r   s       r   can_sort1Ordering.sort_regions_with_gaps.<locals>.can_sortO   s    q5ADLL 11 Azz!z!zAQq 1DLLQ4K KL}}bq)*Ven%||A'( Vn% 4<<+,	- r   c                    > T" TTU -   5      $ r
    r3   r?   r"   r#   s    r   r6   1Ordering.sort_regions_with_gaps.<locals>.<lambda>_   s    HT519,Er   c                    > T" TU -
  T5      $ r
   rB   rC   s    r   r6   rD   `   s    8D1He#<r   N)ranger'   r   r   )r   r?   r4   r"   r#   s   `@@@@r   r,   Ordering.sort_regions_with_gaps@   s     q#dll+a/0A||AE"dll1oLa!e9LL  DEE\"EFFE<=1 1r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   r$   r(   r-   r+   r,   __static_attributes__rB   r   r   r   r      s6     ! AH5&( >r   r   N))hypothesis.internal.conjecture.junkdrawerr   /hypothesis.internal.conjecture.shrinking.commonr   $hypothesis.internal.conjecture.utilsr   r   rB   r   r   <module>rQ      s    C D 9P>x P>r   