Ë
    âQ(hÀ$  ã                   óª   — d dl Z d dlZd dl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  G d„ de«      Zd„ Zd„ Zd„ Zd	„ Z G d
„ d«      Z G d„ d«      Zy)é    N)ÚTestCaseÚassert_array_equal)ÚBoundsÚLinearConstraintÚNonlinearConstraintÚPreparedConstraintÚnew_bounds_to_oldÚold_bound_to_newÚstrict_boundsc                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestStrictBoundsc                 ó~  — d}d}d}d}t        ||||«      \  }}t        |t        j                   t        j                   t        j                   g«       t        |t        j                  t        j                  t        j                  g«       d}t        ||||«      \  }}t        |g d¢«       t        |g d¢«       y )Né   é   é   FT)r   r   r   )r   r   r   ©r   r   ÚnpÚinf©ÚselfÚmÚlbÚubÚenforce_feasibilityÚ	strict_lbÚ	strict_ubs          úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/tests/test_constraints.pyÚ+test_scalarvalue_unique_enforce_feasibilityz<TestStrictBounds.test_scalarvalue_unique_enforce_feasibility   s§   € ØˆØˆØˆØ#ÐÜ,¨R°Ø-@Ø-.ó 0Ñˆ	�9ô 	˜9¬¯© w´·±°¼"¿&¹&¸Ð&AÔBÜ˜9¤r§v¡v¬r¯v©v´r·v±vÐ&>Ô?à"ÐÜ,¨R°Ø-@Ø-.ó 0Ñˆ	�9ô 	˜9¢iÔ0Ü˜9¢iÕ0ó    c                 ó†  — d}g d¢}g d¢}d}t        ||||«      \  }}t        |t        j                   t        j                   t        j                   g«       t        |t        j                  t        j                  t        j                  g«       d}t        ||||«      \  }}t        |g d¢«       t        |g d¢«       y )Nr   ©é   r   r   )r   é   é   FTr   r   s          r   Ú+test_vectorvalue_unique_enforce_feasibilityz<TestStrictBounds.test_vectorvalue_unique_enforce_feasibility   s§   € ØˆÚˆÚˆØ#ÐÜ,¨R°Ø.AØ./ó 1Ñˆ	�9ô 	˜9¬¯© w´·±°¼"¿&¹&¸Ð&AÔBÜ˜9¤r§v¡v¬r¯v©v´r·v±vÐ&>Ô?à"ÐÜ,¨R°Ø.AØ./ó 1Ñˆ	�9ô 	˜9¢iÔ0Ü˜9¢iÕ0r   c                 óê   — d}d}d}g d¢}t        ||||«      \  }}t        |t        j                   dt        j                   g«       t        |t        j                  dt        j                  g«       y )Nr   r   r   )FTFr   r   s          r   Ú+test_scalarvalue_vector_enforce_feasibilityz<TestStrictBounds.test_scalarvalue_vector_enforce_feasibility/   sh   € ØˆØˆØˆÚ2ÐÜ,¨R°Ø-@Ø-.ó 0Ñˆ	�9ô 	˜9¬¯© w°´B·F±F°7Ð&;Ô<Ü˜9¤r§v¡v¨q´"·&±&Ð&9Õ:r   c                 óò   — d}g d¢}ddt         j                  g}g d¢}t        ||||«      \  }}t        |dt         j                   dg«       t        |dt         j                  t         j                  g«       y )Nr   r!   r   r$   )TFTr"   )r   r   r   r   r   s          r   Ú+test_vectorvalue_vector_enforce_feasibilityz<TestStrictBounds.test_vectorvalue_vector_enforce_feasibility:   sk   € ØˆÚˆØ�”B—F‘Fˆ^ˆÚ1ÐÜ,¨R°Ø-@Ø-.ó 0Ñˆ	�9ô 	˜9 q¬2¯6©6¨'°1 oÔ6Ü˜9 q¬"¯&©&´"·&±&Ð&9Õ:r   N)Ú__name__Ú
__module__Ú__qualname__r   r%   r'   r)   © r   r   r   r   
   s   „ ò1ò$1ò$	;ó	;r   r   c                  ó\  ‡— t        j                  g d¢«      } t        j                  dt         j                  dg«      }t        j                  g d¢«      }t        j                  g d¢t        ¬«      }t	        | ||«      }t        j                  t        t        ||«       t        t	        | |«      g d¢«      }|j                  g d¢«      dkD  j                  «       sJ ‚|j                  g d¢«      dk(  j                  «       sJ ‚t        j                  g d	¢«      }t        j                  g d	¢g d
