Ë
    âQ(h&  ã                   ó  — d dl Zd dlm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 ddgZd„ Zd	„ Zd
„ Zd„ Zd„ Zej*                  j-                  de«      ej*                  j-                  dg d¢«      d„ «       «       Zej*                  j-                  de«      ej*                  j-                  dg d¢«      d„ «       «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  de«      d„ «       Zej*                  j-                  dg gg fd gd ggg fg d¢g d¢g d¢gg d¢fg d¢g d ¢g d¢gg d!¢fg«      d"„ «       Z ej*                  j-                  d#g gg fd ggg fd$ggd gfd d$gd%d ggd$d gfg d¢g d&¢g d'¢gg d(¢fg«      d)„ «       Z!ej*                  j-                  d#g gg fd ggg fd$ggd gfd d$gd%d ggd d$gfg d¢g d&¢g d'¢gg d*¢fg«      d+„ «       Z"y),é    N)Úassert_array_equal)Ú	csr_arrayÚ	csc_arrayÚ
csr_matrix)Úmaximum_flow)Ú_add_reverse_edgesÚ_make_edge_pointersÚ_make_tailsÚedmonds_karpÚdinicc                  óÎ   — t        j                  t        «      5  t        j                  ddgddgg«      } t        | dd«       t        | ddd¬«       d d d «       y # 1 sw Y   y xY w©Nr   é   r   ©Úmethod)ÚpytestÚraisesÚ	TypeErrorÚnpÚarrayr   ©Úgraphs    úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/sparse/csgraph/tests/test_flow.pyÚtest_raises_on_dense_inputr      sX   € Ü	�‰”yÓ	!ñ 9Ü—‘˜1˜a˜& 1 a &Ð)Ó*ˆÜ�U˜A˜qÔ!Ü�U˜A˜q¨Õ8÷9÷ 9ñ 9ús   š8AÁA$c                  óº   — t        j                  t        «      5  t        ddgddgg«      } t	        | dd«       t	        | ddd¬«       d d d «       y # 1 sw Y   y xY wr   )r   r   r   r   r   r   s    r   Útest_raises_on_csc_inputr      sT   € Ü	�‰”yÓ	!ñ 9Ü˜A˜q˜6 A q 6Ð*Ó+ˆÜ�U˜A˜qÔ!Ü�U˜A˜q¨Õ8÷9÷ 9ñ 9úó   š.AÁAc                  óÚ   — t        j                  t        «      5  t        ddgddggt        j
                  ¬«      } t        | dd«       t        | ddd¬«       d d d «       y # 1 sw Y   y xY w)Nr   g      ø?©Údtyper   r   r   )r   r   Ú
