o
    GZhY                     @   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   
   t | S Nobject__new__clsargskwargs r<   M/var/www/auris/lib/python3.10/site-packages/sympy/plotting/tests/test_plot.pyr7   +      
zDummyBackendNotOk.__new__N)__name__
__module____qualname____doc__r7   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   r3   r4   r5   r8   r<   r<   r=   r7   3   r>   zDummyBackendOk.__new__c                 C      d S r4   r<   selfr<   r<   r=   show6      zDummyBackendOk.showc                 C   rD   r4   r<   rE   r<   r<   r=   save9   rH   zDummyBackendOk.savec                 C   rD   r4   r<   rE   r<   r<   r=   close<   rH   zDummyBackendOk.closeN)r?   r@   rA   rB   r7   rG   rI   rJ   r<   r<   r<   r=   rC   /   s    rC   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   )rK   r<   r<   r=   test_basic_plotting_backend?   s    rQ   adaptiveTFc              	      s  t std td tdtdd}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    d S 1 sw   Y  d S )+N"Matplotlib not the default backendrK   ysympy_prefixTf1
   legendlabelrR   nf2)r\   rR   r]   c                 S      | S r4   r<   ar<   r<   r=   <lambda>S       z&test_plot_and_save_1.<locals>.<lambda>r   brP   z	Big titlez
the x axiszstraight linerP   rP   )i   z!test_basic_options_and_colors.pngrR   r]   rL   rO   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 r4   )r   r<   rK   rT   r<   r=   rb   x   s   
 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xlabelr\   r[   aspect_ratioxlimrI   ospathjoin_backendrJ   appendr   r-   
ValueErrorr   r   )rR   tmpdirpfilenamep1p2fr<   rm   r=   test_plot_and_save_1D   s|   "



"
"

,
$
,


 &$r   c              
   C   sv  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    d S 1 sw   Y  d S )&NrS   rK   rT   zrU   rV   rY   rg   ztest_parametric.pngrj   rk   TZparametric_plotrZ   ztest_parametric_range.pngztest_parametric_multiple.pngrl   rL   z#test_parametric_multiple_ranges.png   )depthrR   r]   ztest_recursion_depth.pngFi  ztest_adaptive.pngZ3d_parametric_plotztest_3d_line.pngztest_3d_line_multiple.png   )r]   rR   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.pngrO   )r1   r*   r   r   r   r   r   rI   ru   rv   rw   rx   rJ   r   r   r   r!   rR   rK   rT   r   r{   r|   r}   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    d S 1 s w   Y  d S )/NrS   rK   rT   r   rU   rV   rY   rg   c                 S   r_   r4   r<   r`   r<   r<   r=   rb   +  rc   z&test_plot_and_save_3.<locals>.<lambda>r   ztest_colors_line_arity1.pngc                 S      |S r4   r<   ra   rd   r<   r<   r=   rb   /  rc   ztest_colors_line_arity2.pngc                 S   r_   r4   r<   r`   r<   r<   r=   rb   5  rc   z!test_colors_param_line_arity1.pngc                 S   r_   r4   r<   r   r<   r<   r=   rb   9  rc   c                 S   r   r4   r<   r   r<   r<   r=   rb   =  rc   z"test_colors_param_line_arity2b.pngg?   rO   ri   ztest_colors_3d_line_arity1.pngc                 S   r   r4   r<   r   r<   r<   r=   rb   J  rc   ztest_colors_3d_line_arity2.pngc                 S      |S r4   r<   ra   rd   cr<   r<   r=   rb   M  rc   ztest_colors_3d_line_arity3.png   rj   rk   c                 S   r_   r4   r<   r`   r<   r<   r=   rb   S  rc   ztest_colors_surface_arity1.pngc                 S   r   r4   r<   r   r<   r<   r=   rb   V  rc   ztest_colors_surface_arity2.pngc                 S   r   r4   r<   r   r<   r<   r=   rb   Y  rc   ztest_colors_surface_arity3a.pngrL   ztest_colors_surface_arity3b.pngro   rP   c                 S   r_   r4   r<   r`   r<   r<   r=   rb   c  rc   z!test_colors_param_surf_arity1.pngc                 S   s   | | S r4   r<   r   r<   r<   r=   rb   f      z!test_colors_param_surf_arity2.pngz!test_colors_param_surf_arity3.png)r1   r*   r   r   r   r   rq   rI   ru   rv   rw   rx   rJ   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>}ttt|d d t|d d  |d|f}t||dd	f| d
