U
    Fvfê2  ã                   @   s0  d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZ	d dlm
Z d dlmZ dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Z d+d,„ Z!d-d.„ Z"d/d0„ Z#d1d2„ Z$d3d4„ Z%d5d6„ Z&d7d8„ Z'd9d:„ Z(dS );é    N)ÚPath)Úpyplot)ÚMatplotlibDeprecationWarningc              
   C   s´   t tjƒjd d }| ¡ s&t d¡ t tjƒ ¡ }|  	d¡}| 
|d¡ tjtjt|ƒt|ƒgdd | d¡}||kr°d 	tj| d¡| d¡d	d
ddd¡}t d| ¡ d S )Né   ztools/boilerplate.pyzboilerplate.py not foundz	pyplot.pyzutf-8T)ÚcheckÚ
zfound pyplot.pyzexpected pyplot.pyr   Ú )ZfromfileZtofileÚnZlinetermzøpyplot.py is not up-to-date. Please run 'python tools/boilerplate.py' to update pyplot.py. This needs to be done from an environment where your current working copy is installed (e.g. 'pip install -e'd). Here is a diff of unexpected differences:
%s)r   ÚmplÚ__file__ÚparentsÚexistsÚpytestÚskipÚpltÚ	read_textÚjoinÚ
write_textÚ
subprocessÚrunÚsysÚ
executableÚstrÚdifflibZunified_diffÚsplitZfail)ZtmpdirZ
gen_scriptZorig_contentsZplt_fileZnew_contentsZdiff_msg© r   ú@/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/tests/test_pyplot.pyÚtest_pyplot_up_to_date   s4    

ÿ
  üÿüÿr   c              	   C   s²   t j ddd¡t j dd¡ddd„ƒƒ}t |¡ddd„ƒ}|d ƒ |d d	 |d d d
 |d d d | rnt‚t t	¡ |d d W 5 Q R X t t	¡ |d d ƒ W 5 Q R X d S )Nz	(version)ÚoldÚnewÚkwoc                 S   s   d S ©Nr   ©r   r    r   r   r   Úfunc,   s    z1test_copy_docstring_and_deprecators.<locals>.funcc                 S   s   d S r!   r   r"   r   r   r   Úwrapper_func1   s    z9test_copy_docstring_and_deprecators.<locals>.wrapper_func)r   )r    r"   )r   )N)N)
r
   Z_apiZrename_parameterZmake_keyword_onlyr   Z_copy_docstring_and_deprecatorsÚAssertionErrorr   Úwarnsr   )Zrecwarnr#   r$   r   r   r   Ú#test_copy_docstring_and_deprecators+   s    
r'   c                  C   sd   t  ¡ \} }t  d¡ | ¡ r"t‚t  d¡ | ¡ s8t‚t  ¡  | ¡ rLt‚t  ¡  | ¡ s`t‚d S )NFT)r   ÚsubplotsZboxZget_frame_onr%   )ÚfigÚaxr   r   r   Útest_pyplot_box@   s    

r+   c                   C   s   t  dddgdddg¡ d S )Né   r   é   )r   Z	stackplotr   r   r   r   Útest_stackplot_smokeL   s    r.   c                	   C   sH   t  t¡ tjdd W 5 Q R X t  t¡ tjdd W 5 Q R X d S )Nr,   )Znrows)Zncols)r   ÚraisesÚ	TypeErrorr   Úsubplotr   r   r   r   Útest_nrows_errorQ   s    r2   c                	   C   s„   t  ¡  t ¡ st‚t  ¡  t ¡ r*t‚W 5 Q R X t ¡ s@t‚t  ¡  t ¡ rTt‚t  ¡  t ¡ rjt‚W 5 Q R X t ¡ r€t‚d S r!   )r   Úionr
   Úis_interactiver%   Úioffr   r   r   r   Ú	test_ioffX   s    

r6   c                	   C   s„   t  ¡  t ¡ rt‚t  ¡  t ¡ s*t‚W 5 Q R X t ¡ r@t‚t  ¡  t ¡ sTt‚t  ¡  t ¡ sjt‚W 5 Q R X t ¡ s€t‚d S r!   )r   r5   r
   r4   r%   r3   r   r   r   r   Útest_ionf   s    

