+
    /i                        ^ RI t ^ RIt ^ RIt^ RIt^ RIHtHtHtH	t	H
t
Ht ^ RIt^ RIHt ^ RIHt ^RIHt ]P&                  P(                  t] P*                  R8H  ;'       d    ]P,                  R8  t]! RRR	7       ! R
 R4      4       t]! RRR	7       ! R R4      4       t]! ]P4                  4      R 4       t]! ]P4                  4      R 4       t]! ]P4                  4      R 4       t]! ]P4                  4      R 4       t]! ]P4                  4      R 4       t]! ]P4                  4      R 4       t ]! ]P4                  4      R 4       t!]! ]P4                  4      R 4       t"]! ]P4                  4      R 4       t#]! ]P4                  4      R 4       t$]! ]P4                  4      R 4       t%]! RRR	7      ]! ]P4                  4      R 4       4       t&]! ]P4                  4      R 4       t']! ]P4                  4      R 4       t(]! RR.RR7      ]! ]P4                  4      R  4       4       t)]! RR.RR7      ]! ]P4                  4      R! 4       4       t*]! RR"R	7      ]! ]P4                  4      R# 4       4       t+]! ]P4                  4      R$ 4       t,]! ]P4                  ]PZ                  4      R% 4       t.]! ]P4                  4      R& 4       t/]! ]P4                  ]PZ                  4       ! R' R(4      4       t0]! ]Pb                  4      R) 4       t2]! ]Pb                  4      R* 4       t3]! ]Pb                  4      R+ 4       t4]! ]Pj                  4      R, 4       t6]! ]Pj                  4      R- 4       t7]! ]Pj                  4      R. 4       t8]! ]Pj                  4      R/ 4       t9]! ]Pj                  4      R0 4       t:]! ]Pj                  4      R1 4       t;]! ]Pj                  4      R2 4       t<]! ]Pj                  4      R3 4       t=]! ]Pj                  4      R4 4       t>]! ]Pj                  4      R5 4       t?]! ]Pj                  4      R6 4       t@]! ]Pj                  4      R7 4       tA]! ]Pj                  4      R8 4       tB]! ]P                  4      R9 4       tD]! ]P                  4      R: 4       tE]! ]P                  4      R; 4       tF]! ]P                  4      R< 4       tG]! ]P                  4      R= 4       tI]! ]P                  4      R> 4       tJ]! ]P                  4      R? 4       tK]! ]P                  4      R@ 4       tL]! ]P                  4      RA 4       tN]! ]P                  4      RB 4       tO]! ]P                  4      RC 4       tP]! ]P                  4      RD 4       tQ]! ]P                  4      RE 4       tR]! ]P                  4      RF 4       tT]! ]P                  4      RG 4       tU]! ]P                  4      RH 4       tV]! ]P                  4      RI 4       tW]! ]P                  4      RJ 4       tX]! ]P                  4      RK 4       tZ]! ]P                  4      RL 4       t[]! ]P                  4      RM 4       t\]! ]P                  4      RN 4       t]]! ]P                  4      RO 4       t^]! ]P                  4      RP 4       t_]! ]P                  4      RQ 4       ta]! ]P                  4      RR 4       tb]! ]P                  4      RS 4       tc]! ]P                  4      RT 4       td]! ]P                  4      RU 4       te]! ]P                  4      RV 4       tf]! ]P                  4      RW 4       tg]! ]P                  4      RX 4       ti]! ]P                  4      RY 4       tj]! ]P                  4      RZ 4       tk]! ]P                  4      R[ 4       tl]! ]P                  4      R\ 4       tm]! ]P                  4      R] 4       tn]! ]P                  4      R^ 4       to]! ]P                  4      R_ 4       tq]! ]P                  4      R` 4       tr]! ]P                  4      Ra 4       ts]! ]P                  4      Rb 4       tt]! ]P                  4      Rc 4       tu]! ]P                  4      Rd 4       tv]! ]P                  4      Re 4       tw]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Rf 4       ty]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Rg 4       tz]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Rh 4       t{]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Ri 4       t|]! ]P                  4      Rj 4       t~]! ]P                  4      Rk 4       t]! ]P                  4      Rl 4       t]! ]P                  4      Rm 4       t]! ]P                  4      Rn 4       t]! ]P                  4      Ro 4       t]! ]P                  4      Rp 4       t]! ]P                  4      Rq 4       t]! ]P                  4      Rr 4       t]! ]EP                  4      Rs 4       t]! ]EP                  4      Rt 4       t]! RRuR	7      ]! ]EP                  4      Rv 4       4       t]! ]P                  ]P                  ]P                  ]P                  ]P                  ]P                  4      Rw 4       t]! RRxRy7      ]! ]EP                  4       ! Rz R{4      4       4       t]! RR|7      ]P&                  EP                  R}]EP                  ]EP                   .4      ]! ]Pb                  4      R~ 4       4       4       tR# )    N)is_torchxp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equalmake_xp_test_case)raises)typesnt2Tz test internal numpy-only helpersnp_onlyreasonc                   B   a  ] tR t^t o RtR tR tR tR tR t	Rt
V tR# )	Test_measurements_statszndimage._measurements._stats() is a utility used by other functions.

Since internal ndimage/_measurements.py code is NumPy-only,
so is this this test class.
c           	        . ROp. ROp^ ^.pR F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VR7      w  rg\        '       d   R\         P                  /M/ p\        V\         P                  ! ^^.3/ VB 4       \        V\         P                  ! RR.4      4       K  	  R# )	r   labelsindexdtype      ?       @Nr            r   r   r   r   )   )r   r   
nparrayreshapendimage_measurements_statsIS_WINDOWS_AND_NP1int64r   asarray	selfxpxr   r   shpcountssums	dtype_args	   &&       c/var/www/html/photoedit/myenv/lib/python3.14/site-packages/scipy/ndimage/tests/test_measurements.pytest_aTest_measurements_stats.test_a#   s    A!C##C(AXXf%--c2F"0077 8 /LF 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89 "    c           	        . ROp. ROp^ ^	.pR F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VR7      w  rg\        '       d   R\         P                  /M/ p\        V\         P                  ! ^^.3/ VB 4       \        V\         P                  ! RR.4      4       K  	  R# )	r   r   r   r   r   Nr   r   r   	   r8   r   r    r*   s	   &&       r2   test_bTest_measurements_stats.test_b1   s     A!C##C(AXXf%--c2F"0077 8 /LF 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89 "r5   c           	        . ROp. R	Op^ ^.pR
 F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VRR7      w  rgp\        '       d   R\         P                  /M/ p	\        V\         P                  ! ^^.3/ V	B 4       \        V\         P                  ! RR.4      4       \        V\         P                  ! RR.4      4       K  	  R# )r   Tr   r   centeredr   r   r         ?Nr   r   r   r    
r+   r,   r-   r   r   r.   r/   r0   centersr1   s
   &&        r2   test_a_centered'Test_measurements_stats.test_a_centeredA       A!C##C(AXXf%--c2F$+$9$9$@$@ %A %>!F' 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;< "r5   c           	        . ROp. R	Op^ ^	.pR
 F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VRR7      w  rgp\        '       d   R\         P                  /M/ p	\        V\         P                  ! ^^.3/ V	B 4       \        V\         P                  ! RR.4      4       \        V\         P                  ! RR.4      4       K  	  R# )r   Tr<   r   r   r   r>   Nr   r7   r   r    r?   s
   &&        r2   test_b_centered'Test_measurements_stats.test_b_centeredP   rC   r5   c           	        . R