dd}d}|	t
j|| |j  W d    d S 1 sTw   Y  d S )NrS   rK   rT   rU   rV   rO   rP   r   rk   rY   T)rR   r]   Zforce_real_evalztest_advanced_integral.png)r1   r*   r   r   r   r   r   r   r   rI   ru   rv   rw   rx   rJ   )rR   rK   rT   r{   ir|   r}   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}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 suw   Y  |j  W d    d S 1 sw   Y  d S )NrS   rK   rT   rU   rV   rP   rO   rY   rg   ztest_advanced_inf_sum.pngFrG   rR   r]   Tr   ztest_advanced_fin_sum.png)r1   r*   r   r   r   r   r   rI   ru   rv   rw   rx   rJ   Zonly_integersZstepsr0   UserWarning)rR   rK   rT   r{   sr|   r}   r<   r<   r=   test_plot_and_save_5  s*   



	"r   c           
   	   C   s  t std td}tdd}d}tt|tt|  }|t	j
|| tt ttt| }|t	j
|| W d    n1 sJw   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 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NrS   rK   rU   rV   ztest.pngrk   rO   ))      ?r<   ))rk   r   r   r<   0   z&The evaluation with NumPy/SciPy failedFmatchZtest_stacklevelgư>{Gz?rY   rg   )r1   r*   r   r   r   r   r   r   rI   ru   rv   rw   r0   RuntimeWarningr   r
   r   r   r   r,   r   )
rR   rK   r{   r}   r|   x1m1Zx2m2exprr<   r<   r=   test_plot_and_save_6  s>   
"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    d S 1 sw   Y  d S )NrS   rK   rT   rU   rV   rY   rg   Fr   rR   r]   rG   rO   ztest_grid1.pngrL   ri   ztest_grid2.pngc                 S   r_   r4   r<   r`   r<   r<   r=   rb     rc   z(test_plotgrid_and_save.<locals>.<lambda>r   rP   rn   ro   rj   rk   rl   ztest_grid3.png)r1   r*   r   r   r   r   r   r   r   r"   rI   ru   rv   rw   rx   rJ   r   rq   r   r!   )rR   rK   rT   r{   r~   r   p3p4r|   r}   Zp5Zp6Zp7r<   r<   r=   test_plotgrid_and_save  sL   

 ""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s3J tt || W d    n1 sGw   Y  tt ||j W d    d S 1 sbw   Y  d S )NrS   rK   rY   rg   rO   r   )	r1   r*   r   r   ry   len_seriesr-   	TypeError)rR   rK   r~   r   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 )NrS   rK   ro   rP   rY   )rt   ylimrR   r]   z-3.14z3.14)rt   rR   r]   r   rR   r]   rt   r   c                      s   t  dtj dfddS NrY   rP   r   r   r   r   ZImaginaryUnitr<   rR   Zeqnr<   r=   rb   $  s    z"test_issue_15265.<locals>.<lambda>c                         t  dddtjfdS NrY   r   ro   r   r   r<   r   r<   r=   rb   (      
c                      s   t  dtjdfddS r   )r   r   NegativeInfinityr<   r   r<   r=   rb   ,  r   c                      r   r   )r   r   Infinityr<   r   r<   r=   rb   0  r   )r1   r*   r   r   r   r   Pirx   rJ   r   r-   rz   rR   rK   r|   r<   r   r=   test_issue_15265  s8   




