U
    L?h                     @   s  d dl Z d dlmZ d dlZd dlm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mZmZmZ d dl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 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+m,Z,m-Z-m.Z.m/Z/ d dl)m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z? d dl@mAZB d dlCmDZD e0  e(ddeEfdZFG dd de*ZGG dd de*ZHdd  ZIejJKd!d"d#gd$d% ZLejJKd!d"d#gd&d' ZMejJKd!d"d#gd(d) ZNejJKd!d"gd*d+ ZOejJKd!d"d#gd,d- ZPejJKd!d"d#gd.d/ ZQejJKd!d"d#gd0d1 ZRejJKd!d"d#gd2d3 ZSejJKd!d"d#gd4d5 ZTd6d7 ZUejJKd!d"d#gd8d9 ZVejJKd!d"d#gd:d; ZWejJKd!d"d#gd<d= ZXejJKd!d"d#gd>d? ZYd@dA ZZejJKd!d"d#gdBdC Z[ejJKd!d"d#gdDdE Z\ejJKd!d"d#gdFdG Z]ejJKd!d"d#gdHdI Z^ejJKd!d"d#gdJdK Z_dLdM Z`dNdO ZaejJKd!d"d#gdPdQ ZbejJKd!d"d#gdRdS ZcdTdU ZddVdW ZedXdY ZfdZd[ Zgd\d] Zhd^d_ Zid`da ZjdS )b    N)TemporaryDirectory)Sum)Ioopi)Ne)Symbolsymbols)LambertWexp	exp_polarlog)	real_rootsqrt)	Piecewise)cossin)Min)meijerg)Integral)And)S)sympify)import_module)Plotplotplot_parametricplot3d_parametric_lineplot3dplot3d_parametric_surface)
unset_showplot_contourPlotGridMatplotlibBackendTextBackend)LineOver1DRangeSeriesParametric2DLineSeriesParametric3DLineSeriesParametricSurfaceSeriesSurfaceOver2DRangeSeries)skipwarnsraiseswarns_deprecated_sympy)lambdify)ignore_warnings
matplotlibz1.1.0)Zmin_module_versionZcatchc                   @   s   e Zd ZdZdd ZdS )DummyBackendNotOkz Used to verify if users can create their own backends.
    This backend is meant to raise NotImplementedError for methods `show`,
    `save`, `close`.
    c                 O   s
   t | S Nobject__new__clsargskwargs r:   P/var/www/html/venv/lib/python3.8/site-packages/sympy/plotting/tests/test_plot.pyr5   +   s    zDummyBackendNotOk.__new__N)__name__
__module____qualname____doc__r5   r:   r:   r:   r;   r1   &   s   r1   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )DummyBackendOkzi Used to verify if users can create their own backends.
    This backend is meant to pass all tests.
    c                 O   s
   t | S r2   r3   r6   r:   r:   r;   r5   3   s    zDummyBackendOk.__new__c                 C   s   d S r2   r:   selfr:   r:   r;   show6   s    zDummyBackendOk.showc                 C   s   d S r2   r:   rA   r:   r:   r;   save9   s    zDummyBackendOk.savec                 C   s   d S r2   r:   rA   r:   r:   r;   close<   s    zDummyBackendOk.closeN)r<   r=   r>   r?   r5   rC   rD   rE   r:   r:   r:   r;   r@   /   s
   r@   c                  C   s<   t d} t| | ddfdd t| d d | ddfdd d S )Nxr      text)backend      )r   r   )rF   r:   r:   r;   test_basic_plotting_backend?   s    rL   adaptiveTFc              	      s  t std td tdtddp}t dd| dd	}t t   t  d
| dd}|| dd |d _d|d _d|_	d|_
d|d _d|_d|_d|_d}|tj|| |j  |t d | dd |t d  d | ddd  d}|tj|| t d  ddf| dd|d< d}|tj|| |j  tt  dt dt f| dd}d}|tj|| |j  tt | dd}d}|tj|| |j  t d  d d!ff d  d"dff| dd}d#}|tj|| |j  tt fd$d ttd dkfd% d&df| dd}d'}|tj|| |j  tt  dk f d df d"df| dd}d(}|tj|| |j  t | dd}td| dd}|| d)}|tj|| |j  td& d&k f td& k dk f d td k dk f d  dkf}t| d"df| dd}d*}|tj|| |j  W 5 Q R X d S )+N"Matplotlib not the default backendrF   ysympy_prefixTf1
   legendlabelrM   nf2)rW   rM   rX   c                 S   s   | S r2   r:   ar:   r:   r;   <lambda>S       z&test_plot_and_save_1.<locals>.<lambda>r   brK   z	Big titlez
