
    sg-                         d 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 ddlmZ ddlmZ ddlmZ d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)z9
Unit test for Linear Programming via Simplex Algorithm.
    N)assert_assert_allcloseassert_equal)raises)_clean_inputs
_LPProblem)VisibleDeprecationWarning)deepcopy)datec            	      @   t        ddggdgdggdgt        j                   t        j                  f      } t        |       }t	        |        t        | j                  |j                  k(  d       t        | j                  |j                  k(  d       t        | j                  |j                  k(  d       t        | j                  |j                  k(  d       t        | j                  |j                  k(  d       t        | j                  |j                  k(  d       y	)
z
    Test for ensuring that no objects referred to by `lp` attributes,
    `c`, `A_ub`, `b_ub`, `A_eq`, `b_eq`, `bounds`, have been modified
    by `_clean_inputs` as a side effect.
       cA_ubb_ubA_eqb_eqboundsc modified by _clean_inputsA_ub modified by _clean_inputsb_ub modified by _clean_inputsA_eq modified by _clean_inputsb_eq modified by _clean_inputs bounds modified by _clean_inputsN)r   npinfr
   r   r   r   r   r   r   r   r   lplp_copys     b/var/www/html/venv/lib/python3.12/site-packages/scipy/optimize/tests/test__linprog_clean_inputs.pytest_aliasingr!      s     

cUScUS 
B rlG"BDDGII<=BGGw||#%EFBGGw||#%EFBGGw||#%EFBGGw||#%EFBII')KL    c            	         t        t        j                  ddg      t        j                  ddgddgg      t        j                  dgdgg      t        j                  ddgg      t        j                  dg      t        j                   t        j                  fdg      } t	        |       }t        |        t        | j                  |j                  d       t        | j                  |j                  d       t        | j                  |j                  d       t        | j                  |j                  d	       t        | j                  |j                  d
       t        | j                  |j                  k(  d       y)z3
    Similar purpose as `test_aliasing` above.
    r      Nr   r   r   )err_msgr   r   r   r   r   N)r   r   arrayr   r
   r   r   r   r   r   r   r   r   r   r   s     r    test_aliasing2r(   '   s    

((Aq6
XX1v1v&'XXsQCj!XX1vhXXqc]&&"&&!9-
B rlG"BDD'))-JKBGGW\\3STBGGW\\3STBGGW\\3STBGGW\\3STBII')KLr"   c            	      B   ddg} t        j                  ddgddgg      }t        j                  ddg      }t        j                  ddgddgg      }t        j                  ddg      }t        t        t               t        t        t        t        d              t        t        t        t        | |             t        t        t        t        | |d              t        t        t        t        | |             t        t        t        t        | d |             t        t        t        t        | |             t        t        t        t        | |d              t        t        t        t        | |	             t        t        t        t        | d |             y )
Nr   r$   r   )r   r   r   r   r   )r   r   )r   r   r   r   r   )r   r   )r   r'   assert_raises	TypeErrorr   r   
ValueError)r   r   r   r   r   s        r    test_missing_inputsr0   ?   s    	
AA88aVaV$%D88QFD88aVaV$%D88QFD)]+)]J,>?*mZ!$-GH*mZ!$T-RS*mZ!$-GH*mZ!$T-RS*mZ!$-GH*mZ!$T-RS*mZ!$-GH*mZ!$T-RSr"   c            	         g d} t         j                  j                  dd      }ddgddgg}t         j                  j                  ddd      }t        t        t
        t        |||              t        t        t
        t        | ||              t        t        t
        t        | ||             t        t        t
        t        | ||              t        t        t
        t        | ||             y )Nr   r$         r4   r   r$   r3   r+   r,   )r   randomrandr-   r/   r   r   )cbAbad2Dbad3Ds       r    test_too_many_dimensionsr;   R   s    	B
		q!AVaVEIINN1a#E*mZ%ab-QR*mZ"5r-RS*mZ"15-QR*mZ"5r-RS*mZ"15-QRr"   c            	      "   t         j                  j                  dd      j                         } t         j                  j                  d      }t	        t
        t        t        || |             t	        t
        t        t        || |             y )Nr4   r+   r,   )r   r5   r6   ravelr-   r/   r   r   )badr7   s     r    test_too_few_dimensionsr?   ^   s[    
))..A

