§
    fŠtj  ã                   ó,  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zej                             de¦  «        d„ ¦   «         Zd„ ZdS )é    )Úassert_array_equalN)Úlinear_sum_assignment)Úrandom_array)Úmatrix)Ú"min_weight_full_bipartite_matching)Ú linear_sum_assignment_assertionsÚ linear_sum_assignment_test_casesc                  ó�   — t          j        t          d¬¦  «        5  t          g d¢¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzexpected a matrix©Úmatch©é   é   é   )ÚpytestÚraisesÚ
ValueErrorr   © ó    úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/optimize/tests/test_linear_assignment.pyÚ&test_linear_sum_assignment_input_shaper      sŽ   € Ý	Œ•zÐ)<Ð	=Ñ	=Ô	=ð )ð )Ý˜i˜i˜iÑ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   œ;»?Á?c                  óü   — g d¢g d¢g} t          t          | ¦  «        t          t          j        | ¦  «        ¦  «        ¦  «         t          t          | ¦  «        t          t	          | ¦  «        ¦  «        ¦  «         d S )Nr   )é   é   é   )r   r   ÚnpÚasarrayr   )ÚCs    r   Ú'test_linear_sum_assignment_input_objectr      s|   € Ø	ˆˆ�I�I�IÐ€AÝÕ,¨QÑ/Ô/Ý,­R¬Z¸©]¬]Ñ;Ô;ñ=ô =ð =åÕ,¨QÑ/Ô/Ý,­V°A©Y¬YÑ7Ô7ñ9ô 9ð 9ð 9ð 9r   c                  ó¼   — t          j        d¦  «        } t          t          |                      t           j        ¦  «        ¦  «        t          | ¦  «        ¦  «         d S )Nr   )r   Úidentityr   r   ÚastypeÚbool_©ÚIs    r   Ú%test_linear_sum_assignment_input_boolr&      sO   € Ý
Œ�A‰Œ€AÝÕ,¨Q¯XªXµb´hÑ-?Ô-?Ñ@Ô@Ý,¨QÑ/Ô/ñ1ô 1ð 1ð 1ð 1r   c                  óä   — t          j        d¦  «        } t          j        t          d¬¦  «        5  t          |                      t          ¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Ñ	AÔ	Að -ð -Ý˜aŸhšh¥s™mœmÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   °(A%Á%A)Á,A)c                  óÎ   — t          j        t           j        ddg¦  «        } t          j        t
          d¬¦  «        5  t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©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Ñ	LÔ	Lð !ð !Ý˜aÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ½AÁAÁ!Ac                  óÐ   — t          j        dt           j         dg¦  «        } t          j        t
          d¬¦  «        5  t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r,   )r   r-   Úinfr   r   r   r   r$   s    r   Ú'test_linear_sum_assignment_input_neginfr2   1   s£   € Ý
Œ�•R”V�G˜Q�Ñ Ô €AÝ	Œ•zÐ)KÐ	LÑ	LÔ	Lð !ð !Ý˜aÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ¾AÁAÁ"Ac                  óÚ   — t          j        d¦  «        } t           j        | d d …df<   t          j        t
          d¬¦  «        5  t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   zcost matrix is infeasibler   )r   r!   r1   r   r   r   r   r$   s    r   Ú$test_linear_sum_assignment_input_infr4   7   sª   € Ý
