
    i/                         S SK r S SKrS SKJrJr  \ R                  " SS5      r\ R                  " SS5      rSr	Sr
SS	 jrS
 rS rg)    N)typesconfigQuicksortImplementation)compile	partition
partition3insertion_sortrun_quicksort	Partition)startstop   d   c                   ^	^
^^^^^^ [         R                  (       a  [        R                  nO[        R                  nU" S5      mU(       a!  U(       a	  U S 5       mOU S 5       mU S 5       m	OU S 5       mU S 5       m	S nU " Ub  UOU5      m
U U	U
4S j5       mU U	U
4S	 j5       mU U
4S
 j5       mU UUUU4S j5       mU(       a  U U4S j5       nOU U4S j5       nU UUU4S j5       n[        U TTTU5      $ )Nr   c                 T    [        [        U 5      5       Vs/ s H  oPM     sn$ s  snf N)rangelen)Axs     O/var/www/html/trading/venv/lib/python3.13/site-packages/numba/misc/quicksort.pymake_res%make_quicksort_impl.<locals>.make_res(   s"    #(Q=1=a=111s   %c                 B    [         R                  " U R                  5      $ r   )nparangesizer   s    r   r   r   ,   s    yy((    c                 
    X   $ r    r   
idx_or_vals     r   GET make_quicksort_impl.<locals>.GET0   s
    = r   c                     U $ r   r!   r   s    r   r   r   5   s    Hr   c                     U$ r   r!   r"   s     r   r$   r%   9   s    r   c                 
    X:  $ )z/
Trivial comparison function between two keys.
r!   )abs     r   
default_lt'make_quicksort_impl.<locals>.default_lt=   s     ur   c           
        > US:  d   eX2::  a  g[        US-   US-   5       Hc  nX   nT" X5      nUnXr:  aI  T	" UT" XUS-
     5      5      (       a/  XS-
     X'   US-  nXr:  a  T	" UT" XUS-
     5      5      (       a  M/  XQU'   Me     g)z<
Insertion sort A[low:high + 1]. Note the inclusive bounds.
r   N   )r   )
r   Rlowhighikvjr$   LTs
           r   r	   +make_quicksort_impl.<locals>.insertion_sortE   s    
 axx;sQwq)AAA	AA'bCQU8$455QxQ 'bCQU8$455 aD *r   c                   > US:  d   eX2:  d   eX#-   S-	  nT	" T" XU   5      T" XU   5      5      (       a  X   X   sX'   X'   T	" T" XU   5      T" XU   5      5      (       a  X   X   sX'   X'   T	" T" XU   5      T" XU   5      5      (       a  X   X   sX'   X'   T" XU   5      nX   X   sX'   X'   UnUS-
  n Xc:  a:  T	" T" XU   5      U5      (       a#  US-  nXc:  a  T	" T" XU   5      U5      (       a  M#  Xr:  a:  T	" UT" XU   5      5      (       a#  US-  nXr:  a  T	" UT" XU   5      5      (       a  M#  Xg:  a  OX   X   sX'   X'   US-  nUS-  nM  X   X   sX'   X'   U$ )zR
Partition A[low:high + 1] around a chosen pivot.  The pivot's index
is returned.
r   r.   r!   )
r   r/   r0   r1   midpivotr2   r5   r$   r6   s
           r   r   &make_quicksort_impl.<locals>.partitionY   s    axxzzza c!sVnc!sVn--VQVNAFAFc!tWos1f~..fagOAGQVc!sVnc!sVn--VQVNAFAFAv &!'1H(r#a1,66Q (r#a1,66(r%Q!66Q (r%Q!66vqtJAD!$FAFA  agr   c                   > X-   S-	  nT" X   X   5      (       a  X   X   sX'   X'   T" X   X   5      (       a  X   X   sX'   X'   T" X   X   5      (       a  X   X   sX'   X'   X   nX   X   sX'   X'   UnUnUS-   nXv::  aW  T" X   U5      (       a  X   X   sX'   X'   US-  nUS-  nO(T" X@U   5      (       a  X   X   sX'   X'   US-  nOUS-  nXv::  a  MW  XV4$ )z
Three-way partition [low, high) around a chosen pivot.
A tuple (lt, gt) is returned such that:
    - all elements in [low, lt) are < pivot
    - all elements in [lt, gt] are == pivot
    - all elements in (gt, high] are > pivot
r.   r!   )	r   r0   r1   r9   r:   ltgtr2   r6   s	           r   r   'make_quicksort_impl.<locals>.partition3   s#    zaafafVQVNAFAFagqvfagOAGQVafafVQVNAFAF!Gg!$dAEqtaQEQ4dAEqtaQ g vr   c                   > T" U 5      n[        U 5      S:  a  U$ [        T
T
5      /[        -  n[        T
[        U 5      S-
  5      US'   SnUS:  a  US-  nX#   u  pEXT-
  [        :  am  U[        :  d   eT	" XXE5      nXV-
  Xd-
  :  a!  XV:  a  [        US-   U5      X#'   US-  nUS-
  nOXd:  a  [        XFS-
  5      X#'   US-  nUS-   nXT-
  [        :  a  Mm  T" XXE5        US:  a  M  U$ )N   r.   r   )r   r   	MAX_STACKSMALL_QUICKSORT)r   r/   stacknr0   r1   r2   r	   r   r   zeros          r   run_quicksort1+make_quicksort_impl.<locals>.run_quicksort1   s   QKq6A:H4&')3T3q6A:.a!eFAIC*/9}$}aC.8ag%x#,QUD#9Qq5Dw#,Sa%#8Qa%C */  1+) !e, r   c                    > U R                   S:X  a  T" U 5      $ [        R                  " U R                  S S 5       H  nT" X   5        M     U $ )Nr.   )ndimr   ndindexshape)r   idxrG   s     r   r
   *make_quicksort_impl.<locals>.run_quicksort   sE    vv{%a((::aggcrl3C"16* 4r   c                    > T" U 5      $ r   r!   )r   rG   s    r   r
   rO      s    !!$$r   c                   > [        T	T	5      /S-  n[        T	[        U 5      S-
  5      US'   SnUS:  a  US-  nX   u  p4XC-
  [        :  a{  U[        :  d   eT" XU5      u  pVXd:X  a  US-
  nOKXS:X  a  US-   nO@XF-
  XS-
  :  a  [        US-   U5      X'   US-  nUS-
  nO[        X5S-
  5      X'   US-  nUS-   nXC-
  [        :  a  M{  T" XU5        US:  a  M  g g )Nr   r.   r   )r   r   rC   rB   )
r   rD   rE   r0   r1   lrr	   r   rF   s
          r   _run_quicksort+make_quicksort_impl.<locals>._run_quicksort   s    4&'#-T3q6A:.a!eFAIC*/9}$}!!$/9q5DXa%CX'(Q5EHFAq5D(!e4EHFAa%C# */& 14(/ !er   )r   USE_LEGACY_TYPE_SYSTEMr   intppy_intr   )wrapr=   
is_argsortis_listis_np_arrayrW   r+   r
   rT   r$   r6   r	   r   r   r   rG   rF   s            @@@@@@@@r   make_quicksort_implr]      sS   $$zz||7D
 2 2 ) ) 
	! 
	! 
	 
	 
	 
	 
BNb
	3B	 
& 
( 
(T 
  
 D 
  
 D 		 
	 
	% 
	%
 
) 
)> #4#,j.#02 2r   c                  "    [        S /U Q70 UD6$ )Nc                     U $ r   r!   )fs    r   <lambda>#make_py_quicksort.<locals>.<lambda>   s    !r   )r]   )argskwargss     r   make_py_quicksortre      s    >t>v>>r   c                  6   ^ SSK Jm  [        U4S j/U Q70 UD6$ )Nr   )register_jitablec                    > T" U 5      $ r   r!   )r`   rg   s    r   ra   $make_jit_quicksort.<locals>.<lambda>  s    *:1*=r   )numba.core.extendingrg   r]   )rc   rd   rg   s     @r   make_jit_quicksortrk     s&    5 = 0 $0(.0 0r   )NFFF)collectionsnumpyr   
numba.corer   r   
namedtupler   r   rC   rB   r]   re   rk   r!   r   r   <module>rp      s[      $ &00  "";0AB	 	a2H?0r   