U
    	-etb                     @   s>  d dl Z d dlm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 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'm(Z(m)Z)m*Z*m+Z+m,Z, d dl&m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z; d dl<m=Z= e-  e%dde>fdZ?G dd de3Z@G dd de3ZAdd ZBdd  ZCd!d" ZDd#d$ ZEd%d& ZFd'd( ZGd)d* ZHd+d, ZId-d. ZJd/d0 ZKd1d2 ZLd3d4 ZMd5d6 ZNd7d8 ZOd9d: ZPd;d< ZQd=d> ZRd?d@ ZSdAdB ZTdCdD ZUdEdF ZVdGdH ZWdIdJ ZXdS )K    N)TemporaryDirectory)Sum)Ioopi)Ne)Symbol)LambertWexp	exp_polarlog)	real_rootsqrt)	Piecewise)cossin)meijerg)Integral)And)S)sympify)import_module)Plotplotplot_parametricplot3d_parametric_lineplot3dplot3d_parametric_surface)
unset_showplot_contourPlotGridDefaultBackendMatplotlibBackendTextBackendBaseBackend)skipraiseswarnswarns_deprecated_sympy)lambdify)ignore_warnings
matplotlibz1.1.0)Zmin_module_versionZcatchc                   @   s   e Zd Z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`.
    N)__name__
__module____qualname____doc__ r1   r1   _/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/plotting/tests/test_plot.pyr,   $   s   r,   c                   @   s(   e Zd Z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                 C   s   d S Nr1   selfr1   r1   r2   show0   s    zDummyBackendOk.showc                 C   s   d S r4   r1   r5   r1   r1   r2   save3   s    zDummyBackendOk.savec                 C   s   d S r4   r1   r5   r1   r1   r2   close6   s    zDummyBackendOk.closeN)r-   r.   r/   r0   r7   r8   r9   r1   r1   r1   r2   r3   ,   s   r3   c               	      sX  t std td tdtdd&} t ddd}t t   t  d	d
}|| dd |d _d|d _d|_	d|_
d|d _d|_d|_d|_d}|tj| | |j  |t d  |t d  d d  d}|tj| | t d  ddf|d< d}|tj| | |j  tt  dt dt f}d}|tj| | |j  tt }d}|tj| | |j  t d  ddff d  d dff}d!}|tj| | |j  tt fd"d ttd dkfd# d$df}d%}|tj| | |j  tt  dk f d df d df}d&}|tj| | |j  t }t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(}|tj| | |j  W 5 Q R X d S ))N"Matplotlib not the default backendxysympy_prefixTf1legendlabelf2)rC   c                 S   s   | S r4   r1   ar1   r1   r2   <lambda>H       z&test_plot_and_save_1.<locals>.<lambda>r   b   z	Big titlez
the x axiszstraight linerJ   rJ   )i   z!test_basic_options_and_colors.png      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   r1   r;   r<   r1   r2   rG   m   rH   r   Tztest_plot_piecewise.pngztest_plot_piecewise_2.pngztest_horizontal_line.pngztest_plot_piecewise_3.png)r+   r%   r   r   r   r   r   extend
line_colortitleZxlabelrC   rB   aspect_ratioxlimr8   ospathjoin_backendr9   appendr   r&   
ValueErrorr   r   )tmpdirpfilenamep1p2fr1   rT   r2   test_plot_and_save_1:   s|    






&

&


  rh   c               
   C   s  t std td} td}td}tdd}tt| t| }d}|tj	
|| |j  tt| t| | dd	fd
dd}d}|tj	
|| |j  tt| t| f| t| f}d}|tj	
|| |j  tt| t| | ddff| t| | dd	ff}d}|tj	
|| |j  t| t| dd}d}|tj	
|| |j  tt| t| ddd}d}|tj	
|| |j  tt| t| | d
dd}d}|tj	
|| |j  tt| t| | | dd	fft| t| | | ddff}d}|tj	
|| |j  tt| t| | dd}d}|tj	
|| |j  t| | }d}|tj	
|| |j  t|  | | | | dd	f}d }|tj	
|| |j  t| | | ddf|ddff|  | | ddf|ddff}d!}|tj	
|| |j  tt| | t| | | | }d"}|tj	
|| |j  t| t| | t| || dd	f|dd	fft| | t| | | | | dd	f|dd	ff}d"}|tj	
|| |j  tt| t| | dd	f|dd	f}d#}|tj	
|| |j  t| d$ |d$  | d |d  | dd	f|dd	f}d#}|tj	
|| |j  t| d$ |d$  | dd	f|dd	ff| d |d  | ddf|ddff}d#}|tj	
|| |j  W 5 Q R X d S )%Nr:   r;   r<   zr=   r>   ztest_parametric.pngrQ   rR   TZparametric_plotrA   ztest_parametric_range.pngztest_parametric_multiple.pngrS   rM   z#test_parametric_multiple_ranges.png   )depthztest_recursion_depth.pngF  )adaptivenb_of_pointsztest_adaptive.pngZ3d_parametric_plotztest_3d_line.pngztest_3d_line_multiple.png   )rn   ztest_3d_line_points.pngztest_surface.pngztest_surface_multiple.pngz test_surface_multiple_ranges.pngztest_parametric_surface.pngztest_contour_plot.pngrN   )r+   r%   r   r   r   r   r   r8   r\   r]   r^   r_   r9   r   r   r   r   r;   r<   ri   rb   rc   rd   r1   r1   r2   test_plot_and_save_2   s    
    

 


    
 



 
 
(,
$
2
  rq   c               	   C   s  t std td} td}td}tdd}tt| }dd |d	 _d
}|tj	
|| dd |d	 _d}|tj	
|| |j  t| t|  | t|  | d	df}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}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 }|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*}|tj	
|| d+d |d	 _d,}|tj	
|| t| ||ft| d |d  |d  |d	 _d-}|tj	
|| |j  W 5 Q R X d S ).Nr:   r;   r<   ri   r=   r>   c                 S   s   | S r4   r1   rE   r1   r1   r2   rG     rH   z&test_plot_and_save_3.<locals>.<lambda>r   ztest_colors_line_arity1.pngc                 S   s   |S r4   r1   rF   rI   r1   r1   r2   rG     rH   ztest_colors_line_arity2.png
   c                 S   s   | S r4   r1   rE   r1   r1   r2   rG     rH   z!test_colors_param_line_arity1.pngc                 S   s   | S r4   r1   rr   r1   r1   r2   rG     rH   c                 S   s   |S r4   r1   rr   r1   r1   r2   rG   #  rH   z"test_colors_param_line_arity2b.pngg?   rN   rP   ztest_colors_3d_line_arity1.pngc                 S   s   |S r4   r1   rr   r1   r1   r2   rG   /  rH   ztest_colors_3d_line_arity2.pngc                 S   s   |S r4   r1   rF   rI   cr1   r1   r2   rG   2  rH   ztest_colors_3d_line_arity3.png   rQ   rR   c                 S   s   | S r4   r1   rE   r1   r1   r2   rG   8  rH   ztest_colors_surface_arity1.pngc                 S   s   |S r4   r1   rr   r1   r1   r2   rG   ;  rH   ztest_colors_surface_arity2.pngc                 S   s   |S r4   r1   ru   r1   r1   r2   rG   >  rH   ztest_colors_surface_arity3a.pngrM   ztest_colors_surface_arity3b.pngrV   rJ   c                 S   s   | S r4   r1   rE   r1   r1   r2   rG   H  rH   z!test_colors_param_surf_arity1.pngc                 S   s   | | S r4   r1   rr   r1   r1   r2   rG   K  rH   z!test_colors_param_surf_arity2.pngz!test_colors_param_surf_arity3.png)r+   r%   r   r   r   r   rX   r8   r\   r]   r^   r_   r9   r   r   r   	lambdify_r   surface_colorr   r   rp   r1   r1   r2   test_plot_and_save_3  s    
"
 
$.
  .rz   c               
   C   s   t std td} td}tdd}ttdddh ttt| d	 d
 t	| d	 d
  | d|f}t
||d
df}d}|tj|| |j  W 5 Q R X W 5 Q R X d S )Nr:   r;   r<   r=   r>   z/The evaluation of the expression is problematicF)matchZtest_stacklevelrN   rJ   r   rR   ztest_advanced_integral.png)r+   r%   r   r   r'   UserWarningr   r   r   r   r   r8   r\   r]   r^   r_   r9   )r;   r<   rb   irc   rd   r1   r1   r2   test_plot_and_save_4T  s    0r~   c               
   C   s   t std td} td}tdd}td| |  | dtf}t||ddf}d	}|tj	
|| |j  ttd|  | d|f|ddfd
d}d|d _d|d _d}tt |tj	
|| W 5 Q R X |j  W 5 Q R X d S )Nr:   r;   r<   r=   r>   rJ   rN   rs   ztest_advanced_inf_sum.pngFr7   Tr   ztest_advanced_fin_sum.png)r+   r%   r   r   r   r   r   r8   r\   r]   r^   r_   r9   Zonly_integersZstepsr*   r|   )r;   r<   rb   src   rd   r1   r1   r2   test_plot_and_save_5q  s"    
$

	
r   c            	   
   C   sd  t std td} tdd:}d}tt| tt|   }|t	j
|| tt, ttt|  }|t	j
|| W 5 Q R X tt| }|t	j
|| ttt| }|t	j
|| d| d  tt t  d }tdd	|}d| d  ttt  d }tdd	|}|| d
t  }t|| ddf}|t	j
|| W 5 Q R X d S )Nr:   r;   r=   r>   ztest.pngrR   rN   ))      ?r1   ))rR   r   r   r1   0   gư>{Gz?)r+   r%   r   r   r   r   r   r   r8   r\   r]   r^   r*   RuntimeWarningr   r	   r   r   r   )	r;   rb   rd   rc   x1m1Zx2m2exprr1   r1   r2   test_plot_and_save_6  s*    
r   c               	   C   s  t std td} td}tdd}t| }tt| t| f| t| fdd}tt| t| dddd	}tt| t| | 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 _ttd| dkfd| ddfdd}
t| d
 |d
  | ddf|ddff| d |d  | ddf|ddffdd}t	dd|	|
|}d}|
tj|| |j  W 5 Q R X d S )Nr:   r;   r<   r=   r>   Fr   rl   )rm   rn   r7   rN   ztest_grid1.pngrM   rP   ztest_grid2.pngc                 S   s   | S r4   r1   rE   r1   r1   r2   rG     rH   z(test_plotgrid_and_save.<locals>.<lambda>r   rJ   rU   rV   rQ   rR   rS   ztest_grid3.png)r+   r%   r   r   r   r   r   r   r   r    r8   r\   r]   r^   r_   r9   r   rX   r   r   )r;   r<   rb   re   rf   p3p4rc   rd   Zp5Zp6Zp7r1   r1   r2   test_plotgrid_and_save  sF    "    

"   r   c               	   C   s   t std td} t| }t| d }t| d  ||d  t|jdksTttt	 || W 5 Q R X tt	 ||j W 5 Q R X d S )Nr:   r;   rN   r   )
r+   r%   r   r   r`   lenZ_seriesAssertionErrorr&   	TypeError)r;   re   rf   r1   r1   r2   test_append_issue_7140  s    