$
$
&C		B*mZ"3R-PQ*mZ"3R-PQr"   c                  `   d} d}g d}t         j                  j                  | |      }t         j                  j                  | |dz         }t         j                  j                  |       }t         j                  j                  | dz         }dg|dz   z  }t        t        t
        t        |||             t        t        t
        t        |||             t        t        t
        t        |||             t        t        t
        t        |||             t        t        t
        t        ||             t         j                  j                         5 }|j                  t        d	       t        t        t
        t        |ddgdd
gd
dgg dg             d d d        y # 1 sw Y   y xY w)Nr$   r4   r2   r   r   r   r+   r,   )r   r   Creating an ndarray from raggedr3   )r4         )r   r5   r6   r-   r/   r   r   testingsuppress_warningsfilterr	   )	mnr   AgoodAbadbgoodbbad	boundsbadsups	            r    test_inconsistent_dimensionsrP   e   sC   	A	AAIINN1a E99>>!QU#DIINN1E99>>!a% DAE"I*mZ!$U-ST*mZ!%d-ST*mZ!$U-ST*mZ!%d-ST*mZ!I-NO		%	%	' S3

,.OPj- 1q!fq!fq!fi-PQ	SS S Ss   AF$$F-c                     t        ddgt        j                  ddgddgg      t        j                  ddg      t        j                  ddgddgg      t        j                  ddg      dg      } d}t        t        t
        | j                  |             t        t        t
        | j                  |             t        t        t
        | j                  |             t        t        t
        | j                  |	             t        t        t
        | j                  |
             t        t        t
        | j                  |             t        t        t
        | j                  d             t        t        t
        | j                  dg             t        t        t
        | j                  dg             t        t        t
        | j                  dg             t        t        t
        | j                  ddg             t        t        t
        | j                  dt        ddd      fg             t        t        t
        | j                  ddggg             y )Nr   r$   rA   r   hellor*   r   r   r   r   r   hi)r    r   r$   i     )	r   r   r'   r-   r.   r   _replacer/   r   )r   r>   s     r    test_type_errorsr]   z   s   	a&XX1v1v&'XXq!fXX1v1v&'XXq!fx
B C)]BKK#K,>?)]BKKSK,AB)]BKKSK,AB)]BKKSK,AB)]BKKSK,AB*mR[[[-DE*mR[[[-EF*mR[[[-GH*mR[[$[-IJ*mR[[	[-JK*mR[[@Q[-RS)]++q$tQ*;&<%=+>@*mR[[1a&
[-KLr"   c            
         t        ddgt        j                  ddgddgg      t        j                  ddg      t        j                  ddgddgg      t        j                  ddg      dg      } t        t        t
        | j                  dd g             t        t        t
        | j                  t        j                  dg             t        t        t
        | j                  dt        j                   g             t        t        t
        | j                  t        j                  dg             t        t        t
        | j                  ddgd dgg             t        t        t
        | j                  t        j                  dg             t        t        t
        | j                  ddgdt        j                   gg	             t        t        t
        | j                  dt        j                  g
             y )Nr   r$   rA   r   r   r*   rS   rT   rU   rV   )	r   r   r'   r-   r/   r   r\   r   nan)r   s    r    test_non_finite_errorsr`      sr   	a&XX1v1v&'XXq!fXX1v1v&'XXq!fx