the x axiszstraight linerK   rK   )i   z!test_basic_options_and_colors.pngrM   rX   rG   rJ   ztest_plot_extend_append.pngztest_plot_setitem.png   ztest_line_explicit.pngztest_line_default_range.png   ztest_line_multiple_range.pngc                      s
   t  S r2   )r   r:   rF   rO   r:   r;   r\   x   r]   r   Tztest_plot_piecewise.pngztest_plot_piecewise_2.pngztest_horizontal_line.pngztest_plot_piecewise_3.png)r0   r*   r   r   r   r   r   extend
line_colortitleZxlabelrW   rV   aspect_ratioxlimrD   ospathjoin_backendrE   appendr   r,   
ValueErrorr   r   )rM   tmpdirpfilenamep1p2fr:   rg   r;   test_plot_and_save_1D   s|    "



"
"

,
$
,


  r{   c              
   C   s^  t std td}td}td}tdd$}tt|t|| dd}d	}|tj	
|| |j  tt|t||d
dfdd| dd}d}|tj	
|| |j  tt|t|f|t|f| dd}d}|tj	
|| |j  tt|t||ddff|t||d
dff| dd}d}|tj	
|| |j  t|t|d| dd}d}|tj	
|| |j  tt|t|ddd}d}|tj	
|| |j  tt|t||dd| dd}d}|tj	
|| |j  tt|t|||d
dfft|t|||ddff| dd}d}|tj	
|| |j  tt|t||d| d}d}|tj	
|| |j  t|| | dd}d }|tj	
|| |j  t| | || |d
df| dd}d!}|tj	
|| |j  t|| |ddf|ddff| | |ddf|ddff| dd}d"}|tj	
|| |j  tt|| t|| || | dd}d#}|tj	
|| |j  t|t| |t| ||d
df|d
dfft|| t|| || |d
df|d
dff| dd}d#}|tj	
|| |j  tt|t| |d
df|d
df| dd}d$}|tj	
|| |j  t|d% |d%  |d |d  |d
df|d
df| dd}d$}|tj	
|| |j  t|d% |d%  |d
df|d
dff|d |d  |ddf|ddff| dd}d$}|tj	
|| |j  W 5 Q R X d S )&NrN   rF   rO   zrP   rQ   rT   ra   ztest_parametric.pngrd   re   TZparametric_plotrU   ztest_parametric_range.pngztest_parametric_multiple.pngrf   rG   z#test_parametric_multiple_ranges.png   )depthrM   rX   ztest_recursion_depth.pngFi  ztest_adaptive.pngZ3d_parametric_plotztest_3d_line.pngztest_3d_line_multiple.png   )rX   rM   ztest_3d_line_points.pngztest_surface.pngztest_surface_multiple.pngz test_surface_multiple_ranges.pngztest_parametric_surface.pngztest_contour_plot.pngrJ   )r0   r*   r   r   r   r   r   rD   ro   rp   rq   rr   rE   r   r   r   r!   rM   rF   rO   r|   ru   rv   rw   r:   r:   r;   test_plot_and_save_2   s   
     
 
  
 

     
  


"
  
 
(, 
  
. 
   r   c              
   C   s  t std td}td}td}tdd}tt|| dd}d	d
 |d _d}|tj	
|| dd
 |d _d}|tj	
|| |j  t|t| |t| |ddf| dd}dd
 |d _d}|tj	
|| dd
 |d _d}|tj	
|| dd
 |d _d}|tj	
|| |j  tt|dt| td|   t|dt| td|   dtd|  |ddt f| dd}t|td| |d _d}|tj	
|| dd
 |d _d}|tj	
|| dd
 |d _d}|tj	
|| |j  tt|| |ddt f|ddf| dd}d d
 |d _d!}|tj	
|| d"d
 |d _d#}|tj	
|| d$d
 |d _d%}|tj	
|| t|||ft|d&t  d |d  |d _d'}|tj	
|| |j  t|td|  |td|  ||d(d)f|d(d)f| dd}d*d
 |d _d+}|tj	
|| d,d
 |d _d-}|tj	
