a
    khY                     @   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?m@Z@ d dlAmBZC d dlDmEZE e0  e(ddeFfdZGG dd de*ZHG dd de*ZIdd  ZJejKLd!d"d#gd$d% ZMejKLd!d"d#gd&d' ZNejKLd!d"d#gd(d) ZOejKLd!d"gd*d+ ZPejKLd!d"d#gd,d- ZQejKLd!d"d#gd.d/ ZRejKLd!d"d#gd0d1 ZSejKLd!d"d#gd2d3 ZTejKLd!d"d#gd4d5 ZUd6d7 ZVejKLd!d"d#gd8d9 ZWejKLd!d"d#gd:d; ZXejKLd!d"d#gd<d= ZYejKLd!d"d#gd>d? ZZe=d@dAdB Z[ejKLd!d"d#gdCdD Z\ejKLd!d"d#gdEdF Z]ejKLd!d"d#gdGdH Z^ejKLd!d"d#gdIdJ Z_ejKLd!d"d#gdKdL Z`dMdN ZadOdP ZbejKLd!d"d#gdQdR ZcejKLd!d"d#gdSdT ZddUdV ZedWdX ZfdYdZ Zgd[d\ Zhd]d^ Zid_d` Zjdadb ZkdS )c    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skip_under_pyodide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;   L/var/www/auris/lib/python3.9/site-packages/sympy/plotting/tests/test_plot.pyr6   +   s    zDummyBackendNotOk.__new__N)__name__
__module____qualname____doc__r6   r;   r;   r;   r<   r2   &   s   r2   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 r3   r4   r7   r;   r;   r<   r6   3   s    zDummyBackendOk.__new__c                 C   s   d S r3   r;   selfr;   r;   r<   show6   s    zDummyBackendOk.showc                 C   s   d S r3   r;   rB   r;   r;   r<   save9   s    zDummyBackendOk.savec                 C   s   d S r3   r;   rB   r;   r;   r<   close<   s    zDummyBackendOk.closeN)r=   r>   r?   r@   r6   rD   rE   rF   r;   r;   r;   r<   rA   /   s
   rA   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   )rG   r;   r;   r<   test_basic_plotting_backend?   s    rM   adaptiveTFc              	      s  t std td tdtddz}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 d    n1 s0    Y  d S )+N"Matplotlib not the default backendrG   ysympy_prefixTf1
   legendlabelrN   nf2)rX   rN   rY   c                 S   s   | S r3   r;   ar;   r;   r<   <lambda>S       z&test_plot_and_save_1.<locals>.<lambda>r   brL   z	Big titlez
the x axiszstraight linerL   rL   )i   z!test_basic_options_and_colors.pngrN   rY   rH   rK   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 r3   )r   r;   rG   rP   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)r1   r*   r   r   r   r   r   extend
line_colortitleZxlabelrX   rW   aspect_ratioxlimrE   ospathjoin_backendrF   appendr   r-   
ValueErrorr   r   )rN   tmpdirpfilenamep1p2fr;   rh   r<   test_plot_and_save_1D   sz    "



"
"

,
$
,


 &r|   c              
   C   st  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 d    n1 sf0    Y  d S )&NrO   rG   rP   zrQ   rR   rU   rb   ztest_parametric.pngre   rf   TZparametric_plotrV   ztest_parametric_range.pngztest_parametric_multiple.pngrg   rH   z#test_parametric_multiple_ranges.png   )depthrN   rY   ztest_recursion_depth.pngFi  ztest_adaptive.pngZ3d_parametric_plotztest_3d_line.pngztest_3d_line_multiple.png   )rY   rN   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.pngrK   )r1   r*   r   r   r   r   r   rE   rp   rq   rr   rs   rF   r   r   r   r!   rN   rG   rP   r}   rv   rw   rx   r;   r;   r<   test_plot_and_save_2   s    


