
    PhB                     n   d dl mZ d dlZd dlZd dlmZmZmZ d dl	m
Z d dlmZmZmZmZmZmZmZ d dlZd dlmZ d dl	Z	 ej0                  g dg dg d	g d
g dge      Z ej0                  g dg dg dg dg dge      Zed kD  j9                  e      Zg dg dej<                  ej<                  d ej<                  ej<                  gg dg dgZg dg dgZ ejB                  jE                  g dg dg dffd      Z#d d dej<                  ej<                  gdd dej<                  ej<                  gddd ej<                  ej<                  gej<                  ej<                  ej<                  d dgej<                  ej<                  ej<                  dd ggZ$ejB                  jE                  g d g d!g d"ffd      Z%d d dej<                  ej<                  gd d dej<                  ej<                  gddd ej<                  ej<                  gej<                  ej<                  ej<                  d dgej<                  ej<                  ej<                  dd ggZ& ej0                  g d#g d$g d%g d&g d'ge      Z' ej0                  g dg dg d(g d)g d*ge      Z( ej0                  d ej<                  ej<                  ddgej<                  d ej<                  dej<                  gej<                  ej<                  d ej<                  ej<                  gddej<                  d dgdej<                  ej<                  dd gge      Z) ejT                  de       ejV                  d+      z
  Z,ej<                  e,e,d kD  <    ej0                  g d,g d-g d.g d/g d0ge      Z- ej0                  g d1g d2g d3ge      Z. ej0                  d ej<                  ej<                  gd4d ej<                  gg d5ge      Z/g d6Z0d7 Z1d8 Z2d9 Z3d: Z4d; Z5e	jl                  jo                  d<d=efd>e(ff      e	jl                  jo                  d?g d@d dAgddAgd d gf      dB               Z8e	jl                  jo                  dCdD      dE        Z9dF Z:dG Z;dH Z<dI Z=dJ Z>dK Z?dL Z@e	jl                  jo                  dMg dN      dO        ZAdP ZBdQ ZCe	jl                  jo                  dMe0      dR        ZDdS ZEdT ZFdU ZGdV ZHdW ZIdX ZJdY ZKe	jl                  jo                  dZd[      e	jl                  jo                  d\d[      e	jl                  jo                  d]d[      e	jl                  jo                  d^ej                  ej                  f      e	jl                  jo                  d?ddgf      d_                                    ZNy)`    )StringION)assert_array_almost_equalassert_array_equalassert_allclose)raises)shortest_pathdijkstrajohnsonbellman_fordconstruct_dist_matrixyenNegativeCycleError)mmread)r      r   r   r   )r   r   r         r   r   r   r   r   )   r   r   r   r   )r   r   r   r   r   dtype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   r   r   r   )r   r   r   r   r   )r   r   shaper   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   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   )autoFWDBFJc                      ddt         j                  g} t        t        t        g}d }t        | |      D ]  \  }} |||        y )Nr   r   c                 @    t        t        d|       }t        ||       y )NF)directedlimit)r	   undirected_Gr   )r-   resultSPs      xC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\scipy/sparse/csgraph/tests/test_shortest_path.pycheckz"test_dijkstra_limit.<locals>.checkl   s    lU%@!"f-    )npinfundirected_SP_limit_0undirected_SP_limit_2undirected_SPzip)limitsresultsr2   r-   r/   s        r1   test_dijkstra_limitr<   f   sG    BFF^F$$G. VW-veV .r3   c                  0    d } t         D ]
  } | |        y )Nc                 J    t        t        | dd      }t        |t               y NTFmethodr,   	overwriter   
directed_Gr   directed_SPrA   r0   s     r1   r2   ztest_directed.<locals>.checku       :ft%*,!"k2r3   methodsr2   rA   s     r1   test_directedrK   t   s    3
 f r3   c                  @    d } t         D ]  }dD ]  } | ||         y )Nc                     |r$t        t        | dd      }t        |t               y t        t        | dd      }t        |t               y NFr@   T)r   rD   r   r8   r.   rA   directed_inSP1SP2s       r1   r2   ztest_undirected.<locals>.check   s?    
6E*/1C%c=9Vd*/1C%c=9r3   TFrH   r2   rA   rP   s      r1   test_undirectedrU   ~   s'    : (K&+& ) r3   c                  0    d } t         D ]
  } | |        y )Nc                 J    t        t        | dd      }t        |t               y r?   )r   directed_sparse_zero_Gr   directed_sparse_zero_SPrF   s     r1   r2   z(test_directed_sparse_zero.<locals>.check   s!    1&4%*,!"&=>r3   rH   rJ   s     r1   test_directed_sparse_zerorZ      s    ?
 f r3   c                  @    d } t         D ]  }dD ]  } | ||         y )Nc                     |r$t        t        | dd      }t        |t               y t        t        | dd      }t        |t               y rN   )r   rX   r   undirected_sparse_zero_SPundirected_sparse_zero_GrO   s       r1   r2   z*test_undirected_sparse_zero.<locals>.check   sE     6vPU*/1C%c+DE 8RV*/1C%c+DEr3   rS   rH   rT   s      r1   test_undirected_sparse_zeror_      s(    F (K&+& ) r3   zdirected, SP_ansTFindices)r   r   r   r   c                 8   t        j                  |      }t        j                  |t         j                        }|t        j                  ||d d f   d         }t        j                  |j
                  d   |j                        }t        |j
                  d         D ]  }|||   |f   ||<    d|t        j                  |      <   t        t        | |dd      \  }}}t        ||       t        ||       t        t        | |dd      }t        ||       y )Nr   r   )axisr    Tr,   r`   min_onlyreturn_predecessorsF)r4   arrayint64argminzerosr"   r   rangeisinfr	   rD   r   r   )	r,   SP_ansr`   min_ind_ans	min_d_anskr0   predsourcess	            r1   test_dijkstra_indices_min_onlyrr      s    
 XXfFhhwbhh/G"))F7A:$6Q?@Ka&,,7I6<<?#k!na/0	! $',K#$ *2)0*.59	;Bg
 b),{G,	*#!&+	
-B
 b),r3   n)
   d   i  c                    t         j                  j                  d      }t        j                  j                  | | fdd|t         j                        }|j                  t        j                  | t         j                               t        j                  |       }|j                  |       |d t        | dz         }t        |d|dd      \  }}}t        |       D ]'  }||   }	||   }