|| t|||ft|d |d  |d  |d _d.}|tj	
|| |j  W 5 Q R X d S )/NrN   rF   rO   r|   rP   rQ   rT   ra   c                 S   s   | S r2   r:   rZ   r:   r:   r;   r\   +  r]   z&test_plot_and_save_3.<locals>.<lambda>r   ztest_colors_line_arity1.pngc                 S   s   |S r2   r:   r[   r^   r:   r:   r;   r\   /  r]   ztest_colors_line_arity2.pngc                 S   s   | S r2   r:   rZ   r:   r:   r;   r\   5  r]   z!test_colors_param_line_arity1.pngc                 S   s   | S r2   r:   r   r:   r:   r;   r\   9  r]   c                 S   s   |S r2   r:   r   r:   r:   r;   r\   =  r]   z"test_colors_param_line_arity2b.pngg?   rJ   rc   ztest_colors_3d_line_arity1.pngc                 S   s   |S r2   r:   r   r:   r:   r;   r\   J  r]   ztest_colors_3d_line_arity2.pngc                 S   s   |S r2   r:   r[   r^   cr:   r:   r;   r\   M  r]   ztest_colors_3d_line_arity3.png   rd   re   c                 S   s   | S r2   r:   rZ   r:   r:   r;   r\   S  r]   ztest_colors_surface_arity1.pngc                 S   s   |S r2   r:   r   r:   r:   r;   r\   V  r]   ztest_colors_surface_arity2.pngc                 S   s   |S r2   r:   r   r:   r:   r;   r\   Y  r]   ztest_colors_surface_arity3a.pngrG   ztest_colors_surface_arity3b.pngri   rK   c                 S   s   | S r2   r:   rZ   r:   r:   r;   r\   c  r]   z!test_colors_param_surf_arity1.pngc                 S   s   | | S r2   r:   r   r:   r:   r;   r\   f  r]   z!test_colors_param_surf_arity2.pngz!test_colors_param_surf_arity3.png)r0   r*   r   r   r   r   rk   rD   ro   rp   rq   rr   rE   r   r   r   	lambdify_r   surface_colorr   r   r   r:   r:   r;   test_plot_and_save_3  s    
(
  
*.
    .r   c              	   C   s   t std td}td}tddp}ttt|d d t|d d  |d|f}t||dd	f| d
dd}d}|	t
j|| |j  W 5 Q R X d S )NrN   rF   rO   rP   rQ   rJ   rK   r   re   rT   T)rM   rX   Zforce_real_evalztest_advanced_integral.png)r0   r*   r   r   r   r   r   r   r   rD   ro   rp   rq   rr   rE   )rM   rF   rO   ru   irv   rw   r:   r:   r;   test_plot_and_save_4o  s    0r   c              
   C   s   t std td}td}tdd}td||  |dtf}t||ddf| dd	}d
}|tj	
|| |j  ttd| |d|f|ddfd| dd}d|d _d|d _d}tt |tj	
|| W 5 Q R X |j  W 5 Q R X d S )NrN   rF   rO   rP   rQ   rK   rJ   rT   ra   ztest_advanced_inf_sum.pngFrC   rM   rX   Tr   ztest_advanced_fin_sum.png)r0   r*   r   r   r   r   r   rD   ro   rp   rq   rr   rE   Zonly_integersZstepsr/   UserWarning)rM   rF   rO   ru   srv   rw   r:   r:   r;   test_plot_and_save_5  s(    
 

	
r   c           
   
   C   s  t std td}tddZ}d}tt|tt|  }|t	j
|| tt, ttt| }|t	j
|| W 5 Q R X tt|}|t	j
|| ttt|}|t	j
|| d|d  tt t  d }tdd	|}d|d  ttt  d }tdd	|}|| d
t  }	ttddd0 t|	|ddf| dd}|t	j
|| W 5 Q R X W 5 Q R X d S )NrN   rF   rP   rQ   ztest.pngre   rJ   ))      ?r:   ))re   r   r   r:   0   z&The evaluation with NumPy/SciPy failedFmatchZtest_stacklevelgư>{Gz?rT   ra   )r0   r*   r   r   r   r   r   r   rD   ro   rp   rq   r/   RuntimeWarningr   r
   r   r   r   r+   r   )
rM   rF   ru   rw   rv   x1m1Zx2m2exprr:   r:   r;   test_plot_and_save_6  s4    
r   c              	   C   s  t std td}td}tdd}t|| dd}tt|t|f|t|fd| dd	}tt|t|| ddd
}tt|t||d| dd	}t	dd||||}d}	|
tj||	 |j  t	dd||||}d}	|
tj||	 |j  tt||t tfd| dd	}
dd |
d _ttd|dkfd|ddfd| dd	}t|d |d  |ddf|ddff|d |d  |ddf|ddffd| dd	}t	dd|
||}d}	|
tj||	 |j  W 5 Q R X d S )NrN   rF   rO   rP   rQ   rT   ra   Fr   rM   rX   rC   rJ   ztest_grid1.pngrG   rc   ztest_grid2.pngc                 S   s   | S r2   r:   rZ   r:   r:   r;   r\     r]   z(test_plotgrid_and_save.<locals>.<lambda>r   rK   rh   ri   rd   re   rf   ztest_grid3.png)r0   r*   r   r   r   r   r   r   r   r"   rD   ro   rp   rq   rr   rE   r   rk   r   r!   )rM   rF   rO   ru   rx   ry   p3p4rv   rw   Zp5Zp6Zp7r:   r:   r;   test_plotgrid_and_save  s\          

     r   c              	   C   s   t std td}t|| dd}t|d | dd}t|d | dd ||d  t|jdksfttt	 || W 5 Q R X tt	 ||j W 5 Q R X d S )NrN   rF   rT   ra   rJ   r   )