(



0


"
2

(,
 
.
  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 d    n1 s0    Y  d S )/NrO   rG   rP   r}   rQ   rR   rU   rb   c                 S   s   | S r3   r;   r[   r;   r;   r<   r]   +  r^   z&test_plot_and_save_3.<locals>.<lambda>r   ztest_colors_line_arity1.pngc                 S   s   |S r3   r;   r\   r_   r;   r;   r<   r]   /  r^   ztest_colors_line_arity2.pngc                 S   s   | S r3   r;   r[   r;   r;   r<   r]   5  r^   z!test_colors_param_line_arity1.pngc                 S   s   | S r3   r;   r   r;   r;   r<   r]   9  r^   c                 S   s   |S r3   r;   r   r;   r;   r<   r]   =  r^   z"test_colors_param_line_arity2b.pngg?   rK   rd   ztest_colors_3d_line_arity1.pngc                 S   s   |S r3   r;   r   r;   r;   r<   r]   J  r^   ztest_colors_3d_line_arity2.pngc                 S   s   |S r3   r;   r\   r_   cr;   r;   r<   r]   M  r^   ztest_colors_3d_line_arity3.png   re   rf   c                 S   s   | S r3   r;   r[   r;   r;   r<   r]   S  r^   ztest_colors_surface_arity1.pngc                 S   s   |S r3   r;   r   r;   r;   r<   r]   V  r^   ztest_colors_surface_arity2.pngc                 S   s   |S r3   r;   r   r;   r;   r<   r]   Y  r^   ztest_colors_surface_arity3a.pngrH   ztest_colors_surface_arity3b.pngrj   rL   c                 S   s   | S r3   r;   r[   r;   r;   r<   r]   c  r^   z!test_colors_param_surf_arity1.pngc                 S   s   | | S r3   r;   r   r;   r;   r<   r]   f  r^   z!test_colors_param_surf_arity2.pngz!test_colors_param_surf_arity3.png)r1   r*   r   r   r   r   rl   rE   rp   rq   rr   rs   rF   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z}ttt|d d t|d d  |d|f}t||dd	f| d
dd}d}|	t
j|| |j  W d    n1 s0    Y  d S )NrO   rG   rP   rQ   rR   rK   rL   r   rf   rU   T)rN   rY   Zforce_real_evalztest_advanced_integral.png)r1   r*   r   r   r   r   r   r   r   rE   rp   rq   rr   rs   rF   )rN   rG   rP   rv   irw   rx   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 d    n1 s0    Y  |j  W d    n1 s0    Y  d S )NrO   rG   rP   rQ   rR   rL   rK   rU   rb   ztest_advanced_inf_sum.pngFrD   rN   rY   Tr   ztest_advanced_fin_sum.png)r1   r*   r   r   r   r   r   rE   rp   rq   rr   rs   rF   Zonly_integersZstepsr0   UserWarning)rN   rG   rP   rv   srw   rx   r;   r;   r<   test_plot_and_save_5  s&    


	
2r   c           
   	   C   s  t std td}tdd}d}tt|tt|  }|t	j
|| tt6 ttt| }|t	j
|| W d    n1 s0    Y  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: t|	|ddf| dd}|t	j
|| W d    n1 s0    Y  W d    n1 s0    Y  d S )NrO   rG   rQ   rR   ztest.pngrf   rK   ))      ?r;   ))rf   r   r   r;   0   z&The evaluation with NumPy/SciPy failedFmatchZtest_stacklevelgư>{Gz?rU   rb   )r1   r*   r   r   r   r   r   r   rE   rp   rq   rr   r0   RuntimeWarningr   r
   r   r   r   r,   r   )
