o
    oh                     @   s  d dl Z d dlmZ d dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZ d dlmZmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl)m0Z0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z>m?Z? d dl@mAZB d dlCmDZD e0  e(ddeEfdZFG dd de*ZGG dd de*ZHdd  ZIejJKd!d"d#gd$d% ZLejJKd!d"d#gd&d' ZMejJKd!d"d#gd(d) ZNejJKd!d"gd*d+ ZOejJKd!d"d#gd,d- ZPejJKd!d"d#gd.d/ ZQejJKd!d"d#gd0d1 ZRejJKd!d"d#gd2d3 ZSejJKd!d"d#gd4d5 ZTd6d7 ZUejJKd!d"d#gd8d9 ZVejJKd!d"d#gd:d; ZWejJKd!d"d#gd<d= ZXejJKd!d"d#gd>d? ZYd@dA ZZejJKd!d"d#gdBdC Z[ejJKd!d"d#gdDdE Z\ejJKd!d"d#gdFdG Z]ejJKd!d"d#gdHdI Z^ejJKd!d"d#gdJdK Z_dLdM Z`dNdO ZaejJKd!d"d#gdPdQ ZbejJKd!d"d#gdRdS ZcdTdU ZddVdW ZedXdY ZfdZd[ Zgd\d] Zhd^d_ Zid`da ZjdS )b    N)TemporaryDirectory)Sum)Ioopi)Ne)Symbolsymbols)LambertWexp	exp_polarlog)	real_rootsqrt)	Piecewise)cossin)Min)meijerg)Integral)And)S)sympify)import_module)Plotplotplot_parametricplot3d_parametric_lineplot3dplot3d_parametric_surface)
unset_showplot_contourPlotGridMatplotlibBackendTextBackend)LineOver1DRangeSeriesParametric2DLineSeriesParametric3DLineSeriesParametricSurfaceSeriesSurfaceOver2DRangeSeries)skipwarnsraiseswarns_deprecated_sympy)lambdify)ignore_warnings
matplotlibz1.1.0)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=   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/plotting/tests/test_plot.pyr8   +      
zDummyBackendNotOk.__new__N)__name__
__module____qualname____doc__r8   r=   r=   r=   r>   r3   &   s    r3   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   r4   r5   r6   r9   r=   r=   r>   r8   3   r?   zDummyBackendOk.__new__c                 C      d S r5   r=   selfr=   r=   r>   show6      zDummyBackendOk.showc                 C   rE   r5   r=   rF   r=   r=   r>   save9   rI   zDummyBackendOk.savec                 C   rE   r5   r=   rF   r=   r=   r>   close<   rI   zDummyBackendOk.closeN)r@   rA   rB   rC   r8   rH   rJ   rK   r=   r=   r=   r>   rD   /   s    rD   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   )rL   r=   r=   r>   test_basic_plotting_backend?   s    rR   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 backendrL   ysympy_prefixTf1
   legendlabelrS   nf2)r]   rS   r^   c                 S      | S r5   r=   ar=   r=   r>   <lambda>S       z&test_plot_and_save_1.<locals>.<lambda>r   brQ   z	Big titlez
the x axiszstraight linerQ   rQ   )i   z!test_basic_options_and_colors.pngrS   r^   rM   rP   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 r5   )r   r=   rL   rU   r=   r>   rc   x   s   
 r   Tztest_plot_piecewise.pngztest_plot_piecewise_2.pngztest_horizontal_line.pngztest_plot_piecewise_3.png)r0   r*   r   r   r   r   r   extend