r0   r*   r   r   rs   len_seriesAssertionErrorr,   	TypeError)rM   rF   rx   ry   r:   r:   r;   test_append_issue_7140  s    

r   c                    s  t std td}t|ttj tjfd dd}|j  tdtj tjf dd}|j  td dt	dt	dfd}|j  t dt	dt	dfdd	}|j  t
t fd
d t
t fdd t
t fdd t
t fdd d S )NrN   rF   ri   rK   rT   )rn   ylimrM   rX   z-3.14z3.14)rn   rM   rX   r   rM   rX   rn   r   c                      s   t  dtj dfddS NrT   rK   r   r   r   r   ZImaginaryUnitr:   rM   Zeqnr:   r;   r\   $  s   
 z"test_issue_15265.<locals>.<lambda>c                      s   t  dddtjfdS NrT   r   ri   r   r   r:   r   r:   r;   r\   (  s    c                      s   t  dtjdfddS r   )r   r   NegativeInfinityr:   r   r:   r;   r\   ,  s    c                      s   t  dddtjfdS r   )r   r   Infinityr:   r   r:   r;   r\   0  s    )r0   r*   r   r   r   r   Pirr   rE   r   r,   rt   rM   rF   rv   r:   r   r;   test_issue_15265  s:    



 
r   c                      s.   t std t  t  tt fdd d S )NrN   c                      s      S r2   rC   r:   rv   r:   r;   r\   =  r]   z!test_empty_Plot.<locals>.<lambda>)r0   r*   r   r   r,   NotImplementedErrorr:   r:   r   r;   test_empty_Plot4  s
    r   c              	   C   s|   t std td}|d d|d   |d  }t||ddf| dd	d
}tt" t|d  d dksntW 5 Q R X d S )NrN   rF   g333333?rT   rG   rJ   r   Fr   r   )	r0   r*   r   r   r/   r   r   get_datar   rM   rF   rz   rv   r:   r:   r;   test_issue_17405@  s    
r   c                 C   sr   t std td}t||ddf| dddd}t|d	  d	 dksJt|d	 jd
ks\t|d	 jdksntd S )NrN   rF   gMbP?d   r   r   F)rM   rX   ZxscalerC   r   g      Y@)	r0   r*   r   r   r   r   r   endstartr   r:   r:   r;   test_logplot_PR_16796P  s     r   c                 C   sH   t std td}tt|d| dd}t|d  d dksDtd S )NrN   rF   Fr   r   r   )r0   r*   r   r   r
   r   r   r   r   r:   r:   r;   test_issue_16572_  s
    r   c                 C   s   t std tddd}tt ttt |  | ttt t |  |  t|dfdt df}t|d| dd	}t	|d 
 d dkstd S )