Op. ROpRR.pR F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VRR7      w  rgp\        '       d   R\         P                  /M/ p	\        V\         P                  ! ^^.3/ V	B 4       \        V\         P                  ! RR.4      4       \        V\         P                  ! RR.4      4       K  	  R	# )r                 "@Tr<   r   r   r   r>   Nr   )rH   rH   rI   rI   r   r    r?   s
   &&        r2   test_nonint_labels*Test_measurements_stats.test_nonint_labels_   s    %c
!C##C(AXXf%--c2F$+$9$9$@$@ %A %>!F' 0B/A"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;< "r5    N)__name__
__module____qualname____firstlineno____doc__r3   r9   rA   rE   rJ   __static_attributes____classdictcell____classdict__s   @r2   r   r      s(     
:: === =r5   r   c                   *   a  ] tR t^ot o RtR tRtV tR# )Test_measurements_selectzEndimage._measurements._select() is a utility used by other functions.c           	        . ROp. RO^ ^.3. RO^ ^	.3. RORR.3.pV EF  w  rE\         P                  P                  W$VR7      p\        V4      ^ 8X  g   Q h\         P                  P                  W$VRR7      p\        V4      ^8X  g   Q h\	        V^ ,          ^^.4       \         P                  P                  W$VRR7      p\        V4      ^8X  g   Q h\	        V^ ,          ^ ^.4       \         P                  P                  W$VRRR7      p\        V4      ^8X  g   Q h\	        V^ ,          ^ ^.4       \	        V^,          ^ ^.4       V^,          P
                  P                  R8X  g   Q h\         P                  P                  W$VRRR	7      p\        V4      ^8X  g   Q h\	        V^ ,          ^^.4       \	        V^,          ^^.4       V^,          P
                  P                  R8X  d   EK  Q h	  R
# )r   rH         @r   T)r   r   find_max)r   r   find_min)r   r   r[   find_min_positionsi)r   r   rZ   find_max_positionsN)r   r   r   r   r   r7   )rH   rH   rY   rY   )r$   r%   _selectlenr   r   kind)r+   r,   r-   casesr   r   results   &&     r2   
test_basic#Test_measurements_select.test_basics   s   Aq6"Aq6"!C:.

 #MF**22 3 /Fv;!###**22 3 >Fv;!###F1I1v.**22 3 >Fv;!###F1I1v.**22#' 3 )F v;!###F1I1v.F1I1v.!9??''3...**22#' 3 )F v;!###F1I1v.F1I1v.!9??''3...3 #r5   rL   N)rM   rN   rO   rP   rQ   rd   rR   rS   rT   s   @r2   rW   rW   o   s     O /  /r5   rW   c                 |    V P                  R4      p\        P                  ! V4      w  r#V^8X  g   Q hV^8X  g   Q hR# )r   NrL   )onesr$   labelr,   dataoutns   &   r2   test_label01rm      s5    772;D]]4 FC!8O86M6r5   c                 |    V P                  R4      p\        P                  ! V4      w  r#V^ 8X  g   Q hV^ 8X  g   Q hR# )r   NrL   )zerosr$   rh   ri   s   &   r2   test_label02rp      s5    88B<D]]4 FC!8O86M6r5   c                     V P                  ^.4      p\        P                  ! V4      w  r#\        W P	                  ^.4      4       V^8X  g   Q hR# r   Nrg   r$   rh   r   r)   ri   s   &   r2   test_label03rt      s>    77A3<D]]4 FCc::qc?36M6r5   c                     V P                  ^.4      p\        P                  ! V4      w  r#\        W P	                  ^ .4      4       V^ 8X  g   Q hR# rr   )ro   r$   rh   r   r)   ri   s   &   r2   test_label04rv      s>    88QC=D]]4 FCc::qc?36M6r5   c                     V P                  ^.4      p\        P                  ! V4      w  r#\        W P	                  . RO4      4       V^8X  g   Q hR# )   N)r   r   r   r   r   rs   ri   s   &   r2   test_label05ry      s=    77A3<D]]4 FCc::o#>?6M6r5   c                     V P                  . RO4      p\        P                  ! V4      w  r#\        W P                  . RO4      4       V^8X  g   Q hR# )r   N)r   r   r   r   r   r   r   r   r   r   r      r)   r$   rh   r   ri   s   &   r2   test_label06r~      s>    ::()D]]4 FCc::.@#AB6M6r5   c                     V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      w  r#\        W P                  . RO. RO. RO. RO. RO. RO.4      4       V^ 8X  g   Q hR# r   Nr   r   r   r   r   r   r}   ri   s   &   r2   test_label07r      sp    ::))))))+ ,D ]]4 FCc::%7%7%7%7%7%7%9$: ; 6M6r5   c                     V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      w  r#\        W P                  . RO. RO. RO. R	O. R	O. R
O.4      4       V^8X  g   Q hR# )r   Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r|   r   r   r   r   r   r   r   r   r   r   r}   ri   s   &   r2   test_label08r      ss    ::))))))+ ,D ]]4 FCc::/A/A/A/A/A/A/C $D E 6M6r5   c                 6   V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! ^^4      pV P                  V4      p\        P                  ! W4      w  r4\	        W0P                  . RO. RO. RO. R	O. R	O. R
O.4      4       V^8X  g   Q hR# )r   Nr   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r|   r|   r   r)   r$   generate_binary_structurerh   r   r,   rj   structrk   rl   s   &    r2   test_label09r      s    ::))))))+ ,D ..q!4FZZF]]4(FCc::/A/A/A/A/A/A/C $D E 6M6r5   c           
         V P                  . RO. RO. RO. RO.4      p\        P                  ! ^^4      pV P                  V4      p\        P                  ! W4      w  r4\	        W0P                  . RO. RO. RO. RO.4      4       V^8X  g   Q hR# )r   Nr   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   s   &    r2   test_label10r      s    ::))))+ ,D ..q!4FZZF]]4(FCc::/A/A/A/A/C $D E 6M6r5   c           
      "   \          F  p\        W4      pV P                  . RO. RO. RO. RO. RO. RO.VR7      p\        P                  ! V4      w  rE. RO. RO. R	O. R