r   c                     s   t std td} t|  t tj tjfdd}|j  t dtj tjfd}|j  t dt	dt	dfd}|j  t 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 )Nr:   r;   rV   rJ   r[   Zylimz-3.14z3.14c                      s   t  tj dfddS NrJ   r   r   r   r   ZImaginaryUnitr1   Zeqnr1   r2   rG     rH   z"test_issue_15265.<locals>.<lambda>c                      s   t  ddtjfdS Nr   rV   r   r   r1   r   r1   r2   rG     rH   c                      s   t  tjdfddS r   )r   r   NegativeInfinityr1   r   r1   r2   rG     rH   c                      s   t  ddtjfdS r   )r   r   Infinityr1   r   r1   r2   rG   
  rH   )r+   r%   r   r   r   r   Pir_   r9   r   r&   ra   r;   rc   r1   r   r2   test_issue_15265  s0    







r   c                  C   s$   t std t  t } |   d S )Nr:   )r+   r%   r   r   r7   )rc   r1   r1   r2   test_empty_Plot  s
    r   c               	   C   sx   t std td} | d d| d   | d  }t|| ddfdd	}tt" t|d
  d
 dksjtW 5 Q R X d S )Nr:   r;   g333333?rs   rM   rN   Fr   r   ro   )	r+   r%   r   r   r*   r   r   get_datar   r;   rg   rc   r1   r1   r2   test_issue_17405  s    