r   c                      s.   t std t  t  tt fdd d S )NrS   c                      s      S r4   rG   r<   r|   r<   r=   rb   =  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s7J W d    d S 1 sBw   Y  d S )NrS   rK   g333333?rY   rL   rO   r   Fr   r   )r1   r*   r   r   r0   r   r   get_datarR   rK   r   r|   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s%J |d	 jd
ks.J |d	 jdks7J d S )NrS   rK   gMbP?d   r   r   F)rR   r]   ZxscalerG   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s"J d S )NrS   rK   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sHJ d S )
NrS   kT)integerr   rO   Fr   r   )r1   r*   r   r   r   r   r   r   r   r   r   )rR   r   r   r|   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s0J W d    d S 1 s;w   Y  d S )NrS   rK   rO   rL   FT)rG   rR   zinvalid value encountered inr   r   r   )
r1   r*   r   r   r   r   r,   r   r   r   rK   r|   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s%J t|d 	 d dks3J d S )	NrS   rK   r   rO   re   Fr   )rs   rG   rR   r]   )
r1   r*   r   r   r   r   r   rs   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sJ t|d  d dks*J tt|dd| dd}|jt	ks<J t|d  d dksJJ tt|d	d| dd}|jtks\J t|d  d dksjJ tt|d| dd
}|jtks{J t|d  d dksJ d S )NrS   rK   r1   Fr   )rN   rG   rR   r]   r   rM   defaultr   )
r1   r*   r   r   r   rN   r#   r   r   r$   )rR   rK   pmptpdr|   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 s,J t|d dk s6J |j \}}t|d dk sGJ t|d dk sQJ d S )NrS   rK   rO   r   rY   rg   r   )	r1   r*   r   r   rx   axget_xlimabsget_ylim)rR   rK   r|   rN   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 sFJ t	|d dk sPJ |j
 \}}	t	|d dk saJ t	|	d dk skJ |j \}
}t	|
d	 dk s|J t	|d	 dk sJ 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 sJ d S )
NrS   rK   rO   rj   rk   <   rg   r   rY   )r1   r*   r   r   r   r   rx   r   r   r   r   Zget_zlim)rR   rK   v1v2r|   rN   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r'|d	 d
ks)J tt|dd| dd}|jj }|d dkrF|d	 dksHJ tdd	||d| dd}|jj }|d dkre|d	 dksgJ t	t
 tt|ddd W d    d S 1 sw   Y  d S )NrS   rK   r1   )   ri   rY   )rN   sizerR   r]   r   r   rP   ri   )rk   rY   rk   rO   )r   rO   )r   rR   r]   r   )ro   rL   )rN   r   )r1   r*   r   r   r   rx   ZfigZget_size_inchesr"   r-   rz   )rR   rK   r~   s1r   s2r   Zs3r<   r<   r=   test_plot_size  s*   
"r   c                  C   st  t std td} tt| tdd tt| tdd}|jtks#J t|d 	 d dks1J tt| t
dd}|jt
ksAJ t|d 	 d dksOJ tt| tdd}|jtks_J t|d 	 d dksmJ tt |  W d    n1 sw   Y  tt |d W d    n1 sw   Y  tt |j  W d    d S 1 sw   Y  d S )NrS   rK   F)rN   rG   r   r   z	test/path)r1   r*   r   r   r   r   r#   rN   r   r   rC   r2   r-   r   rG   rI   rx   rJ   )rK   r   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 )NrK   rT   c                 S   r_   r4   r<   r`   r<   r<   r=   rb     rc   z&test_custom_coloring.<locals>.<lambda>)rq   rP   rc                 S   r_   r4   r<   r`   r<   r<   r=   rb     rc   c                 S   r_   r4   r<   r`   r<   r<   r=   rb   "  rc   rj   rk   c                 S      | d |d  S NrO   r<   r   r<   r<   r=   rb   '      )r   c                 S   r   r   r<   r   r<   r<   r=   rb   /  r   )r   r   r   r   r   r   r   r   rm   r<   r<   r=   test_custom_coloring  s8    $r   c                 C   sl   t std td}t|}t||ddfd| dd}t  |d   W d    d S 1 s/w   Y  d S )NrS   rK   r   rY   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s;J t|jjjdksFJ t|jjj	dksQJ t|jjj
dks\J d S )NrS   rK   r   rP   *noner:   markerZ	linestyletestr   r   rM   xyr   rP   rO   rL   rK   y1rk   r   widthheightrY   )markersannotationsfill
rectanglesrR   r]   rO   )r1   r*   r   r   r   rx   r   collectionsZ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 d    n1 s2w   Y  t|jdks@J t  dddg|_	W d    n1 sUw   Y  t|jdkscJ t  g dg dd|_
W d    n1 s{w   Y  t|jdksJ t  ddddg|_W d    n1 sw   Y  t|jdksJ d S )NrS   rK   r   rY   Fr   r   rP   r   r   r   rO   r   r   r   rL   r   r   ri   rk   r   )r1   r*   r   r   r   r.   r   r   r   r   r   r   r   r<   r<   r=   3test_deprecated_markers_annotations_rectangles_fillS  s(   r   c               	   C   s<  t std td} td}tt| ddd}t|d  dks#J t|d  dks/J tt	| t| | ddfddd}t|d  dksKJ t|d  d	ksWJ t
t	| t| | | ddfddd}t|d  d	kstJ t|d  d
ksJ tt	| d |d  | t tf|t tfdd}t|d  d	ksJ t|d  d	ksJ 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sJ d S )NrS   rK   rT   Frk   rg   r   rO   rL   ri   )r]   )r1   r*   r   r   r   r   Z
get_pointsr   r   r   r   r   r   Z
get_meshesr!   r   rK   rT   r|   r<   r<   r=   test_back_compatibilityg  s4    00(r  c                  C   s0  t std td\} }t| d }t|d tsJ |d j| d ks&J |d j| ddfgks3J |d ddks>J |d j	i ksGJ t| d d	}t|d tsWJ |d j| d ksbJ |d j| ddfgksoJ |d dd	kszJ |d j	i ksJ t| d | d
df}|d j| d
dfgksJ t| d | d
dfdddi}|d ddksJ |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sJ t|d tsJ |d j| d ksJ |d j| ddfgks J |d ddks,J |d j	i ks6J t| d | d | ddf}|d j| ddfgksQJ |d j| ddfgks_J 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sJ |d j	ddiksJ |d j	ddiksJ 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sJ |d j| d ks
J |d j| d
dfgksJ |d ddks$J |d j	ddiks0J dd }tdd }t|d tsDJ t
|d jsNJ |d jd dd  dks^J |d ddksjJ |d j	i kstJ t|dd}|d jd dd  dksJ |d ddksJ d S )NrS   x, yrP   r   r   rY   Fzx + 1r\   rh   rO   r   colorr   zx**2rk   c                 S   r_   r4   r<   tr<   r<   r=   rb     rc   z%test_plot_arguments.<locals>.<lambda>c                 S   r_   r4   r<   r  r<   r<   r=   rb     rc   r   rY    )r  rj   r   )rj   r   )r1   r*   r	   r   
isinstancer%   r   ranges	get_labelrendering_kwcallablerK   rT   r|   r   r<   r<   r=   test_plot_arguments  s~      r  c                  C   sR  t std td\} }t| d | }t|d tsJ |d j| d | fks)J |d j| ddfgks6J |d ddksAJ |d j	i ksJJ t| d | | d	d
fdddi}|d j| d | fksfJ |d j| d	d
fgkssJ |d ddks~J |d j	ddiksJ t| d | f| d	d
fd}|d j| d | fksJ |d j| d	d
fgksJ |d ddksJ |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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s,J |d j	i ks6J t| d | f|d
 |d df}|d j| d | fksTJ |d j| ddfgksbJ |d ddksnJ |d j	i ksxJ |d j|d
 |d fksJ |d j|ddfgksJ |d ddksJ |d j	i ksJ 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sJ |d j	i ks%J t| d | | d	d