NrN   kT)integerr   rJ   Fr   r   )r0   r*   r   r   r   r   r   r   r   r   r   r   )rM   r   rz   rv   r:   r:   r;   test_issue_11865k  s    Lr   c               	   C   sn   t std td} ttt| | d  dddd}ttddd	" t|d
 	 d
 dks`t
W 5 Q R X d S )NrN   rF   rJ   rG   FT)rC   rM   zinvalid value encountered inr   r   r   )r0   r*   r   r   r   r   r+   r   r   r   r   rF   rv   r:   r:   r;   test_issue_11461y  s     r   c              	   C   sj   t std td}tt|t||ddt fdd| dd}|jdksJtt	|d 
 d dksftd S )	NrN   rF   r   rJ   r_   Fr   )rm   rC   rM   rX   )r0   r*   r   r   r   r   r   rm   r   r   r   r   r:   r:   r;   test_issue_11764  s       r   c                 C   s  t std td}tt|dd| dd}|jtks8tt|d 	 d dksTttt|dd| dd}|jt
ksxtt|d 	 d dksttt|d	d| dd}|jtkstt|d 	 d dksttt|d| dd
}|jtkstt|d 	 d dkstd S )NrN   rF   r0   Fr   )rI   rC   rM   rX   r   rH   defaultr   )r0   r*   r   r   r   rI   r#   r   r   r   r$   )rM   rF   pmptpdrv   r:   r:   r;   test_issue_13516  s    r   c                 C   s   t std td}t||d |ddf| dd}|j}|j \}}t|d dk sXtt|d dk slt|j	 \}}t|d dk stt|d dk std S )NrN   rF   rJ   r   rT   ra   r   )
r0   r*   r   r   rr   axget_xlimabsr   get_ylim)rM   rF   rv   rI   xminxmaxyminymaxr:   r:   r;   test_plot_limits  s    r   c                 C   s  t std td}dt| dt| d| |ddff}t|t|||ddff}t||| dd}|j}|j \}}t	|d dk st
t	|d dk st
|j \}}	t	|d dk st
t	|	d dk st
|j \}
}t	|
d	 dk st
t	|d	 dk st
t||| dd}|j}|j \}}t	|d dk sHt
t	|d dk s^t
|j \}}	t	|d dk st
t	|	d dk st
|j \}
}t	|
d	 dk st
t	|d	 dk st
d S )
NrN   rF   rJ   rd   re   <   ra   r   rT   )r0   r*   r   r   r   r   rr   r   r   r   r   r   Zget_zlim)rM   rF   Zv1Zv2rv   rI   r   r   r   r   ZzminZzmaxr:   r:   r;   "test_plot3d_parametric_line_limits  s6    &r   c              	   C   s   t std td}tt|dd| dd}|jj }|d dkrN|d	 d
ksRttt|dd| dd}|jj }|d dkr|d	 dkstt	dd	||d| dd}|jj }|d dkr|d	 dkstt
t tt|ddd W 5 Q R X d S )NrN   rF   r0   )   rc   rT   )rI   sizerM   rX   r   r   rK   rc   )re   rT   re   rJ   )r   rJ   )r   rM   rX   r   )ri   rG   )rI   r   )r0   r*   r   r   r   rr   ZfigZget_size_inchesr   r"   r,   rt   )rM   rF   rx   s1ry   s2r   Zs3r:   r:   r;   test_plot_size  s.       
r   c               	   C   s6  t std td} tt| tdd tt| tdd}|jtksFtt	|d 
 d dksbttt| tdd}|jtkstt	|d 
 d dksttt| tdd}|jtkstt	|d 
 d dksttt |  W 5 Q R X tt |d W 5 Q R X tt |j  W 5 Q R X d S )NrN   rF   F)rI   rC   r   r   z	test/path)r0   r*   r   r   r   r   r#   rI   r   r   r   r@   r1   r,   r   rC   rD   rr   rE   )rF   ry   r   r   r:   r:   r;   test_issue_20113  s&    


r   c                  C   s  t d} t d}tt| dd d tt| dd tt| dd tt| t| dd d tt| t| dd tt| t| dd tt| t| | d	d d tt| t| | dd tt| t| | dd tt| | t| | | | | d
df|d
dfdd d tt| | t| | | | | d
df|d
dfdd tt| | t| | | | | d
df|d
dfdd t| | | d
df|d
dfdd d t| | | d
df|d
dfdd t| | | d
df|d
dfdd d S )NrF   rO   c                 S   s   | S r2   r:   rZ   r:   r:   r;   r\     r]   z&test_custom_coloring.<locals>.<lambda>)rk   rK   rc                 S   s   | S r2   r:   rZ   r:   r:   r;   r\     r]   c                 S   s   | S r2   r:   rZ   r:   r:   r;   r\   !  r]   rd   re   c                 S   s   | d |d  S NrJ   r:   r   r:   r:   r;   r\   &  r]   )r   c                 S   s   | d |d  S r   r:   r   r:   r:   r;   r\   .  r]   )r   r   r   r   r   r   r   r   rg   r:   r:   r;   test_custom_coloring  s>        r   c              	   C   sV   t std td}t|}t||ddfd| dd}t  |d   W 5 Q R X d S )NrN   rF   r   rT   Fr   r   )r0   r*   r   r   r   r-   Zget_segmentsr   r:   r:   r;   test_deprecated_get_segments3  s    r   c              	   C   s   t std td}t|ddgddggdddgdd	d
gddddgddddgdd	dddg| dd}t|jjjdks~tt|jjj	dkstt|jjj
dkstt|jjjdkstd S )NrN   rF   r   rK   *noner8   markerZ	linestyletestr   r   rH   xyrJ   rG   rF   y1re   r   widthheightrT   )markersannotationsfill
rectanglesrM   rX   )r0   r*   r   r   r   rr   r   collectionsr   ZpatcheslinesZtextsr   r:   r:   r;   test_generic_data_series?  s    
 r   c               	   C   s  t std td} tt| | ddfdd}t " ddgddggd	d
dg|_W 5 Q R X t|jdkslt	t  dddg|_
W 5 Q R X t|jdkst	t " ddddgddddgd|_W 5 Q R X t|jdkst	t  ddddg|_W 5 Q R X t|jdkst	d S )NrN   rF   r   rT   Fr   r   rK   r   r   r   rJ   r   r   r   rG   r   rc   re   r   )r0   r*   r   r   r   r-   r   r   r   r   r   r   r   r   r:   r:   r;   3test_deprecated_markers_annotations_rectangles_fillR  s     &&r   c               	   C   sF  t std td} td}tt| ddd}t|d  dksFtt|d  dks^tt	t
| t| | ddfddd}t|d  dkstt|d  d	ksttt
| t| | | ddfddd}t|d  d	kstt|d  d
ksttt
| d |d  | t tf|t tfdd}t|d  d	ksLtt|d  d	ksfttt
| d |d  | t tf|t tfdd}t|d  d	kstt|d  d	kstt| t
| | t| | t
d
|  d | dtf|ddt fdd}t|d  d	ks(tt|d  dksBtd S )NrN   rF   rO   Fre   ra   r   rJ   rG   rc   )rX   )r0   r*   r   r   r   r   Z
get_pointsr   r   r   r   r   r   r   Z
get_meshesr!   r   rF   rO   rv   r:   r:   r;   test_back_compatibilityf  s:      00(  r   c                  C   sB  t std td\} }t| d }t|d ts6t|d j| d ksLt|d j| ddfgksft|d 	ddks|t|d j
i kstt| d d	}t|d tst|d j| d kst|d j| ddfgkst|d 	dd	kst|d j
i kstt| d | d
df}|d j| d
dfgks8tt| d | d
dfdddi}|d 	ddkslt|d j
ddikstt| d | d }t|d tst|d j| d kst|d j| ddfgkst|d 	ddkst|d j
i ks
tt|d tst|d j| d ks6t|d j| ddfgksRt|d 	ddksjt|d j
i ks~tt| d | d | ddf}|d j| ddfgkst|d j| ddfgkstt| d | d | ddfddi}|d j| ddfgkst|d j| ddfgks(t|d j
ddiks@t|d j
ddiksXtt| d | ddff| d | d
dfdddif}t|d tst|d j| d kst|d j| ddfgkst|d 	ddkst|d j
i kstt|d tst|d j| d ks&t|d j| d
dfgksBt|d 	ddksZt|d j
ddiksrtdd }tdd }t|d tstt|d jst|d jd dd  dkst|d 	ddkst|d j
i kstt|dd}|d jd dd  dks&t|d 	ddks>td S )NrN   x, yrK   r   r   rT   Fzx + 1rW   rb   rJ   r   colorr   zx**2re   c                 S   s   | S r2   r:   tr:   r:   r;   r\     r]   z%test_plot_arguments.<locals>.<lambda>c                 S   s   | S r2   r:   r   r:   r:   r;   r\     r]   r   rT    )r   rd   r   )rd   r   )r0   r*   r	   r   
isinstancer%   r   r   ranges	get_labelrendering_kwcallablerF   rO   rv   rz   r:   r:   r;   test_plot_arguments  s~       r   c                  C   sb  t std td\} }t| d | }t|d ts8t|d j| d | fksRt|d j| ddfgkslt|d 	ddkst|d j
i kstt| d | | d	d
fdddi}|d j| d | fkst|d j| d	d
fgkst|d 	ddkst|d j
ddikstt| d | f| d	d
fd}|d j| d | fksJt|d j| d	d
fgksft|d 	ddks~t|d j
i kstt| d | f| d
 | d f}|d j| d | fkst|d j| ddfgkst|d 	ddks t|d j
i kst|d j| d
 | d fks4t|d j| ddfgksPt|d 	ddksht|d j
i ks|tt| d | f|d
 |d df}|d j| d | fkst|d j| ddfgkst|d 	ddkst|d j
i ks t|d j|d
 |d fks t|d j|ddfgks<t|d 	ddksTt|d j
i kshtt| d | f| d
 | d f| d	d
f}|d j| d | fkst|d j| d	d
fgkst|d 	ddkst|d j
i kst|d j| d
 | d fkst|d j| d	d
fgks.t|d 	ddksFt|d j
i ksZtt| d | | d	d
fdf| d
 | d | ddfdddif}|d j| d | fkst|d j| d	d
fgkst|d 	ddkst|d j
i kst|d j| d
 | d fkst|d j| ddfgks2t|d 	ddksJt|d j
ddiksbtdd }dd }t||}tdd |d jD st|d jd dd  dkstd|d 	dkst|d j
i kstt||dd}tdd |d jD st|d jd dd  dks2t|d 	ddksJt|d j
i ks^td S )NrN   r   rK   r   r   rT   FrF   rb   rJ   r   cmapRedsZtest1rf   rG   test2c                 S   s   | S r2   r:   r   r:   r:   r;   r\   %  r]   z0test_plot_parametric_arguments.<locals>.<lambda>c                 S   s   d|  S r   r:   r   r:   r:   r;   r\   &  r]   c                 s   s   | ]}t |V  qd S r2   r   .0r   r:   r:   r;   	<genexpr>(  s     z1test_plot_parametric_arguments.<locals>.<genexpr>r   Dummyr   r   rJ   c                 s   s   | ]}t |V  qd S r2   r  r  r:   r:   r;   r  /  s     r   rJ   )r0   r*   r	   r   r   r&   r   r   r   r   r   all)rF   rO   rv   fxfyr:   r:   r;   test_plot_parametric_arguments  s       &  
  r  c               	   C   s  t std td\} }t| d | t| }t|d ts>t|d j| d | t| fks^t|d j	| ddfgksxt|d 
ddkst|d ji kstt| d | t| | d	d
fdddi}t|d tst|d j| d | t| fkst|d j	| d	d
fgkst|d 
ddks*t|d jddiksBtt| d | t| f| d	d
fd}|d j| d | t| fkst|d j	| d	d
fgkst|d 
ddkst|d ji kstt| d | t| f| d
 dt| ddif}|d j| d | t| fkst|d j	| ddfgks6t|d 
ddksNt|d ji ksbt|d j| d
 dt| fkst|d j	| ddfgkst|d 
ddkst|d jddikstt| d | t| f|d
 dt|f}|d j| d | t| fkst|d j	| ddfgks4t|d 
ddksLt|d ji ks`t|d j|d
 dt|fkst|d j	|ddfgkst|d 
