o
    ˆ‚¡e3  ã                   @   s(  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)Úsubprocess_run_for_testing)Úpyplotc              
   C   sÀ   t  d¡ ttjƒjd d }| ¡ st  d¡ ttjƒ 	¡ }|  
d¡}| |d¡ ttjt|ƒt|ƒgdd | 	d¡}||kr^d	 
tj| d	¡| d	¡d
dddd¡}t  d| ¡ d S d S )NÚblacké   ztools/boilerplate.pyzboilerplate.py not foundz	pyplot.pyzutf-8T)ÚcheckÚ
zfound pyplot.pyzexpected pyplot.pyr   Ú )ÚfromfileÚtofileÚnÚ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)ÚpytestÚimportorskipr   ÚmplÚ__file__ÚparentsÚexistsÚskipÚpltÚ	read_textÚjoinÚ
write_textr   ÚsysÚ
executableÚstrÚdifflibÚunified_diffÚsplitÚfail)ÚtmpdirÚ
gen_scriptÚorig_contentsÚplt_fileÚnew_contentsÚdiff_msg© r&   úK/var/www/myenv/lib/python3.10/site-packages/matplotlib/tests/test_pyplot.pyÚtest_pyplot_up_to_date   s6   


þ
üÿüÿù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 | r7J ‚t t j¡ |d d W d   ƒ n1 sMw   Y  t t j¡ |d d ƒ W d   ƒ d S 1 siw   Y  d S )Nz	(version)ÚoldÚnewÚkwoc                 S   ó   d S ©Nr&   ©r*   r+   r&   r&   r'   Úfunc.   s   z1test_copy_docstring_and_deprecators.<locals>.funcc                 S   r,   r-   r&   r.   r&   r&   r'   Úwrapper_func3   s   z9test_copy_docstring_and_deprecators.<locals>.wrapper_func)r*   )r+   r.   )r)   r-   )	r   Ú_apiÚrename_parameterÚmake_keyword_onlyr   Ú_copy_docstring_and_deprecatorsr   ÚwarnsÚMatplotlibDeprecationWarning)Úrecwarnr/   r0   r&   r&   r'   Ú#test_copy_docstring_and_deprecators-   s    
ÿ"ÿr8   c                  C   sd   t  ¡ \} }t  d¡ | ¡ rJ ‚t  d¡ | ¡ sJ ‚t  ¡  | ¡ r&J ‚t  ¡  | ¡ s0J ‚d S )NFT)r   ÚsubplotsÚboxÚget_frame_on)ÚfigÚaxr&   r&   r'   Útest_pyplot_boxB   s   

r>   c                   C   s   t  g d¢g d¢¡ d S )N)é   r   é   )r   Ú	stackplotr&   r&   r&   r'   Útest_stackplot_smokeN   s   rB   c                   C   sr   t  t¡ tjdd W d   ƒ n1 sw   Y  t  t¡ tjdd W d   ƒ d S 1 s2w   Y  d S )Nr?   )Únrows)Úncols)r   ÚraisesÚ	TypeErrorr   Úsubplotr&   r&   r&   r'   Útest_nrows_errorS   s   ÿ"ÿrH   c                   C   s¬   t  ¡  t ¡ s
J ‚t  ¡  t ¡ rJ ‚W d   ƒ n1 sw   Y  t ¡ s*J ‚t  ¡  t ¡ r4J ‚t  ¡  t ¡ r?J ‚W d   ƒ n1 sIw   Y  t ¡ rTJ ‚d S r-   )r   Úionr   Úis_interactiveÚioffr&   r&   r&   r'   Ú	test_ioffZ   ó   
ÿ
ÿrL   c                   C   s¬   t  ¡  t ¡ r
J ‚t  ¡  t ¡ sJ ‚W d   ƒ n1 sw   Y  t ¡ r*J ‚t  ¡  t ¡ s4J ‚t  ¡  t ¡ s?J ‚W d   ƒ n1 sIw   Y  t ¡ sTJ ‚d S r-   )r   rK   r   rJ   rI   r&   r&   r&   r'   Útest_ionh   rM   rN   c                	   C   sd  t  ¡  t  ¡ . t ¡ rJ ‚t  ¡  t ¡ sJ ‚W d   ƒ n1 s$w   Y  t ¡ r/J ‚W d   ƒ n1 s9w   Y  t ¡ sDJ ‚t  ¡ " t  ¡  t ¡ rTJ ‚W d   ƒ n1 s^w   Y  W d   ƒ n1 smw   Y  t ¡ sxJ ‚t  ¡  t  ¡  W d   ƒ n1 s‹w   Y  t ¡ s–J ‚t  ¡  t  ¡ . t ¡ s¥J ‚t  ¡  t ¡ r°J ‚W d   ƒ n1 sºw   Y  t ¡ sÅJ ‚W d   ƒ n1 sÏw   Y  t ¡ rÚJ ‚t  ¡ " t  ¡  t ¡ sêJ ‚W d   ƒ n1 sôw   Y  W d   ƒ n	1 sw   Y  t ¡ rJ ‚t  ¡  t  ¡  W d   ƒ n	1 s$w   Y  t ¡ r0J ‚d S r-   )r   rI   rK   r   rJ   r&   r&   r&   r'   Útest_nested_ion_ioffv   sP   