rN   rG   rv   rx   rw   x1m1Zx2m2exprr;   r;   r<   test_plot_and_save_6  s4    
2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 d    n1 s0    Y  d S )NrO   rG   rP   rQ   rR   rU   rb   Fr   rN   rY   rD   rK   ztest_grid1.pngrH   rd   ztest_grid2.pngc                 S   s   | S r3   r;   r[   r;   r;   r<   r]     r^   z(test_plotgrid_and_save.<locals>.<lambda>r   rL   ri   rj   re   rf   rg   ztest_grid3.png)r1   r*   r   r   r   r   r   r   r   r"   rE   rp   rq   rr   rs   rF   r   rl   r   r!   )rN   rG   rP   rv   ry   rz   p3p4rw   rx   Zp5Zp6Zp7r;   r;   r<   test_plotgrid_and_save  sJ    

 "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sfJ tt || W d    n1 s0    Y  tt ||j W d    n1 s0    Y  d S )NrO   rG   rU   rb   rK   r   )	r1   r*   r   r   rt   len_seriesr-   	TypeError)rN   rG   ry   rz   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 )NrO   rG   rj   rL   rU   )ro   ylimrN   rY   z-3.14z3.14)ro   rN   rY   r   rN   rY   ro   r   c                      s   t  dtj dfddS NrU   rL   r   r   r   r   ZImaginaryUnitr;   rN   Zeqnr;   r<   r]   $  s   z"test_issue_15265.<locals>.<lambda>c                      s   t  dddtjfdS NrU   r   rj   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   
)r1   r*   r   r   r   r   Pirs   rF   r   r-   ru   rN   rG   rw   r;   r   r<   test_issue_15265  s8    