¢g d¢g«      Št        j                  g d¢t        ¬«      }t        ‰t         j                   d|«      }t        j                  t        t        ||«       t        t        ‰t         j                   d«      g d	¢«      }|j                  g d	¢«      dkD  j                  «       sJ ‚|j                  g d¢«      dk(  j                  «       sJ ‚ˆfd„}ˆfd„}d„ }	t        |t         j                   d||	|«      }
t        j                  t        t        |
|«       t        |
g d¢«      }|j                  g d	¢«      dkD  j                  «       sJ ‚|j                  g d¢«      dk(  j                  «       sJ ‚y )N)r   é   é   ç      à?éF   r!   )FTT)Údtyper   )g      Ð?é   é   )r"   r   r   r   )r#   r   r   r$   )é   r   é   r   )TTT)éöÿÿÿr   r8   r   c                 ó&   •— ‰j                  | «      S ©N)Údot©ÚxÚAs    €r   Úfunz2test_prepare_constraint_infeasible_x0.<locals>.fun]   s   ø€ Ø�u‰u�Q‹xˆr   c                 ó   •— ‰S r:   r-   r<   s    €r   Újacz2test_prepare_constraint_infeasible_x0.<locals>.jac`   s   ø€ Øˆr   c                 ó,   — t        j                  d«      S )N)r   r   )ÚspsÚ
csr_matrix)r=   Úvs     r   Úhessz3test_prepare_constraint_infeasible_x0.<locals>.hessc   s   € Ü�~‰~˜fÓ%Ð%r   )r   Úarrayr   Úboolr   ÚpytestÚraisesÚ
ValueErrorr   Ú	violationÚanyÚallr   r   )r   r   Úx0r   ÚboundsÚpcÚlinearr?   rA   rF   Ú	nonlinearr>   s              @r   Ú%test_prepare_constraint_infeasible_x0rT   F   s  ø€ Ü	�‰’+Ó	€BÜ	�‰�3œŸ™ Ð#Ó	$€BÜ	�‰’)Ó	€BÜŸ(™(Ò#6¼dÔCÐÜ�B˜Ð/Ó0€FÜ
‡M�M”*Ô0°&¸"Ô=ä	œF 2 r›NªIÓ	6€BØ�L‰LšÓ# aÑ'×,Ñ,Ô.Ð.Ð.Ø�L‰LšÓ(¨AÑ-×2Ñ2Ô4Ð4Ð4ä	�‰’,Ó	€BÜ
�‰’,¢ªlÐ;Ó<€AÜŸ(™(Ò#5¼TÔBÐÜ˜a¤"§&¡& ¨!Ð-@ÓA€FÜ
‡M�M”*Ô0°&¸"Ô=ä	Ô,¨Q´·±°¸Ó;Ú(ó
*€Bà�L‰LšÓ&¨Ñ*×/Ñ/Ô1Ð1Ð1Ø�L‰LÒ)Ó*¨aÑ/×4Ñ4Ô6Ð6Ð6ôôò&ô $ C¬"¯&©&¨°!°S¸$Ø$7ó9€Iä
‡M�M”*Ô0°)¸RÔ@ä	˜IÒ'7Ó	8€BØ�L‰LšÓ&¨Ñ*×/Ñ/Ô1Ð1Ð1Ø�L‰LÒ)Ó*¨aÑ/×4Ñ4Ô6Ð6Ñ6r   c                  ó  — d„ } t        | ddgddg«      }t        |ddg«      }t        |j                  ddg«      ddg«       t        j
                  j                  |j                  ddg«      dd	g«       t        j
                  j                  |j                  ddg«      d