ÿü

ÿ€ÿ

ÿ

ÿü

ÿ€ÿ

ÿrO   c               
   C   sH   zt  d¡ W d S  ty# }  zt| ƒdksJ ‚W Y d } ~ d S d } ~ ww )Ngš™™™™™ñ?zQclose() argument must be a Figure, an int, a string, or None, not <class 'float'>)r   ÚcloserF   r   )Úer&   r&   r'   Ú
test_close¢   s   €ÿrR   c                  C   s^   t  d¡} | t  ¡ u sJ ‚t  d¡}|t  ¡ u sJ ‚t  d¡}| t  ¡ u s'J ‚| |u s-J ‚d S )Néy   éz   )r   rG   Úgca©Úax1Úax2Úax3r&   r&   r'   Útest_subplot_reuseª   s   


rZ   c                  C   sÆ   t  ¡  t  ¡ } t  ¡ }| d usJ ‚|| usJ ‚t  ¡  t  ¡  t jdd} t jdd}| d us2J ‚|| us8J ‚t  ¡  t  ¡  t jdd} t  ¡ }| d usPJ ‚|jdksWJ ‚|| us]J ‚t  ¡  d S )NÚpolar©Ú
projectionÚrectilinear)r   ÚfigureÚaxesrP   Úname©r=   rW   r&   r&   r'   Útest_axes_kwargs´   s&   rc   c                  C   sê   t  ¡ } t  ddd¡}t  ddd¡}t  ddd¡}t jddddd}t jddddd}|d us1J ‚||u s7J ‚||us=J ‚||usCJ ‚||u sIJ ‚|| jv sPJ ‚|| jv sWJ ‚|| jv s^J ‚|jdkseJ ‚|jdkslJ ‚|jdkssJ ‚d S )Nr?   r   r[   r\   r^   )r   r_   rG   r`   ra   )r<   r=   rW   rX   rY   Úax4r&   r&   r'   Útest_subplot_replace_projectionÍ   s"   re   c                  C   s`   t jddd} t jddd}| |u sJ ‚|  ¡  t jddd}| |us%J ‚| t  ¡ jvs.J ‚d S )Nr[   r   )r]   Útheta_offsetr?   )r   rG   ÚremoveÚgcfr`   rV   r&   r&   r'   Útest_subplot_kwarg_collisionå   s   ri   c                  C   s<   t  ¡  t  ¡ } t  ¡ }| d usJ ‚|| u sJ ‚t  ¡  d S r-   )r   r_   rU   rP   rb   r&   r&   r'   Útest_gcaï   s   rj   c                  C   s¾   t  d¡} | t  ¡ u sJ ‚| t  d¡u sJ ‚|  ¡  t jddd}|t  ¡ u s)J ‚| t  ¡ jvs2J ‚|t  d¡u s;J ‚| ¡  t jddd}|t  ¡ u sNJ ‚||usTJ ‚|t  ¡ jvs]J ‚d S )Néo   r[   r\   r^   )r   rG   rU   rg   rh   r`   rV   r&   r&   r'   Útest_subplot_projection_reuseù   s   
rl   c                  C   sˆ   t jddd} t jddd}t jdddd}| |u sJ ‚| |u s"J ‚tjtdd t jddd	d}W d   ƒ d S 1 s=w   Y  d S )
Nrk   r[   r\   T)r[   )r[   r]   zpolar=True, yet projection='3d')ÚmatchÚ3d)r   rG   r   rE   Ú
ValueErrorrV   r&   r&   r'   Ú test_subplot_polar_normalization  s   ÿ"þrp   c                  C   s~   t ƒ } t ¡ }|  |¡ d}|D ] }| ¡  tj|d}|t ¡ u s$J ‚|j|ks+J ‚|  |¡ qt| ƒdt|ƒ ks=J ‚d S )N)ÚaitoffÚhammerÚlambertÚ	mollweider[   r^   rn   r\   r?   )Úsetr   rG   Úaddrg   ra   Úlen)Úcreated_axesr=   ÚprojectionsÚprojr&   r&   r'   Útest_subplot_change_projection  s   
r{   c                  C   sX   t  ddd¡\} t| tjjƒsJ ‚t  ddd¡\}t|tjjƒs"J ‚| j|ju s*J ‚d S )Ng        g      ð?Úrog…ëQ¸ù?ç      à?Úbo)r   r[   Ú
isinstancer   ÚlinesÚLine2Dr`   )Úln1Úln2r&   r&   r'   Útest_polar_second_call.  s
   r„   c                  C   sz   t  g d¢¡} t jg d¢d}tj |j ¡ | j ¡ ¡ t  g d¢¡} t jg d¢g d¢d}tj |j ¡ | j ¡ ¡ d S )N)çš™™™™™É?r…   r}   r}   )Úposition)çš™™™™™¹?r‡   çš™™™™™é?rˆ   )r   r`   ÚnpÚtestingÚassert_allcloseÚbboxÚ