ddkst|d ji kstt| d | t| f| d
 dt| | d	d
fdddif}|d j| d | t| fks"t|d j	| ddfgks>t|d 
ddksVt|d ji ksjt|d j| d
 dt| fkst|d j	| d	d
fgkst|d 
ddkst|d jddikstdd }dd }dd }t|||}tdd |d jD st|d j	d dd  dks:td|d 
dksRt|d ji ksftt|||dd}tdd |d jD st|d j	d dd  dkst|d 
ddkst|d ji kstd S )NrN   r   rK   r   r   rT   FrF   rb   rJ   r   r  r  rO   c                 S   s   | S r2   r:   r   r:   r:   r;   r\   x  r]   z7test_plot3d_parametric_line_arguments.<locals>.<lambda>c                 S   s   d|  S r   r:   r   r:   r:   r;   r\   y  r]   c                 S   s   d|  S )NrG   r:   r   r:   r:   r;   r\   z  r]   c                 s   s   | ]}t |V  qd S r2   r  r  r:   r:   r;   r  |  s     z8test_plot3d_parametric_line_arguments.<locals>.<genexpr>r   r  r	  c                 s   s   | ]}t |V  qd S r2   r  r  r:   r:   r;   r    s     r
  )r0   r*   r	   r   r   r   r'   r   r   r   r   r   r   r  )rF   rO   rv   r  r  Zfzr:   r:   r;   %test_plot3d_parametric_line_arguments5  s        " ""&"" ""  r  c                  C   sH  t std td\} }t| | }t|d ts6t|d j| | ksLt|d jd | ddfksr|ddfsrt|d jd | ddfks|ddfst|d 	ddkst|d j