|	d	k7  s||	   |
k(  sJ ||	   }	|	d	k7  r) y )
Nl   	X/ g      ?lil)densityformatrngr   r   g?Trc   r    )r4   randomdefault_rngscipysparserandom_arrayfloat64setdiagri   bool_arangeshuffleintr	   rj   )rs   rz   datavr`   dsrp   rq   ro   pss              r1   test_dijkstra_min_only_randomr      s    
))

 3
4C<<$$aVS),BJJ % @DLL!288,-
		!AKKN
QrTmG *.)0*.59	;Bg
 1XGAJ5j1:?"?QA 5j r3   c                      d} g d}g d}g d}t         j                  j                  |||f| | f      }t        |dd       y )Nrt   )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   )g2}ƅ?gMg'?gx@e?gN]?ghn?g16T?g|\?g%e?gh o?g-?gn\?g$~?g<,Ԛ?ga?ge1?g{?gbE?g?r!   Tr,   re   )r}   r~   	csr_arrayr	   )rs   r`   indptrr   graphs        r1   test_dijkstra_randomr      sJ    
ADG2F0D LL""D'6#:1a&"IEUTt<r3   c                  P    d} t        t        |       d      }t        |dd       y )Na  %%MatrixMarket matrix coordinate real general
                84 84 22
                2 1 4.699999809265137e+00
                6 14 1.199999973177910e-01
                9 6 1.199999973177910e-01
                10 16 2.012000083923340e+01
                11 10 1.422000026702881e+01
                12 1 9.645999908447266e+01
                13 18 2.012000083923340e+01
                14 13 4.679999828338623e+00
                15 11 1.199999973177910e-01
                16 12 1.199999973177910e-01
                18 15 1.199999973177910e-01
                32 2 2.299999952316284e+00
                33 20 6.000000000000000e+00
                33 32 5.000000000000000e+00
                36 9 3.720000028610229e+00
                36 37 3.720000028610229e+00
                36 38 3.720000028610229e+00
                37 44 8.159999847412109e+00
                38 32 7.903999328613281e+01
                43 20 2.400000000000000e+01
                43 33 4.000000000000000e+00
                44 43 6.028000259399414e+01
    F)spmatrixTr   )r   r   r	   )textr   s     r1   test_gh_17782_segfaultr      s'    D2 (4.51DTDd;r3   c                      t        j                  d      fd} dD ]&  }t        t        t        t
        fD ]  } | ||        ( t        t        t
        t        d       y )Nr   c                     |dz   } | t         dj                  |            }t        |t           j                  |             y )N)r   F)r,   r`   )rD   reshaper   r8   )funcindshapeoutshaper0   r`   s       r1   r2   z)test_shortest_path_indices.<locals>.check	  s@    d?*u!//(35!"mG&<&D&DX&NOr3   ))r   )r   r   )r   r   r&   )rA   r`   )	r4   r   r	   r   r
   r   assert_raises
