
    h<                       S SK Jr  S SKJrJr  S SKrS SKJr  SSS jjr	 S     SS jjr
 S       SS jjrSSS jjrSSS	 jjrSS
 jrSS jrSS jr    S                   S S jjr  S!                   S"S jjrS#S jr      S$                   S%S jjr " S S\5      rg)&    )annotations)AnyCallableN)OpRunc                F   U  Vs/ s H  n[         R                  " U5      PM     n nU S   R                  n[         R                  " U  Vs/ s H  o"R                  PM     sn5      nUc   [         R
                  " U[        U 5      /US9nX@S   R                  -  n[         R                  " U S   U5      USS2S4'   U SS (       aR  [        U SS USU2SS24   S9  [        SU S   R                  5       H  nUSU2SS24   XU-  US-   U-  2SS24'   M!     U$ s  snf s  snf )a  
From https://stackoverflow.com/a/1235363
Generate a cartesian product of input arrays.
Parameters
----------
arrays : list of array-like
    1-D arrays to form the cartesian product of.
out : ndarray
    Array to place the cartesian product in.
Returns
-------
out : ndarray
    2-D array of shape (M, len(arrays)) containing cartesian products
    formed of input arrays.
Examples
--------
>>> cartesian(([1, 2, 3], [4, 5], [6, 7]))
array([[1, 4, 6],
       [1, 4, 7],
       [1, 5, 6],
       [1, 5, 7],
       [2, 4, 6],
       [2, 4, 7],
       [2, 5, 6],
       [2, 5, 7],
       [3, 4, 6],
       [3, 4, 7],
       [3, 5, 6],
       [3, 5, 7]])