r   c                      s.   t std t  t  tt fdd d S )NrO   c                      s      S r3   rD   r;   rw   r;   r<   r]   =  r^   z!test_empty_Plot.<locals>.<lambda>)r1   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snJ W d    n1 s0    Y  d S )NrO   rG   g333333?rU   rH   rK   r   Fr   r   )r1   r*   r   r   r0   r   r   get_datarN   rG   r{   rw   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sJJ |d	 jd
ks\J |d	 jdksnJ d S )NrO   rG   gMbP?d   r   r   F)rN   rY   ZxscalerD   r   g      Y@)r1   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sDJ d S )NrO   rG   Fr   r   r   )r1   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sJ d S )
NrO   kT)integerr   rK   Fr   r   )r1   r*   r   r   r   r   r   r   r   r   r   )rN   r   r{   rw   r;   r;   r<   test_issue_11865k  s    Lr   zLWarnings not emitted in Pyodide because of lack of WASM fp exception supportc                  C   s   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`J W d    n1 st0    Y  d S )NrO   rG   rK   rH   FT)rD   rN   zinvalid value encountered inr   r   r   )
r1   r*   r   r   r   r   r,   r   r   r   rG   rw   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sJJ t|d 	 d dksfJ d S )	NrO   rG   r   rK   r`   Fr   )rn   rD   rN   rY   )
r1   r*   r   r   r   r   r   rn   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s8J t|d  d dksTJ tt|dd| dd}|jt	ksxJ t|d  d dksJ tt|d	d| dd}|jtksJ t|d  d dksJ tt|d| dd
}|jtksJ t|d  d dksJ d S )NrO   rG   r1   Fr   )rJ   rD   rN   rY   r   rI   defaultr   )
r1   r*   r   r   r   rJ   r#   r   r   r$   )rN   rG   Zpmptpdrw   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 sXJ t|d dk slJ |j \}}t|d dk sJ t|d dk sJ d S )NrO   rG   rK   r   rU   rb   r   )	r1   r*   r   r   rs   axget_xlimabsget_ylim)rN   rG   rw   rJ   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 sJ t	|d dk sJ |j
 \}}	t	|d dk sJ t	|	d dk sJ |j \}
}t	|
d	 dk sJ t	|d	 dk sJ t||| dd}|j}|j \}}t	|d dk sHJ t	|d dk s^J |j
 \}}	t	|d dk sJ t	|	d dk sJ |j \}
}t	|
d	 dk sJ t	|d	 dk sJ d S )
NrO   rG   rK   re   rf   <   rb   r   rU   )r1   r*   r   r   r   r   rs   r   r   r   r   Zget_zlim)rN   rG   Zv1Zv2rw   rJ   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sRJ tt|dd| dd}|jj }|d dkr|d	 dksJ tdd	||d| dd}|jj }|d dkr|d	 dksJ t	t
" tt|ddd W d    n1 s0    Y  d S )NrO   rG   r1   )   rd   rU   )rJ   sizerN   rY   r   r   rL   rd   )rf   rU   rf   rK   )r   rK   )r   rN   rY   r   )rj   rH   )rJ   r   )r1   r*   r   r   r   rs   ZfigZget_size_inchesr"   r-   ru   )rN   rG   ry   s1rz   s2r   Zs3r;   r;   r<   test_plot_size  s(    
r   c                  C   sx  t std td} tt| tdd tt| tdd}|jtksFJ t|d 	 d dksbJ tt| t
dd}|jt
ksJ t|d 	 d dksJ tt| tdd}|jtksJ t|d 	 d dksJ tt |  W d    n1 s0    Y  tt |d W d    n1 s60    Y  tt |j  W d    n1 sj0    Y  d S )NrO   rG   F)rJ   rD   r   r   z	test/path)r1   r*   r   r   r   r   r#   rJ   r   r   rA   r2   r-   r   rD   rE   rs   rF   )rG   rz   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 )NrG   rP   c                 S   s   | S r3   r;   r[   r;   r;   r<   r]     r^   z&test_custom_coloring.<locals>.<lambda>)rl   rL   rc                 S   s   | S r3   r;   r[   r;   r;   r<   r]     r^   c                 S   s   | S r3   r;   r[   r;   r;   r<   r]   "  r^   re   rf   c                 S   s   | d |d  S NrK   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   rh   r;   r;   r<   test_custom_coloring  s8     r   c                 C   sj   t std td}t|}t||ddfd| dd}t  |d   W d    n1 s\0    Y  d S )NrO   rG   r   rU   Fr   r   )r1   r*   r   r   r   r.   Zget_segmentsr   r;   r;   r<   test_deprecated_get_segments4  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g dg ddd	dddg| dd}t|jjjdksvJ t|jjjdksJ t|jjj	dksJ t|jjj
dksJ d S )NrO   rG   r   rL   *noner9   markerZ	linestyletestr   r   rI   xyr   rL   rK   rH   rG   y1rf   r   widthheightrU   )markersannotationsfill
rectanglesrN   rY   rK   )r1   r*   r   r   r   rs   r   collectionsZpatcheslinesZtextsr   r;   r;   r<   test_generic_data_series@  s    
r   c                  C   sd  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 d    n1 sd0    Y  t|jdksJ t  dddg|_	W d    n1 s0    Y  t|jdksJ t $ g dg dd|_
W d    n1 s0    Y  t|jdksJ t   ddddg|_W d    n1 sB0    Y  t|jdks`J d S )NrO   rG   r   rU   Fr   r   rL   r   r   r   rK   r   r   r   rH   r   r   rd   rf   r   )r1   r*   r   r   r   r.   r   r   r   r   r   r   r   r;   r;   r<   3test_deprecated_markers_annotations_rectangles_fillS  s     :,20r   c               	   C   sF  t std td} td}tt| ddd}t|d  dksFJ t|d  dks^J tt	| t| | ddfddd}t|d  dksJ t|d  d	ksJ t
t	| t| | | ddfddd}t|d  d	ksJ t|d  d
ksJ tt	| d |d  | t tf|t tfdd}t|d  d	ksLJ t|d  d	ksfJ tt	| d |d  | t tf|t tfdd}t|d  d	ksJ t|d  d	ksJ t| t	| | t| | t	d
|  d | dtf|ddt fdd}t|d  d	ks(J t|d  dksBJ d S )NrO   rG   rP   Frf   rb   r   rK   rH   rd   )rY   )r1   r*   r   r   r   r   Z
get_pointsr   r   r   r   r   r   Z
get_meshesr!   r   rG   rP   rw   r;   r;   r<   test_back_compatibilityg  s4     00(r   c                  C   sB  t std td\} }t| d }t|d ts6J |d j| d ksLJ |d j| ddfgksfJ |d ddks|J |d j	i ksJ t| d d	}t|d tsJ |d j| d ksJ |d j| ddfgksJ |d dd	ksJ |d j	i ksJ t| d | d
df}|d j| d
dfgks8J t| d | d
dfdddi}|d ddkslJ |d j	ddiksJ t| d | d }t|d tsJ |d j| d ksJ |d j| ddfgksJ |d ddksJ |d j	i ks
J t|d tsJ |d j| d ks6J |d j| ddfgksRJ |d ddksjJ |d j	i ks~J t| d | d | ddf}|d j| ddfgksJ |d j| ddfgksJ t| d | d | ddfddi}|d j| ddfgksJ |d j| ddfgks(J |d j	ddiks@J |d j	ddiksXJ t| d | ddff| d | d
dfdddif}t|d tsJ |d j| d ksJ |d j| ddfgksJ |d ddksJ |d j	i ksJ t|d tsJ |d j| d ks&J |d j| d
dfgksBJ |d ddksZJ |d j	ddiksrJ dd }tdd }t|d tsJ t
|d jsJ |d jd dd  dksJ |d ddksJ |d j	i ksJ t|dd}|d jd dd  dks&J |d ddks>J d S )NrO   x, yrL   r   r   rU   Fzx + 1rX   rc   rK   r   colorr   zx**2rf   c                 S   s   | S r3   r;   tr;   r;   r<   r]     r^   z%test_plot_arguments.<locals>.<lambda>c                 S   s   | S r3   r;   r   r;   r;   r<   r]     r^   r   rU    )r   re   r   )re   r   )r1   r*   r	   r   
isinstancer%   r   ranges	get_labelrendering_kwcallablerG   rP   rw   r{   r;   r;   r<   test_plot_arguments  s~       r   c                  C   sb  t std td\} }t| d | }t|d ts8J |d j| d | fksRJ |d j| ddfgkslJ |d ddksJ |d j	i ksJ t| d | | d	d
fdddi}|d j| d | fksJ |d j| d	d
fgksJ |d ddksJ |d j	ddiksJ t| d | f| d	d
fd}|d j| d | fksJJ |d j| d	d
fgksfJ |d ddks~J |d j	i ksJ t| d | f| d
 | d f}|d j| d | fksJ |d j| ddfgksJ |d ddks J |d j	i ksJ |d j| d
 | d fks4J |d j| ddfgksPJ |d ddkshJ |d j	i ks|J t| d | f|d
 |d df}|d j| d | fksJ |d j| ddfgksJ |d ddksJ |d j	i ks J |d j|d
 |d fks J |d j|ddfgks<J |d ddksTJ |d j	i kshJ t| d | f| d
 | d f| d	d
f}|d j| d | fksJ |d j| d	d
fgksJ |d ddksJ |d j	i ksJ |d j| d
 | d fksJ |d j| d	d
fgks.J |d ddksFJ |d j	i ksZJ t| d | | d	d
fdf| d
 | d | ddfdddif}|d j| d | fksJ |d j| d	d
fgksJ |d ddksJ |d j	i ksJ |d j| d
 | d fksJ |d j| ddfgks2J |d ddksJJ |d j	ddiksbJ dd }dd }t||}t
dd |d jD sJ |d jd dd  dksJ d|d dv sJ |d j	i ksJ t||dd}t
dd |d jD sJ |d jd dd  dks2J |d ddksJJ |d j	i ks^J d S )NrO   r   rL   r   r   rU   FrG   rc   rK   r   cmapRedsZtest1rg   rH   test2c                 S   s   | S r3   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 r3   r   .0r   r;   r;   r<   	<genexpr>)  r^   z1test_plot_parametric_arguments.<locals>.<genexpr>r   Dummyr   r   rK   c                 s   s   | ]}t |V  qd S r3   r  r  r;   r;   r<   r  0  r^   r   rK   )r1   r*   r	   r   r   r&   r   r   r   r   all)rG   rP   rw   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>J |d j| d | t| fks^J |d j| ddfgksxJ |d 	ddksJ |d j
i ksJ t| d | t| | d	d
fdddi}t|d tsJ |d j| d | t| fksJ |d j| d	d
fgksJ |d 	ddks*J |d j
ddiksBJ t| d | t| f| d	d
fd}|d j| d | t| fksJ |d j| d	d
fgksJ |d 	ddksJ |d j
i ksJ t| d | t| f| d
 dt| ddif}|d j| d | t| fksJ |d j| ddfgks6J |d 	ddksNJ |d j
i ksbJ |d j| d
 dt| fksJ |d j| ddfgksJ |d 	ddksJ |d j
ddiksJ t| d | t| f|d
 dt|f}|d j| d | t| fksJ |d j| ddfgks4J |d 	ddksLJ |d j
i ks`J |d j|d
 dt|fksJ |d j|ddfgksJ |d 	ddksJ |d j