r   c                  C   sn   t std td} t| | ddfddd}t|d  d d	ksFt|d jd
ksXt|d jdksjtd S )Nr:   r;   gMbP?d   r   F)Zxscaler7   r   ro   g      Y@)	r+   r%   r   r   r   r   r   endstartr   r1   r1   r2   test_logplot_PR_16796&  s    r   c                  C   sD   t std td} tt| dd}t|d  d dks@td S )Nr:   r;   Fr   r   ro   )r+   r%   r   r   r	   r   r   r   r   r1   r1   r2   test_issue_165723  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}t	|d 
 d d	kstd S )
Nr:   kT)integerr   rN   Fr   ro   )r+   r%   r   r   r   r
   r   r   r   r   r   r   )r   rg   rc   r1   r1   r2   test_issue_11865>  s    Lr   c                  C   sR   t std td} ttt| | d  ddd}t|d  d dksNtd S )	Nr:   r;   rN   rM   Fr   r   ro   )	r+   r%   r   r   r   r   r   r   r   r   r1   r1   r2   test_issue_11461K  s
    r   c                  C   sf   t std td} tt| t| | ddt fddd}|jdksFtt	|d 
 d dksbtd S )	Nr:   r;   r   rN   rK   F)rZ   r7   ro   )r+   r%   r   r   r   r   r   rZ   r   r   r   r   r1   r1   r2   test_issue_11764W  s    $r   c                  C   s  t std td} tt| ddd}|jtks4tt|d 	 d dksPttt| ddd}|jt