ValueErrorr   r   Úfloat64r   r   s    r   Ú#test_raises_on_floating_point_inputr#      sZ   € Ü	�‰”zÓ	"ñ 9Ü˜A˜s˜8 a¨ VÐ,´B·J±JÔ?ˆÜ�U˜A˜qÔ!Ü�U˜A˜q¨Õ8÷9÷ 9ñ 9ús   š>A!Á!A*c                  óœ   — t        j                  t        «      5  t        g d¢g d¢g«      } t	        | dd«       d d d «       y # 1 sw Y   y xY w)N)r   r   é   )r%   r   r   r   r   ©r   r   r!   r   r   r   s    r   Útest_raises_on_non_square_inputr'   "   s>   € Ü	�‰”zÓ	"ñ "Üš9¢iÐ0Ó1ˆÜ�U˜A˜qÔ!÷"÷ "ñ "ús   šAÁAc                  óº   — t        j                  t        «      5  t        ddgddgg«      } t	        | dd«       t	        | ddd¬«       d d d «       y # 1 sw Y   y xY wr   r&   r   s    r   Útest_raises_when_source_is_sinkr)   (   sT   € Ü	�‰”zÓ	"ñ 9Ü˜A˜q˜6 A q 6Ð*Ó+ˆÜ�U˜A˜qÔ!Ü�U˜A˜q¨Õ8÷9÷ 9ñ 9úr   r   Úsource)éÿÿÿÿr%   é   c                 ó    — t        j                  t        «      5  t        ddgddgg«      }t	        || d|¬«       d d d «       y # 1 sw Y   y xY w©Nr   r   r   r&   )r*   r   r   s      r   Ú(test_raises_when_source_is_out_of_boundsr/   /   sJ   € ô 
�‰”zÓ	"ñ 6Ü˜A˜q˜6 A q 6Ð*Ó+ˆÜ�U˜F A¨fÕ5÷6÷ 6ñ 6úó   š!AÁAÚsinkc                 ó    — t        j                  t        «      5  t        ddgddgg«      }t	        |d| |¬«       d d d «       y # 1 sw Y   y xY wr.   r&   )r1   r   r   s      r   Ú&test_raises_when_sink_is_out_of_boundsr3   7   sJ   € ô 
�‰”zÓ	"ñ 4Ü˜A˜q˜6 A q 6Ð*Ó+ˆÜ�U˜A˜t¨FÕ3÷4÷ 4ñ 4úr0   c                 óä   — t        ddgddgg«      }t        |dd| ¬«      }|j                  dk(  sJ ‚t        j                  ddgddgg«      }t        |j                  j                  «       |«       y )Nr   é   r   r   éûÿÿÿ©r   r   Ú
flow_valuer   r   r   ÚflowÚtoarray©r   r   ÚresÚexpected_flows       r   Útest_simple_graphr>   ?   so   € ô ˜˜1�v  1˜vÐ&Ó'€EÜ
�u˜a ¨6Ô
2€CØ�>‰>˜QÒÐÐÜ—H‘H˜q !˜f r¨1 gÐ.Ó/€MÜ�s—x‘x×'Ñ'Ó)¨=Õ9ó    c                 óì   — t        ddgddgg«      }t        t        |dd| ¬«      j                  t         «      sJ ‚t	        ddgddgg«      }t        t        |dd| ¬«      j                  t        «      sJ ‚y )Nr   r5   r   r   )r   Ú
isinstancer   r9   r   )r   r   s     r   Útest_return_typerB   J   sr   € ä˜˜1�v  1˜vÐ&Ó'€EÜ”l 5¨!¨Q°vÔ>×CÑCÄYÔOÐOÐOÜ˜˜A˜  A Ð'Ó(€EÜ”l 5¨!¨Q°vÔ>×CÑCÄZÔPÐPÑPr?   c                 óð   — t        g d¢g d¢g d¢g«      }t        |dd| ¬«      }|j                  dk(  sJ ‚t        j                  g d¢g d	¢g d
¢g«      }t        |j                  j                  «       |«       y )N)r   r5   r   ©r   r   r,   ©r   r   r   r   r%   r   r,   ©r   r,   r   )éýÿÿÿr   r,   )r   rG   r   r7   r;   s       r   Útest_bottle_neck_graphrH   R   sc   € ô ’y¢)ªYÐ7Ó8€EÜ
�u˜a ¨6Ô
2€CØ�>‰>˜QÒÐÐÜ—H‘Hšiª²ZÐ@ÓA€MÜ�s—x‘x×'Ñ'Ó)¨=Õ9r?   c                 ó,  — t        g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |dd	| ¬
«      }|j                  dk(  sJ ‚t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |j                  j                  «       |«       y )N)r   é
   r   r   rJ   r   r   r   )r   r   rJ   r   r   r   r   r   )r   r   r   rJ   r   r   r   r   )r   r   r   r   r   r   r   rJ   )r   r   r   rJ   r   rJ   r   r   )r   r   r   r   r   r   rJ   r   )r   r   r   r   r   r   r   r   r   é   r   é   )éöÿÿÿr   rJ   r   r   r   r   r   )r   rM   r   rJ   r   r   r   r   )r   r   rM   r   r   r   r   rJ   )rM   r   r   r   r   rJ   r   r   )r   r   r   r   rM   r   rJ   r   )r   r   r   r   r   rM   r   rJ   )r   r   r   rM   r   r   rM   r   r7   r;   s       r   Útest_backwards_flowrN   ]   s“   € ô Ò1Ú0Ú0Ú0Ú1Ú0Ú0Ú/ð1ó 2€Eô �u˜a ¨6Ô