i kstt| | | d	d
fdddi}t|d tst|d j| | kst|d jd | d	d
fks$t|d jd |ddfksBt|d 	ddksZt|d j
ddiksrtt| | | d	d
f|ddfd}|d jd | d	d
fkst|d jd |ddfkstt| | | | }|d j| | kst|d jd | ddfks |ddfs t|d jd | ddfksJ|ddfsJt|d 	ddksbt|d j
i ksvt|d j| | kst|d jd | ddfks|ddfst|d jd | ddfks|ddfst|d 	ddkst|d j
i kstt| | | | | d	d
f|ddf}|d j| | ksHt|d jd | d	d
fksft|d jd |ddfkst|d 	ddkst|d j
i kst|d j| | kst|d jd | d	d
fkst|d jd |ddfkst|d 	ddkst|d j
i ks0tt| | | d	d
f|ddff| | | ddf|ddfdddif}|d j| | kst|d jd | d	d
fkst|d jd |ddfkst|d 	ddkst|d j
i kst|d j| | kst|d jd | ddfks$t|d jd |ddfksBt|d 	ddksZt|d j
ddiksrtdd }t|}t|d jst|d jd dd  dkst|d jd dd  dkst|d 	ddkst|d j
i kstt|ddd}t|d js$t|d jd dd  dksDt|d jd dd  dksdt|d 	ddks|t|d j
i ksttt| || ddf|ddf}t|d tst|d jt| |kst|d jd | ddfkst|d jd |ddfkst|d 	ddks0t|d j
i ksDtd S )NrN   r   r   r   rT   rK   Fzx + yrb   rJ   r   r  r  rc   zx*yrf   rG   ir   c                 S   s   | | S r2   r:   rg   r:   r:   r;   r\     r]   z4test_plot3d_plot_contour_arguments.<locals>.<lambda>r   r   )r[   rd   rG   )r^   rb   rK   )rd   rG   )rb   rK   z	Min(x, y))r0   r*   r	   r   r   r)   r   r   r   r   r   r   r   r   r:   r:   r;   "test_plot3d_plot_contour_arguments  s    &&****"     r  c               
   C   s  t std td\} }t| | t| | t| | }t|d tsJt|d j	| | t| | t| | fksvt|d j