fdf| d
 | d | ddfdddif}|d j| d | fksOJ |d j| d	d
fgks]J |d ddksiJ |d j	i kssJ |d j| d
 | d 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 }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sJ |d ddksJ |d j	i ks'J d S )NrS   r  rP   r   r   rY   FrK   rh   rO   r   cmapRedsZtest1rl   rL   test2c                 S   r_   r4   r<   r  r<   r<   r=   rb   &  rc   z0test_plot_parametric_arguments.<locals>.<lambda>c                 S      d|  S r   r<   r  r<   r<   r=   rb   '  r   c                 s       | ]}t |V  qd S r4   r  .0r  r<   r<   r=   	<genexpr>)      z1test_plot_parametric_arguments.<locals>.<genexpr>r  Dummyr  r   rO   c                 s   r  r4   r  r  r<   r<   r=   r  0  r  r   rO   )r1   r*   r	   r   r	  r&   r   r
  r  r  all)rK   rT   r|   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s<J |d 	ddksGJ |d j
i ksPJ t| d | t| | d	d
fdddi}t|d tskJ |d j| d | t| fks{J |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
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sJ |d 	ddks J |d j
i ks*J |d j| d
 dt| fks;J |d j| ddfgksIJ |d 	ddksUJ |d j
ddiksaJ t| d | t| f|d
 dt|f}|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 |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s$J |d j
i ks.J |d j| d
 dt| fks?J |d j| d	d