ValueErrorrD   )r2   r   r   r`   s      @r1   test_shortest_path_indicesr     sU    iilGP +|WmDD$! E + *mZ!#r3   c                  ~    t         t        dt        t        dfd} t        D ]  }dD ]  } | ||         y )NrS   c                 p    t        t        | |dd      \  }}t        ||          t        ||          y )NFTr,   rB   re   )r   rD   r   )rA   r,   r0   rp   SP_respred_ress       r1   r2   z test_predecessors.<locals>.check  s=     Vh+059;D 	""fX&67!$(:;r3   )rE   r8   directed_predundirected_predrI   )r2   rA   r,   r   r   s      @@r1   test_predecessorsr     sB    "$F#&(H< %H&(# & r3   c                  @    d } t         D ]  }dD ]  } | ||         y )Nc                 l    t        t        |dd      \  }}t        t        ||      }t        ||       y )NFTr   r,   )r   rD   r   r   )rA   r,   rQ   rp   rR   s        r1   r2   z+test_construct_shortest_path.<locals>.check*  s5    !*+3,16:<	T $JxH!#s+r3   rS   rH   r2   rA   r,   s      r1   test_construct_shortest_pathr   )  s'    , %H&(# & r3   c                  @    d } t         D ]  }dD ]  } | ||         y )Nc                 h    t        t        |dd      }t        t        |dd      }t        ||       y )NFT)r,   rB   
unweighted)r   rD   unweighted_Gr   )rA   r,   rQ   rR   s       r1   r2   z#test_unweighted_path.<locals>.check8  s:    J%-&+'+- L%-&+',. 	"#s+r3   rS   rH   r   s      r1   test_unweighted_pathr   7  s'    	, %H&(# & r3   c            
          t        j                  ddg      dj                  d d d<   dd<   fd} dD ],  }dD ]  } | ||        t        t        t
        dd	d	|
       . y )Nr   r   r   r$   )r   r   c                 4    t        t        t        | |       y )N)r   r   r   )rA   r,   r   s     r1   r2   z#test_negative_cycles.<locals>.checkN  s    (-	 r3   rS   r&   r)   r(   r   r   )r4   onesflatr   r   r   )r2   r,   rA   r   s      @r1   test_negative_cyclesr   H  sm    GGQFOEEJJssOE$K  "'F&(# ( 	(#uaA'	)	 "r3   rA   r   c                 L    t        t        | d      }t        |t        d       y )NTr   g|=)atol)r   directed_negative_weighted_Gr   directed_negative_weighted_SPrF   s     r1   test_negative_weightsr   Z  s    	3Vd	KBB5EBr3   c                  x    t         j                  j                  t        d       d } t        D ]
  } | |        y )Nr   c                 J    t        t        | dd      }t        |t               y r?   rC   rF   s     r1   r2   z test_masked_input.<locals>.checkc  rG   r3   )r4   mamasked_equalrD   rI   rJ   s     r1   test_masked_inputr   `  s.    EEz1%3
 f r3   c                      t        j                  g dg dg dg dg dgt              } | j                         }t	        |d       t        ||        y )	Nr   r   r   r   r   r   F)rB   )r4   rf   floatcopyr   r   )Gfoos     r1   test_overwriter   l  sI    