line_colortitlexlabelr]   r\   aspect_ratioxlimrJ   ospathjoin_backendrK   appendr   r,   
ValueErrorr   r   )rS   tmpdirpfilenamep1p2fr=   rn   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 )&NrT   rL   rU   zrV   rW   rZ   rh   ztest_parametric.pngrk   rl   Tparametric_plotr[   ztest_parametric_range.pngztest_parametric_multiple.pngrm   rM   z#test_parametric_multiple_ranges.png   )depthrS   r^   ztest_recursion_depth.pngFi  ztest_adaptive.png3d_parametric_plotztest_3d_line.pngztest_3d_line_multiple.png   )r^   rS   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.pngrP   )r0   r*   r   r   r   r   r   rJ   rw   rx   ry   rz   rK   r   r   r   r!   rS   rL   rU   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 )/NrT   rL   rU   r   rV   rW   rZ   rh   c                 S   r`   r5   r=   ra   r=   r=   r>   rc   +  rd   z&test_plot_and_save_3.<locals>.<lambda>r   ztest_colors_line_arity1.pngc                 S      |S r5   r=   rb   re   r=   r=   r>   rc   /  rd   ztest_colors_line_arity2.pngc                 S   r`   r5   r=   ra   r=   r=   r>   rc   5  rd   z!test_colors_param_line_arity1.pngc                 S   r`   r5   r=   r   r=   r=   r>   rc   9  rd   c                 S   r   r5   r=   r   r=   r=   r>   rc   =  rd   z"test_colors_param_line_arity2b.pngg?   rP   rj   ztest_colors_3d_line_arity1.pngc                 S   r   r5   r=   r   r=   r=   r>   rc   J  rd   ztest_colors_3d_line_arity2.pngc                 S      |S r5   r=   rb   re   cr=   r=   r>   rc   M  rd   ztest_colors_3d_line_arity3.png   rk   rl   c                 S   r`   r5   r=   ra   r=   r=   r>   rc   S  rd   ztest_colors_surface_arity1.pngc                 S   r   r5   r=   r   r=   r=   r>   rc   V  rd   ztest_colors_surface_arity2.pngc                 S   r   r5   r=   r   r=   r=   r>   rc   Y  rd   ztest_colors_surface_arity3a.pngrM   ztest_colors_surface_arity3b.pngrp   rQ   c                 S   r`   r5   r=   ra   r=   r=   r>   rc   c  rd   z!test_colors_param_surf_arity1.pngc                 S   s   | | S r5   r=   r   r=   r=   r>   rc   f      z!test_colors_param_surf_arity2.pngz!test_colors_param_surf_arity3.png)r0   r*   r   r   r   r   rr   rJ   rw   rx   ry   rz   rK   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 )NrT   rL   rU   rV   rW   rP   rQ   r   rl   rZ   T)rS   r^   force_real_evalztest_advanced_integral.png)r0   r*   r   r   r   r   r   r   r   rJ   rw   rx   ry   rz   rK   )rS   rL   rU   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 )NrT   rL   rU   rV   rW   rQ   rP   rZ   rh   ztest_advanced_inf_sum.pngFrH   rS   r^   Tr   ztest_advanced_fin_sum.png)r0   r*   r   r   r   r   r   rJ   rw   rx   ry   rz   rK   only_integersstepsr/   UserWarning)rS   rL   rU   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 )NrT   rL   rV   rW   ztest.pngrl   rP   ))      ?r=   ))rl   r   r   r=   0   z&The evaluation with NumPy/SciPy failedFmatchtest_stacklevelgư>{Gz?rZ   rh   )r0   r*   r   r   r   r   r   r   rJ   rw   rx   ry   r/   RuntimeWarningr   r
   r   r   r   r+   r   )