fgksMJ |d 	ddksYJ |d j
ddikseJ dd }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 sJ |d jd dd  dksJ |d 	ddksJ |d j
i ksJ d S )NrS   r  rP   r   r   rY   FrK   rh   rO   r   r  r  rT   c                 S   r_   r4   r<   r  r<   r<   r=   rb   y  rc   z7test_plot3d_parametric_line_arguments.<locals>.<lambda>c                 S   r  r   r<   r  r<   r<   r=   rb   z  r   c                 S   r  )NrL   r<   r  r<   r<   r=   rb   {  r   c                 s   r  r4   r  r  r<   r<   r=   r  }  r  z8test_plot3d_parametric_line_arguments.<locals>.<genexpr>r  r  r  c                 s   r  r4   r  r  r<   r<   r=   r    r  r  )r1   r*   r	   r   r   r	  r'   r   r
  r  r  r   r  )rK   rT   r|   r  r  Zfzr<   r<   r=   %test_plot3d_parametric_line_arguments6  s       &""&"" ""  r!  c                  C   s8  t std td\} }t| | }t|d tsJ |d j| | ks&J |d jd | ddfks9|ddfs9J |d jd | ddfksL|ddfsLJ |d ddksWJ |d j	i ks`J t| | | d	d
fdddi}t|d tswJ |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	ddiksJ 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s|ddfsJ |d ddks)J |d j	i ks3J |d j| | ks?J |d jd | ddfksT|ddfsTJ |d jd | ddfksi|ddfsiJ |d ddksuJ |d j	i ksJ t| | | | | d	d
f|dd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sJ |d jd | d	d
fksJ |d jd |ddfksJ |d ddksJ |d j	i ksJ t| | | d	d
f|ddff| | | ddf|ddfdddif}|d j| | ks;J |d jd | d	d
fksJJ |d jd |ddfksYJ |d ddkseJ |d j	i ksoJ |d j| | ks{J |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 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sJ t|ddd}t
|d js
J |d jd dd  dksJ |d jd dd  dks*J |d ddks6J |d j	i ks@J tt| || ddf|ddf}t|d tsYJ |d jt| |ksfJ |d jd | ddfksuJ |d jd |ddfksJ |d ddksJ |d j	i ksJ d S )NrS   r  r   r   rY   rP   Fzx + yrh   rO   r   r  r  ri   zx*yrl   rL   ir   c                 S      | | S r4   r<   rm   r<   r<   r=   rb     r   z4test_plot3d_plot_contour_arguments.<locals>.<lambda>r  r  )ra   rj   rL   )rd   rh   rP   )rj   rL   )rh   rP   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s%J |d j| | t| | t| | fks;J |d j	d | ddfksN|ddfsNJ |d j	d | ddfksa|ddfsaJ |d 
ddkslJ |d ji ksuJ t| | t| | t| | | d	d
f|ddfdddi}t|d tsJ |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| | t| | t| | f| | t| | t| | df}|d j| | t| | t| | fksJ |d j	d | ddfks.|ddfs.J |d j	d | ddfksC|ddfsCJ |d 
ddksOJ |d ji ksYJ |d j| | t| | t| | fkspJ |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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sJ |d 
ddks!J |d ji ks+J |d j| | t| | t| | fksBJ |d j	d | ddfksQJ |d j	d |ddfks`J |d 
ddkslJ |d jddiksxJ tdd dd dd dd}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 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sJ |d 
ddks"J |d ji ks,J td'd |d jD s;J |d j	d dd  d(ksKJ |d j	d dd  d)ks[J |d 
ddksgJ |d ji ksqJ d S )*NrS   r  r   r   rY   rP   Fz(x + y, cos(x + y), sin(x + y))rh   rO   r"  ri   r   r  r  rl   rL   r  c                 S   r_   r4   r<   uvr<   r<   r=   rb   (  rc   z:test_plot3d_parametric_surface_arguments.<locals>.<lambda>c                 S   r   r4   r<   r%  r<   r<   r=   rb   (  rc   c                 S   r#  r4   r<   r%  r<   r<   r=   rb   (  r   )r&  r   rO   )r'  rl   ri   c                 s   r  r4   r  r  r<   r<   r=   r  *  r  z;test_plot3d_parametric_surface_arguments.<locals>.<genexpr>r  )rl   ri   r  c                 S   r_   r4   r<   r%  r<   r<   r=   rb   3  rc   c                 S   r   r4   r<   r%  r<   r<   r=   rb   3  rc   c                 S   r#  r4   r<   r%  r<   r<   r=   rb   3  r   c                 S   r   r4   r<   r%  r<   r<   r=   rb   5  rc   c                 S   r_   r4   r<   r%  r<   r<   r=   rb   5  rc   c                 S   s   | | S r4   r<   r%  r<   r<   r=   rb   5  r   )r&  rh   rL   )r'  r"  rk   c                 s   r  r4   r  r  r<   r<   r=   r  7  r  c                 s   r  r4   r  r  r<   r<   r=   r  <  r  )rh   rL   )r"  rk   )r1   r*   r	   r   r   r   r	  r(   r   r
  r  r  r  r  r<   r<   r=   (test_plot3d_parametric_surface_arguments  s    ,&&,.**.**&*..      r(  )lru   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   rC   rQ   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