r   Ndtype   )out)
npasarrayr	   prodsizezeroslenrepeat
_cartesianrange)arraysr   xr	   nmjs          V/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/op_resize.pyr   r      s   @ &,,VbjjmVF,1IOOE
(A()A
{hh3v;'u5	AY^^A		&)Q'C1Iabz6!":3qsABw<0q&)..)A+.qsABw<CAQ!#QR'( *J - )s    D
Dc                   [        U [        5      (       d  U R                  5       (       a  [        R                  " SS/5      $ US:X  a  [        R                  " U S:*  U S:  /5      $ US:X  a  [        R                  " U S:  U S:  /5      $ US:X  a  [        R                  " SS/5      $ US:X  a  [        R                  " SS/5      $ [        SU< S	35      e)
Nr   r
   round_prefer_floor      ?round_prefer_ceilfloorceilUnexpected value .)
isinstanceint
is_integerr   array
ValueError)ratiomodes     r   _nearest_coeffsr*   =   s     %!1!1!3!3xxA##xx#us{344""xxesl344wxxAv~xxA
(2
33    c                B   AX S-   -  SU-  -
  U S-   -  SU-  -   U S-   -  SU-  -
  US-   U -  US-   -
  U -  U -  S-   US-   SU -
  -  US-   -
  SU -
  -  SU -
  -  S-   USU -
  S-   -  SU-  -
  SU -
  S-   -  SU-  -   SU -
  S-   -  SU-  -
  /n[         R                  " U5      $ )Nr
                  r   r&   )r(   scaleAcoeffss       r   _cubic_coeffsr6   M   s     	
qy/AE
!eai	01q5	8UQYG!a%O
a%5AE	"e+e3a7
a%AI	!a%	(QY71u9EI
E	Q
!a%
'QY!O	<q1u	DI?	
a%		F 88Fr+   c                D  ^ [        US5      nSU4S jjn[        [        R                  " SU-  5      S-   5      nSU-
  n[	        XE5       Vs/ s H	  oaX`-
  -  PM     nnU Vs/ s H
  o" U5      PM     n	n[        R
                  " U	5      [        U	5      -  $ s  snf s  snf )N      ?c                   > [        U 5      n X -  nX-  nU S::  a  TS-   U-  TS-   U-  -
  S-   $ U S:  a  TU-  ST-  U-  -
  ST-  U -  -   ST-  -
  $ g)Nr
   r0   r1   r-   r.   r/           abs)r   x_2x_3r4   s      r   compute_coeff._cubic_coeffs_antialias.<locals>.compute_coeff`   sx    Feg6ES=AES=0144q5s7QUS[(1q5194q1u<<r+   r
   r0   )r   floatreturnrB   )minr$   r   r   r   r&   sum)
r(   r3   r4   r?   i_starti_endiargsr   r5   s
     `       r   _cubic_coeffs_antialiasrJ   \   s    sOE "((2:&*+GKE).w)>?)>AQY)>D?(,-1mAF-88Fc&k)) @-s   B#Bc                :    A[         R                  " SU -
  U /5      $ )Nr
   r2   )r(   r3   s     r   _linear_coeffsrL   q   s    88QY&''r+   c                T   [        US5      n[        [        R                  " SU-  5      S-   5      nSSU-  -
  n[        R                  " X"U-   5      U -
  U-  n[        R
                  " S[        R                  " U5      -
  SS5      n[        R                  " U5      [        U5      -  $ )Nr8   r
   r0   r   )	rD   r$   r   r   arangeclipr<   r&   rE   )r(   r3   start	footprintrI   r5   s         r   _linear_coeffs_antialiasrS   v   s    sOEe$q()EAIIIIeY./%75@DWWQ%q!,F88Fc&k))r+   c                z   ^  [        [        U5      U 4S jS9SU n[        U5      n[        R                  " U5      $ )at  
Return the n nearest indexes to x among `[0, limit)`,
prefer the indexes smaller than x.
As a result, the ratio must be in `(0, 1]`.

Examples::

    get_neighbor_idxes(4, 2, 10) == [3, 4]
    get_neighbor_idxes(4, 3, 10) == [3, 4, 5]
    get_neighbor_idxes(4.4, 3, 10) == [3, 4, 5]
    get_neighbor_idxes(4.5, 3, 10) == [3, 4, 5]
    get_neighbor_idxes(4.6, 3, 10) == [4, 5, 6]
    get_neighbor_idxes(4.4, 1, 10) == [4]
    get_neighbor_idxes(4.6, 1, 10) == [5]

:param x:
:param n: the number of the wanted indexes
:param limit: the maximum value of index
:return: An np.array containing n nearest indexes in ascending order
c                $   > [        TU -
  5      U 4$ Nr;   )idxr   s    r   <lambda>%_get_neighbor_idxes.<locals>.<lambda>   s    #a#g,1Dr+   )keyN)sortedr   r   r&   )r   r   limitidxess   `   r   _get_neighbor_idxesr^      s4    * 5<%DEbqIE5ME88E?r+   c                    [         R                  " US-  5      R                  [        5      n[         R                  " X#SS9nX-  n [        X[        U5      5      nXE   nXS-
  U4$ )a  
Pad `data` in 'edge' mode, and get n nearest elements in the padded array
and their indexes in the original array.

:param x: center index (in the unpadded coordinate system) of the found nearest elements.
:param n: the number of neighbors.
:param data: the array
:return: A tuple containing the indexes of neighbor elements
    (the index can be smaller than 0 or higher than len(data))
    and the value of these elements
r0   edger)   )r   r    astyper$   padr^   r   )r   r   data	pad_widthpaddedr]   rets          r   _get_neighborrh      s\     A%%c*IVVD&1FNAc&k2E
-Cc!!r+   c	                   [        U 5      n	X-  n
US:X  a  U
S:X  a  SnOX9S-
  -  U
S-
  -  nOUS:X  a  X1-  nOUS:X  at  Uc  [        S5      eU
S:X  a  US   US   -
  U	S-
  -  S-  nOX5S   US   -
  -  U	S-
  -  U
S-
  -  nXS   U	S-
  -  -  nUS:  d  XS-
  :  a  [        R                  " U5      $ ObUS	:X  a  U
S:X  a  S
nOSUS-   U-  S-
  nOGUS:X  a  US-   U-  S-
  nO5US:X  a  X*-  nU	S-  nUSU-
  -  nXS-   U-  -   S-
  nO[        SU< S35      e[        R                  " U5      R                  [        5      R                  5       nUR                  5       (       a  SnOX-
  nU" UU5      n[        U5      n[        UUU 5      u  nnU(       a6  [        U5       H  u  nnUS:  d  UU	:  d  M  SUU'   M     U[        U5      -  n[        R                  " UU5      R                  5       $ )Nalign_cornersr
   r:   
asymmetrictf_crop_and_resizezroi cannot be None.r   r0   pytorch_half_pixelg      r   
half_pixelhalf_pixel_symmetricz(Invalid coordinate_transformation_mode: r"   )r   r'   r   r&   r   rb   r$   itemr%   rh   	enumeraterE   dot)rd   scale_factoroutput_width_intr   
get_coeffsroiextrapolation_valuecoordinate_transformation_modeexclude_outsideinput_widthoutput_widthx_ori
adjustmentcenteroffset	x_ori_intr(   r5   r   r]   pointsrH   rW   s                          r   _interpolate_1d_with_xr      sR    d)K-L%81Eq)\A-=>E	'<	7 	'+?	?;2331Vc!f_q9A=EQ#a&)[1_=PQAQREQ;?++19a/88/00 0	'+?	?1EW,s2E	'<	7SL(3.	'+A	A &4
q1z>*c'\11C767U6XXYZ
 	
 &&s+002I !|,FFA!%D1ME6&FAsQw#,q	 ' 	#f+66&&!&&((r+   c           
        US:X  a  [        U US   US   US   U4UUS.UD6$ / n	[        U R                  S   5       HY  n
[        X
   US-
  USS  USS  USS  U4Uc  S O[        R
                  " USU XaS-   S  /5      US.UD6nU	R                  U5        M[     [        U	US   US   US   U4Uc  S OUS   Xa   /US.UD6$ )Nr
   r   rv   ry   )r   r   shape_interpolate_nd_with_xr   concatenateappend)rd   r   scale_factorsoutput_sizer   ru   rv   ry   kwargsres1drH   rs               r   r   r      s7    	Av%!NaD	
 +	
 	
 		
 E4::a=!"GE!"OabE

 Qq31uw<8P)Q+

 

 	Q " "aA	!	 KDc!fcf%5'	 	 	r+   c                    [        [        [        U R                  5      5       Vs/ s H$  n[	        [        U R                  U   5      5      PM&     sn5      $ s  snf rV   )r   r   r   r   list)rd   rH   s     r   _get_all_coordsr   )  sE    -23tzz?-CD-CeDJJqM"	#-CD Ds   +Ac           	     ~   Uc  Uc  [        S5      e[        U R                  5      n	Ub  Ub"  S/U	-  n
[        U5       H  u  pX;   X'   M     U
nUbC  [	        U	5       Vs/ s H  oR                  U   PM     nn[        U5       H  u  pX+   X'   M     UnUb@  S/U	-  S/U	-  -   n[        U5      n[        U5       H  u  pX[   X'   X_U-      XU-   '   M     UnO[        [	        U	5      5      nUGb  [	        U	5       Vs/ s H  oU   U R                  U   -  PM     nnUS:w  a  US:X  a(  [        R                  " U5      U   R                  5       nO=US:X  a(  [        R                  " U5      U   R                  5       nO[        SU< 35      e[	        U	5       Vs/ s H  oU;   a  UOSPM     nnSS jn[	        U	5       Vs/ s H/  nX;   a  U" UU R                  U   -  5      OU R                  U   PM1     nnO6U[        R                  " U R                  5      -  R                  [        5      nUc  [        S	5      eUc  [        S
5      e[        R                  " U5      n[        U5       H6  n[        U [        U R                  5      UUUU4UUS.UD6U[        U5      '   M8     U$ s  snf s  snf s  snf s  snf )Nz.output_size is None and scale_factors is None.r8   r:   stretch
not_largernot_smallerz!Invalid keep_aspect_ratio_policy=c                    [        U S-   5      $ )Nr   )r$   )r   s    r   round_half_up&_interpolate_nd.<locals>.round_half_upd  s    1s7|#r+   zscale_factors is None.zoutput_size is None.r   )r   rB   rC   r$   )r'   r   r   rq   r   r   r   r&   rD   maxrb   r$   r   r   r   tuple)rd   ru   r   r   axesrv   keep_aspect_ratio_policyry   r   r   new_scale_factorsrH   dnew_output_sizenew_roinaxesr3   r   rg   r   s                       r   _interpolate_ndr   0  s    }4IJJDJJA$!$	!$'4'7!$ (-M"6;Ah?hzz!}hO?!$%0^" ()K?uqycUQY/GIE!$ V
!$QYA ( CE!H~AFqJAQ$**Q-7J#y0'<7/599;)]:/599; 78P7ST  CH(K(Q4iUS8(MK$
 q!A 9:	edjjm34tzzRS}T!   %rxx

';;CCCH122/00
((;
CS!.

O

 +

 

E!H " Ju @  K L
s   J+>J0J56J:c                  :    \ rS rSr           S SS jjrSrg)Resizei  Nc                  ^^^^ US:X  a,  U(       a  [        SU< SU< S35      eTb  U4S jnOR[        nOKUS:X  a  U(       a  [        O[        mUU4S jnO*US:X  a  U(       a  [        O[
        nO[        S	U< S
35      eUc-  [        TUUUUUU	UU
S9	R                  TR                  5      nU4$ [        [        TR                  5      5       Vs/ s H  nUU;  d  M  UPM     nn[        UU-   5      n[        R                  " TU5      nS/[        U4S jU 5       5      Q7nUR!                  U5      nS n[        UR                  S   5       Hr  n[        UU   UUUUUU	UU
S9	R                  TR                  5      nUc:  [        R"                  " UR                  S   /UR                  Q7UR                  S9nUUU'   Mt     UR!                  [        U4S jU 5       5      US   R                  -   5      n[%        U5      n['        U5       H  u  nnUUU'   M     [        R                  " U[        U5      5      nU4$ s  snf )Nnearestz	antilias=z is not supported for mode=r"   c                   > A[        U TS9$ )Nra   )r*   )r   rs   nearest_modes     r   fctResize._run.<locals>.fct  s    $*1<@@r+   cubicc                   > T" XTS9$ )N)r4    )r   r3   cubic_coeff_afct_s     r   r   r     s    A66r+   linearr!   z
 for mode.)r   r   rv   r   ry   rx   rw   rN   c              3  B   >#    U  H  nTR                   U   v   M     g 7frV   r   .0aXs     r   	<genexpr>Resize._run.<locals>.<genexpr>  s     9Dq
D   r   r   c              3  B   >#    U  H  nTR                   U   v   M     g 7frV   r   r   s     r   r   r     s     (FXXr   )RuntimeErrorr*   rJ   r6   rS   rL   r'   r   rb   r	   r   r   r   r   r   	transposereshapeemptyr   rq   )selfr   rv   scalessizes	antialiasr   rx   r   ry   rw   r   r)   r   r   outputr   not_axespermpermuted	new_shapereshapedresrH   res_reshapednew_permfinalr   s    `      `    `             @r   _runResize._run  s9     9"	},GxqQ  'A
 &W_.7*]D7 X.7*^C0
CDD<$$!)A //M$7
 fQWWo  9  %S\2D2!atmA2DX_%<<4(:%9D99:	##I.x~~a()A$$!)A //M$7
 fQWWo  {hhq 1AFLLAVCF *  {{5(FX(F#FQ#UV:dODAqHQK $\5?;x7 Es   
I Ir   )NNNNNNNNNNN)r)   
str | None)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r+   r   r   r     s<    
 '+ !%R R Rr+   r   rV   )r   zlist[np.ndarray]r   np.ndarray | NonerC   
np.ndarray)r   )r(   zfloat | int | np.ndarrayr)   strrC   r   )N      )r(   rB   r3   float | Noner4   rB   rC   r   )r   )r(   rB   r3   rB   r4   rB   rC   r   )r(   rB   r3   r   rC   r   )r(   rB   r3   rB   rC   r   )r   rB   r   r$   r\   r$   rC   r   )r   rB   r   r$   rd   r   rC   ztuple[np.ndarray, np.ndarray])Nr:   rn   F)rd   r   rs   rB   rt   r$   r   rB   ru   $Callable[[float, float], np.ndarray]rv   r   rw   rB   rx   r   ry   boolrC   r   )NF)rd   r   r   r$   r   list[float]r   z	list[int]r   r   ru   r   rv   r   ry   r   r   r   rC   r   )rd   r   rC   r   )NNNNr   F)rd   r   ru   r   r   list[int] | Noner   zlist[float] | Noner   r   rv   r   r   r   ry   r   r   r   rC   r   )
__future__r   typingr   r   numpyr   onnx.reference.op_runr   r   r*   r6   rJ   rL   rS   r^   rh   r   r   r   r   r   r   r+   r   <module>r      s   #    '-b 2F4#4+.44" :?%16**(
*4"6 "!$*6!E)
E)E) E) 	E)
 5E) 
E) E) %(E) E) E)^ "!.
.
. . 	.
 . 5. 
. . . .b %)(,!!+4!Q
Q4Q "Q &	Q
 Q 
Q )Q Q Q QhSU Sr+   