O. R
O. RO.pV P                  V4      p\        WF4       V^8X  d   K  Q h	  R# )r   r   Nr   r   r   r   r   r   r   r   r   r
   getattrr)   r$   rh   r   r,   typer   rj   rk   rl   expecteds   &      r2   test_label11r     s    !zz------/
 7<  = t$&&&&&&( ::h'!#0Avv# r5   z inplace output is numpy-specificc           
          \          F  p\        W4      pV P                  . RO. RO. RO. RO. RO. RO.VR7      p\        P                  ! W3R7      p. RO. R	O. R
O. RO. RO. RO.pV P                  V4      p\        W54       V^8X  d   K  Q h	  R# )r   r   outputNr   r   r   r   r   r   r   r   r   r   )r,   r   r   rj   rl   r   s   &     r2   test_label11_inplacer   %  s     !zz------/
 7<  = MM$,&&&&&&( ::h'!$1Avv# r5   c           	         \          F~  p\        W4      pV P                  . RO. RO. RO. RO. RO.VR7      p\        P                  ! V4      w  rE. RO. RO. RO. RO. RO.pV P                  V4      p\        WF4       V^8X  d   K~  Q h	  R# )r   r   N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   s   &      r2   test_label12r   <  s    !zz-----	/ 7<	  =
 t$&&&&&	(
 ::h'!#0Avv r5   c                 
   \          Fx  p\        W4      pV P                  . RO. RO. RO. RO.VR7      p\        P                  ! V4      w  rE. RO. RO. RO. RO.pV P                  V4      p\        WF4       V^8X  d   Kx  Q h	  R# )r   r   N)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   s   &      r2   test_label13r   P  s    !zz<<<<> !&	  '
 t$55557 ::h'!#0Avv r5   cupyzoutput=dtype is numpy-specific)r   
exceptionsr   c           	      $   V P                  ^.4      p\         Fs  p\        W4      pV P                  ^.VR7      p\        P
                  ! WR7      p\        VV P                  VP                  VP                  R7      4       V^8X  d   Ks  Q h	  R# rx   r   r   N)	rg   r
   r   ro   r$   rh   r   shaper   r,   rj   tr   r   rl   s   &     r2   test_label_output_typedr   c  sv     77A3<D1#U+MM$.!&"$''&,,fll'"K	MAvv r5   c           	         V P                  ^.4      p\         Fk  p\        W4      p\        P                  ! WR7      w  rE\        VV P                  VP                  VP                  R7      4       VP                  V8X  d   Kk  Q h	  R# )rx   r   r   N)rg   r
   r   r$   rh   r   r   r   r   s   &     r2   test_label_output_dtyper   q  sk     77A3<DMM$5	!&"$''&,,fll'"K	M||q    r5   z!in-place output is numpy-specificc                     V P                  ^.4      p\         FB  p\        W4      pV P                  ^
.VR7      p\	        \
        \        P                  WR7       KD  	  R# r   )rg   r
   r   ro   assert_raises
ValueErrorr$   rh   )r,   rj   r   r   r   s   &    r2   test_label_output_wrong_sizer   ~  sJ     77A3<D2$e,j'--E r5   c           	         \         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      p\         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      p\         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      pVP                  R4      pVP                  R	4      pVP                  R4      pV P                  V4      pV P                  V4      pV P                  V4      p^ p\        VP                  ^ ,          4       Fw  pWRR3,          p\        VP                  ^ ,          4       FI  pW'RR3,          p\        \        P                  ! Wh4      ^ ,          W4RR3,          RR7       V^,          pKK  	  Ky  	  R# )
rj   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txtNNNFcheck_dtypeN)   r   )r   r|   r|   )r!   loadtxtospathjoindirname__file__r#   r)   ranger   r   r$   rh   )	r,   rj   strelsresultsrr]   djss	   &        r2   test_label_structuring_elementsr     sl   ::bggll277??$-/ 0DZZ
!6+=? @Fjj
!6+>@ AG<<
#D^^J'Fooj)G::dDZZFjj!G	A4::a=!AqMv||A'A!QwAGMM!/2Gq!G4DRWXFA ( "r5   c                 P  a  RV 3R llp\         P                  ! \         P                  4      \         P                  ! R4      8w  d`   Rp\         P                  P	                  \         P
                  ! V4      4      P                  V4      pS P                  V4      pV! V4       R# R# )ffffff?c                    < W8  p\        VP                  4      p\        P                  ! WD4      pS	P	                  V4      p\        P
                  ! VV4      w  rg\        P                  ! V4      pR # )N)r`   r   r$   r   r)   rh   find_objects)
imgthreshsizemaskrankr   laco_r,   s
   &&&      r2   SEtest_ticket_742.<locals>.SE  sZ    |4::224>F#t%'  $r5   r]   N)r   r   )r|     r   )r!   r   intprandomrandprodr#   r)   )r,   r   r   as   f   r2   test_ticket_742r     sj    % 
xxBHHSM)IINN2775>*2259JJqM
1 *r5   c                    \         P                  ! R4      p^VR&   ^VR&   ^VR&   ^VR&   ^VR&   V P                  V4      p\        P                  ! WP                  R4      4      ^,          ^8X  g   Q hR# )	z/Github issue #3025 - improper merging of labelsN)<   i@  )r   :Ni  N)r   :i  NN)$   i  )#   i  )r   i  )r|   r|   )r!   ro   r)   r$   rh   rg   )r,   r   s   & r2   test_gh_issue_3025r     sp     	AAgJAgJAgJAgJAgJ


1A==GGFO,Q/1444r5   c                   \   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tRtV tR# )TestFindObjectsi  c                   \         P                  P                  ^
^
4      pVP                  V4      p\        P
                  ! VR8  4      w  r4VP                  VP                  VP                  39   g   Q h\        P                  ! V4       R# )
   r>   N)