i ksJ t| d | t| f| d
 dt| | d	d
fdddif}|d j| d | t| fks"J |d j| ddfgks>J |d 	ddksVJ |d j
i ksjJ |d j| d
 dt| fksJ |d j| d	d
fgksJ |d 	ddksJ |d j
ddiksJ dd }dd }dd }t|||}tdd |d jD sJ |d jd dd  dks:J d|d 	dv sRJ |d j
i ksfJ t|||dd}tdd |d jD sJ |d jd dd  dksJ |d 	ddksJ |d j
i ksJ d S )NrO   r   rL   r   r   rU   FrG   rc   rK   r   r  r  rP   c                 S   s   | S r3   r;   r   r;   r;   r<   r]   y  r^   z7test_plot3d_parametric_line_arguments.<locals>.<lambda>c                 S   s   d|  S r   r;   r   r;   r;   r<   r]   z  r^   c                 S   s   d|  S )NrH   r;   r   r;   r;   r<   r]   {  r^   c                 s   s   | ]}t |V  qd S r3   r  r  r;   r;   r<   r  }  r^   z8test_plot3d_parametric_line_arguments.<locals>.<genexpr>r   r  r	  c                 s   s   | ]}t |V  qd S r3   r  r  r;   r;   r<   r    r^   r
  )r1   r*   r	   r   r   r   r'   r   r   r   r   r   r  )rG   rP   rw   r  r  Zfzr;   r;   r<   %test_plot3d_parametric_line_arguments6  s       "&""&"" ""  r  c                  C   sH  t std td\} }t| | }t|d ts6J |d j| | ksLJ |d jd | ddfksr|ddfsrJ |d jd | ddfks|ddfsJ |d ddksJ |d j	i ksJ t| | | d	d