Œ�A‰Œ€AÝŒf€A€a€a€aˆ€d�GÝ	Œ•zÐ)DÐ	EÑ	EÔ	Eð !ð !Ý˜aÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð !ð !s   ÁA Á A$Á'A$c                  óâ   — d} t          j        | | f¦  «        }t          |¦  «        \  }}t          |t          j        | ¦  «        ¦  «         t          |t          j        | ¦  «        ¦  «         d S )Né   )r   Úonesr   r   Úarange)Únr   Úrow_indÚcol_inds       r   Útest_constant_cost_matrixr<   >   s`   € à	€AÝ
Œ��A�‰Œ€AÝ,¨QÑ/Ô/Ñ€GˆWÝ�w¥¤	¨!¡¤Ñ-Ô-Ð-Ý�w¥¤	¨!¡¤Ñ-Ô-Ð-Ð-Ð-r   znum_rows,num_cols))r   r   )r   r   )r   r   c                 ó¬   — t          j        || f¬¦  «        }t          |¦  «        \  }}t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚d S )N)Úshaper   )r   Úemptyr   Úlen)Únum_rowsÚnum_colsr   r:   r;   s        r   Ú'test_linear_sum_assignment_trivial_costrC   G   s_   € å
Œ˜ (Ð+Ð,Ñ,Ô,€AÝ,¨QÑ/Ô/Ñ€GˆWÝˆw‰<Œ<˜1ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÐÐr   zsign,test_casec                 óH   — t          t          t          j        | |¦  «         d S )N)r   r   r   Úarray)ÚsignÚ	test_cases     r   Ú'test_linear_sum_assignment_small_inputsrH   O   s)   € å$Ý�rœx¨¨yñ:ô :ð :ð :ð :r   c                  óh  ‡	— t           j                             d¦  «        Š	t          d¦  «        D �] } d}d}t	          ddˆ	fd„¬¦  «        }t          j        |j        t           j        ¦  «        }|j        ||j	        |j
        f<   |                     ¦   «         }	 t          |¦  «        \  }}|||f                              ¦   «         }n# t          $ r d}Y nw xY w	 t          |¦  «        \  }}|||f                              ¦   «         }n# t          $ r d}Y nw xY w||k    sJ ‚|s||k    sJ ‚�Œd S )	Ni%T¼ éd   F)rJ   rJ   g¸…ëQ¸®?c                 ó2   •— ‰                      dd| ¦  «        S )Nr   rJ   )Úintegers)ÚsizeÚrngs    €r   ú<lambda>zItest_two_methods_give_same_result_on_many_sparse_inputs.<locals>.<lambda>a   s   ø€  c§l¢l°1°c¸4Ñ&@Ô&@€ r   )ÚdensityÚdata_samplerT)r   ÚrandomÚdefault_rngÚranger   Úfullr>   r1   ÚdataÚrowÚcolÚtocsrr   Úsumr   r   )
Ú_Ú
lsa_raisesÚmwfbm_raisesÚsparseÚdenser:   r;   Úlsa_costÚ
mwfbm_costrN   s
            @r   Ú7test_two_methods_give_same_result_on_many_sparse_inputsrb   W   s€  ø€ õ
 Œ)×
Ò
 Ñ
)Ô
)€CÝ�3‰ZŒZð *ñ *ˆØˆ
ØˆÝ˜j°$Ø@Ð@Ð@Ð@ðBñ Bô Bˆõ ”˜œ¥b¤fÑ-Ô-ˆØ(.¬ˆˆfŒj˜&œ*Ð$Ñ%Ø—’‘”ˆð	Ý4°UÑ;Ô;ÑˆG�WØ˜W gÐ-Ô.×2Ò2Ñ4Ô4ˆHˆHøÝð 	ð 	ð 	ØˆJˆJˆJð	øøøð	 ÝAÀ&ÑIÔIÑˆG�WØ ¨Ð 0Ô1×5Ò5Ñ7Ô7ˆJˆJøÝð 	 ð 	 ð 	 ØˆLˆLˆLð	 øøøð ˜\Ò)Ð)Ð)Ð)Øð 	*Ø˜zÒ)Ð)Ð)Ð)ùð/*ð *s$   Â.C
Ã
CÃCÃ.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   rb   r   r   r   ú<module>rl      s—  ðð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø €€€à Ð Ð Ð à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ø CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ð
)ð )ð )ð
9ð 9ð 9ð1ð 1ð 1ð-ð -ð -ð!ð !ð !ð!ð !ð !ð!ð !ð !ð.ð .ð .ð „×ÒÐ,Ð.FÐ.FÐ.FÑGÔGðð ñ HÔGðð „×ÒÐ)Ð+KÑLÔLð:ð :ñ MÔLð:ð*ð *ð *ð *ð *r   