r!   r   r   r)   r$   rh   r   int32r(   r   )r+   r,   
test_arrayrh   no_featuress   &&   r2   test_label_default_dtype(TestFindObjects.test_label_default_dtype  sg    YY^^B+
ZZ
+
$]]:+;<{{rxx2222U#r5   c                    VP                  . VP                  R 7      p\        P                  ! V4      pVR.8X  g   Q hR# )r   NrL   )rg   r(   r$   r   r+   r,   rj   rk   s   &&  r2   test_find_objects01#TestFindObjects.test_find_objects01  s6    wwrw*""4(rd{{r5   c                ~    VP                  . VP                  R 7      p\        P                  ! V4      pV. 8X  g   Q hR# r   Nro   r(   r$   r   r   s   &&  r2   test_find_objects02#TestFindObjects.test_find_objects02  s4    xx"((x+""4(byyr5   c                    VP                  ^.VP                  R7      p\        P                  ! V4      pV\	        ^ ^R4      3.8X  g   Q hR# r   r   Nrg   r(   r$   r   slicer   s   &&  r2   test_find_objects03#TestFindObjects.test_find_objects03  G    wws"((w+""4(aD)+,,,,r5   c                    VP                  ^.VP                  R7      p\        P                  ! V4      pV. 8X  g   Q hR# r   r   r   s   &&  r2   test_find_objects04#TestFindObjects.test_find_objects04  s6    xx288x,""4(byyr5   c                    VP                  ^.VP                  R7      p\        P                  ! V4      pV\	        ^ ^R4      3.8X  g   Q hR# )rx   r   Nr   r   s   &&  r2   test_find_objects05#TestFindObjects.test_find_objects05  r   r5   c                    VP                  . RO4      p\        P                  ! V4      pV\        ^ ^R4      3\        ^^R4      3\        ^^R4      3.8X  g   Q hR# )r   Nr{   r)   r$   r   r   r   s   &&  r2   test_find_objects06#TestFindObjects.test_find_objects06  sd    zz,-""4(aD)+aD)+aD)+- - 	- -r5   c           	         VP                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pV. 8X  g   Q hR# r   )r)   r$   r   r   s   &&  r2   test_find_objects07#TestFindObjects.test_find_objects07  sE    zz------/ 0 ""4(byyr5   c           
     R   VP                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pV\        ^ ^R4      \        ^ ^R4      3\        ^^R4      \        ^^R4      3\        ^^R4      \        ^ ^R4      3\        ^^R4      \        ^^R4      3.8X  g   Q hR# )r   Nr   r   r   r   r   r  r   s   &&  r2   test_find_objects08#TestFindObjects.test_find_objects08  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr5   c           
     "   VP                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pV\        ^ ^R4      \        ^ ^R4      3\        ^^R4      \        ^^R4      3R\        ^^R4      \        ^^R4      3.8X  g   Q hR# )r   Nr   r   r   r   r   r  r   s   &&  r2   test_find_objects09#TestFindObjects.test_find_objects09
  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr5   rL   N)rM   rN   rO   rP   r   r   r   r   r   r   r  r  r	  r  rR   rS   rT   s   @r2   r   r     s?     $---CC Cr5   r   c           	     `   V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V^ R7      p. ROp\        VP	                  4       4      V8X  g   Q hV Uu/ uF  qDV P                  W8H  4      bK  	  pp\        P                  ! V^ R7      pVP	                  4       VP	                  4       8X  g   Q hVP	                  4        FV  p\        W&,          4      \        WV,          4      8X  g   Q h\        W&,          WV,          4       F  w  rx\        Wx4       K  	  KX  	  R# u upi )	z Test dictionary keys and entries)ignore_valueNr   r   r   r   r   )r   r   r   )	r)   r$   value_indiceslistkeysnonzeror`   zipr   )	r,   rj   vi	true_keysktruevikeyvtrue_vs	   &        r2   test_value_indices01r    s     ::))))))+ ,D 
		t!	4BI	?i'''09:	1DI&&	F:			t!	4B779%%%wwy27|s6;////RWfk2IAA& 3 	 ;s   $D+c                    V P                  RV P                  R7      pRp\        \        VR7      ;_uu_ 4        \        P
                  ! V4       RRR4       R#   + '       g   i     R# ; i)zTest input checkingr   z(Parameter 'arr' must be an integer array)matchN)rx   r   )ro   float32r   r   r$   r  )r,   rj   msgs   &  r2   test_value_indices02r!  /  sI     88F"**8-D
4C	z	-	-d# 
.	-	-	-s   AA+	c                   R EFH  p\         P                  ! ^^.,          ^^.,          ,           ^^.,          ,           \         P                  R7      p\         P                  ! W!4      p\         P                  ! V4      pV P                  V4      p\
        P                  ! V4      p\        VP                  4       4      \        V4      8X  g   Q hV Uu. uF  p\        V4      NK  	  up F]  pV P                  W&8H  4      p\        WF,          4      \        V4      8X  g   Q h\        WF,          V4       F  w  r\        W4       K  	  K_  	  EKK  	  R# u upi )z2Test different input array shapes, from 1-D to 4-Dr   N))r   )   r   )r|   r|   r   )r|   r|   r   r   )r!   r)   r   r#   uniquer$   r  r  r  intr  r`   r  r   )
r,   r   r   trueKeysr  r-   r  trueNdxviktrue_viks
   &         r2   test_value_indices03r*  8  s     ;JJA3r1#vb!f,RXX>JJq 99Q<JJqM""1%BGGI$x.000"*+(Q#a&(+Ajj(Gru:W---!$RUG!4. "5 , ; ,s   Ec                     \          F@  p\        W4      pV P                  . VR 7      p\        P                  ! V4      pV^ 8X  d   K@  Q h	  R# r   )r
   r   r)   r$   sumr,   r   r   inputr   s   &    r2   
test_sum01r/  J  sB    !

2U
+U#{{	 r5   c                     \          FB  p\        W4      pV P                  ^ ^.VR7      p\        P                  ! V4      pV^ 8X  d   KB  Q h	  R# )r   r   N)r
   r   ro   r$   r,  r-  s   &    r2   
test_sum02r1  S  sF    !!Qu-U#{{	 r5   c                     \          FS  p\        W4      pV P                  . VR 7      p\        P                  ! V4      p\        W@P                  R4      RR7       KU  	  R# )r   r   Fcheck_0dN)r
   r   rg   r$   r,  r   r)   r-  s   &    r2   
test_sum03r5  \  sH    !%(U#FJJsOeD	 r5   c                     \          FU  p\        W4      pV P                  ^^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KW  	  R# )r   r         @Fr3  Nr
   r   r)   r$   r,  r   r-  s   &    r2   
test_sum04r9  e  sL    !

Aq6
/U#FJJsOeD	 r5   c                     \          FY  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       K[  	  R# )r   r   g      $@Fr3  Nr8  r-  s   &    r2   
test_sum05r;  n  sV    !

QFQF+5
9U#FJJt$4uE	 r5   c                     \         P                  ! . \        R 7      pV P                  V4      p\         FA  p\	        W4      pV P                  . VR 7      p\
        P                  ! WAR7      pV^ 8X  d   KA  Q h	  R# )r   r   Nr!   r)   boolr
   r   r$   r,  r,   r   r   r   r.  r   s   &     r2   
test_sum06rA  w  s`    ZZ$'FZZF!

2U
+U2{{	 r5   c                     \         P                  ! ^ ^.\        R7      pV P                  V4      p\         FC  p\        W4      pV P                  ^ ^.VR7      p\        P                  ! WAR7      pV^ 8X  d   KC  Q h	  R# )r   r   r=  N)	r!   rg   r?  r)   r
   r   ro   r$   r,  r@  s   &     r2   
test_sum07rC    sh    WWaV4(FZZF!!Qu-U2{{	 r5   c                     \         P                  ! ^^ .\        R7      pV P                  V4      p\         FC  p\	        W4      pV P                  ^^.VR7      p\
        P                  ! WAR7      pV^8X  d   KC  Q h	  R# r   r   r=  Nr>  r@  s   &     r2   
test_sum08rF    sh    ZZAd+FZZF!

Aq6
/U2{{	 r5   c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# )r   r   r=        @Fr3  N)r!   r)   r?  r
   r   r$   r,  r   r@  s   &     r2   
test_sum09rI    sw    ZZAd+FZZF!

QFQF+5
9U2FJJsOeD	 r5   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# r   r   r=         @Fr3  N)r!   r)   r?  r$   r,  r   r,   r   r.  r   s   &   r2   
test_sum10rN    so    ZZAd+FJJAA't4EZZFJJuE[[.F

3%@r5   c                    V P                  ^^.V P                  R7      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P
                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r         @Fr3  N)r)   int8r
   r   r$   r,  r   r@  s   &     r2   
test_sum11rR    st    ZZAbggZ.F!

QFQF+5
9U#$&FJJsOeD r5   c           	      8   V P                  ^^.^^..V P                  R7      p\         Fl  p\        W4      pV P                  ^^.^^..VR7      p\        P
                  ! WAV P                  . RO4      R7      p\        WPP                  . RO4      4       Kn  	  R# r   r   r   Nr      r   )rH  rH   g      @)r)   rQ  r
   r   r$   r,  r   r@  s   &     r2   
test_sum12rW    s    ZZ!Q!Q(Z8F!

QFQF+5
9UI9NO!&**_*EF	 r5   c           	         V P                  ^^.^^..V P                  R7      p\         F  p\        W4      pV P                  ^^.^^..VR7      p\        P
                  ! WAV P                  . RO4      R7      p\        P                  ! WAV P                  . RO4      R7      pV P                  WV8H  4      '       g   Q h\        W`P                  . RO4      4       K  	  R# rT  )	r)   rQ  r
   r   r$   r,  
sum_labelsallr   )r,   r   r   r   r.  
output_sumoutput_labelss   &      r2   test_sum_labelsr]    s    ZZ!Q!Q(Z8F!

QFQF+5
9[[RZZ	=RS
**

9(=? vvj12222!-O1LM r5   c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# rK  )r!   r)   r?  r
   r   r$   meanr   r@  s   &     r2   test_mean01r`    sw    ZZAd+FZZF!

QFQF+5
9e3FJJsOeD	 r5   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# r   r   r=  r   Fr3  N)r!   r)   r?  r$   r_  r   rM  s   &   r2   test_mean02rc    so    ZZAd+FJJAA't4EZZFJJuE\\%/F

3%@r5   c                     V P                  ^^.4      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r   r7  Fr3  N)r)   r
   r   r$   r_  r   r@  s   &     r2   test_mean03re    sl    ZZAF!

QFQF+5
9e$%'FJJsOeD r5   c                    V P                  ^^.^^..V P                  R7      p\        P                  ! RR7      ;_uu_ 4        \         F  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WAV P                  . RO4      R7      pV^ ,          R8X  g   Q hV^,          R8X  g   Q hV P                  V^,          4      '       d   K  Q h	  RRR4       R#   + '       g   i     R# ; i)	r   r   ignorerZ  r   rH        @NrU  )	r)   rQ  r!   errstater
   r   r$   r_  isnanr@  s   &     r2   test_mean04rl    s    ZZ!Q!Q(Z8F		"	"DB%EJJAA/uJ=E\\%(*

9(=?F !9###!9###88F1I&&&&  
#	"	"	"s   BC(C((C9	c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# rb  )r!   r)   r?  r
   r   r$   minimumr   r@  s   &     r2   test_minimum01ro    w    ZZAd+FZZF!

QFQF+5
96FJJsOeD	 r5   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# rb  )r!   r)   r?  r$   rn  r   rM  s   &   r2   test_minimum02rr    so    ZZAd+FJJAA't4EZZFJJuE__U2F

3%@r5   c                     V P                  ^^.4      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r   rL  Fr3  N)r)   r
   r   r$   rn  r   r@  s   &     r2   test_minimum03rt    sl    ZZAF!

QFQF+5
9'(*FJJsOeD r5   c           	          V P                  ^^.^^..4      p\         Fl  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WAV P                  . RO4      R7      p\        WPP                  . RO4      4       Kn  	  R# )r   r   r   Nr   r|   rV  )rL  rH  rH   )r)   r
   r   r$   rn  r   r@  s   &     r2   test_minimum04rw  $  }    ZZ!Q!Q()F!

QFQF+5
9')zz)'<>!&**_*EF r5   c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# )r   r   r=  r7  Fr3  N)r!   r)   r?  r
   r   r$   maximumr   r@  s   &     r2   test_maximum01r{  /  rp  r5   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# rb  )r!   r)   r?  r$   rz  r   rM  s   &   r2   test_maximum02r}  :  so    ZZAd+FJJAA't4EZZFJJuE__U2F

3%@r5   c                     V P                  ^^.4      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r   rH  Fr3  N)r)   r
   r   r$   rz  r   r@  s   &     r2   test_maximum03r  D  sl    ZZAF!

QFQF+5
9'(*FJJsOeD r5   c           	          V P                  ^^.^^..4      p\         Fl  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WAV P                  . RO4      R7      p\        WPP                  . RO4      4       Kn  	  R# )r   r   r   Nrv  )r7  rH  rH   )r)   r
   r   r$   rz  r   r@  s   &     r2   test_maximum04r  O  rx  r5   c                 f    V P                  . RO4      p\        P                  ! V4      R8X  g   Q hR# )r|   Nr   )r   )r)   r$   rz  )r,   r-   s   & r2   test_maximum05r  Z  s)     	

< A??1###r5   c                    V P                  . RO. RO. RO. RO.4      pV P                  . RO. RO. RO. R	O.4      p\        P                  ! WV P                  . R
O4      R7      p\        W0P                  . RO4      4       R# )r   r   Nr   r   r   r   rx   r|   r   r   r   r   r   r   r8   r|   r   r   r   r   r   r   r   r   r   r   r|   r|   r   r   )r   r   r|   )ri  rH  rP  )r)   r$   medianr   r,   r   r   r   s   &   r2   test_median01r  a  sl    


L   " 	#A ZZ%%%' (F ^^ABJJy4IJFfjj&ABr5   c                     V P                  . RO. RO. RO. RO.4      p\        P                  ! V4      p\        W P                  R4      RR7       R# )	r   r   Fr3  Nr  r  r  r  r)   r$   r  r   r,   r   r   s   &  r2   test_median02r  o  sB    


L   " 	#A ^^AF

3%@r5   c                     V P                  . RO. RO. RO. R	O.4      pV P                  . R
O. R
O. RO. RO.4      p\        P                  ! WR7      p\        W0P                  R4      RR7       R# )r   r=  r7  Fr3  Nr  r  r  r  r  r  r  r  r  s   &   r2   test_median03r  y  sb    


L   " 	#A ZZ%%%' (F ^^A-F

3%@r5   c                    \         P                  ! ^^.\        R7      pV P                  V4      p\        P                  ! WP                  R4      V P                  ^.4      R7      p\        W P                  R.4      4       R# )r   r   r   r   Nr   )r!   r)   r?  r$   r  rg   r   r  s   &  r2   test_median_gh12836_boolr    sZ     	

Aq6&A


1A^^Aggdm2::qc?KFfjj#&78r5   c                     V P                  ^A^F.V P                  R7      p\        P                  ! WP	                  R4      V P                  ^.4      R7      p\        W P                  R.4      4       R# )A   r   r   g     P@Nr  )r)   rQ  r$   r  rg   r   r  s   &  r2   test_median_no_int_overflowr    sS     	

B8277
+A^^Aggdm2::qc?KFfjj$&89r5   c           
         \         P                  ! R R7      ;_uu_ 4        \         F  p\        W4      pV P	                  . VR7      p\
        P                  ! 4       ;_uu_ 4        \
        P                  ! R R\        4       \        P                  ! V4      pRRR4       V P                  X4      '       d   K  Q h	  RRR4       R#   + '       g   i     L7; i  + '       g   i     R# ; irg  rh  r   zMean of empty sliceN)r!   rj  r
   r   r)   warningscatch_warningsfilterwarningsRuntimeWarningr$   variancerk  r-  s   &    r2   test_variance01r    s    		"	"DB%EJJrJ/E((**''2GX ))%0 + 88F####  
#	" +*	 
#	"	"*   AC%3CC9CCCC+	c                     \          FT  p\        W4      pV P                  ^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KV  	  R# r   r   rH   Fr3  Nr
   r   r)   r$   r  r   r-  s   &    r2   test_variance02r    sL    !

A3e
,!!%(FJJsOeD	 r5   c                     \          FU  p\        W4      pV P                  ^^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KW  	  R# r   r   r   Fr3  Nr  r-  s   &    r2   test_variance03r    sN    !

Aq6
/!!%(FJJsOeD	 r5   c                     \         P                  ! ^^ .\        R7      pV P                  V4      p\        P                  ! V4      p\        W P                  R4      RR7       R# )r   r   g      ?Fr3  N)r!   r)   r?  r$   r  r   r,   r.  r   s   &  r2   test_variance04r    sG    JJ1vT*EJJuEe$F

4 05Ar5   c                     V P                  . RO4      p\         FV  p\        W4      pV P                  . ROVR7      p\        P                  ! WA^4      p\        WPP                  R4      RR7       KX  	  R# r   r   r   Fr3  N)r   r   r|   )r   r|   rV  )r)   r
   r   r$   r  r   r@  s   &     r2   test_variance05r    sZ    ZZ	"F!

9E
2!!%3FJJsOeD r5   c                    V P                  . RO4      p\        P                  ! RR7      ;_uu_ 4        \         Fg  p\	        W4      pV P                  . ROVR7      p\
        P                  ! WAV P                  . RO4      4      p\        WPP                  . RO4      4       Ki  	  RRR4       R#   + '       g   i     R# ; i	r   rg  rh  r   N)r   r   r|   r|   r   )r   r|   rV  r   rV  )r   r|   r   )r   r   rH   )r)   r!   rj  r
   r   r$   r  r   r@  s   &     r2   test_variance06r    s    ZZ(F		"	"DB%EJJ/uJ=E%%eRZZ	5JKF%fjj.IJ	  
#	"	"	"   A2B//C 	c           
         \         P                  ! R R7      ;_uu_ 4        \         F  p\        W4      pV P	                  . VR7      p\
        P                  ! 4       ;_uu_ 4        \
        P                  ! R R\        4       \        P                  ! V4      pRRR4       V P                  X4      '       d   K  Q h	  RRR4       R#   + '       g   i     L7; i  + '       g   i     R# ; ir  )r!   rj  r
   r   r)   r  r  r  r  r$   standard_deviationrk  r-  s   &    r2   test_standard_deviation01r    s    		"	"DB%EJJrJ/E((**''2GX 33E: + 88F####  
#	" +*	 
#	"	"r  c                     \          FT  p\        W4      pV P                  ^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KV  	  R# r  r
   r   r)   r$   r  r   r-  s   &    r2   test_standard_deviation02r    sL    !

A3e
,++E2FJJsOeD	 r5   c                     \          FU  p\        W4      pV P                  ^^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KW  	  R# r  r  r-  s   &    r2   test_standard_deviation03r    sN    !

Aq6
/++E2FJJsOeD	 r5   c                     \         P                  ! ^^ .\        R7      pV P                  V4      p\        P                  ! V4      p\        W P                  R4      RR7       R# )r   r   r>   Fr3  N)r!   r)   r?  r$   r  r   r  s   &  r2   test_standard_deviation04r    sF    JJ1vT*EJJuE''.F

3%@r5   c                     V P                  . RO4      p\         FV  p\        W4      pV P                  . ROVR7      p\        P                  ! WA^4      p\        WPP                  R4      RR7       KX  	  R# r  )r)   r
   r   r$   r  r   r@  s   &     r2   test_standard_deviation05r    sZ    ZZ	"F!

9E
2++E1=FJJsOeD	 r5   c                    V P                  . RO4      p\        P                  ! RR7      ;_uu_ 4        \         Fg  p\	        W4      pV P                  . ROVR7      p\
        P                  ! WAV P                  . RO4      4      p\        WPP                  . RO4      4       Ki  	  RRR4       R#   + '       g   i     R# ; ir  )r)   r!   rj  r
   r   r$   r  r   r@  s   &     r2   test_standard_deviation06r    s    ZZ(F		"	"DB%EJJ/uJ=E//rzz)4F &fjj.IJ  
#	"	"	"r  c           
         V P                  ^.4      p\        P                  ! RR7      ;_uu_ 4        \         F  p\	        V 4      '       d   VR8X  d   \
        P                  ! R4       \        W4      pV P                  R.VR7      p\        P                  ! WAV P                  ^.4      4      p\        WPP                  ^ .4      4       K  	  RRR4       R#   + '       g   i     R# ; i)r   rg  rh  uint8z8value cannot be converted to type uint8 without overflowr   Ngl `y)r)   r!   rj  r
   r   pytestxfailr   r$   r  r   r@  s   &     r2   test_standard_deviation07r    s    ZZ_F		"	"D|| 0 1B%EJJ}EJ:E//rzz1#OF%fjj!o>  
#	"	"	"s   BCC*	c                    \         P                  ! ^^ .\        R7      pV P                  V4      p\         FG  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      pVR8X  d   KG  Q h	  R# )r   r   r=  Nr   r   )r!   r)   r?  r
   r   r$   minimum_positionr@  s   &     r2   test_minimum_position01r    su    ZZAd+FZZF!

QFQF+5
9))%?	 r5   c                     \          FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! V4      pVR8X  d   KI  Q h	  R# rx   r   Nrx   r   r   rx   r|   r   r   r   r   rx   r   r   r   r   )r
   r   r)   r$   r  r-  s   &    r2   test_minimum_position02r  *  Y    !

L((*16  8 ))%0 r5   c                     \         P                  ! . RO. RO. RO.\        R7      pV P                  V4      p\        P                  ! V4      pVR8X  g   Q hR# r  r!   r)   r?  r$   r  r  s   &  r2   test_minimum_position03r  5  N    JJ$$&-13E JJuE%%e,FVr5   c                     \         P                  ! . RO. RO. RO.\        R7      pV P                  V4      p\        P                  ! V4      pVR8X  g   Q hR# )rx   r   Nr  )r|   r   r   r   r  r  r  r  s   &  r2   test_minimum_position04r  ?  r  r5   c                     V P                  . RO4      p\         FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA4      pVR8X  d   KI  Q h	  R# )r   r   Nr   r   r   r   r  r  )r   rx   r   r|   )r   r   r)   r
   r   r$   r  r@  s   &     r2   test_minimum_position05r  I  g    ZZ%F!

L((*16  8 ))%8 r5   c                     V P                  . RO4      p\         FJ  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA^4      pVR8X  d   KJ  Q h	  R# )r   r   Nr   r   r|   r   r  r  r  r   r   r  r@  s   &     r2   test_minimum_position06r  U  i    ZZ%F!

L((*16  8 ))%; r5   c           	      $   V P                  . RO4      p\         Fr  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  ^^.4      4      pV^ ,          R8X  g   Q hV^,          R8X  d   Kr  Q h	  R# )	r   r   Nr  r  r  r  r  r  r  r@  s   &     r2   test_minimum_position07r  a      ZZ%F!

L((*16  8 ))%*,**aV*<>ayF"""ayF""" r5   c                    \         P                  ! ^^ .\        R7      pV P                  V4      p\         FH  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! VVR7      pVR8X  d   KH  Q h	  R# )r   r   r=  Nr   r   )r!   r)   r?  r
   r   r$   maximum_positionr@  s   &     r2   test_maximum_position01r  o  sz    ZZAd+FZZF!

QFQF+5
9))%179 r5   c                     \          FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! V4      pVR8X  d   KI  Q h	  R# )rx   r   Nr  r|   r   rV  r   r  r  )r
   r   r)   r$   r  r-  s   &    r2   test_maximum_position02r  {  r  r5   c                     \         P                  ! . RO. RO. RO.\        R7      pV P                  V4      p\        P                  ! V4      pVR8X  g   Q hR# )rx   r   Nr  r  r  r  )r!   r)   r?  r$   r  r  s   &  r2   test_maximum_position03r    r  r5   c                     V P                  . RO4      p\         FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA4      pVR8X  d   KI  Q h	  R# )r   r   Nr  r  r  r  r   r   r)   r
   r   r$   r  r@  s   &     r2   test_maximum_position04r    r  r5   c                     V P                  . RO4      p\         FJ  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA^4      pVR8X  d   KJ  Q h	  R# )r   r   Nr  r  r  r  r  r  r@  s   &     r2   test_maximum_position05r    r  r5   c           	      $   V P                  . RO4      p\         Fr  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  ^^.4      4      pV^ ,          R8X  g   Q hV^,          R8X  d   Kr  Q h	  R# )	r   r   Nr  r  r  r  r  r  r  r@  s   &     r2   test_maximum_position06r    r  r5   c           	      $   V P                  . RO4      p\         Fr  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  R R.4      4      pV^ ,          R8X  g   Q hV^,          R	8X  d   Kr  Q h	  R# )
r         @r   N)r   ri  rH   r  r  r  r  r  )r   r|   r  r@  s   &     r2   test_maximum_position07r    s     ZZ,-F!

L((*16  8 ))%*,**c3Z*@BayF"""ayF""" r5   c                    \         P                  ! ^^ .\        R7      pV P                  V4      p\         F  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\
        P                  ! WAR7      p\
        P                  ! WAR7      p\
        P                  ! VVR7      p\
        P                  ! VVR7      p	WVWxV	38X  d   K  Q h	  R# rE  )r!   r)   r?  r
   r   r$   extremarn  rz  r  r  
r,   r   r   r   r.  output1output2output3output4output5s
   &         r2   test_extrema01r    s     ZZAd+FZZF!

QFQF+5
9//%7//%7//%7**528:**528:Gg>>>> r5   c                    V P                  ^^.4      p\         F  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        P
                  ! WA^R7      p\        P                  ! WA^R7      p\        P                  ! VV^R7      p\        P                  ! VV^R7      p	WVWxV	38X  d   K  Q h	  R# )r   r   r   N)	r)   r
   r   r$   r  rn  rz  r  r  r  s
   &         r2   test_extrema02r    s     ZZAF!

QFQF+5
9//%()+//%()+//%()+**528C**528CGg>>>> r5   c           	      $   V P                  ^^.^^..4      p\         EFm  p\        V 4      '       d   VR9   d   \        P                  ! R4       \        W4      pV P                  ^^.^^..VR7      p\        P                  ! VVV P                  . RO4      R7      p\        P                  ! VVV P                  . RO4      R7      p\        P                  ! WAV P                  . RO4      R7      p\        P                  ! VVV P                  . RO4      R7      p\        P                  ! VVV P                  . RO4      R7      p	\        V^ ,          V4       \        V^,          V4       V^,          V8X  g   Q hV^,          V	8X  d   EKn  Q h	  R# )r   /https://github.com/pytorch/pytorch/issues/58734r   r   Nuint16uint32uint64rv  r)   r
   r   r  r  r   r$   r  rn  rz  r  r  r   r  s
   &         r2   test_extrema03r    sX    ZZ!Q!Q()FB<<D$BB\\KL!

QFQF+5
9//%)/(*

9(=? //%)/(*

9(=? //%(*

9(=?**52813I1FH **52813I1FH 	"'!*g6!'!*g6qzW$$$qzW$$$/ r5   c           	         V P                  . RO4      p\         EFg  p\        V 4      '       d   VR9   d   \        P                  ! R4       \        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p	\        V^ ,          V4       \        V^,          V4       V^,          V8X  g   Q hV^,          V	8X  d   EKh  Q h	  R# )	r   r	  r   Nr  r
  r  r  r  r  r  s
   &         r2   test_extrema04r  	  sF    ZZ%FB<<D$BB\\KL!

L((*16  8 //%QF1CD//%QF1CD//%QF1CD**5+-::q!f+=?**5+-::q!f+=?!'!*g6!'!*g6qzW$$$qzW$$$% r5   c                     Rp\          FE  p\        W4      pV P                  ^^ .^ ^ ..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )rH   r   N)rH   rH   r
   r   r)   r$   center_of_massr,   r   r   r   r.  r   s   &     r2   test_center_of_mass01r  "  V    H!

QFQF+5
9''.!!!	 r5   c                     Rp\          FE  p\        W4      pV P                  ^ ^ .^^ ..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )r   r   Nr  r  r  s   &     r2   test_center_of_mass02r  ,  V    H!

QFQF+5
9''.!!!	 r5   c                     Rp\          FE  p\        W4      pV P                  ^ ^.^ ^ ..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )r   r   Nr  r  r  s   &     r2   test_center_of_mass03r  6  r  r5   c                     Rp\          FE  p\        W4      pV P                  ^ ^ .^ ^..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )r   r   Nr  r  r  s   &     r2   test_center_of_mass04r  @  r  r5   c                     Rp\          FE  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# r>   r   N)r>   r>   r  r  s   &     r2   test_center_of_mass05r!  J  r  r5   c                     Rp\         P                  ! ^^.^^..\        R7      pV P                  V4      p\        P                  ! V4      pW18X  g   Q hR# r   )r!   r)   r?  r$   r  r,   r   r.  r   s   &   r2   test_center_of_mass06r$  T  sN    HJJAA't4EJJuE##E*Fr5   c                     V P                  ^^ .4      pRp\        P                   ! ^^.^^..\        R7      pV P                  V4      p\        P                  ! W14      pWB8X  g   Q hR# )r   r   Nr>   rH   r)   r!   r?  r$   r  r,   r   r   r.  r   s   &    r2   test_center_of_mass07r)  ]  s`    ZZAFHJJAA't4EJJuE##E2Fr5   c                     V P                  ^^.4      pRp\        P                   ! ^^.^^..\        R7      pV P                  V4      p\        P                  ! W1^4      pWB8X  g   Q hR# )r   r   Nr>   r   r'  r(  s   &    r2   test_center_of_mass08r,  g  sb    ZZAFHJJAA't4EJJuE##E15Fr5   c                 p   V P                  R4      pV P                  RR.V P                  R7      p\        P                   ! ^^.^^..\        R7      pV P                  V4      p\        P
                  ! W1V P                  ^^.4      4      p\        V P                  V4      V P                  V4      4       R# )r   r   Nr  r&  r+  )r)   float64r!   r?  r$   r  r   r(  s   &    r2   test_center_of_mass09r/  q  s    ZZFzz:z2"**zEHJJAA't4EJJuE##E2::q!f3EFFBJJv&

8(<=r5   c                     V P                  ^
4      pV P                  ^
4      p\        P                  ! V^ ^
^
4      p\	        W14       R# )r   N)rg   aranger$   	histogramr   r#  s   &   r2   test_histogram01r3  {  s:    wwr{HIIbMEuaR0Ff/r5   c                     V P                  . RO4      pV P                  . RO4      pV P                  . RO4      p\        P                  ! V^ ^^V^4      p\        WB4       R# )r   N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r|   r   r|   r|   r|   r|   r)   r$   r2  r   r(  s   &    r2   test_histogram02r6    sP    ZZ01Fzz/*HJJ/0EuaAvq9Ff/r5   zobject arraysc                     V P                  . RO4      pV P                  . RO4      pV P                  . RO4      pV P                  . RO4      p\        P                  ! V^ ^^VR4      p\        V^ ,          V4       \        V^,          V4       R# )r   N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r|   r   )r   r   r|   r   r|   rx   r|   r|   r  r5  )r,   r   	expected1	expected2r.  r   s   &     r2   test_histogram03r:    st     ZZ01F

?+I

?+IJJ/0EuaAvv>FfQi3fQi3r5   c           
      0   V P                  . R
O. RO. RO.4      pV P                  . RO. RO. RO.4      p\        P                  ! WV P                  ^^.4      R7      p\        W0P                  RR.V P                  R7      4       \        P
                  ! WV P                  ^^.4      R7      p\        W@P                  RR.V P                  R7      4       \        P                  ! WV P                  ^^.4      R7      p\        WPP                  V P                  RR.V P                  R7      4      4       \        P                  ! WV P                  ^^.4      R7      p\        W`P                  RR.V P                  R7      4       \        P                  ! WV P                  ^^.4      R7      p\        WpP                  ^^.4      RR7       \        P                  ! WV P                  ^^.4      R7      p\        WP                  ^	^.4      RR7       R	# )rx   r   rY   rH  r   ri  r   Fr   N)rx   r   r   r   r   )rV  r8   r   r   r   )r   r   r   r|   rx   )r   r   r   r   r   )r   r   r   r   r   )r)   r$   r_  r   r.  r  r  r   sqrtr  rn  rz  )	r,   r   lblr_  varstdmedminmaxs	   &        r2   test_stat_funcs_2drC    s    	

O_oFGA
**oH
IC<<RZZA-?@DD**c3Zrzz*BC


1

Aq60B
CCCS#JbjjAB

$
$Q"**aV:L
MCc772::sCj

:+S#TU
..bjj!Q.@
ACCS#JbjjAB
//!rzz1a&/A
BCCQF+?
//!rzz1a&/A
BCCQF+?r5   no watershed_ift on CuPyr   c                      a  ] tR tRt o R tR tR tR tR tR t	]
! RR	R
7      R 4       t]
! RRR7      R 4       t]
! RRR7      R 4       tRtV tR# )TestWatershedIfti  c                   VP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. RO. RO. RO. RO. RO. R
O. R
O.p\        WQP                  V4      4       R# )r   r   	structureNr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   r  rQ  r$   watershed_iftr   r+   r,   rj   markersrJ  rk   r   s   &&     r2   test_watershed_ift01%TestWatershedIft.test_watershed_ift01  s    zz000000002 :<  C **433333335 =?GG  E **i'') *	 ##DYG0+++++002 	"#zz(';<r5   c                n   VP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      p\        P                  ! W#4      p. RO. R	O. R
O. R
O. R
O. R	O. RO. RO.p\        WAP                  V4      4       R# )r   r   NrK  rL  rM  rN  rO  rQ  )r   r   r   r   r   r   r   rR  rS  r+   r,   rj   rV  rk   r   s   &&    r2   test_watershed_ift02%TestWatershedIft.test_watershed_ift02  s    zz000000002 :<  C **433333335 =?GG  E ##D20-+++-002 	"#zz(';<r5   c           
     \   VP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      p\        P                  ! W#4      p. RO. R	O. R
O. R
O. R
O. R	O. RO.p\        WAP                  V4      4       R# )r   r   NrK  rL  r   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   rQ  )r   r   r   r   r|   r   r   r   r   r   r|   r|   r|   r   rS  rZ  s   &&    r2   test_watershed_ift03%TestWatershedIft.test_watershed_ift03  s    zz00000002 :<  C **33333346 >@WW  F ##D20.+++.02 	"#zz(';<r5   c           
        VP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. RO. RO. RO. RO. RO. R
O.p\        WQP                  V4      4       R# )r   r   rI  NrK  rL  r^  r_  r`  rP  rQ  ra  rS  rU  s   &&     r2   test_watershed_ift04%TestWatershedIft.test_watershed_ift04
  s    zz00000002 :<  C **33333346 $&77  , **i'') *	 ##DYG0+++++02 	"#zz(';<r5   c           
        VP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. RO. RO. RO. RO. RO. R
O.p\        WQP                  V4      4       R# )r   r   rI  NrK  rL  r^  )r   r   r|   r   r   r   r   r`  rP  rQ  )r   r|   r|   r   r   r   r   rS  rU  s   &&     r2   test_watershed_ift05%TestWatershedIft.test_watershed_ift05(  s    zz00000002 :<  C **33333346 $&77  , JJ	 ) ) + ,	 ##DYG0+++++02 	"#zz(';<r5   c           	        VP                  . RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. R
O. R
O. R
O. RO. RO.p\        WQP                  V4      4       R# )r   r   rI  NrM  rL  rK  rN  rO  rP  rR  rQ  rS  rU  s   &&     r2   test_watershed_ift06%TestWatershedIft.test_watershed_ift06E  s    zz0000002
 :<  C **4333335
 =?GG  E **i'') *	 ##DYG++++002 	"#zz(';<r5   Tzinplace ops are numpy-specificr   c           	     ~   Rp\         P                  ! V\         P                  R7      pVP                  4       p\         P                  ! . RO. RO. RO. RO. RO. RO.\         P                  R7      VR&   VP	                  V4      pVP	                  . R	O. R
O. RO. RO. RO. RO.VP
                  R7      pVP                  W!P                  R7      pVP                  pVP	                  . RO. RO. RO.4      p\        P                  ! W4VVR7       . RO. RO. RO. RO. RO. RO.p\        WQP	                  V4      4       R# )r   r   .)rJ  r   N)r   r   rM  rL  rK  rN  rO  rP  rR  rQ  )r!   ro   r  	transposer)   rQ  int16Tr$   rT  r   )r+   r,   r   rj   rV  rk   rJ  r   s   &&      r2   test_watershed_ift07%TestWatershedIft.test_watershed_ift07^  s   xxRXX.~~JJ 5 5 5 5 5 5 7
 ?AhhHS	 zz$**4333335
 =?GG  E hhuHHh-ee**i'') *	 	dy%(	*++++002 	"#zz(';<r5   r   rD  rE  c                   VP                  R ^ .^ ^ ..VP                  R7      pVP                  ^^ .^ ^ ..VP                  R7      p\        P                  ! W#4      p^^.^^..p\        WAP                  V4      4       R# )   r   N)r)   r  rQ  r$   rT  r   rZ  s   &&    r2   test_watershed_ift08%TestWatershedIft.test_watershed_ift08  s     zzC8q6#*,))  5**q!f !f&-/WW  6##D2FF!#zz(';<r5   c                L   VP                  VP                  VP                  4      P                  ^ .^ ^ ..VP                  R7      pVP                  ^^ .^ ^ ..VP                  R7      p\
        P                  ! W#4      p^^.^^..p\        WAP                  V4      RR7       R# )r   r   Fr   N)r)   iinfor  rB  rQ  r$   rT  r   rZ  s   &&    r2   test_watershed_ift09%TestWatershedIft.test_watershed_ift09  s     zzBHHRYY/33Q7q6#*,))  5**q!f !f&-/WW  6##D2FFZZ1uEr5   rL   N)rM   rN   rO   rP   rW  r[  rb  re  rh  rk  skip_xp_backendsrq  ru  ry  rR   rS   rT   s   @r2   rG  rG    s}     =>=8=2=<=:=2 d+KL= M=@ f%?@	= A	= f%?@	F A	Fr5   rG  )r   dtc                     \         P                  P                  ^{4      p^pVP                  ^ VRR7      P	                  V R7      p\
        P                  ! V4      p\        VP                  4       4      V8X  g   Q hR# ){   )lowhighr   r   N)r      )	r!   r   default_rngintegersastyper$   r  r`   r  )r|  r,   rngmax_valimageval_idxs   &&    r2   test_gh_19423r    sh     ))


$CGLLQW8L<CC"CME##E*Gw||~')))r5   )r   os.pathr  numpyr!   scipy._lib._array_apir   r   r   r   r   r   r  r	   r   scipy.ndimager$    r
   markr{  name__version__r'   r   rW   rh   rm   rp   rt   rv   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r*  r,  r/  r1  r5  r9  r;  rA  rC  rF  rI  rN  rR  rW  r]  r_  r`  rc  re  rl  rn  ro  rr  rt  rw  rz  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r)  r,  r/  r2  r3  r6  r:  rC  rT  rG  parametrizeintcuintcr  rL   r5   r2   <module>r     s!   	      *  ;;// WW_==#)=  $'IJO= O= KO=d $'IJ#/ #/ K#/L 7==! " 7==! " 7==! " 7==! " 7==! " 7==! " 7==! "$ 7==! "" 7==! "& 7==! " 7==! "* $'IJ7==! " K* 7==! "& 7==! "$ $F89;7==! "; $F89;7==!! ";! $'JK7==!F " LF 7==! ". 7=='"6"67 8$ 7==!	5 "	5 7=='"6"67TC TC 8TCn 7(()' *', 7(()$ *$ 7(()/ */" 7;;   7;;   7;;E  E 7;;E  E 7;;F  F 7;;   7;;   7;;   7;;E  E 7;;A  A 7;;E  E 7;;G  G 7;;
N  
N 7<< E !E 7<< A !A 7<< E !E 7<< ' !' 7??#E $E 7??#A $A 7??#E $E 7??#G $G 7??#E $E 7??#A $A 7??#E $E 7??#G $G 7??#$ $$ 7>>"
C #
C 7>>"A #A 7>>"
A #
A 7>>"9 #9 7>>": #: 7##$$ %$ 7##$E %E 7##$E %E 7##$B %B 7##$E %E 7##$K %K 7--.$ /$ 7--.E /E 7--.E /E 7--.A /A 7--.E /E 7--.	K /	K 7--.
? /
? 7++,  -  7++,  -  7++, - 7++, - 7++,  -  7++,  -  7++,
# -
# 7++,  -  7++,  -  7++, - 7++,  -  7++,  -  7++,
# -
# 7++,# -# 7??GOOW__++W-E-EG?G?  7??GOOW__++W-E-EG?G?$ 7??GOOW__++W-E-EG%G%8 7??GOOW__++W-E-EG%G%. 7))*" +" 7))*" +" 7))*" +" 7))*" +" 7))*" +" 7))* + 7))* + 7))* + 7))*> +> 7$$%0 &0 7$$%0 &0 $77$$%	4 & 8	4 7<<!1!173M3M>>7??GOOE@E@. &!;<7(()aF aF * =aFH $237(()* * 4  *r5   