dg«       t        j
                  j                  |j                  d	dg«      ddg«       t        j
                  j                  |j                  d	dg«      ddg«       y )Nc                 ó`   — t        j                  | d   dz  | d   z   | d   dz  | d   z
  g«      S )Nr   r   r"   )r   rG   )r=   s    r   Úcons_fztest_violation.<locals>.cons_fp   s8   € Ü�x‰x˜˜1™ ™ Q q¡TÑ)¨1¨Q©4°1©9°q¸±tÑ+;Ð<Ó=Ð=r   éÿÿÿÿg333333ë¿r   r1   r"   ç        g333333ó?gš™™™™™¹?g{®Gázä?r   g333333ó¿gR¸…ëQÈ?g{®Gáz„?g=
×£p=ò?)r   r   r   rL   r   ÚtestingÚassert_almost_equal)rW   ÚnlcrQ   s      r   Útest_violationr]   o   sÞ   € ò>ô ˜f r¨7 m°a¸°VÓ
<€CÜ	˜C # q Ó	*€Bä�r—|‘| S¨! HÓ-°°B¨xÔ8ä‡J�J×"Ñ" 2§<¡<°°c°
Ó#;¸bÀ#¸YÔGä‡J�J×"Ñ" 2§<¡<°°c°
Ó#;¸dÀA¸YÔGä‡J�J×"Ñ" 2§<¡<°°d°Ó#<¸tÀQ¸iÔHä‡J�J×"Ñ" 2§<¡<°°a°Ó#9¸DÀ$¸<ÕHr   c                  óŒ  — t        j                  t         j                   ddg«      } t        j                  dt         j                  dg«      }g d¢}t        t	        | |d«      |«       g d¢}t        t	        d|d«      |«       g d¢}t        t	        t         j                   |d«      |«       g d¢}t        t	        | d	d«      |«       g d
¢}t        t	        | t         j                  d«      |«       g d¢}t        t	        ddd«      |«       g d¢}t        t	        t         j                   t         j                  d«      |«       y )Nr   r   é
   )©Nr   ©r   N)r   r_   ))rX   r   ©rX   N)rX   r_   rX   )r`   ©NN)Nr_   ))Nr/   )r   r/   )r   r/   r/   )rc   ra   )r   N)©r"   r   rd   rd   r"   )rc   rc   rc   )r   rG   r   r   r	   )	r   r   rP   Úbounds_single_lbÚbounds_no_lbÚbounds_single_ubÚbounds_no_ubÚbounds_single_bothÚbounds_no_boths	            r   Útest_new_bounds_to_oldrk   �   sý   € Ü	�‰”B—F‘F�7˜A˜q�/Ó	"€BÜ	�‰�1”b—f‘f˜b�/Ó	"€Bâ,€FÜÔ(¨¨R°Ó3°VÔ<â6ÐÜÔ(¨¨R°Ó3Ð5EÔFâ8€LÜÔ(¬"¯&©&¨°"°aÓ8¸,ÔGâ5ÐÜÔ(¨¨R°Ó3Ð5EÔFâ7€LÜÔ(¨¬R¯V©V°QÓ7¸ÔFâ1ÐÜÔ(¨¨A¨qÓ1Ð3EÔFâ?€NÜÔ(¬"¯&©&¨´"·&±&¸!Ó<¸nÕMr   c                  ó   — ddgddf} t        j                  dt         j                   dg«      }t        j                  ddt         j                  g«      }t        | «      \  }}t	        ||«       t	        ||«       t         j                   t         j                  ft        j                  dg«      t        j                  dg«      fg} t        | «      \  }}t	        |t         j                   dg«       t	        |t         j                  dg«       y )Nr"   r   r`   rb   rX   r   )r   rG   r   r
   r   )rP   Úlb_trueÚub_truer   r   s        r   Útest_old_bounds_to_newro   ›   sÍ   € Ø�!ˆf�i Ð,€FÜ�h‰h˜œBŸF™F˜7 BÐ'Ó(€GÜ�h‰h˜˜1œbŸf™f�~Ó&€Gä˜fÓ%�F€BˆÜ�r˜7Ô#Ü�r˜7Ô#ä—‘ˆwœŸ™Ð¤"§(¡(¨A¨3£-´·±¸1¸#³Ð!?Ð@€FÜ˜fÓ%�F€Bˆä�rœRŸV™V˜G Q˜<Ô(Ü�rœBŸF™F A˜;Õ'r   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