2€CØ�>‰>˜RÒÐÐÜ—H‘HÒ8Ú9Ú9Ú9Ú9Ú9Ú9Ú:ð<ó =€Mô �s—x‘x×'Ñ'Ó)¨=Õ9r?   c           	      ó  — t        g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |dd| ¬	«      }|j                  d
k(  sJ ‚t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g«      }t        |j                  j                  «       |«       y )N)r   é   é   r   r   r   )r   r   rJ   é   r   r   )r   é   r   r   é   r   )r   r   é	   r   r   rL   )r   r   r   rK   r   rS   )r   r   r   r   r   r   r   r5   r   é   )r   rR   é   r   r   r   )éôÿÿÿr   r   rR   r   r   )éõÿÿÿr   r   r   rW   r   )r   rX   r   r   iùÿÿÿé   )r   r   rY   rK   r   rS   )r   r   r   iíÿÿÿéüÿÿÿr   r7   r;   s       r   Ú#test_example_from_clrs_chapter_26_1r\   x   s‡   € ô
 Ò+Ú+Ú*Ú*Ú)Ú)ð+ó ,€Eô �u˜a ¨6Ô
2€CØ�>‰>˜RÒÐÐÜ—H‘HÒ2Ú3Ú3Ú4Ú2Ú3ð5ó 6€Mô �s—x‘x×'Ñ'Ó)¨=Õ9r?   c                 ó  — t        g d¢g d¢g d¢g d¢g«      }t        |dd| ¬«      }|j                  dk(  sJ ‚t        j                  dt        j
                  ¬«      }t        |j                  j                  «       |«       y )	N)r   r5   r   r   )r   r   r   r   )r   r   rU   r,   r   r,   r   )rS   rS   r   )	r   r   r8   r   ÚzerosÚint32r   r9   r:   r;   s       r   Útest_disconnected_graphr`   Ž   sm   € ô ’|Ú#Ú#Ú#ð%ó &€Eô �u˜a ¨6Ô
2€CØ�>‰>˜QÒÐÐÜ—H‘H˜V¬2¯8©8Ô4€MÜ�s—x‘x×'Ñ'Ó)¨=Õ9r?   c                 ól  — d}t        j                  d|«      }t        j                  t        t	        |«      «      |dz
  gz   «      }t        j
                  |dz
  t         j                  ¬«      }t        |||f||f¬«      }t        |d|dz
  | ¬«      }|j                  dk(  sJ ‚||j                  «       z
  }t        |j                  j                  |j                  «       t        |j                  j                  |j                  «       t        |j                  j                  |j                  «       y )Ni † r   r   )Úshaper   r   )r   Úaranger   ÚlistÚrangeÚonesr_   r   r   r8   Ú	transposer   r9   ÚdataÚindicesÚindptr)r   Únri   rj   rh   r   r<   r=   s           r   Ú"test_add_reverse_edges_large_graphrl   œ   sé   € ð 	€AÜ�i‰i˜˜1‹o€GÜ�X‰X”dœ5 ›8“n¨¨A© wÑ.Ó/€FÜ�7‰7�1�q‘5¤§¡Ô)€DÜ�t˜W fÐ-°a¸°VÔ<€EÜ
�u˜a  Q¡¨vÔ
6€CØ�>‰>˜QÒÐÐØ˜EŸO™OÓ-Ñ-€MÜ�s—x‘x—}‘} m×&8Ñ&8Ô9Ü�s—x‘x×'Ñ'¨×)>Ñ)>Ô?Ü�s—x‘x—‘¨×(<Ñ(<Õ=r?   za,b_data_expected)r   r   r%   rE   rF   )r   r%   r   r   r,   )rU   é   rK   )rS   r5   é   )rU   rm   rK   rS   r5   rn   r   r   c                 ó¦   — t        | t        j                  t        | «      t        | «      f¬«      } t	        | «      }t        |j                  |«       y)zRTest that the reversal of the edges of the input graph works
    as expected.
    )r    rb   N)r   r   r_   Úlenr   r   rh   )ÚaÚb_data_expectedÚbs      r   Útest_add_reverse_edgesrt   ¬   s;   € ô 	�!œ2Ÿ8™8¬C°«F´C¸³FÐ+;Ô<€AÜ˜1Ó€AÜ�q—v‘v˜Õ/r?   z
a,expectedr   rJ   rD   )rS   r5   r   )r   r,   rS   r   r%   c                 óh   — t        | t        j                  ¬«      } t        | «      }t	        ||«       y ©Nr   )r   r   r_   r	   r   )rq   ÚexpectedÚrev_edge_ptrs      r   Útest_make_edge_pointersry   º   s(   € ô 	�!œ2Ÿ8™8Ô$€AÜ& qÓ)€LÜ�| XÕ.r?   )r   r   r   r%   r%   c                 óh   — t        | t        j                  ¬«      } t        | «      }t	        ||«       y rv   )r   r   r_   r
   r   )rq   rw   Útailss      r   Útest_make_tailsr|   Ç   s'   € ô 	�!œ2Ÿ8™8Ô$€AÜ˜‹N€EÜ�u˜hÕ'r?   )#Únumpyr   Únumpy.testingr   r   Úscipy.sparser   r   r   Úscipy.sparse.csgraphr   Úscipy.sparse.csgraph._flowr   r	   r
   Úmethodsr   r   r#   r'   r)   ÚmarkÚparametrizer/   r3   r>   rB   rH   rN   r\   r`   rl   rt   ry   r|   © r?   r   ú<module>r†      s  ðÛ Ý ,Û ç 9Ñ 9Ý -÷ñ ð ˜7Ð