fdddi}t|d tsJ |d j| | ksJ |d jd | d	d
fks$J |d jd |ddfksBJ |d ddksZJ |d j	ddiksrJ t| | | d	d
f|ddfd}|d jd | d	d
fksJ |d jd |ddfksJ t| | | | }|d j| | ksJ |d jd | ddfks |ddfs J |d jd | ddfksJ|ddfsJJ |d ddksbJ |d j	i ksvJ |d j| | ksJ |d jd | ddfks|ddfsJ |d jd | ddfks|ddfsJ |d ddksJ |d j	i ksJ t| | | | | d	d
f|ddf}|d j| | ksHJ |d jd | d	d
fksfJ |d jd |ddfksJ |d ddksJ |d j	i ksJ |d j| | ksJ |d jd | d	d
fksJ |d jd |ddfksJ |d ddksJ |d j	i ks0J t| | | d	d
f|ddff| | | ddf|ddfdddif}|d j| | ksJ |d jd | d	d
fksJ |d jd |ddfksJ |d ddksJ |d j	i ksJ |d j| | ksJ |d jd | ddfks$J |d jd |ddfksBJ |d ddksZJ |d j	ddiksrJ dd }t|}t
|d jsJ |d jd dd  dksJ |d jd dd  dksJ |d ddksJ |d j	i ksJ t|ddd}t
|d js$J |d jd dd  dksDJ |d jd dd  dksdJ |d ddks|J |d j	i ksJ tt| || ddf|ddf}t|d tsJ |d jt| |ksJ |d jd | ddfksJ |d jd |ddfksJ |d ddks0J |d j	i ksDJ d S )NrO   r   r   r   rU   rL   Fzx + yrc   rK   r   r  r  rd   zx*yrg   rH   ir   c                 S   s   | | S r3   r;   rh   r;   r;   r<   r]     r^   z4test_plot3d_plot_contour_arguments.<locals>.<lambda>r   r   )r\   re   rH   )r_   rc   rL   )re   rH   )rc   rL   z	Min(x, y))r1   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sJJ |d j| | t| | t| | fksvJ |d j	d | ddfks|ddfsJ |d j	d | ddfks|ddfsJ |d 
ddksJ |d ji ksJ t| | t| | t| | | d	d
f|ddfdddi}t|d ts6J |d j| | t| | t| | fksdJ |d j	d | d	d
fksJ |d j	d |ddfksJ |d 
ddksJ |d jddiksJ t| | t| | t| | f| | t| | t| | df}|d j| | t| | t| | fks>J |d j	d | ddfksh|ddfshJ |d j	d | ddfks|ddfsJ |d 
ddksJ |d ji ksJ |d j| | t| | t| | fksJ |d j	d | ddfks|ddfsJ |d j	d | ddfks@|ddfs@J |d 
ddksXJ |d ji kslJ 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sJ |d j	d | d	d
fksJ |d j	d |ddfks6J |d 
ddksNJ |d ji ksbJ |d j| | t| | t| | fksJ |d j	d | ddfksJ |d j	d |ddfksJ |d 
ddksJ |d jddiksJ tdd dd dd dd}tdd |d jD s6J |d j	d dd  dksVJ |d j	d dd  dksvJ |d 
ddksJ |d ji ksJ 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 sJ |d j	d dd  dksJ |d j	d dd  dks8J |d 
ddksPJ |d ji ksdJ td'd |d jD sJ |d j	d dd  d(ksJ |d j	d dd  d)ksJ |d 
ddksJ |d ji ksJ d S )*NrO   r   r   r   rU   rL   Fz(x + y, cos(x + y), sin(x + y))rc   rK   r  rd   r   r  r  rg   rH   r  c                 S   s   | S r3   r;   uvr;   r;   r<   r]   (  r^   z:test_plot3d_parametric_surface_arguments.<locals>.<lambda>c                 S   s   |S r3   r;   r  r;   r;   r<   r]   (  r^   c                 S   s   | | S r3   r;   r  r;   r;   r<   r]   (  r^   )r  r   rK   )r  rg   rd   c                 s   s   | ]}t |V  qd S r3   r  r  r;   r;   r<   r  *  r^   z;test_plot3d_parametric_surface_arguments.<locals>.<genexpr>r
  )rg   rd   r   c                 S   s   | S r3   r;   r  r;   r;   r<   r]   3  r^   c                 S   s   |S r3   r;   r  r;   r;   r<   r]   3  r^   c                 S   s   | | S r3   r;   r  r;   r;   r<   r]   3  r^   c                 S   s   |S r3   r;   r  r;   r;   r<   r]   5  r^   c                 S   s   | S r3   r;   r  r;   r;   r<   r]   5  r^   c                 S   s   | | S r3   r;   r  r;   r;   r<   r]   5  r^   )r  rc   rH   )r  r  rf   c                 s   s   | ]}t |V  qd S r3   r  r  r;   r;   r<   r  7  r^   c                 s   s   | ]}t |V  qd S r3   r  r  r;   r;   r<   r  <  r^   )rc   rH   )r  rf   )r1   r*   r	   r   r   r   r   r(   r   r   r   r   r  r   r;   r;   r<   (test_plot3d_parametric_surface_arguments  s     ,&&..**.**&*..      r  )lrp   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-   r.   Zsympy.utilitiesr/   r   Zsympy.utilities.exceptionsr0   RuntimeErrorr1   r2   rA   rM   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