TestBoundsc           	      ó   — ddl m}m} ddt        j                  dft        j                  dt        j                   g«      t        j                  dt        j                  g«      ft        j                  dt        j                   g«      t        j                  dt        j                  g«      t        j                  ddg«      ffD ]„  }t	        |Ž }t        t        t	        |Ž «      «      }t        |j                  |j                  «       t        |j                  |j                  «       t        |j                  |j                  «       Œ† y )	Nr   )rG   r   )ç      ð¿g      @rs   Tç      ð?g       @F)ÚnumpyrG   r   r   r   ÚevalÚreprr   r   r   Úkeep_feasible)r   rG   r   ÚargsrP   Úbounds2s         r   Ú	test_reprzTestBounds.test_repr¬   së   € ç$àØ”2—6‘6˜4Ð Ü�X‰X�sœRŸV™V˜G�nÓ%¤r§x¡x°´b·f±f°Ó'>Ð?Ü�X‰X�sœRŸV™V˜G�nÓ%¤r§x¡x°´b·f±f°Ó'>Ü�X‰X�t˜U�mÓ$ð&ð	
ò 	LˆDô ˜T�]ˆFÜœ4¤¨ Ó.Ó/ˆGÜ˜vŸy™y¨'¯*©*Ô5Ü˜vŸy™y¨'¯*©*Ô5Ü˜v×3Ñ3°W×5JÑ5JÕKñ	Lr   c                 ó¾   — t        ddgddg¬«      }t        |j                  t        j                  «      sJ ‚t        |j
                  t        j                  «      sJ ‚y )NrY   rt   )r   r   )r   Ú
isinstancer   r   Úndarrayr   )r   Úbs     r   Ú
test_arrayzTestBounds.test_array¼   sF   € ä�s˜C�j c¨3 ZÔ0ˆÜ˜!Ÿ$™$¤§
¡
Ô+Ð+Ð+Ü˜!Ÿ$™$¤§
¡
Ô+Ð+Ñ+r   c                 ó"  — t        «       }t        t        j                  t        j                   «      t        j                  t        j                  «      «      }|j                  |j                  k(  sJ ‚|j
                  |j
                  k(  sJ ‚y r:   )r   r   Úasarrayr   r   r   )r   Úb1Úb2s      r   Útest_defaultszTestBounds.test_defaultsÂ   sY   € Ü‹XˆÜ”B—J‘J¤§¡˜wÓ'¬¯©´B·F±FÓ);Ó<ˆØ�u‰u˜Ÿ™Š~Ðˆ~Ø�u‰u˜Ÿ™Š~Ð‰~r   c           	      óŠ  — d}t        j                  t        |¬«      5  t        t	        j
                  ddg«      ddg«       d d d «       t        j                  t        |¬«      5  t        ddgt	        j
                  ddg«      «       d d d «       d}t        j                  t        |¬«      5  t        ddgddgt	        j
                  ddg«      ¬«       d d d «       d}t        j                  t        |¬«      5  t        ddgg d	¢«       d d d «       y # 1 sw Y   ŒÔxY w# 1 sw Y   Œ™xY w# 1 sw Y   ŒXxY w# 1 sw Y   y xY w)
Nz,Lower and upper bounds must be dense arrays.©Úmatchr"   r   z&`keep_feasible` must be a dense array.T©rx   z6`lb`, `ub`, and `keep_feasible` must be broadcastable.r!   )rI   rJ   rK   r   rC   Ú	coo_array)r   Úmessages     r   Útest_input_validationz TestBounds.test_input_validationÈ   s  € Ø@ˆÜ�]‰]œ:¨WÔ5ñ 	2Ü”3—=‘= ! Q Ó(¨1¨a¨&Ô1÷	2ä�]‰]œ:¨WÔ5ñ 	2Ü�A�q�6œ3Ÿ=™=¨!¨Q¨Ó0Ô1÷	2ð ;ˆÜ�]‰]œ:¨WÔ5ñ 	NÜ�A�q�6˜A˜q˜6´·±ÀÀd¸|Ó1LÕM÷	Nð KˆÜ�]‰]œ:¨WÔ5ñ 	&Ü�A�q�6š9Ô%÷	&ð 	&÷	2ð 	2ú÷	2ð 	2ú÷	Nð 	Nú÷	&ð 	&ús/   ž$DÁ%$D!Â.(D-Ã;D9ÄDÄ!D*Ä-D6Ä9Ec                 óŽ   — t        dd«      }ddg}t        j                  j                  |j	                  |«      ddgddgf«       y )Néþÿÿÿr   rX   r   r"   r#   )r   r   rZ   Úassert_allcloseÚresidual)r   rP   rO   s      r   Útest_residualzTestBounds.test_residual×   s@   € Ü˜˜A“ˆØ�!ˆWˆÜ
�
‰
×"Ñ" 6§?¡?°2Ó#6¸!¸Q¸À!ÀQÀÐ8HÕIr   N)r*   r+   r,   r{   r€   r…   rŒ   r‘   r-   r   r   rq   rq   «   s   „ òLò ,òò&óJr   rq   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestLinearConstraintc                 ó  — t        j                  d«      }t        |«      }t        |t         j                   t         j                  «      }t	        |j
                  |j
                  «       t	        |j                  |j                  «       y )Nr   )r   Úeyer   r   r   r   r   )r   r>   ÚlcÚlc2s       r   r…   z"TestLinearConstraint.test_defaultsÞ   sU   € Ü�F‰F�1‹IˆÜ˜aÓ ˆÜ˜q¤2§6¡6 '¬2¯6©6Ó2ˆÜ˜2Ÿ5™5 #§&¡&Ô)Ü˜2Ÿ5™5 #§&¡&Õ)r   c           	      óf  — t        j                  d«      }d}t        j                  t        |¬«      5  t        |ddgg d¢«       d d d «       d}t        j                  t        |¬«      5  t        |t        j                  ddg«      ddg«       d d d «       t        j                  t        |¬«      5  t        |ddgt        j                  ddg«      «       d d d «       d	}t        j                  t        |¬«      5  t        j                  d
