o
    3IhY                     @   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)min_module_version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>   ^/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sympy/plotting/tests/test_plot.pyr9   +      
zDummyBackendNotOk.__new__N)__name__
__module____qualname____doc__r9   r>   r>   r>   r?   r4   &   s    r4   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   r5   r6   r7   r:   r>   r>   r?   r9   3   r@   zDummyBackendOk.__new__c                 C      d S r6   r>   selfr>   r>   r?   show6      zDummyBackendOk.showc                 C   rF   r6   r>   rG   r>   r>   r?   save9   rJ   zDummyBackendOk.savec                 C   rF   r6   r>   rG   r>   r>   r?   close<   rJ   zDummyBackendOk.closeN)rA   rB   rC   rD   r9   rI   rK   rL   r>   r>   r>   r?   rE   /   s    rE   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   )rM   r>   r>   r?   test_basic_plotting_backend?   s    rS   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 backendrM   ysympy_prefixTf1
   legendlabelrT   nf2)r^   rT   r_   c                 S      | S r6   r>   ar>   r>   r?   <lambda>S       z&test_plot_and_save_1.<locals>.<lambda>r   brR   z	Big titlez
the x axiszstraight linerR   rR   )i   z!test_basic_options_and_colors.pngrT   r_   rN   rQ   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 r6   )r   r>   rM   rV   r>   r?   rd   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titlexlabelr^   r]   aspect_ratioxlimrK   ospathjoin_backendrL   appendr   r-   
ValueErrorr   r   )rT   tmpdirpfilenamep1p2fr>   ro   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 )&NrU   rM   rV   zrW   rX   r[   ri   ztest_parametric.pngrl   rm   Tparametric_plotr\   ztest_parametric_range.pngztest_parametric_multiple.pngrn   rN   z#test_parametric_multiple_ranges.png   )depthrT   r_   ztest_recursion_depth.pngFi  ztest_adaptive.png3d_parametric_plotztest_3d_line.pngztest_3d_line_multiple.png   )r_   rT   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.pngrQ   )r1   r*   r   r   r   r   r   rK   rx   ry   rz   r{   rL   r   r   r   r!   rT   rM   rV   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 )/NrU   rM   rV   r   rW   rX   r[   ri   c                 S   ra   r6   r>   rb   r>   r>   r?   rd   +  re   z&test_plot_and_save_3.<locals>.<lambda>r   ztest_colors_line_arity1.pngc                 S      |S r6   r>   rc   rf   r>   r>   r?   rd   /  re   ztest_colors_line_arity2.pngc                 S   ra   r6   r>   rb   r>   r>   r?   rd   5  re   z!test_colors_param_line_arity1.pngc                 S   ra   r6   r>   r   r>   r>   r?   rd   9  re   c                 S   r   r6   r>   r   r>   r>   r?   rd   =  re   z"test_colors_param_line_arity2b.pngg?   rQ   rk   ztest_colors_3d_line_arity1.pngc                 S   r   r6   r>   r   r>   r>   r?   rd   J  re   ztest_colors_3d_line_arity2.pngc                 S      |S r6   r>   rc   rf   cr>   r>   r?   rd   M  re   ztest_colors_3d_line_arity3.png   rl   rm   c                 S   ra   r6   r>   rb   r>   r>   r?   rd   S  re   ztest_colors_surface_arity1.pngc                 S   r   r6   r>   r   r>   r>   r?   rd   V  re   ztest_colors_surface_arity2.pngc                 S   r   r6   r>   r   r>   r>   r?   rd   Y  re   ztest_colors_surface_arity3a.pngrN   ztest_colors_surface_arity3b.pngrq   rR   c                 S   ra   r6   r>   rb   r>   r>   r?   rd   c  re   z!test_colors_param_surf_arity1.pngc                 S   s   | | S r6   r>   r   r>   r>   r?   rd   f      z!test_colors_param_surf_arity2.pngz!test_colors_param_surf_arity3.png)r1   r*   r   r   r   r   rs   rK   rx   ry   rz   r{   rL   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 )NrU   rM   rV   rW   rX   rQ   rR   r   rm   r[   T)rT   r_   force_real_evalztest_advanced_integral.png)r1   r*   r   r   r   r   r   r   r   rK   rx   ry   rz   r{   rL   )rT   rM   rV   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 )NrU   rM   rV   rW   rX   rR   rQ   r[   ri   ztest_advanced_inf_sum.pngFrI   rT   r_   Tr   ztest_advanced_fin_sum.png)r1   r*   r   r   r   r   r   rK   rx   ry   rz   r{   rL   only_integersstepsr0   UserWarning)rT   rM   rV   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 )NrU   rM   rW   rX   ztest.pngrm   rQ   ))      ?r>   ))rm   r   r   r>   0   z&The evaluation with NumPy/SciPy failedFmatchtest_stacklevelgư>{Gz?r[   ri   )r1   r*   r   r   r   r   r   r   rK   rx   ry   rz   r0   RuntimeWarningr   r
   r   r   r   r,   r   )