r7   c                
   C   sž  t  ¡  t  ¡ > t ¡ rt‚t  ¡  t ¡ s4t‚W 5 Q R X t ¡ rJt‚W 5 Q R X t ¡ s`t‚t  ¡ & t  ¡  t ¡ r€t‚W 5 Q R X W 5 Q R X t ¡ s t‚t  ¡  t  ¡  W 5 Q R X t ¡ sÈt‚t  ¡  t  ¡ @ t ¡ sæt‚t  ¡  t ¡ rüt‚W 5 Q R X t ¡ st‚W 5 Q R X t ¡ r,t‚t  ¡ ( t  ¡  t ¡ sNt‚W 5 Q R X W 5 Q R X t ¡ rpt‚t  ¡  t  ¡  W 5 Q R X t ¡ ršt‚d S r!   )r   r3   r5   r
   r4   r%   r   r   r   r   Útest_nested_ion_iofft   s8    



 




"
r8   c               
   C   sF   zt  d¡ W n2 tk
r@ }  zt| ƒdks0t‚W 5 d } ~ X Y nX d S )Ngš™™™™™ñ?zQclose() argument must be a Figure, an int, a string, or None, not <class 'float'>)r   Úcloser0   r   r%   )Úer   r   r   Ú
test_close    s    r;   c                  C   s^   t  d¡} | t  ¡ kst‚t  d¡}|t  ¡ ks4t‚t  d¡}| t  ¡ ksNt‚| |ksZt‚d S )Néy   éz   )r   r1   Úgcar%   ©Úax1Úax2Úax3r   r   r   Útest_subplot_reuse¨   s    


rC   c                  C   sÆ   t  ¡  t  ¡ } t  ¡ }| d k	s$t‚|| k	s0t‚t  ¡  t  ¡  t jdd} t jdd}| d k	sdt‚|| k	spt‚t  ¡  t  ¡  t jdd} t  ¡ }| d k	s t‚|jdks®t‚|| k	sºt‚t  ¡  d S )NÚpolar©Ú
projectionÚrectilinear)r   ÚfigureÚaxesr%   r9   Úname©r*   r@   r   r   r   Útest_axes_kwargs²   s&    rL   c               	   C   s   t  ¡ } t  ddd¡}t  ddd¡}t  ddd¡}t t¡ t jddddd}W 5 Q R X t jddddd}|d k	sxt‚||ks„t‚||k	st‚||k	sœt‚||ks¨t‚|| jks¶t‚|| jksÄt‚|| jksÒt‚|jdksàt‚|jdksît‚|jdksüt‚d S )Nr,   r   rD   rE   rG   )	r   rH   r1   r   r&   r   r%   rI   rJ   )r)   r*   r@   rA   rB   Zax4r   r   r   Útest_subplot_replace_projectionË   s$    rM   c                  C   s`   t jddd} t jddd}| |ks(t‚|  ¡  t jddd}| |k	sJt‚| t  ¡ jks\t‚d S )NrD   r   )rF   Ztheta_offsetr,   )r   r1   r%   ÚremoveÚgcfrI   r?   r   r   r   Útest_subplot_kwarg_collisionä   s    rP   c                  C   s<   t  ¡  t  ¡ } t  ¡ }| d k	s$t‚|| ks0t‚t  ¡  d S r!   )r   rH   r>   r%   r9   rK   r   r   r   Útest_gcaî   s    rQ   c                  C   s¾   t  d¡} | t  ¡ kst‚| t  d¡ks,t‚|  ¡  t jddd}|t  ¡ ksRt‚| t  ¡ jksdt‚|t  d¡ksvt‚| ¡  t jddd}|t  ¡ ksœt‚||k	s¨t‚|t  ¡ jksºt‚d S )Néo   rD   rE   rG   )r   r1   r>   r%   rN   rO   rI   r?   r   r   r   Útest_subplot_projection_reuseø   s    
rS   c               	   C   sr   t jddd} t jddd}t jdddd}| |ks8t‚| |ksDt‚tjtdd t jddd	d}W 5 Q R X d S )
NrR   rD   rE   T)rD   )rD   rF   zpolar=True, yet projection='3d')ÚmatchÚ3d)r   r1   r%   r   r/   Ú
ValueErrorr?   r   r   r   Ú test_subplot_polar_normalization  s    ÿrW   c                  C   s~   t ƒ } t ¡ }|  |¡ d}|D ]@}| ¡  tj|d}|t ¡ ksHt‚|j|ksVt‚|  |¡ q t| ƒdt|ƒ kszt‚d S )N)ZaitoffZhammerZlambertZ	mollweiderD   rG   rU   rE   r,   )Úsetr   r1   ÚaddrN   r%   rJ   Úlen)Zcreated_axesr*   ZprojectionsZprojr   r   r   Útest_subplot_change_projection  s    
r[   c                  C   sX   t  ddd¡\} t| tjjƒs"t‚t  ddd¡\}t|tjjƒsDt‚| j|jksTt‚d S )Ng        g      ð?Úrog…ëQ¸ù?ç      à?Zbo)r   rD   Ú
isinstancer
   ÚlinesZLine2Dr%   rI   )Zln1Zln2r   r   r   Útest_polar_second_call-  s
    r`   c                  C   sŽ   t  ddddg¡} t jddddgd}tj |j ¡ | j ¡ ¡ t  ddddg¡} t jddddgddddgd}tj |j ¡ | j ¡ ¡ d S )Ngš™™™™™É?r]   )Úpositiongš™™™™™¹?gš™™™™™é?)r   rI   ÚnpÚtestingZassert_allcloseZbboxZ
get_points)ZaxrefZaxtestr   r   r   Útest_fallback_position7  s    ÿÿrd   c                  C   sX   t  ¡ } |  d¡}t  ¡  t  ¡ | ks*t‚t  |d ¡}t  ¡ | ksHt‚|| ksTt‚d S )Nr   r,   )r   rH   Ú
subfiguresrO   r%   )Zfig1ÚsubfigsÚcurrentr   r   r   Ú%test_set_current_figure_via_subfigureE  s    
rh   c                  C   sd   t  ¡ } |  d¡}|d jddd}|d jddd t  ¡ |ksFt‚t  |¡ t  ¡ |ks`t‚d S )Nr   r   r,   T)Zsqueeze)r   rH   re   r(   r>   r%   Zsca)r)   rf   r*   r   r   r   Ú"test_set_current_axes_on_subfigureQ  s    