#€ò9ò9ò9ò"ò9ð ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¢:Ó.ñ6ó /ó ,ð6ð ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¢Ó,ñ4ó -ó ,ð4ð ‡�×Ñ˜ 7Ó+ñ:ó ,ð:ð ‡�×Ñ˜ 7Ó+ñQó ,ðQð ‡�×Ñ˜ 7Ó+ñ:ó ,ð:ð ‡�×Ñ˜ 7Ó+ñ:ó ,ð:ð4 ‡�×Ñ˜ 7Ó+ñ:ó ,ð:ð* ‡�×Ñ˜ 7Ó+ñ
:ó ,ð
:ð ‡�×Ñ˜ 7Ó+ñ>ó ,ð>ð ‡�×ÑÐ,Ø€Tˆ2€JØ€cˆAˆ3€Z�ÐÚ’šIÐ&ªÐ8Ú’šIÐ&Ò(@ÐAð	/Có Dñ
0óDð
0ð ‡�×Ñ˜Ø€Tˆ2€JØ€c€UˆB€KØ€c€UˆQˆC€LØˆ!€fˆr�1ˆgÐ˜˜A˜ÐÚ’šIÐ&ªÐ8ð(ó ñ/óð/ð ‡�×Ñ˜Ø€Tˆ2€JØ€c€UˆB€KØ€c€UˆQˆC€LØˆ!€fˆr�1ˆgÐ˜˜A˜ÐÚ’šIÐ&ªÐ8ð(ó ñ(óñ(r?   