rT   rM   r~   r   r   x1m1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 )NrU   rM   rV   rW   rX   r[   ri   Fr   rT   r_   rI   rQ   ztest_grid1.pngrN   rk   ztest_grid2.pngc                 S   ra   r6   r>   rb   r>   r>   r?   rd     re   z(test_plotgrid_and_save.<locals>.<lambda>r   rR   rp   rq   rl   rm   rn   ztest_grid3.png)r1   r*   r   r   r   r   r   r   r   r"   rK   rx   ry   rz   r{   rL   r   rs   r   r!   )rT   rM   rV   r~   r   r   p3p4r   r   p5p6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 )NrU   rM   r[   ri   rQ   r   )	r1   r*   r   r   r|   len_seriesr-   	TypeError)rT   rM   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 )NrU   rM   rq   rR   r[   )rw   ylimrT   r_   z-3.14z3.14)rw   rT   r_   r   rT   r_   rw   r   c                      s   t  dtj dfddS Nr[   rR   r   r   r   r   ImaginaryUnitr>   rT   eqnr>   r?   rd   $  s    z"test_issue_15265.<locals>.<lambda>c                         t  dddtjfdS Nr[   r   rq   r   r   r>   r   r>   r?   rd   (      
c                      s   t  dtjdfddS r   )r   r   NegativeInfinityr>   r   r>   r?   rd   ,  r   c                      r   r   )r   r   Infinityr>   r   r>   r?   rd   0  r   )r1   r*   r   r   r   r   Pir{   rL   r   r-   r}   rT   rM   r   r>   r   r?   test_issue_15265  s8   