ksptt|d 	 d dksttt| d	dd}|jtkstt|d 	 d dksttt| dd
}|jtkstt|d 	 d dkstd S )Nr:   r;   r+   Fbackendr7   r   ro   textdefaultr   )r+   r%   r   r   r   r   r"   r   r   r   r#   r!   )r;   pmptpdrc   r1   r1   r2   test_issue_13516c  s    r   c                  C   s   t std td} t| | d | ddf}|j}|jd  \}}t|d dk sVtt|d dk sjt|jd 	 \}}t|d dk stt|d dk std S )Nr:   r;   rN   r   rs   r   r   )
r+   r%   r   r   r_   axget_xlimabsr   get_ylim)r;   rc   r   xminxmaxyminymaxr1   r1   r2   test_plot_limitsz  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||}|j}|jd  \}}t	|d dk st
t	|d dk st
|jd  \}}t	|d dk st
t	|d dk st
|jd  \}	}
t	|	d dk st
t	|
d dk st
t||}|j}|jd  \}}t	|d dk sLt
t	|d dk sbt
|jd  \}}t	|d dk st
t	|d dk st
|jd  \}	}
t	|	d dk st
t	|
d dk st
d S )	Nr:   r;   rN   rQ   rR   r   r   rs   )r+   r%   r   r   r   r   r_   r   r   r   r   r   Zget_zlim)r;   Zv1Zv2rc   r   r   r   r   r   ZzminZzmaxr1   r1   r2   "test_plot3d_parametric_line_limits  s6    &

r   c               	   C   s   t std td} tt| ddd}|jj }|d dkrJ|d d	ksNttt| dd
d}|jj }|d dkr|d dkstt	dd||dd}|jj }|d dkr|d dkstt
t tt| ddd W 5 Q R X d S )Nr:   r;   r+   )   rP   )r   sizer   r   rJ   rP   )rR   rs   rR   rs   rN   )rw   rN   )r   rw   )rV   rM   )r+   r%   r   r   r   r_   ZfigZget_size_inchesr   r    r&   ra   )r;   re   s1rf   s2r   Zs3r1   r1   r2   test_plot_size  s    
r   c               	   C   sJ  t std td} tt tt| tdd W 5 Q R X tt| tdd}|j	tksZt
t|d  d dksvt
tt| tdd}|j	tkst
t|d  d dkst
tt| tdd}|j	tkst
t|d  d dkst
tt |  W 5 Q R X tt |d W 5 Q R X tt |j  W 5 Q R X d S )Nr:   r;   Fr   r   ro   z	test/path)r+   r%   r   r&   r   r   r   r   r"   r   r   r   r   r3   r,   NotImplementedErrorr7   r8   r_   r9   )r;   rf   r   r   r1   r1   r2   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 )Nr;   r<   c                 S   s   | S r4   r1   rE   r1   r1   r2   rG     rH   z&test_custom_coloring.<locals>.<lambda>)rX   rJ   rc                 S   s   | S r4   r1   rE   r1   r1   r2   rG     rH   c                 S   s   | S r4   r1   rE   r1   r1   r2   rG     rH   rQ   rR   c                 S   s   | d |d  S NrN   r1   rr   r1   r1   r2   rG     rH   )ry   c                 S   s   | d |d  S r   r1   rr   r1   r1   r2   rG     rH   )r   r   r   r   r   r   r   r   rT   r1   r1   r2   test_custom_coloring  s>        r   c               	   C   sR   t std td} t| }t|| ddfdd}t  |d   W 5 Q R X d S )Nr:   r;   r   rs   Fr   r   )r+   r%   r   r   r   r(   Zget_segmentsr   r1   r1   r2   test_deprecated_get_segments  s    r   )Yr\   tempfiler   Zsympy.concrete.summationsr   Zsympy.core.numbersr   r   r   Zsympy.core.relationalr   Zsympy.core.symbolr   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   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"   r#   r$   Zsympy.testing.pytestr%   r&   r'   r(   Zsympy.utilitiesr)   rx   Zsympy.utilities.exceptionsr*   RuntimeErrorr+   r,   r3   rh   rq   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r1   r1   r2   <module>   sf    $  QxQ "& 
"