B *mR[[At9[-EF*mR[[BFFA;[-GH*mR[[Aw<[-HI*mR[[BFFA;[-GH*mR[[1vay>Q[-RS*mR[[rvvqk[-JK*mR[[1vBFF7|>T[-UV*mR[[q"&&k[-JKr"   c                     t        ddgddgddggddgddgddggddgd       } t        |       }t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  dt        j                  fgdz         t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       y )Nr   r$   r   r   r$   rY   )r$   r$   )r   r   r   r   r   r'   r   r   r   r   r   r   r   r   shaper   
lp_cleaneds     r    test__clean_inputs1rf      sr   	a&!fq!fV!fq!fV
B r"JJLL"((244.1JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67""a[MA$56JLL$&+JOO!!V+R0JOO!!T)2.JOO!!V+R0JOO!!T)2.r"   c                     t        ddggddggdd      } t        |       }t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  t	        j
                  | j                               t        |j                  dg       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       y )Nr   rA   r   )r   rY   )r   r   )r   r   r   r   r   r'   r   r   r   r   r   r   r   rc   rd   s     r    test__clean_inputs2rh      sG   	
cUcU
B r"JJLL"((244.1JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67JOORXXbgg%67""VH-JLL$&+JOO!!V+R0JOO!!T)2.JOO!!V+R0JOO!!T)2.r"   c            	         t        ddggt        j                  j                  dd      dgdggt        j                  j                  dd      dgdggdg      } t	        |       }t        |j                  t        j                  ddg             t        |j                  t        j                  ddg             t        |j                  t        j                  ddg             t        |j                  dgdz         t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       t        |j                  j                  dk(  d       y )Nr   r$   rA   r   rb   rY   )r   r   r5   r6   r   r   r   r'   r   r   r   r   r   rc   rd   s     r    test__clean_inputs3rj      s   	q6(YY^^Aq!cA3ZYY^^Aq!cA3Zx
B r"JJLL"((Aq6"23JOORXXq!f%56JOORXXq!f%56""VHqL1JLL$&+JOO!!T)2.JOO!!T)2.r"   c            	      N   t        ddg      } t        t        t        | j	                  d             t        t        t        | j	                  dg             t
        j                  j                         5 }|j                  t        d       t        t        t        | j	                  ddg             d d d        t        t        t        | j	                  g d             t        g d	      } t        t        t        | j	                  d	d	g             y # 1 sw Y   fxY w)
Nr   r$   r*   )r   r$   r$   rW   rB   rZ   )rZ   rZ   rZ   r2   )
r   r-   r/   r   r\   r   rE   rF   rG   r	   )r   rO   s     r    test_bad_boundsrl      s    	q!f	B*mR[[	[-JK*mR[[[-LM		%	%	' ?3

,.OPj-kk&))<k=	?? *m++%=+>@ 
l	#B*m++lL%A+BD? ?s   8>DD$c            	         t        ddg      } t        |       }t        |j                  dt        j
                  fgdz         t        | j                  g             }t        |j                  dt        j
                  fgdz         t        | j                  g g            }t        |j                  dt        j
                  fgdz         t        | j                  d            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dt        j
                  fgdz         t        | j                  dg            }t        |j                  t        j
                   dfgdz         t        | j                  d	t        j
                   d fg            }t        |j                  t        j
                   t        j
                  fgdz         t        g d
      } t        |       }t        |j                  dt        j
                  fgdz         t        | j                  d            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dgdz         t        | j                  dg            }t        |j                  dt        j
                  fgdz         t        | j                  dg            }t        |j                  t        j
                   dfgdz         t        | j                  d	t        j
                   d fd t        j
                  ft        j
                   t        j
                  fg            }t        |j                  t        j
                   t        j
                  fgdz         y )Nr   r$   r*   r   rW   rZ   )r   Nr%   )NNr2   r4   )r   r   r   r   r   r   r\   rd   s     r    test_good_boundsrn     s!   	q!f	Br"J""a[MA$56r{{"{56J""a[MA$56r{{2${78J""a[MA$56r{{&{9:J""VHqL1r{{6({;<J""VHqL1r{{9+{>?J""a[MA$56r{{9+{>?J""rvvgq\NQ$67r{{<266'42Q{RSJ""rvvgrvv%6$7!$;<	l	#Br"J""a[MA$56r{{&{9:J""VHqL1r{{6({;<J""VHqL1r{{9+{>?J""a[MA$56r{{9+{>?J""rvvgq\NQ$67r{{<57VVGT?48"&&>57VVGRVV3D3F{  G HJ ""rvvgrvv%6$7!$;<r"   ) __doc__numpyr   numpy.testingr   r   r   pytestr   r-   scipy.optimize._linprog_utilr   r   scipy._lib._utilr	   copyr
   datetimer   r!   r(   r0   r;   r?   rP   r]   r`   rf   rh   rj   rl   rn    r"   r    <module>rx      sn     @ @ * B 6  M4M0T&	SRS*M8L(/4/4/,D$0=r"   