ri   c                  C   s,   t  d¡} tjj| jddd d¡dd d S )NÚIPythonz--pylabz-cú;)zimport matplotlib.pyplot as pltz<assert plt._REPL_DISPLAYHOOK == plt._ReplDisplayHook.IPYTHONé<   )Útimeout)r   Zimportorskipr
   rc   Zsubprocess_run_helperZstart_ipythonr   )rj   r   r   r   Útest_pylab_integration]  s    
ørn   c                  C   sŠ   t tƒjd } |  ¡ s t d¡ dd„ }|  ¡  d¡}t||ƒƒ}tt	 
¡ ƒ}| |¡}|rjtd|›ƒ‚| |¡}|r†td|›ƒ‚dS )	z6Test that pyplot_summary lists all the plot functions.z#../../../doc/api/pyplot_summary.rstz#Documentation sources not availablec                 S   sZ   g }d}| D ]H}|s$|  d¡rTd}q|r|  d¡r4q|d  ¡ sFd}q| | ¡ ¡ q|S )ae  
        Return a list of all the functions that are mentioned in the
        autosummary blocks contained in *lines*.

        An autosummary block looks like this::

            .. autosummary::
               :toctree: _as_gen
               :template: autosummary.rst
               :nosignatures:

               plot
               plot_date

        Fz.. autosummary::Tz   :r   )Ú
startswithÚisspaceÚappendÚstrip)r_   Z	functionsZin_autosummaryÚliner   r   r   Úextract_documented_functionsq  s    
z=test_doc_pyplot_summary.<locals>.extract_documented_functionsr   zsThe following pyplot functions are not listed in the documentation. Please add them to doc/api/pyplot_summary.rst: z•The following functions are listed in the pyplot documentation, but they do not exist in pyplot. Please remove them from doc/api/pyplot_summary.rst: N)r   r   Úparentr   r   r   r   r   rX   r   Z_get_pyplot_commandsÚ
differencer%   )Zpyplot_docsrt   r_   Zdoc_functionsZplot_commandsÚmissingÚextrar   r   r   Útest_doc_pyplot_summaryk  s"    
!
ÿ
ÿry   c                  C   sÆ   t  ¡  t  t dd¡¡ t jdd\} }t |tjg tjdk¡sHt	‚|g ksTt	‚t j
ddgdd	gdd
 t  ¡ }|jdd} |jdd}t | t ddg¡k¡s¨t	‚dd„ |D ƒdd	gksÂt	‚d S )Nr,   é
   T)Úminor)Zdtypeg      @g      @ÚaÚb)ZticksÚlabelsr{   c                 S   s   g | ]}|  ¡ ‘qS r   )Zget_text)Ú.0Úlr   r   r   Ú
<listcomp>¯  s     z$test_minor_ticks.<locals>.<listcomp>)r   rH   Zplotrb   ZarangeZxticksÚallÚarrayZfloat64r%   Zyticksr>   Z
get_yticksZget_yticklabels)Ztick_posZtick_labelsr*   r   r   r   Útest_minor_ticks£  s    r„   c                  C   sn   t  d¡ t  ¡ } t  ¡ } tt  ¡ ƒdks.t‚t  d¡ tt  ¡ ƒdksLt‚t  d¡ tt  ¡ ƒdksjt‚d S )NZaggr   Úsvgr   )r   Zswitch_backendrH   rZ   Zget_fignumsr%   )r)   r   r   r   Útest_switch_backend_no_close²  s    


r†   c                 C   s
   d| _ d S )NT)Ú_test_was_here)rH   r   r   r   Úfigure_hook_example½  s    rˆ   c               	   C   s6   ddgi} t  | ¡ t ¡ }W 5 Q R X |js2t‚d S )Nzfigure.hooksz0matplotlib.tests.test_pyplot:figure_hook_example)r
   Z
rc_contextr   rH   r‡   r%   )Ztest_rcr)   r   r   r   Útest_figure_hookÁ  s     ÿr‰   ))r   Znumpyrb   r   r   Úpathlibr   r   Z
matplotlibr
   r   r   Zmatplotlib._apir   r   r'   r+   r.   r2   r6   r7   r8   r;   rC   rL   rM   rP   rQ   rS   rW   r[   r`   rd   rh   ri   rn   ry   r„   r†   rˆ   r‰   r   r   r   r   Ú<module>   sF   ,



8