rS   rL   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 )NrT   rL   rU   rV   rW   rZ   rh   Fr   rS   r^   rH   rP   ztest_grid1.pngrM   rj   ztest_grid2.pngc                 S   r`   r5   r=   ra   r=   r=   r>   rc     rd   z(test_plotgrid_and_save.<locals>.<lambda>r   rQ   ro   rp   rk   rl   rm   ztest_grid3.png)r0   r*   r   r   r   r   r   r   r   r"   rJ   rw   rx   ry   rz   rK   r   rr   r   r!   )rS   rL   rU   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 )NrT   rL   rZ   rh   rP   r   )	r0   r*   r   r   r{   len_seriesr,   	TypeError)rS   rL   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 )NrT   rL   rp   rQ   rZ   )rv   ylimrS   r^   z-3.14z3.14)rv   rS   r^   r   rS   r^   rv   r   c                      s   t  dtj dfddS NrZ   rQ   r   r   r   r   ImaginaryUnitr=   rS   eqnr=   r>   rc   $  s    z"test_issue_15265.<locals>.<lambda>c                         t  dddtjfdS NrZ   r   rp   r   r   r=   r   r=   r>   rc   (      
c                      s   t  dtjdfddS r   )r   r   NegativeInfinityr=   r   r=   r>   rc   ,  r   c                      r   r   )r   r   Infinityr=   r   r=   r>   rc   0  r   )r0   r*   r   r   r   r   Pirz   rK   r   r,   r|   rS   rL   r~   r=   r   r>   test_issue_15265  s8   




r   c                      s.   t std t  t  tt fdd d S )NrT   c                      s      S r5   rH   r=   r~   r=   r>   rc   =  r   z!test_empty_Plot.<locals>.<lambda>)r0   r*   r   r   r,   NotImplementedErrorr=   r=   r   r>   test_empty_Plot4  s
   r   c                 C   s   t std td}|d d|d   |d  }t||ddf| dd	d
}tt t|d  d dks7J W d    d S 1 sBw   Y  d S )NrT   rL   g333333?rZ   rM   rP   r   Fr   r   )r0   r*   r   r   r/   r   r   get_datarS   rL   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 )NrT   rL   gMbP?d   r   r   F)rS   r^   xscalerH   r   g      Y@)r0   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 )NrT   rL   Fr   r   r   )r0   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 )
NrT   kT)integerr   rP   Fr   r   )r0   r*   r   r   r   r   r   r   r   r   r   )rS   r   r   r~   r=   r=   r>   test_issue_11865k  s   L r   c                  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 )NrT   rL   rP   rM   FT)rH   rS   zinvalid value encountered inr   r   r   )
r0   r*   r   r   r   r   r+   r   r   r   rL   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 )	NrT   rL   r   rP   rf   Fr   )ru   rH   rS   r^   )
r0   r*   r   r   r   r   r   ru   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 )NrT   rL   r0   Fr   )rO   rH   rS   r^   r   rN   defaultr   )
r0   r*   r   r   r   rO   r#   r   r   r$   )rS   rL   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 )NrT   rL   rP   r   rZ   rh   r   )	r0   r*   r   r   rz   axget_xlimabsget_ylim)rS   rL   r~   rO   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 )
NrT   rL   rP   rk   rl   <   rh   r   rZ   )r0   r*   r   r   r   r   rz   r   r   r   r   get_zlim)rS   rL   v1v2r~   rO   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 )NrT   rL   r0   )   rj   rZ   )rO   sizerS   r^   r   r   rQ   rj   )rl   rZ   rl   rP   )r   rP   )r   rS   r^   r   )rp   rM   )rO   r   )r0   r*   r   r   r   rz   figget_size_inchesr"   r,   r|   )rS   rL   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 )NrT   rL   F)rO   rH   r   r   z	test/path)r0   r*   r   r   r   r   r#   rO   r   r   rD   r3   r,   r   rH   rJ   rz   rK   )rL   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 )NrL   rU   c                 S   r`   r5   r=   ra   r=   r=   r>   rc     rd   z&test_custom_coloring.<locals>.<lambda>)rr   rQ   rc                 S   r`   r5   r=   ra   r=   r=   r>   rc     rd   c                 S   r`   r5   r=   ra   r=   r=   r>   rc   !  rd   rk   rl   c                 S      | d |d  S NrP   r=   r   r=   r=   r>   rc   &      )r   c                 S   r   r   r=   r   r=   r=   r>   rc   .  r   )r   r   r   r   r   r   r   r   rn   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 )NrT   rL   r   rZ   Fr   r   )r0   r*   r   r   r   r-   get_segmentsr   r=   r=   r>   test_deprecated_get_segments3  s   "r   c              	   C   s   t std td}t|ddgddggdddgdd	d
g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 )NrT   rL   r   rQ   *noner;   marker	linestyletestr   r   rN   xyr   rQ   rP   rM   rL   y1rl   r	  widthheightrZ   )markersannotationsfill
rectanglesrS   r^   rP   )r0   r*   r   r   r   rz   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 )NrT   rL   r   rZ   Fr   r   rQ   r  r  r  rP   r  r  r  rM   r
  r  rj   rl   r  )r0   r*   r   r   r   r-   r  r   r   r  r  r  r   r=   r=   r>   3test_deprecated_markers_annotations_rectangles_fillR  s(   r  c               	   C   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 )NrT   rL   rU   Frl   rh   r   rP   rM   rj   )r^   )r0   r*   r   r   r   r   