d | ddfks|ddfst|d j
d | ddfks|ddfst|d ddkst|d ji kstt| | t| | t| | | d	d
f|ddfdddi}t|d ts6t|d j	| | t| | t| | fksdt|d j
d | d	d
fkst|d j
d |ddfkst|d ddkst|d jddikstt| | t| | t| | f| | t| | t| | df}|d j	| | t| | t| | fks>t|d j
d | ddfksh|ddfsht|d j
d | ddfks|ddfst|d ddkst|d ji kst|d j	| | t| | t| | fkst|d j
d | ddfks|ddfst|d j
d | ddfks@|ddfs@t|d ddksXt|d ji ksltt| | t| | t| | | d	d
fdf| | t| | t| | | ddf|ddfdddif}|d j	| | t| | t| | fkst|d j
d | d	d
fkst|d j
d |ddfks6t|d ddksNt|d ji ksbt|d j	| | t| | t| | fkst|d j
d | ddfkst|d j
d |ddfkst|d ddkst|d jddiksttdd dd dd dd}tdd |d j	D s6t|d j
d dd  dksVt|d j
d dd  dksvt|d ddkst|d ji ksttdd dd d d ddfd!d d"d d#d d$d%df}td&d |d j	D st|d j
d dd  dkst|d j
d dd  dks8t|d ddksPt|d ji ksdttd'd |d j	D st|d j
d dd  d(kst|d j
d dd  d)kst|d ddkst|d ji kstd S )*NrN   r   r   r   rT   rK   Fz(x + y, cos(x + y), sin(x + y))rb   rJ   r  rc   r   r  r  rf   rG   r  c                 S   s   | S r2   r:   uvr:   r:   r;   r\   '  r]   z:test_plot3d_parametric_surface_arguments.<locals>.<lambda>c                 S   s   |S r2   r:   r  r:   r:   r;   r\   '  r]   c                 S   s   | | S r2   r:   r  r:   r:   r;   r\   '  r]   )r  r   rJ   )r  rf   rc   c                 s   s   | ]}t |V  qd S r2   r  r  r:   r:   r;   r  )  s     z;test_plot3d_parametric_surface_arguments.<locals>.<genexpr>r
  )rf   rc   r   c                 S   s   | S r2   r:   r  r:   r:   r;   r\   2  r]   c                 S   s   |S r2   r:   r  r:   r:   r;   r\   2  r]   c                 S   s   | | S r2   r:   r  r:   r:   r;   r\   2  r]   c                 S   s   |S r2   r:   r  r:   r:   r;   r\   4  r]   c                 S   s   | S r2   r:   r  r:   r:   r;   r\   4  r]   c                 S   s   | | S r2   r:   r  r:   r:   r;   r\   4  r]   )r  rb   rG   )r  r  re   c                 s   s   | ]}t |V  qd S r2   r  r  r:   r:   r;   r  6  s     c                 s   s   | ]}t |V  qd S r2   r  r  r:   r:   r;   r  ;  s     )rb   rG   )r  re   )r0   r*   r	   r   r   r   r   r(   r   r   r   r   r   r  r   r:   r:   r;   (test_plot3d_parametric_surface_arguments  s     ,&&   ..**.**&* ..            r  )kro   tempfiler   ZpytestZsympy.concrete.summationsr   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr   Zsympy.core.symbolr   r	   Z&sympy.functions.elementary.exponentialr
   r   r   r   Z(sympy.functions.elementary.miscellaneousr   r   Z$sympy.functions.elementary.piecewiser   Z(sympy.functions.elementary.trigonometricr   r   r   Zsympy.functions.special.hyperr   Zsympy.integrals.integralsr   Zsympy.logic.boolalgr   Zsympy.core.singletonr   Zsympy.core.sympifyr   Zsympy.externalr   Zsympy.plotting.plotr   r   r   r   r   r   r    r!   r"   r#   r$   Zsympy.plotting.seriesr%   r&   r'   r(   r)   Zsympy.testing.pytestr*   r+   r,   r-   Zsympy.utilitiesr.   r   Zsympy.utilities.exceptionsr/   RuntimeErrorr0   r1   r@   rL   markZparametrizer{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r:   r:   r:   r;   <module>   s      	
Q
 
R

!
'
*

&







#


W\Tb