r   c                      s.   t std t  t  tt fdd d S )NrU   c                      s      S r6   rI   r>   r   r>   r?   rd   =  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 )NrU   rM   g333333?r[   rN   rQ   r   Fr   r   )r1   r*   r   r   r0   r   r   get_datarT   rM   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 )NrU   rM   gMbP?d   r   r   F)rT   r_   xscalerI   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 )NrU   rM   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 )
NrU   kT)integerr   rQ   Fr   r   )r1   r*   r   r   r   r   r   r   r   r   r   )rT   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 )NrU   rM   rQ   rN   FT)rI   rT   zinvalid value encountered inr   r   r   )
r1   r*   r   r   r   r   r,   r   r   r   rM   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 )	NrU   rM   r   rQ   rg   Fr   )rv   rI   rT   r_   )
r1   r*   r   r   r   r   r   rv   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 )NrU   rM   r1   Fr   )rP   rI   rT   r_   r   rO   defaultr   )
r1   r*   r   r   r   rP   r#   r   r   r$   )rT   rM   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 )NrU   rM   rQ   r   r[   ri   r   )	r1   r*   r   r   r{   axget_xlimabsget_ylim)rT   rM   r   rP   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 )
NrU   rM   rQ   rl   rm   <   ri   r   r[   )r1   r*   r   r   r   r   r{   r   r   r   r   get_zlim)rT   rM   v1v2r   rP   r   r   r   r   zmin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 )NrU   rM   r1   )   rk   r[   )rP   sizerT   r_   r   r   rR   rk   )rm   r[   rm   rQ   )r   rQ   )r   rT   r_   r   )rq   rN   )rP   r   )r1   r*   r   r   r   r{   figget_size_inchesr"   r-   r}   )rT   rM   r   s1r   s2r   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 )NrU   rM   F)rP   rI   r   r   z	test/path)r1   r*   r   r   r   r   r#   rP   r   r   rE   r4   r-   r   rI   rK   r{   rL   )rM   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 )NrM   rV   c                 S   ra   r6   r>   rb   r>   r>   r?   rd     re   z&test_custom_coloring.<locals>.<lambda>)rs   rR   rc                 S   ra   r6   r>   rb   r>   r>   r?   rd     re   c                 S   ra   r6   r>   rb   r>   r>   r?   rd   "  re   rl   rm   c                 S      | d |d  S NrQ   r>   r   r>   r>   r?   rd   '      )r   c                 S   r   r   r>   r   r>   r>   r?   rd   /  r   )r   r   r   r   r   r   r   r   ro   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 )NrU   rM   r   r[   Fr   r   )r1   r*   r   r   r   r.   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 )NrU   rM   r   rR   *noner<   marker	linestyletestr   r   rO   xyr   rR   rQ   rN   rM   y1rm   r
  widthheightr[   )markersannotationsfill
rectanglesrT   r_   rQ   )r1   r*   r   r   r   r{   r   collectionspatcheslines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 )NrU   rM   r   r[   Fr   r   rR   r  r  r  rQ   r  r  r	  rN   r  r  rk   rm   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 )NrU   rM   rV   Frm   ri   r   rQ   rN   rk   )r_   )r1   r*   r   r   r   r   
get_pointsr   r   r   r   r   r   
get_meshesr!   r   rM   rV   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 )NrU   x, yrR   r   r   r[   Fzx + 1r^   rj   rQ   r  colorr   zx**2rm   c                 S   ra   r6   r>   tr>   r>   r?   rd     re   z%test_plot_arguments.<locals>.<lambda>c                 S   ra   r6   r>   r!  r>   r>   r?   rd     re   r   r[    )r"  rl   r   )rl   r   )r1   r*   r	   r   
isinstancer%   r   ranges	get_labelrendering_kwcallablerM   rV   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 )NrU   r  rR   r   r   r[   FrM   rj   rQ   r  cmapRedstest1rn   rN   test2c                 S   ra   r6   r>   r!  r>   r>   r?   rd   &  re   z0test_plot_parametric_arguments.<locals>.<lambda>c                 S      d|  S r   r>   r!  r>   r>   r?   rd   '  r   c                 s       | ]}t |V  qd S r6   r)  .0r"  r>   r>   r?   	<genexpr>)      z1test_plot_parametric_arguments.<locals>.<genexpr>r#  Dummyr"  r   rQ   c                 s   r1  r6   r2  r3  r>   r>   r?   r5  0  r6  r   rQ   )r1   r*   r	   r   r%  r&   r   r&  r'  r(  all)rM   rV   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 )NrU   r  rR   r   r   r[   FrM   rj   rQ   r  r,  r-  rV   c                 S   ra   r6   r>   r!  r>   r>   r?   rd   y  re   z7test_plot3d_parametric_line_arguments.<locals>.<lambda>c                 S   r0  r   r>   r!  r>   r>   r?   rd   z  r   c                 S   r0  )NrN   r>   r!  r>   r>   r?   rd   {  r   c                 s   r1  r6   r2  r3  r>   r>   r?   r5  }  r6  z8test_plot3d_parametric_line_arguments.<locals>.<genexpr>r#  r7  r8  c                 s   r1  r6   r2  r3  r>   r>   r?   r5    r6  r9  )r1   r*   r	   r   r   r%  r'   r   r&  r'  r(  r   r:  )rM   rV   r   r;  r<  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 )NrU   r  r   r   r[   rR   Fzx + yrj   rQ   r  r,  r-  rk   zx*yrn   rN   ir   c                 S      | | S r6   r>   ro   r>   r>   r?   rd     r   z4test_plot3d_plot_contour_arguments.<locals>.<lambda>r#  r$  )rc   rl   rN   )rf   rj   rR   )rl   rN   )rj   rR   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   &&****"     rB  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 )*NrU   r  r   r   r[   rR   Fz(x + y, cos(x + y), sin(x + y))rj   rQ   r@  rk   r  r,  r-  rn   rN   r/  c                 S   ra   r6   r>   uvr>   r>   r?   rd   (  re   z:test_plot3d_parametric_surface_arguments.<locals>.<lambda>c                 S   r   r6   r>   rC  r>   r>   r?   rd   (  re   c                 S   rA  r6   r>   rC  r>   r>   r?   rd   (  r   )rD  r   rQ   )rE  rn   rk   c                 s   r1  r6   r2  r3  r>   r>   r?   r5  *  r6  z;test_plot3d_parametric_surface_arguments.<locals>.<genexpr>r9  )rn   rk   r$  c                 S   ra   r6   r>   rC  r>   r>   r?   rd   3  re   c                 S   r   r6   r>   rC  r>   r>   r?   rd   3  re   c                 S   rA  r6   r>   rC  r>   r>   r?   rd   3  r   c                 S   r   r6   r>   rC  r>   r>   r?   rd   5  re   c                 S   ra   r6   r>   rC  r>   r>   r?   rd   5  re   c                 S   s   | | S r6   r>   rC  r>   r>   r?   rd   5  r   )rD  rj   rN   )rE  r@  rm   c                 s   r1  r6   r2  r3  r>   r>   r?   r5  7  r6  c                 s   r1  r6   r2  r3  r>   r>   r?   r5  <  r6  )rj   rN   )r@  rm   )r1   r*   r	   r   r   r   r%  r(   r   r&  r'  r(  r:  r  r>   r>   r?   (test_plot3d_parametric_surface_arguments  s    ,&&,.**.**&*..      rF  )lrx   tempfiler   pytestsympy.concrete.summationsr   sympy.core.numbersr   r   r   sympy.core.relationalr   sympy.core.symbolr   r	   &sympy.functions.elementary.exponentialr
   r   r   r   (sympy.functions.elementary.miscellaneousr   r   $sympy.functions.elementary.piecewiser   (sympy.functions.elementary.trigonometricr   r   r   sympy.functions.special.hyperr   sympy.integrals.integralsr   sympy.logic.boolalgr   sympy.core.singletonr   sympy.core.sympifyr   sympy.externalr   sympy.plotting.plotr   r   r   r   r   r   r    r!   r"   r#   r$   sympy.plotting.seriesr%   r&   r'   r(   r)   sympy.testing.pytestr*   r+   r,   r-   r.   sympy.utilitiesr/   r   sympy.utilities.exceptionsr0   RuntimeErrorr1   r4   rE   rS   mark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?  rB  rF  r>   r>   r>   r?   <module>   s     	
Q
 
R

!
'
*

&








#


W\Tb