get_pointsr   r   r   r   r   r   
get_meshesr!   r   rL   rU   r~   r=   r=   r>   test_back_compatibilityf  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 )NrT   x, yrQ   r   r   rZ   Fzx + 1r]   ri   rP   r  colorr   zx**2rl   c                 S   r`   r5   r=   tr=   r=   r>   rc     rd   z%test_plot_arguments.<locals>.<lambda>c                 S   r`   r5   r=   r   r=   r=   r>   rc     rd   r   rZ    )r!  rk   r   )rk   r   )r0   r*   r	   r   
isinstancer%   r   ranges	get_labelrendering_kwcallablerL   rU   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 )NrT   r  rQ   r   r   rZ   FrL   ri   rP   r  cmapRedstest1rm   rM   test2c                 S   r`   r5   r=   r   r=   r=   r>   rc   %  rd   z0test_plot_parametric_arguments.<locals>.<lambda>c                 S      d|  S r   r=   r   r=   r=   r>   rc   &  r   c                 s       | ]}t |V  qd S r5   r(  .0r!  r=   r=   r>   	<genexpr>(      z1test_plot_parametric_arguments.<locals>.<genexpr>r"  Dummyr!  r   rP   c                 s   r0  r5   r1  r2  r=   r=   r>   r4  /  r5  r   rP   )r0   r*   r	   r   r$  r&   r   r%  r&  r'  all)rL   rU   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 )NrT   r  rQ   r   r   rZ   FrL   ri   rP   r  r+  r,  rU   c                 S   r`   r5   r=   r   r=   r=   r>   rc   x  rd   z7test_plot3d_parametric_line_arguments.<locals>.<lambda>c                 S   r/  r   r=   r   r=   r=   r>   rc   y  r   c                 S   r/  )NrM   r=   r   r=   r=   r>   rc   z  r   c                 s   r0  r5   r1  r2  r=   r=   r>   r4  |  r5  z8test_plot3d_parametric_line_arguments.<locals>.<genexpr>r"  r6  r7  c                 s   r0  r5   r1  r2  r=   r=   r>   r4    r5  r8  )r0   r*   r	   r   r   r$  r'   r   r%  r&  r'  r   r9  )rL   rU   r~   r:  r;  fzr=   r=   r>   %test_plot3d_parametric_line_arguments5  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 )NrT   r  r   r   rZ   rQ   Fzx + yri   rP   r  r+  r,  rj   zx*yrm   rM   ir   c                 S      | | S r5   r=   rn   r=   r=   r>   rc     r   z4test_plot3d_plot_contour_arguments.<locals>.<lambda>r"  r#  )rb   rk   rM   )re   ri   rQ   )rk   rM   )ri   rQ   z	Min(x, y))r0   r*   r	   r   r$  r)   r   r%  r&  r'  r(  r   r)  r=   r=   r>   "test_plot3d_plot_contour_arguments  s   &&****"     rA  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 )*NrT   r  r   r   rZ   rQ   Fz(x + y, cos(x + y), sin(x + y))ri   rP   r?  rj   r  r+  r,  rm   rM   r.  c                 S   r`   r5   r=   uvr=   r=   r>   rc   '  rd   z:test_plot3d_parametric_surface_arguments.<locals>.<lambda>c                 S   r   r5   r=   rB  r=   r=   r>   rc   '  rd   c                 S   r@  r5   r=   rB  r=   r=   r>   rc   '  r   )rC  r   rP   )rD  rm   rj   c                 s   r0  r5   r1  r2  r=   r=   r>   r4  )  r5  z;test_plot3d_parametric_surface_arguments.<locals>.<genexpr>r8  )rm   rj   r#  c                 S   r`   r5   r=   rB  r=   r=   r>   rc   2  rd   c                 S   r   r5   r=   rB  r=   r=   r>   rc   2  rd   c                 S   r@  r5   r=   rB  r=   r=   r>   rc   2  r   c                 S   r   r5   r=   rB  r=   r=   r>   rc   4  rd   c                 S   r`   r5   r=   rB  r=   r=   r>   rc   4  rd   c                 S   s   | | S r5   r=   rB  r=   r=   r>   rc   4  r   )rC  ri   rM   )rD  r?  rl   c                 s   r0  r5   r1  r2  r=   r=   r>   r4  6  r5  c                 s   r0  r5   r1  r2  r=   r=   r>   r4  ;  r5  )ri   rM   )r?  rl   )r0   r*   r	   r   r   r   r$  r(   r   r%  r&  r'  r9  r  r=   r=   r>   (test_plot3d_parametric_surface_arguments  s    ,&&,.**.**&*..      rE  )krw   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-   sympy.utilitiesr.   r   sympy.utilities.exceptionsr/   RuntimeErrorr0   r3   rD   rR   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>  rA  rE  r=   r=   r=   r>   <module>   s     	
Q
 
R

!
'
*

&







#


W\Tb