/!!!!	# +0		1A
 &&(C#'sAr3   c                     t         j                  j                  dgg      }d|j                  j                  d<   t        ||        y )N      ?F	WRITEABLE)rA   )r}   r~   r   r   flagsr   )rA   r   s     r1   test_bufferr   w  s8     	v&A %AFFLL!F#r3   c                      t        j                  d      5 } t        t        j                  ddgt        j
                  dgg             d d d         D ]  }|j                  t        urJ  y # 1 sw Y   %xY w)NT)recordr   r   )warningscatch_warningsr   r4   rf   nancategoryRuntimeWarning)r   rs     r1   test_NaN_warningsr     s^    		 	 	-bhhA456 
.zz///  
.	-s   3A..A7c                     t        j                  g dg dg dg dg dgt              } t        |       }t        j
                  j                  |       }t        j
                  j                  |       }t        j
                  j                  |       }t        |t        |             t        |t        |             t        |t        |             y )N)r   r   r   r   r   )r   r   r#   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r   )
r4   rf   r   r   r}   r~   r   	csc_array	lil_arrayr   )G_denser0   G_csrG_cscG_lils        r1   test_sparse_matricesr     s    hh('''	) 16	7G
 
w	BLL""7+ELL""7+ELL""7+Eb-"67b-"67b-"67r3   c                  n    t        t        dddd      \  } }t        | ddg       t        |t               y )Nr   r   r   T)sourcesinkKre         @g      "@r   rD   r   directed_2SP_0_to_3	distancespredecessorss     r1   test_yen_directedr     s;    !&#$!"04I| IBx(L"56r3   c                  F    t        t        ddd      } t        | g d       y )Nr   r   r   r   r   r   )r   g      @r   g       @)r   r.   r   r   s    r1   test_yen_undirectedr     s%    
	I I/0r3   c                  p    t        t        ddddd      \  } }t        | ddg       t        |t               y )Nr   r   r   T)r   r   r   r   re   g       @g      @r   r   s     r1   test_yen_unweightedr     s>    !
 I| IBx(L"56r3   c                  L    t        t        ddd      } | j                  dk(  sJ y )Nr   r   r   r   r   )r   rD   sizer   s    r1   test_yen_no_pathsr     s,    
	I >>Qr3   c                  D    t        t        ddd      } t        | dg       y )Nr   r   r   r   g       )r   r   r   r   s    r1   test_yen_negative_weightsr     s&    $
	I Iu%r3   rd   rS   r,   re   index_dtypec                 "   t         j                  j                  dd      }t         j                  j                  |j                  |j
                  j                  |      |j                  j                  |      f      }t        |||| |       y)z;Test two failures from gh-20904: int32 and indices-as-None.r   csr)ry   )r`   rd   re   N)	r}   r~   	eye_arrayr   r   r`   astyper   r	   )rd   r,   re   r   r`   adj_mats         r1   
test_20904r     sz     ll$$Qu$5Gll$$LLOO"";/NN!!+.	
G /r3   )Oior   r   numpyr4   numpy.testingr   r   r   pytestr   r   scipy.sparse.csgraphr   r	   r
   r   r   r   r   scipy.sparser}   scipy.ior   rf   r   rD   r.   r   r   r5   rE   r   r~   r   rX   rY   r^   r]   r   r8   r7   r   eyer6   r   r   r   rI   r<   rK   rU   rZ   r_   markparametrizerr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   int32rg   r    r3   r1   <module>r
     s      X X *6 6 6   RXX&&&&	( 05	6
 rxx((((	* 27	8 Q&&u-2662662	  3.0  //	/*  0   q!RVVRVV4!Q/!Q/vvrvvrvvq!4vvrvvrvvq!4	6  !<<11 	!#;<  2    Arvvrvv6Aq"&&"&&1Aq"&&"&&1A6A6	8  --=--	/ 7<	= /))))	+ 38	9 !1bffbffa";#%661bffa"@#%662661bffbff"E#$aA"6#$bffbffa";	"= EJ	K   e4vrvvay@ 3566 +a/ 0"((/////	1 9>	?  (rxx)3)3)5<A C  !)1bffbff*=+-q"&&/*5*7>C!E  )' '  +- -023 YAAA$GH- I3-0 o. /,	=<<#"$$$$")$ #45C 6C
	 7+$ ,$08 	717& ]3]3.>288(<=TA3K0 1 > ? 4 4
r3   