
    (ph                     "   S SK Jr  S SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJrJr  S rS	 rS
 rS rS rS rS rS r\R0                  R3                  S/ SQ5      S 5       r\R0                  R3                  S\5      S 5       rS rg)    )assert_array_equalN)linear_sum_assignment)random)matrix)"min_weight_full_bipartite_matching) linear_sum_assignment_assertions linear_sum_assignment_test_casesc                      [         R                  " [        SS9   [        / SQ5        S S S 5        g ! , (       d  f       g = f)Nzexpected a matrixmatch         )pytestraises
ValueErrorr        ^/var/www/html/venv/lib/python3.13/site-packages/scipy/optimize/tests/test_linear_assignment.py&test_linear_sum_assignment_input_shaper      s%    	z)<	=i( 
>	=	=s   1
?c                      / SQ/ SQ/n [        [        U 5      [        [        R                  " U 5      5      5        [        [        U 5      [        [	        U 5      5      5        g )Nr   )         )r   r   npasarrayr   )Cs    r   'test_linear_sum_assignment_input_objectr      sH    	IA,Q/,RZZ];=,Q/,VAY79r   c                      [         R                  " S5      n [        [        U R	                  [         R
                  5      5      [        U 5      5        g )Nr   )r   identityr   r   astypebool_Is    r   %test_linear_sum_assignment_input_boolr&      s4    
AA,QXXbhh-?@,Q/1r   c                      [         R                  " S5      n [        R                  " [        SS9   [        U R                  [        5      5        S S S 5        g ! , (       d  f       g = f)Nr   zCannot cast array datar   )r   r!   r   r   	TypeErrorr   r"   strr$   s    r   'test_linear_sum_assignment_input_stringr*   %   s;    
AA	y(@	Aahhsm, 
B	A	As   A
A&c                      [         R                  " [         R                  SS/5      n [        R                  " [
        SS9   [        U 5        S S S 5        g ! , (       d  f       g = fNr   z contains invalid numeric entriesr   )r   diagnanr   r   r   r   r$   s    r   $test_linear_sum_assignment_input_nanr/   +   s>    
AA	z)K	La  
M	L	Ls   A
A$c                      [         R                  " S[         R                  * S/5      n [        R                  " [
        SS9   [        U 5        S S S 5        g ! , (       d  f       g = fr,   )r   r-   infr   r   r   r   r$   s    r   'test_linear_sum_assignment_input_neginfr2   1   s@    
RVVGQ A	z)K	La  
M	L	Ls   A
A%c                      [         R                  " S5      n [         R                  U S S 2S4'   [        R                  " [
        SS9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nr   r   zcost matrix is infeasibler   )r   r!   r1   r   r   r   r   r$   s    r   $test_linear_sum_assignment_input_infr4   7   sD    
AAffAadG	z)D	Ea  
F	E	Es   A
A*c                      Sn [         R                  " X 45      n[        U5      u  p#[        U[         R                  " U 5      5        [        U[         R                  " U 5      5        g )N   )r   onesr   r   arange)nr   row_indcol_inds       r   test_constant_cost_matrixr<   >   sG    	A
A,Q/Gw		!-w		!-r   znum_rows,num_cols))r   r   )r   r   )r   r   c                     [         R                  " X4S9n[        U5      u  p4[        U5      S:X  d   e[        U5      S:X  d   eg )N)shaper   )r   emptyr   len)num_rowsnum_colsr   r:   r;   s        r   'test_linear_sum_assignment_trivial_costrC   G   sD    
+,A,Q/Gw<1w<1r   zsign,test_casec                 B    [        [        [        R                  X5        g )N)r   r   r   array)sign	test_cases     r   'test_linear_sum_assignment_small_inputsrH   O   s    $rxx:r   c                  N   [         R                  R                  S5        [        S5       H  n SnSn[        SSSS S9n[         R                  " UR
                  [         R                  5      nUR                  XCR                  UR                  4'   UR                  5       n [        U5      u  pVXEU4   R                  5       n [        U5      u  pVX5U4   R                  5       nX:X  d   eU(       a  M  WW:X  a  M   e   g ! [         a    Sn NMf = f! [         a    Sn N=f = f)Ni  d   FgQ?c                 D    [         R                  R                  SSU 5      $ )Nr   rJ   )r   r   randint)sizes    r   <lambda>Itest_two_methods_give_same_result_on_many_sparse_inputs.<locals>.<lambda>a   s    bii.?.?3.Mr   )densitydata_rvsT)r   r   seedrangefullr>   r1   datarowcoltocsrr   sumr   r   )	_
lsa_raisesmwfbm_raisessparsedenser:   r;   lsa_cost
mwfbm_costs	            r   7test_two_methods_give_same_result_on_many_sparse_inputsra   W   s   
 IINN43Z
S$!MO bff-(.jj&**$%	4U;Gg-.224H	 A&IG 01557J )))zz)))/   	J	
  	 L	 s$   #!D!DDDD$#D$)numpy.testingr   r   numpyr   scipy.optimizer   scipy.sparser   scipy.sparse._sputilsr   scipy.sparse.csgraphr   (scipy.sparse.csgraph.tests.test_matchingr   r	   r   r   r&   r*   r/   r2   r4   r<   markparametrizerC   rH   ra   r   r   r   <module>rk      s    -   0  ( C
)
91-!!!. ,.FG H )+KL: M:*r   