d
g«      }t        |ddgddg|¬«       d d d «       t        j                  d«      }d}t        j                  t        |¬«      5  t        |«       d d d «       y # 1 sw Y   �Œ3xY w# 1 sw Y   ŒõxY w# 1 sw Y   Œ¹xY w# 1 sw Y   ŒuxY w# 1 sw Y   y xY w)Nr   z5`lb`, `ub`, and `keep_feasible` must be broadcastabler‡   r"   r   r!   z&Constraint limits must be dense arraysr   z%`keep_feasible` must be a dense arrayTr‰   )r   r   r#   z%`A` must have exactly two dimensions.)	r   r•   rI   rJ   rK   r   rC   rŠ   Úempty)r   r>   r‹   rx   s       r   rŒ   z*TestLinearConstraint.test_input_validationå   si  € Ü�F‰F�1‹IˆØIˆÜ�]‰]œ:¨WÔ5ñ 	3Ü˜Q  A ª	Ô2÷	3ð ;ˆÜ�]‰]œ:¨WÔ5ñ 	?Ü˜Q¤§¡¨q°!¨fÓ 5¸¸1°vÔ>÷	?ä�]‰]œ:¨WÔ5ñ 	?Ü˜Q  A ¬¯©°q¸!°fÓ(=Ô>÷	?ð :ˆÜ�]‰]œ:¨WÔ5ñ 	MÜŸM™M¨4°¨,Ó7ˆMÜ˜Q  A ¨¨A¨¸mÕL÷	Mô �H‰H�YÓˆØ9ˆÜ�]‰]œ:¨WÔ5ñ 	 Ü˜QÔ÷	 ð 	 ÷!	3ñ 	3ú÷	?ð 	?ú÷	?ð 	?ú÷	Mð 	Mú÷	 ð 	 ús;   ³E6Á*%FÂ2%FÃ<+FÅ!F'Å6F ÆFÆFÆF$Æ'F0c                 óº   — t        j                  d«      }t        |dd«      }ddg}t         j                  j	                  |j                  |«      ddgddgf«       y )Nr   rŽ   r   rX   r"   r#   )r   r•   r   rZ   r�   r�   )r   r>   r–   rO   s       r   r‘   z"TestLinearConstraint.test_residualû   sO   € Ü�F‰F�1‹IˆÜ˜a  QÓ'ˆØ�!ˆWˆÜ
�
‰
×"Ñ" 2§;¡;¨r£?°a¸°V¸aÀ¸VÐ4DÕEr   N)r*   r+   r,   r…   rŒ   r‘   r-   r   r   r“   r“   Ý   s   „ ò*ò ó,Fr   r“   )rI   ru   r   Únumpy.testingr   r   Úscipy.sparseÚsparserC   Úscipy.optimize._constraintsr   r   r   r   r	   r
   r   r   rT   r]   rk   ro   rq   r“   r-   r   r   ú<module>rŸ      s]   ðÛ Û ß 6Ý ÷8÷ 8ñ 8ô
9;�xô 9;òx&7òRIò$Nò4(÷ /Jñ /J÷d"Fò "Fr   