
    h(                        S SK r S SKJrJr  S SKrS SKJr  S SKJ	r	J
r
  S\S\\   S\\   S\\   S	\\   S
\\   4S jrS\S\\   S\\   S\\   S
\\   4
S jr  SS\S\\   S\\   S\\   S\\\      S\\   S
\\   4S jjr    SS\R                   S\\   S\\   S\\   S\\   S\\   S\S\\   S\\   S\S\\R                      S
\R                   4S jjr " S S\5      rg)    N)OptionalTuple)OpRun)
_get_index_get_indicesauto_padinput_spatial_shapekernel_spatial_shapestrides_spatialoutput_spatial_shapereturnc                    S/[        U5      -  nU S;   a4  [        [        U5      5       H  nXF   S-
  X6   -  X&   -   X   -
  XV'   M     OU S:X  a   [        U5      S:X  a  [        SU < SU< SU< SU< S	3	5      e[        U5      $ )
Nr   
SAME_UPPER
SAME_LOWER   VALIDz&Unable to compute pad shape, auto_pad=, input_spatial_shape=, kernel_spatial_shape=, strides_spatial=.)lenrangeRuntimeErrortuple)r   r	   r
   r   r   	pad_shapeis          \/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops/_op_common_pool.py_get_pad_shaper      s     c-..I//s./0A%(1,0BB&)*%() L 1 
W	
9~4XL A##6"9 :$$8#; <.14
 	
     c           
         S/[        U5      -  nU S;   aV  [        [        U5      5       H=  n[        [        R                  " [        X   5      [        X5   5      -  5      5      XE'   M?     OcU S:X  a]  [        [        U5      5       HE  n[        [        R                  " [        X   X%   S-
  -
  5      [        X5   5      -  5      5      XE'   MG     [        U5      $ )Nr   r   r   r   )r   r   intnpceilfloatr   )r   r	   r
   r   	out_shaper   s         r   _get_output_shape_no_ceilr'   *   s     c-..I//s./0A145o>P8QQRIL 1 
W	s./0A-04H4Ka4OPQO./0IL 1 r    r   	ceil_modec                    U(       d  [        XX#5      nOU(       a  [        R                  O[        R                  nS/[	        U5      -  nU S;   aH  [        [	        U5      5       H/  n[        U" [        X   5      [        X8   5      -  5      5      Xh'   M1     OhU S:X  ab  Uc  [        S5      e[        [	        U5      5       H<  n[        U" [        X   XH   -   X(   -
  5      [        X8   5      -  S-   5      5      Xh'   M>     [	        U5      S:X  a   [        SU < SU< SU< S	U< S
U< S35      e[        U5      S::  a$  [        SU< SU < SU< SU< S	U< S
U< S35      e[        U5      $ )Nr   r   r   zCpad_shape cannot be None if auto_pad is 'VALID' and ceil_mode is 1.r   z)Unable to compute output shape, auto_pad=r   r   r   z, ceil_mode=r   z3output shape cannot be null or negative, out_shape=z, auto_pad=)r'   r#   r$   floorr   r   r"   r%   
ValueErrorr   minr   )	r   r	   r
   r   r   r(   r&   	round_fctr   s	            r   _get_output_shaper.   A   s    -+?
	  )BGGbhh	C#122	333234"e$7$:;eODV>WWX 	 5    2  3234"/2'l+256
   234 
 	 5 9~7| D##6"9 :$$8#; <.1i]!M
 	
 9~A) O |#9:M9P Q$$8#; <.1i]!M
 	
 r    paddedx_shapekernel_shapestrides_shaper&   pooling_typecount_include_padindicespadsc                 L  ^^^^^^ US:X  a  [         R                  nO'US:X  a  [         R                  nO[        SU< S35      e[	        T5      S-
  m[         R
                  " TS   TS   /[        U5      Q5      nU	(       a.  [         R                  " UR                  S[         R                  S	9nU(       a  [         R                  O[         R                  mUUUUUU4S
 jn[        R                  " [        TS   5      [        TS   5      /U" 5       Q76  GHl  nXS   US   4   n[        T5       Vs/ s H-  n[        TU   UUS-      -  TU   UUS-      -  TU   -   5      PM/     nn[        [        R                  " U6 5      n/ nU H  n UR                  UU   5        M     [         R"                  " U5      nUS:X  a  US:X  a  U" U5      X'   M  U[         R$                  " [         R&                  " U5      ) 5         nU" U5      X'   U	(       d  M   [         R(                  " UUR+                  5       S9n[         R0                  " U5      n[3        UU5      nUSS  U
S S 2S4   -
  nUU-  n[5        UTSS  5      nUWU'   GMo     U	(       a  UR7                  U R8                  5      W4$ UR7                  U R8                  5      $ s  snf ! [          a     GMP  f = f! [,         a:    UR/                  5       nUR+                  5       U[         R&                  " U5      '    Nf = f)NAVGMAXzPooling type z& does not support. Should be AVG, MAX.   r   r   )
fill_valuedtypec                     > [        T5       V s/ s HJ  n [        [        T" [        TU S-      TU    -   TU    -
  5      [        TU    5      -  S-   5      5      5      PML     sn $ s  sn f )Nr:   r   )r   r"   r%   )r   r1   r   r-   spatial_sizer2   r0   s    r   
loop_range_pool.<locals>.loop_range   s     <(
 ) ga!eny|;l1oMNa 012 )
 	
 
s   AA#)nan)r#   averagemaxNotImplementedErrorr   zeroslistfullshapeint64r$   r*   	itertoolsproductr   append
IndexErrorarraywhereisnan
nan_to_numr,   	TypeErrorcopyargmaxr   r   astyper=   )r/   r0   r1   r2   r&   r   r3   r4   r(   r5   r6   fpoolyzr@   rI   windowr   listilisti2valueswindow_valsno_nanwindow_vals_minargcoordinatesdeltanew_argr-   r?   s    ``` `                      @@r   _poolre   x   s    u

		!L++QR
 	
 w<!#L
'!*gaj;4	?;<AGGAGG"((;$"((I
 
 ""5#4eGAJ6GW*,Wa%(*+ <(

 )	 a 5Q</a 5Q</,q/A ) 	 
 i''/0AfQi( 
 hhv&!le&;[)AH 288K+@*@!ABFV}AHwN&(mmKVZZ\&RO
 ii0*3	:ab	DAJ.u$$['!"+>"%G XH xx%q((88FLL!!I
   ! N&1&6&6&8OAGOBHH_$=>Ns+   54KK#K
KKAL#"L#c                   ,    \ rS rSr       SS jrSrg)
CommonPool   Nc                 \   US:X  a  Uc  U Vs/ s H  nSPM     nnUc  U Vs/ s H  nSPM     snS-  nU
b  [        U
5      S:X  a  S/[        UR                  5      S-
  -  n
[        U5      nUS:X  a  SOUnUb  [        U5      S:X  a.  S/[        UR                  5      S-
  -  nUR                  SS  nUnO[        U5      S:X  a  Uu  nnnnUU-   UU-   /n[        R                  " UR                  SS  5      [        R                  " U5      -   nUS:X  a  [        R
                  OSn[        R                  " USSUU4UU44S	US
9nOUnUR                  SS  nUnUS;   a  US:X  a  [        R
                  OSn[        XMXzX5      n[        XMXzU5      nUS:X  a!  US   S-  nUS   U-
  nUS   S-  nUS   U-
  nO US   S-  nUS   U-
  nUS   S-  nUS   U-
  n[        R                  " USSUU4UU44S	US
9nO[        XMXzX5      n[        U5      S-  n[        R                  " [        U5       Vs/ s H  nUU   UUU-      4PM     sn5      n[        UUR                  UU
UUUUU[        U R                  5      S:  US9n[        U[        5      (       a  U$ U4$ s  snf s  snf s  snf )Nr9   r   r   r:   NOTSETr      )r   r   constant)modeconstant_values)r   r   r   )r4   r(   r5   r6   )r   rI   rG   r#   rO   rB   padr.   r   r   re   output
isinstancer   )selfr3   r4   xr   r(   	dilationsr1   r6   storage_orderstridessr   r0   r/   pad_top
pad_bottompad_left	pad_rightconstr&   n_dimsr   new_padsress                            r   _runCommonPool._run   s    5 Y%6$01LqLI1<+,|!A|,q0D?c'la/cS\A-.GL)&(27<3t9>s177|a/0IggabkGFY!^7;4GZ9 :-x)/CDIhhqwwqr{+bhhy.AAG/14BFF!EVV':!698MN %	F IggabkGF33/14BFF!E)<)I '<)I <'&q\Q.
#A,3%aLA-	$Q<)3#A,!+&q\G3
$Q<1,%aL83	VV':!698MN %	F *<)I Ta88%-P-Qd1gtAJ'78-PQGG/$q(
 c5!!JvW 2,r Qs   JJ$4J) )NNNNNNN)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r    r   rg   rg      s     Yr    rg   )Nr   )r   r   FN)rK   typingr   r   numpyr#   onnx.reference.op_runr   %onnx.reference.ops._op_common_indicesr   r   strr"   r   r'   r.   ndarrayboolre   rg   r   r    r   <module>r      s    "  ' Js  * 3Z	
  * 3Z6s  * 3Z	
 3Z8 '+ 44s4  *4 3Z	4
 c
#4 }4 3Z4~ () !%O"JJO"3ZO" *O" :	O"
 SzO" SzO" O"  }O" }O" O" 2::
O" ZZO"dZ Zr    