get_points)ÚaxrefÚaxtestr&   r&   r'   Útest_fallback_position8  s   ÿÿr   c                  C   sX   t  ¡ } |  d¡}t  ¡  t  ¡ | ksJ ‚t  |d ¡}t  ¡ | ks$J ‚|| ks*J ‚d S )Nr   r?   )r   r_   Ú
subfiguresrh   )Úfig1ÚsubfigsÚcurrentr&   r&   r'   Ú%test_set_current_figure_via_subfigureF  s   
r•   c                  C   sd   t  ¡ } |  d¡}|d jddd}|d jddd t  ¡ |ks#J ‚t  |¡ t  ¡ |ks0J ‚d S )Nr   r   r?   T)Úsqueeze)r   r_   r‘   r9   rU   Úsca)r<   r“   r=   r&   r&   r'   Ú"test_set_current_axes_on_subfigureR  s   

r˜   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   r   r   rŠ   Úsubprocess_run_helperÚstart_ipythonr   )r™   r&   r&   r'   Útest_pylab_integration^  s   

ørŸ   c                  C   sŠ   t tƒjd } |  ¡ st d¡ dd„ }|  ¡  d¡}t||ƒƒ}tt	 
¡ ƒ}| |¡}|r5td|›ƒ‚| |¡}|rCt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 ]$}|s|  d¡rd}q|r|  d¡rq|d  ¡ s#d}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€   Ú	functionsÚin_autosummaryÚliner&   r&   r'   Úextract_documented_functionsr  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   ru   r   Ú_get_pyplot_commandsÚ
differenceÚAssertionError)Úpyplot_docsr§   r€   Údoc_functionsÚplot_commandsÚmissingÚextrar&   r&   r'   Útest_doc_pyplot_summaryl  s,   
!
þÿ
þÿÿr±   c                  C   sÆ   t  ¡  t  t dd¡¡ t jdd\} }t |tjg tjdk¡s$J ‚|g ks*J ‚t j	ddgdd	gdd
 t  
¡ }|jdd} |jdd}t | t ddg¡k¡sTJ ‚dd„ |D ƒdd	gksaJ ‚d S )Nr?   é
   T)Úminor)Údtypeg      @g      @ÚaÚb)ÚticksÚlabelsr³   c                 S   s   g | ]}|  ¡ ‘qS r&   )Úget_text)Ú.0Úlr&   r&   r'   Ú
<listcomp>°  s    z$test_minor_ticks.<locals>.<listcomp>)r   r_   Úplotr‰   ÚarangeÚxticksÚallÚarrayÚfloat64ÚyticksrU   Ú
get_yticksÚget_yticklabels)Útick_posÚtick_labelsr=   r&   r&   r'   Útest_minor_ticks¤  s   rÈ   c                  C   sš   t  d¡ t  ¡ } t  ¡ } tt  ¡ ƒdksJ ‚t  d¡ tt  ¡ ƒdks&J ‚t tj¡ t  d¡ W d   ƒ n1 s<w   Y  tt  ¡ ƒdksKJ ‚d S )NÚaggr   Úsvgr   )	r   Úswitch_backendr_   rw   Úget_fignumsr   r5   r   r6   )r<   r&   r&   r'   Útest_switch_backend_no_close³  s   

ÿrÍ   c                 C   s
   d| _ d S )NT)Ú_test_was_here)r_   r&   r&   r'   Úfigure_hook_example¿  s   
rÏ   c                  C   sJ   ddgi} t  | ¡ t ¡ }W d   ƒ n1 sw   Y  |js#J ‚d S )Nzfigure.hooksz0matplotlib.tests.test_pyplot:figure_hook_example)r   Ú
rc_contextr   r_   rÎ   )Útest_rcr<   r&   r&   r'   Útest_figure_hookÃ  s   ÿ
ÿrÒ   )(r   Únumpyr‰   r   Úpathlibr   r   Ú
matplotlibr   Úmatplotlib.testingr   r   r   r(   r8   r>   rB   rH   rL   rN   rO   rR   rZ   rc   re   ri   rj   rl   rp   r{   r„   r   r•   r˜   rŸ   r±   rÈ   rÍ   rÏ   rÒ   r&   r&   r&   r'   Ú<module>   sF    ,



8