a
    s=icˆ  ã                	   @   sb  d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dl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	„ Z"e
d
gdddd„ ƒZ#e
dgdddd„ ƒZ$e
dgƒdd„ ƒZ%e
dgdddd„ ƒZ&dd„ Z'e
dgdddd„ ƒZ(e
dgdddd„ ƒZ)e
d gde *¡ d!krbd nd"d#d$d%„ ƒZ+e
d&gde *¡ d!krŒd nd"d#d'd(„ ƒZ,e
d)gddd*d+„ ƒZ-e
d,gde *¡ d!krÌd nd-d#d.d/„ ƒZ.e
d0d1gddd2d3„ ƒZ/e
d4gddd5d6„ ƒZ0e
d7gdd8d9d:d;„ ƒZ1d<d=„ Z2G d>d?„ d?ƒZ3G d@dA„ dAƒZ4e
dBgƒdCdD„ ƒZ5dEdF„ Z6dGdH„ Z7dIdJ„ Z8e
dKgƒdLdM„ ƒZ9e
dNgƒdOdP„ ƒZ:dQdR„ Z;dSdT„ Z<dUdV„ Z=dWdX„ Z>dYdZ„ Z?d[d\„ Z@d]d^„ ZAd_d`„ ZBdadb„ ZCejD Edcdd¡dedf„ ƒZFejD Edcdd¡dgdh„ ƒZGejD Edidj¡dkdl„ ƒZHdmdn„ ZIdodp„ ZJdqdr„ ZKdsdt„ ZLejD Edidj¡dudv„ ƒZMdwdx„ ZNdydz„ ZOd{d|„ ZPd}d~„ ZQdd€„ ZRdd‚„ ZSdƒd„„ ZTed…d†„ ƒZUd‡dˆ„ ZVd‰dŠ„ ZWejD Ed‹dŒdgdŽe XdŒdg¡g¡dd„ ƒZYejD Ed‘d’d“eZg¡d”d•„ ƒZ[ejD Ed‹dŒdgdŽe XdŒdg¡g¡d–d—„ ƒZ\d˜d™„ Z]dšd›„ Z^dœd„ Z_dždŸ„ Z`d d¡„ Zad¢d£„ Zbd¤d¥„ Zce	ƒ d¦d§„ ƒZddS )¨é    N)Úmock)Úcheck_figures_equalÚimage_comparison)Úneeds_usetex)ÚHandlerTuple)Ú
rc_context)ÚFontPropertiesc                  C   s´   t j d¡} t j d¡}dgd dgd  }dgd dgd  }t ¡ \}}t| |||ƒD ]\}}}}	|j||||	d qZ| ¡ \}
}t 	t||
ƒ¡}|j
| ¡ | ¡ dd	d
 d S )Né
   Úaé   ÚbÚrÚg)ÚlabelÚcúcenter left)é   ç      à?)ÚlocÚbbox_to_anchor)ÚnpÚrandomZrandnÚpltÚsubplotsÚzipÚscatterÚget_legend_handles_labelsÚcollectionsÚOrderedDictÚlegendÚvaluesÚkeys)ÚXÚYÚlabelsÚcolorsÚfigÚaxÚxÚyr   ÚcolorÚhandlesr   © r,   úm/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_legend.pyÚtest_legend_ordereddict   s    ÿr.   Zlegend_auto1T)Úremove_textc                  C   sR   t  ¡ \} }t d¡}|j|d| ddd |j||d ddd |jdd d	S )
úTest automatic legend placementéd   é2   Úoúy=1©r   úy=-1Úbest©r   N)r   r   r   ÚarangeÚplotr   )r&   r'   r(   r,   r,   r-   Útest_legend_auto1(   s
    
r;   Zlegend_auto2c                  C   sh   t  ¡ \} }t d¡}|j||ddd}|j||ddd… ddd}|j|d |d gd	d
gdd dS )r0   r1   ÚedgeÚm)Úalignr*   Néÿÿÿÿr   r   ÚupZdownr7   r8   )r   r   r   r9   Úbarr   )r&   r'   r(   Úb1Úb2r,   r,   r-   Útest_legend_auto22   s
    
rD   Zlegend_auto3c                  C   sV   t  ¡ \} }g d¢}g d¢}|j||ddd | dd¡ | dd¡ |jdd	 d
S )r0   )çÍÌÌÌÌÌì?çš™™™™™¹?rF   rE   rE   r   )çffffffî?rG   çš™™™™™©?rH   r   r   zo-Úliner5   ç        ç      ð?r7   r8   N)r   r   r:   Úset_xlimÚset_ylimr   )r&   r'   r(   r)   r,   r,   r-   Útest_legend_auto3<   s    rN   Zlegend_various_labelsc                  C   sl   t  ¡ } |  d¡}|jt d¡ddd |jt dd¡ddd |jt ddd¡dd	d |jdd
d d S )Néy   é   r3   r   r5   gffffff@u   DÃ©veloppÃ©sr?   Z__nolegend__r7   )Ú	numpointsr   )r   ÚfigureZadd_subplotr:   r   r9   Úlinspacer   ©r&   r'   r,   r,   r-   Útest_various_labelsH   s    
rU   c                  C   sr   t  ¡ \} }|jddgdd\}tjtdd |j|gd}W d  ƒ n1 sR0    Y  t|jƒdksnJ ‚dS )	zª
    Test that artists with labels starting with an underscore are not added to
    the legend, and that a warning is issued if one tries to add them
    explicitly.
    r   r   Z_foor5   z*starts with '_'.*excluded from the legend.©Úmatch©r+   N)	r   r   r:   ÚpytestÚwarnsÚUserWarningr   ÚlenÚlegendHandles)r&   r'   rI   r   r,   r,   r-   Ú)test_legend_label_with_leading_underscoreS   s    ÿ,r^   zlegend_labels_first.pngc                  C   sh   t  ¡ \} }|jt d¡ddd |jt d¡d ddd |jt ddd	¡d
dd |jddd d S )Nr	   ú-or   r5   r   z:xr(   é   r?   ÚdZdiamondr7   F)r   Zmarkerfirst)r   r   r:   r   r9   Zonesr   rT   r,   r,   r-   Útest_labels_firsta   s
    rb   zlegend_multiple_keys.pngc                  C   sˆ   t  ¡ \} }| g d¢d¡\}| g d¢d¡\}| g d¢d¡\}|j||f||f|gg d¢d||ftd d	||ftd d
did d S )N©r   é   é   r_   ©rd   re   rP   z-x)re   rP   r   z-d)ztwo keyszpad=0zone keyr   )Úndivider   )rg   Úpad)rQ   Úhandler_map)r   r   r:   r   r   )r&   r'   Úp1Úp2Zp3r,   r,   r-   Útest_multiple_keysk   s    ÿþrl   zrgba_alpha.pngÚx86_64g{®Gáz„?)r/   Ztolc                  C   sB   t  ¡ \} }|jtdƒdd t jdgdd}|j g d¢¡ d S )Nr	   r   ©ÚlwúLonglabel that will go awayÚcenterr8   ©r   r   r   r   )r   r   r:   Úranger   ÚlegendPatchÚset_facecolor©r&   r'   Úlegr,   r,   r-   Útest_alpha_rgbax   s    rx   zrcparam_alpha.pngc                  C   sr   t  ¡ \} }|jtdƒdd tjddid0 t jdgdd	}|j g d
¢¡ W d   ƒ n1 sd0    Y  d S )Nr	   r   rn   zlegend.framealphag      è?)Úrcrp   rq   r8   rr   )	r   r   r:   rs   Úmplr   r   rt   ru   rv   r,   r,   r-   Útest_alpha_rcparam   s
    r{   Úfancyc                   C   s~   t  d¡ t jdgd ddd t jt d¡t ddd¡d	d t jt d¡t d¡d
d
dd t jddd
gddddd d S )NrO   r   r	   zo--ZXXr5   r   r?   zXX
XXr   )ZxerrZyerrr   r   rK   rd   Tú	My legendr   )r   r   ÚncolsÚshadowÚtitlerQ   )r   Úsubplotr:   r   r   r9   Zerrorbarr   r,   r,   r,   r-   Ú
test_fancy   s    
 ÿÿr‚   Ú
framealphag{®Gáz”?c                  C   s4   t  ddd¡} | }tj| |ddd tjdd d S )Nr   r1   Zmylabelr	   )r   ro   r   )rƒ   )r   rS   r   r:   r   )r(   r)   r,   r,   r-   Útest_framealpha›   s    r„   Zscatter_rc3Zscatter_rc1c                  C   sš   t  ¡  t  d¡} | jt d¡t ddd¡dd | jddd	gd
d dtjd< t  ¡  t  d¡} | jt d¡t ddd¡dd | jddd	gd
d d S )NrO   r	   r   r?   Úthreer5   r   rK   r   r}   )r   r   r€   r   zlegend.scatterpointsÚone)	r   rR   r   r   r   r9   r   rz   ÚrcParams)r'   r,   r,   r-   Útest_rc¤   s    
 ÿ

 ÿrˆ   Zlegend_expandc                  C   sª   ddg} t  t| ƒd¡\}}t d¡}t|| ƒD ]t\}}|j|d| ddd |jd	|d
}| |¡ |j||d ddd |jd|d
}| |¡ |jd|dd q0dS )zTest expand modeNÚexpandr   r1   r2   r3   r4   r5   z
upper left)r   Úmoder6   Úrightz
lower leftrd   )r   rŠ   r~   )	r   r   r\   r   r9   r   r:   r   Z
add_artist)Zlegend_modesr&   Úaxsr(   r'   rŠ   Úl1Úl2r,   r,   r-   Útest_legend_expandµ   s    


r   ZhatchingÚdefault)r/   Ústylec               	   C   s  dt jd< t  ¡ \} }t jdddddd}| |¡ t jdddd	d
dd}| |¡ t jddddddd}| |¡ t jdddd	dd
dd}| |¡ |jg d¢g d¢g d¢ddd |jg d¢g d¢g d¢dddd | dd¡ | dd¡ |jddd d S ) Né   ztext.kerning_factor)r   r   ç333333Ó?ÚxxzPatch
default color
filled)Úhatchr   )ç…ëQ¸Õ?r   z||ZC1zPatch
explicit color
filled)r•   Ú	edgecolorr   )r   çš™™™™™Ù?FzPatch
default color
unfilled)r•   Úfillr   )r–   r˜   zPatch
explicit color
unfilled)r•   r™   r—   r   )r   g333333Ã?r“   )çš™™™™™é?rš   rš   )rE   rK   rE   ú+zPath
default color)r–   g¸…ëQ¸Þ?g)\Âõ(ä?ZC2zPath
explicit colorg{®Gáz„¿gš™™™™™ñ?rP   )ZhandlelengthZhandleheight)	r   r‡   r   Z	RectangleZ	add_patchÚfill_betweenrL   rM   r   )r&   r'   Úpatchr,   r,   r-   Útest_hatchingÅ   s8    
ÿ
ÿ
ÿ
þ
ÿÿrž   c                  C   sb   t  ¡ \} }| tdƒ¡}|  |d¡}| ¡  | jg ks<J ‚| d¡}| ¡  | ¡ d u s^J ‚d S )Nr	   Útest)r   r   r:   rs   r   ÚremoveZlegendsZ
get_legend)r&   r'   Úlinesrw   r,   r,   r-   Útest_legend_removeæ   s    
r¢   c                   @   sd   e Z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S )ÚTestLegendFunctionc                 C   s\   t jtdƒdd}t d¡}t  ¡  W d   ƒ n1 s:0    Y  | t  ¡ |dg¡ d S )Nr	   úhello worldr5   úmatplotlib.legend.Legend©r   r:   rs   r   r   r   Úassert_called_withÚgca©Úselfr¡   ÚLegendr,   r,   r-   Útest_legend_no_argsó   s    &z&TestLegendFunction.test_legend_no_argsc                 C   s^   t  tdƒ¡}t d¡}t  |dg¡ W d   ƒ n1 s<0    Y  | t  ¡ |dg¡ d S )Nr	   r¥   r¤   r¦   r©   r,   r,   r-   Ú%test_legend_positional_handles_labelsù   s    ,z8TestLegendFunction.test_legend_positional_handles_labelsc                 C   sJ   t  tdƒ¡}tjtdd t  |¡ W d   ƒ n1 s<0    Y  d S )Nr	   zbut found an ArtistrV   )r   r:   rs   rY   ÚraisesÚ	TypeErrorr   )rª   r¡   r,   r,   r-   Ú#test_legend_positional_handles_onlyÿ   s    z6TestLegendFunction.test_legend_positional_handles_onlyc                 C   s`   t jtdƒdd}t d¡}t  dg¡ W d   ƒ n1 s>0    Y  | t  ¡ |dg¡ d S )Nr	   r¤   r5   r¥   Úfoobarr¦   r©   r,   r,   r-   Ú"test_legend_positional_labels_only  s    *z5TestLegendFunction.test_legend_positional_labels_onlyc                 C   sj   t jtdƒdd}t d¡"}t j|dgdd W d   ƒ n1 sD0    Y  |jt  ¡ |dgdd d S )Nr	   r¤   r5   r¥   r±   r‹   r8   r¦   r©   r,   r,   r-   Útest_legend_three_args  s    0z)TestLegendFunction.test_legend_three_argsc                 C   sr   t jtdƒdd}t d¡,}|dgf|_t jddid W d   ƒ n1 sN0    Y  | t  ¡ gddi¡ d S )Nr	   r¤   r5   z,matplotlib.legend._get_legend_handles_labelsÚ1rd   )ri   )	r   r:   rs   r   r   Zreturn_valuer   r§   r¨   )rª   r¡   Zhandles_labelsr,   r,   r-   Útest_legend_handler_map  s    
.z*TestLegendFunction.test_legend_handler_mapc                 C   s¬   t  ¡ \}}t ddd¡}|j||dd\}|j|d| dd\}|j|d| d	d\}t d
¡ }|j||gd W d   ƒ n1 sˆ0    Y  | |||gd	dg¡ d S )Nr   r   é   r(   r5   rd   Ú2xre   Z3xr¥   rX   ©	r   r   r   rS   r:   r   r   r   r§   )rª   r&   r'   r(   Úln1Úln2Zln3r«   r,   r,   r-   Útest_legend_kwargs_handles_only  s    .z2TestLegendFunction.test_legend_kwargs_handles_onlyc                 C   sŽ   t  ¡ \}}t ddd¡}| ||¡\}| |d| ¡\}t d¡ }|jddgd W d   ƒ n1 sj0    Y  | |||gddg¡ d S )	Nr   r   r¶   rd   r¥   r(   r·   ©r$   r¸   )rª   r&   r'   r(   r¹   rº   r«   r,   r,   r-   Útest_legend_kwargs_labels_only$  s    .z1TestLegendFunction.test_legend_kwargs_labels_onlyc                 C   s¢   t  ¡ \}}t ddtj d¡}|j|t |¡dd\}|j|t |¡dd\}t 	d¡"}|j
d||fd	 W d   ƒ n1 s‚0    Y  | |||fd¡ d S )
Nr   rd   é   Úsinr5   Úcosr¥   ©r
   r   )r$   r+   )r   r   r   rS   Úpir:   r¿   rÀ   r   r   r   r§   )rª   r&   r'   ÚthÚlnsÚlncr«   r,   r,   r-   Ú!test_legend_kwargs_handles_labels-  s    0z4TestLegendFunction.test_legend_kwargs_handles_labelsc                 C   s¶   t  ¡ \}}t ddtj d¡}|j|t |¡dd\}|j|t |¡dd\}t 	t
¡"}|j||fdd W d   ƒ n1 s‚0    Y  t|ƒd	ksœJ ‚t|d jƒd
ks²J ‚d S )Nr   rd   r¾   r¿   r5   rÀ   rÁ   r¼   r   úMYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rS   rÂ   r:   r¿   rÀ   rY   rZ   r[   r   r\   ÚstrÚmessage)rª   r&   r'   rÃ   rÄ   rÅ   Úrecordr,   r,   r-   Útest_warn_mixed_args_and_kwargs7  s    0ÿz2TestLegendFunction.test_warn_mixed_args_and_kwargsc                 C   sœ   ddl m} |dƒ}| ¡ }|jg d¢g d¢dd\}|jg d¢g d¢dd\}t d	¡}t ¡  W d   ƒ n1 sx0    Y  | |||gddg¡ d S )
Nr   )Úhost_subplotéo   ©r   r   rd   ZDensityr5   )r   re   rd   ZTemperaturer¥   )	Zmpl_toolkits.axes_grid1rÌ   Ztwinxr:   r   r   r   r   r§   )rª   rÌ   ÚhostÚparrj   rk   r«   r,   r,   r-   Útest_parasiteC  s    &z TestLegendFunction.test_parasiteN)Ú__name__Ú
__module__Ú__qualname__r¬   r­   r°   r²   r³   rµ   r»   r½   rÆ   rË   rÑ   r,   r,   r,   r-   r£   ñ   s   
	
r£   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )ÚTestLegendFigureFunctionc                 C   sl   t  ¡ \}}| tdƒ¡}t d¡}| |dg¡ W d   ƒ n1 sH0    Y  |j||dg|jd d S )Nr	   r¥   r¤   ©Úbbox_transform©	r   r   r:   rs   r   r   r   r§   ÚtransFigure©rª   r&   r'   r¡   r«   r,   r,   r-   Útest_legend_handle_labelS  s    ,ÿz1TestLegendFigureFunction.test_legend_handle_labelc                 C   sj   t  ¡ \}}|jtdƒdd}t d¡}| ¡  W d   ƒ n1 sF0    Y  |j||dg|jd d S )Nr	   r¤   r5   r¥   rÖ   rØ   rÚ   r,   r,   r-   r¬   [  s    &ÿz,TestLegendFigureFunction.test_legend_no_argsc                 C   sj   t  ¡ \}}| tdƒ¡}t d¡}| dg¡ W d   ƒ n1 sF0    Y  |j||dg|jd d S )Nr	   r¥   r±   rÖ   rØ   rÚ   r,   r,   r-   Útest_legend_label_argc  s    *ÿz.TestLegendFigureFunction.test_legend_label_argc                 C   sp   t  ¡ \}}| tdƒ¡}t d¡ }| |dgd¡ W d   ƒ n1 sJ0    Y  |j||dgd|jd d S )Nr	   r¥   r±   r‹   rÖ   rØ   rÚ   r,   r,   r-   Útest_legend_label_three_argsk  s    .ÿz5TestLegendFigureFunction.test_legend_label_three_argsc                 C   s\   t  ¡ \}}| tdƒ¡}t t¡$ |j|dgddd W d   ƒ n1 sN0    Y  d S )Nr	   r±   r‹   Úleftr8   )r   r   r:   rs   rY   r®   Ú	Exceptionr   )rª   r&   r'   r¡   r,   r,   r-   Ú#test_legend_label_three_args_pluskws  s    z<TestLegendFigureFunction.test_legend_label_three_args_pluskwc                 C   s–   t  dd¡\}}|d  tdƒ¡}|d  t d¡d ¡}t d¡$}|jdd||fd	 W d   ƒ n1 sn0    Y  |j	|||fdd|j
d
 d S )Nr   rd   r   r	   ç       @r¥   r‹   rÁ   )r   r$   r+   )r   r×   )r   r   r:   rs   r   r9   r   r   r   r§   rÙ   )rª   r&   rŒ   r¡   Úlines2r«   r,   r,   r-   Útest_legend_kw_args{  s    2þz,TestLegendFigureFunction.test_legend_kw_argsc                 C   s    t  dd¡\}}|d  tdƒ¡}|d  t d¡d ¡}t t¡"}|j	||fdd W d   ƒ n1 sl0    Y  t
|ƒdks†J ‚t|d jƒdksœJ ‚d S )	Nr   rd   r   r	   rá   rÁ   r¼   rÇ   )r   r   r:   rs   r   r9   rY   rZ   r[   r   r\   rÈ   rÉ   )rª   r&   rŒ   r¡   râ   rÊ   r,   r,   r-   Útest_warn_args_kwargs…  s    0ÿz.TestLegendFigureFunction.test_warn_args_kwargsN)
rÒ   rÓ   rÔ   rÛ   r¬   rÜ   rÝ   rà   rã   rä   r,   r,   r,   r-   rÕ   Q  s   
rÕ   zlegend_stackplot.pngc                  C   sv   t  ¡ \} }t ddd¡}d| }d| d }d| d }|j||||g d¢d	 | d
¡ | d¡ |jdd dS )z/Test legend for PolyCollection using stackplot.r   r	   rK   rá   r   g      @rd   )Úy1Úy2Úy3r¼   )r   r	   )r   éF   r7   r8   N)r   r   r   rS   Z	stackplotrL   rM   r   )r&   r'   r(   rå   ræ   rç   r,   r,   r-   Útest_legend_stackplot‘  s    

ré   c                  C   s<   t  ¡ \} }t  ¡ \}}| tdƒtdƒ¡}| |d¡ d S )Nre   Úfoo)r   r   rA   rs   r   )r&   r'   Zfig2Zax2Zbrsr,   r,   r-   Útest_cross_figure_patch_legend   s    rë   c               
   C   s¤   t  ¡ \} }|jtjgtjgddddd}| |gdg¡ t  ¡ \} }dD ]B}d}tj d|¡\}}d	tj |¡ }|j|||||d
dd qJ| ¡  | d¡ d S )Nr3   r   re   )ÚmarkerÚ	facecolorr—   Úsr   )ÚredÚgreenÚblueiî  rd   g      i@r“   Únone)r   rî   r   ÚalphaZ
edgecolorsT)	r   r   r   r   Únanr   r   ZrandÚgrid)r&   r'   Úhr*   Únr(   r)   Úscaler,   r,   r-   Útest_nanscatter¨  s    ÿÿrù   c                  C   s¼   t  ¡ \} }|jdddddd |jdddd	dd | ¡  t |g¡\}}t|ƒd
ks\J ‚t  ¡ \} }|jdddddd |jdddd	dd | ¡  t |g¡\}}t|ƒd
ks¸J ‚d S )NrJ   rK   Úkr3   rŸ   )r*   rì   r   r   r   Úvrd   )r   r   r   r   ÚmlegendZ_get_legend_handles_labelsr\   )r&   r'   ÚhandZlabr,   r,   r-   Útest_legend_repeatcheckok¼  s    rþ   znot_covering_scatter.pngc                  C   sd   g d¢} t dƒD ]}tj|g|g| | d qtjg d¢dd t ¡  dd¡ t ¡  dd¡ d S )	N)r   r   r   re   )r*   )rê   rê   rê   r7   r8   g      à¿gš™™™™™@)rs   r   r   r   r¨   rL   rM   )r%   r÷   r,   r,   r-   Útest_not_covering_scatterË  s    rÿ   z"not_covering_scatter_transform.pngc                  C   s^   t  ¡  dd¡} t ddd¡}t ||¡ tjdgdg| t ¡ j	 d tj
dd	gd
d d S )Niìÿÿÿr`   r   é   éè  r	   )Z	transformrê   rA   r7   r8   )ÚmtransformsZAffine2DÚ	translater   rS   r   r:   r   r¨   Z	transDatar   )Úoffsetr(   r,   r,   r-   Ú#test_not_covering_scatter_transform×  s
    r  c                  C   s  ddgddgg} ddgddggd	dgd
dggg}d
dgddggd	dgddggg}t j| ddd}t j|dd}t j|dd	d}t ¡ \}}| |¡ | |¡ | |¡ | |||gg d¢¡}|j\}	}
}t|||f|	|
|fƒD ]\}}| ¡ d |j	ksàJ ‚qàd S )N)r   r   )r   r   )r“   ç333333ã?)çš™™™™™É?r  gffffffæ?r  rš   r˜   r   r  rF   z--re   )Ú
linestylesro   z-.)r  ú:)Úline1Úline2zline 3r   )
ÚmcollectionsZLineCollectionr   r   Zadd_collectionr   r]   r   Zget_linestylesZ_dash_pattern)Zlines1râ   Zlines3Zlc1Zlc2Zlc3r&   r'   rw   Zh1Zh2Zh3ZohÚlhr,   r,   r-   Ú!test_linecollection_scaled_dashesã  s      


r  c                  C   s.   t  ¡ \} }|jtdƒdd |jdd dS )z(Test legend handler with numpoints <= 1.r   rŸ   r5   r   ©rQ   N)r   r   r:   rs   r   rT   r,   r,   r-   Útest_handler_numpoints÷  s    r  c                  C   sÀ   t  ¡ \} }|jddddd t t¡}| ¡  W d  ƒ n1 sF0    Y  t|ƒdks`J ‚t  ¡ \}}| t	j
 ddd¡¡ t ¡ " t d¡ | ¡  W d  ƒ n1 s²0    Y  dS )	z2Test that Text artists with labels raise a warningr   Útextr   )r(   r)   rî   r   Nr   )r	   r	   Úerror)r   r   r  rY   rZ   r[   r   r\   Z
pcolormeshr   r   ÚuniformÚwarningsÚcatch_warningsÚsimplefilterr   )r&   r'   rÊ   Úfr,   r,   r-   Útest_text_nohandler_warningÿ  s    &

r  c                   C   s   t jg g dd t  ¡  dS )z1Test legend when bar chart is empty with a label.rŸ   r5   N)r   rA   r   r,   r,   r,   r-   Ú test_empty_bar_chart_with_legend  s    r  c                  C   sD   t  ¡ \} }|jtdƒdd |jddd}| ¡  ¡ dks@J ‚d S )Nr1   rŸ   r5   TÚw)r   rí   r   )r   r   r:   rs   r   Z	get_frameZ	get_alpharv   r,   r,   r-   Útest_shadow_framealpha  s    r  c                  C   sJ   t  ¡ \} }| tdƒ¡ | ¡ }| ¡  ¡ dks6J ‚| ¡  ¡ rFJ ‚d S )Nr	   Ú )r   r   r:   rs   r   Ú	get_titleÚget_textZget_visiblerv   r,   r,   r-   Útest_legend_title_empty   s
    r  c                  C   s”   t jdd\} }|jtdƒdd | ¡ }| | j ¡ ¡j}t jdd\} }|jtdƒdd | ¡ }| | j ¡ ¡j}t	 
|d d¡|ksJ ‚d S )	Nr1   ©Zdpir	   ÚAardvarkr5   éÈ   rd   rF   )r   r   r:   rs   r   Úget_window_extentÚcanvasZget_rendererZx0rY   Zapprox)r&   r'   rw   Zx01Zx02r,   r,   r-   Ú test_legend_proper_window_extent+  s    r%  c                  C   sP   t jdd\} }|jtdƒdd | ¡ }|  ¡ }| j ¡  | ¡  | ¡  d S )Nr1   r   r	   r!  r5   )r   r   r:   rs   r   r$  Údrawr#  )r&   r'   rw   Úleg2r,   r,   r-   Ú"test_window_extent_cached_renderer9  s    
r(  c            	      C   s  t  tdƒ¡ t t¡& t jdddddœd W d   ƒ n1 sD0    Y  t jdtdddd} |  ¡  	¡ dksxJ ‚t j
dd	d
d\}}|j}|d  tdƒ¡ |d jddd}| ¡  ¡ dksÊJ ‚|d  tdƒ¡ |d jddddœd}| ¡  ¡ dks
J ‚|d  tdƒ¡ d tjd< |d jdddid}| ¡  ¡ tjd ksXJ ‚|d	  tdƒ¡ |d	 jdd}| ¡  ¡ tjd ks–J ‚|d  tdƒ¡ dtjd< |d jdddid}| ¡  ¡ dksÞJ ‚|d  tdƒ¡ |d jdd}| ¡  ¡ dksJ ‚d S )Nr	   r!  é   Úserif)ÚfamilyÚsize)r€   Útitle_fontsizeÚtitle_fontproperties)r€   r.  rd   re   )r	   r’   )Zfigsizer   )r€   r-  r   zlegend.title_fontsizer+  z	font.size©r€   rP   r`   r   )r   r:   rs   rY   r®   Ú
ValueErrorr   r   r  Úget_sizer   ZflatZget_fontsizerz   r‡   )	rw   r&   ÚaxesZleg0Zleg1r'  Zleg3Zleg4Zleg5r,   r,   r-   Ú#test_legend_title_fontprop_fontsizeD  sJ    ÿ$ÿ

ÿ

ÿ

ÿr3  Ú	alignment)rq   rÞ   r‹   c                 C   sV   t  ¡ \}}|jtdƒdd |jd| d}| ¡ d j| ksBJ ‚| ¡ | ksRJ ‚d S )Nr	   rŸ   r5   r!  )r€   r4  r   )r   r   r:   rs   r   Úget_childrenr>   Úget_alignment©r4  r&   r'   rw   r,   r,   r-   Útest_legend_alignmentj  s
    r8  c                 C   sZ   t  ¡ \}}|jtdƒdd | ¡ }| | ¡ | ¡ d j| ksFJ ‚| ¡ | ksVJ ‚d S )Nr	   rŸ   r5   r   )	r   r   r:   rs   r   Zset_alignmentr5  r>   r6  r7  r,   r,   r-   Útest_legend_set_alignments  s    
r9  r*   )rï   rò   )r   r   r   c                 C   s    t  ¡ \}}|jt d¡t d¡d dd |jt d¡t d¡d dd |jt d¡t d¡d dd |j| d	}| ¡ D ]}tj 	| 
¡ | ¡s€J ‚q€d S )
Nr	   r   ú#1r5   rd   ú#2re   ú#3©Z
labelcolor)r   r   r:   r   r9   r   Ú	get_textsrz   r%   Ú
same_colorÚ	get_color©r*   r&   r'   rw   r  r,   r,   r-   Útest_legend_labelcolor_single}  s       rB  c                  C   s²   t  ¡ \} }|jt d¡t d¡d dd |jt d¡t d¡d dd |jt d¡t d¡d dd |jg d	¢d
}t| ¡ g d	¢ƒD ]\}}tj	 
| ¡ |¡sŽJ ‚qŽd S )Nr	   r   r:  r5   rd   r;  re   r<  ©r   r   r   r=  ©r   r   r:   r   r9   r   r   r>  rz   r%   r?  r@  ©r&   r'   rw   r  r*   r,   r,   r-   Útest_legend_labelcolor_listŠ  s       rF  c                  C   s´   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd |jdd}t| ¡ g d¢ƒD ]\}}tj	 
| ¡ |¡sJ ‚qd S )Nr	   r   r:  r   ©r   r*   rd   r;  r   re   r<  r   Ú	linecolorr=  rC  rD  rE  r,   r,   r-   Ú test_legend_labelcolor_linecolor–  s    """rI  c                  C   s´   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd |jdd}t| ¡ g d¢ƒD ]\}}tj	 
| ¡ |¡sJ ‚qd S )Nr	   r   r:  r   ©r   Úmarkeredgecolorrd   r;  r   re   r<  r   rK  r=  rC  rD  rE  r,   r,   r-   Ú&test_legend_labelcolor_markeredgecolor¢  s    """rL  c                  C   s´   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd |jdd}t| ¡ g d¢ƒD ]\}}tj	 
| ¡ |¡sJ ‚qd S )Nr	   r   r:  r   ©r   Úmarkerfacecolorrd   r;  r   re   r<  r   rN  r=  rC  rD  rE  r,   r,   r-   Ú&test_legend_labelcolor_markerfacecolor®  s    """rO  c                 C   s¦   t  ¡ \}}|jt d¡t d¡d dd |jt d¡t d¡d dd |jt d¡t d¡d dd | tjd	< | ¡ }| ¡ D ]}tj	 
| ¡ | ¡s†J ‚q†d S )
Nr	   r   r:  r5   rd   r;  re   r<  úlegend.labelcolor)r   r   r:   r   r9   rz   r‡   r   r>  r%   r?  r@  rA  r,   r,   r-   Ú%test_legend_labelcolor_rcparam_singleº  s       
rQ  c                  C   sº   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡s–J ‚q–d S )Nr	   r   r:  r   rG  rd   r;  r   re   r<  r   rH  rP  rC  ©r   r   r:   r   r9   rz   r‡   r   r   r>  r%   r?  r@  rE  r,   r,   r-   Ú(test_legend_labelcolor_rcparam_linecolorÈ  s    """
rS  c                  C   sº   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡s–J ‚q–d S )Nr	   r   r:  r   rJ  rd   r;  r   re   r<  r   rK  rP  rC  rR  rE  r,   r,   r-   Ú.test_legend_labelcolor_rcparam_markeredgecolorÕ  s    """
rT  c                  C   sº   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡s–J ‚q–d S )Nr	   r   r:  r   rJ  rd   r;  r   re   r<  r   ZmecrP  rC  rR  rE  r,   r,   r-   Ú4test_legend_labelcolor_rcparam_markeredgecolor_shortâ  s    """
rU  c                  C   sº   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡s–J ‚q–d S )Nr	   r   r:  r   rM  rd   r;  r   re   r<  r   rN  rP  rC  rR  rE  r,   r,   r-   Ú.test_legend_labelcolor_rcparam_markerfacecolorï  s    """
rV  c                  C   sº   t  ¡ \} }|jt d¡t d¡d ddd |jt d¡t d¡d ddd |jt d¡t d¡d	 d
dd dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡s–J ‚q–d S )Nr	   r   r:  r   rM  rd   r;  r   re   r<  r   ZmfcrP  rC  rR  rE  r,   r,   r-   Ú4test_legend_labelcolor_rcparam_markerfacecolor_shortü  s    """
rW  c                  C   sD   t  ¡ } |  ¡ rJ ‚|  d¡ |  ¡ s*J ‚|  d¡ |  ¡ r@J ‚d S )NTF)r   r   Zget_draggableZset_draggable©r   r,   r,   r-   Útest_get_set_draggable	  s    

rY  c                  C   sŽ   t jg d¢dddd\} }}t  ¡ }|jD ]}| d¡ q*| ¡ d d… |d  ¡ d d… ksbJ ‚| ¡ d d… |d  ¡ d d… ksŠJ ‚d S )	Nrc   g      Ð?Údatarï   )ró   r   r*   rK   r?   r   )r   Úhistr   r]   Ú	set_alphaÚget_facecolorÚget_edgecolor)r(   r÷   Úhhr   r  r,   r,   r-   Útest_alpha_handles  s    
(r`  c                 C   sb   dt jd< dt jd< dt jd< t ¡ \}}|jdddd	 |jd
d |j ¡  d| jvs^J ‚d S )Nr*  zfont.familyzComputer Modernz
font.serifTztext.usetexr   Úinputr5   r}   r/  z Font family ['serif'] not found.)	rz   r‡   r   r   r:   r   r$  r&  r  )Zcaplogr&   r'   r,   r,   r-   Útest_usetex_no_warn  s    



rb  c                  C   sÐ   t  ¡ \} }| j ¡  tdƒD ]}|jt d¡|d qtddiƒ | 	¡ }W d   ƒ n1 sb0    Y  t
 t¡}|  |¡ W d   ƒ n1 s–0    Y  t|ƒdks°J ‚|D ]}t|jƒdks´J ‚q´d S )Nr  éˆ  r5   z
legend.locr7   rd   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   r$  r&  rs   r:   r   r9   r   r   rY   rZ   r[   Údraw_artistr\   rÈ   rÉ   )r&   r'   Úidxr   ÚrecordsrÊ   r,   r,   r-   Útest_warn_big_data_best_loc)  s    
&(ÿrg  c                  C   sP   t  ¡ \} }| j ¡  tdƒD ]}|jt d¡|d q| d¡}|  	|¡ d S )Nr  rc  r5   r7   )
r   r   r$  r&  rs   r:   r   r9   r   rd  )r&   r'   re  r   r,   r,   r-   Ú(test_no_warn_big_data_when_loc_specified;  s    

rh  Úlabel_arrayÚlowÚhigh)rj  rk  c                 C   sh   g d¢}ddgddgddgg}t  ¡ \}}|j||| d | ¡ }dd	„ | ¡ D ƒ}|d
dgksdJ ‚d S )Nrc   r   rd   r   rP   é	   r5   c                 S   s   g | ]}|  ¡ ‘qS r,   ©r  ©Ú.0Úentryr,   r,   r-   Ú
<listcomp>R  ó    z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>rj  rk  )r   r   r:   r   r>  )ri  r(   r)   r&   r'   rw   Úlegend_textsr,   r,   r-   Ú'test_plot_multiple_input_multiple_labelD  s    þrt  r   r†   r   c                 C   sn   g d¢}ddgddgddgg}t  ¡ \}}|j||| d | ¡ }dd	„ | ¡ D ƒ}|t| ƒgd ksjJ ‚d S )
Nrc   r   rd   r   rP   rl  r5   c                 S   s   g | ]}|  ¡ ‘qS r,   rm  rn  r,   r,   r-   rq  b  rr  z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r:   r   r>  rÈ   )r   r(   r)   r&   r'   rw   rs  r,   r,   r-   Ú%test_plot_multiple_input_single_labelV  s    þru  c                 C   sh   g d¢}g d¢}t  ¡ \}}|j||| d | ¡ }t| ¡ ƒdksHJ ‚| ¡ d  ¡ t| ƒksdJ ‚d S )Nrc   )rd   r   r’   r5   r   r   )r   r   r:   r   r\   r>  r  rÈ   )ri  r(   r)   r&   r'   rw   r,   r,   r-   Ú%test_plot_single_input_multiple_labelf  s    rv  c                  C   sp   t  t¡R g d¢} ddgddgddgg}g d¢}t ¡ \}}|j| ||d W d   ƒ n1 sb0    Y  d S )	Nrc   r   rd   r   rP   rl  )rk  rj  Zmediumr5   )rY   r®   r0  r   r   r:   )r(   r)   r   r&   r'   r,   r,   r-   Ú3test_plot_multiple_label_incorrect_length_exceptionu  s    þrw  c                  C   s:   t  ¡ \} }|jg d¢g d¢g d¢dddd | ¡  d S )NrÎ   rc   rf   r   ZfaceZFill)rí   r—   r   )r   r   rœ   r   rT   r,   r,   r-   Útest_legend_face_edgecolor‚  s
    ÿrx  c                  C   sT   t  ¡ \} }|jddgddgdd | ¡ }|j|u s:J ‚| ¡ d j|u sPJ ‚d S )Nr   rd   re   rP   rI   r5   r   )r   r   r:   r   r2  r>  rv   r,   r,   r-   Útest_legend_text_axesŠ  s
    ry  c                  C   sn   t  ¡ \} }|jddgddgdd tjdgdgddg}|j|dgdd}|d  ¡ |jd  ¡ ksjJ ‚d S )Nr   r   rû   )rì   r!  r  )r   r   r   ÚmlinesÚLine2Dr   Ú
get_markerr]   )r&   r'   r+   rw   r,   r,   r-   Útest_handlerline2d“  s
    r}  c                  C   sF   t  ¡  ¡ } |  ¡ }|jddgddgdd |  ¡ }|j| u sBJ ‚d S )Nr   r   rI   r5   )r   rR   Z
subfiguresr   r:   r   )Zsubfigr'   rw   r,   r,   r-   Útest_subfigure_legendœ  s
    r~  c                  C   s   t jddgddgddd} t  ¡  ¡ d }| d¡ | ¡ d d… t|  ¡ d d d… ƒks`J ‚| ¡ d d… t|  ¡ d d d… ƒksŒJ ‚d S )	Nr   r   rd   re   z#123456r   )r*   r   r   )r   rœ   r   Zget_patchesr\  r]  Útupler^  )Zpcr   r,   r,   r-   Ú-test_setting_alpha_keeps_polycollection_color¥  s
    
,r€  c            	      C   s’   g d¢} t  ¡ \}}dd„ | D ƒ}g d¢}dd„ |D ƒ}| ||¡}dd„ | ¡ D ƒ}dd„ | ¡ D ƒ}||  kr|| ks‚n J ‚||ksŽJ ‚d S )N)Ú.Ú*rû   c                 S   s"   g | ]}t jd gd gd|d‘qS )r   ÚNone)Zlsrì   )rz  r{  )ro  Úmarkr,   r,   r-   rq  ±  s   ÿz3test_legend_markers_from_line2d.<locals>.<listcomp>)rê   rA   Zxyzzyc                 S   s   g | ]}|  ¡ ‘qS r,   ©r|  ©ro  rI   r,   r,   r-   rq  ´  rr  c                 S   s   g | ]}|  ¡ ‘qS r,   r…  r†  r,   r,   r-   rq  ·  rr  c                 S   s   g | ]}|  ¡ ‘qS r,   rm  )ro  r  r,   r,   r-   rq  ¸  rr  )r   r   r   Ú	get_linesr>  )	Ú_markersr&   r'   r¡   r$   Úmarkersr   Únew_markersZ
new_labelsr,   r,   r-   Útest_legend_markers_from_line2d­  s    ÿr‹  c                 C   s,   g d¢}d}| j ||d |j ||d d S )N)r
   r   r   ra   Úer  re   )Zncol)r~   rX  )Zfig_testZfig_refÚstringsr~   r,   r,   r-   Útest_ncol_ncols¾  s    rŽ  )er   ÚplatformZunittestr   r  Únumpyr   rY   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   Zmatplotlib.pyplotZpyplotr   Z
matplotlibrz   Zmatplotlib.transformsZ
transformsr  Zmatplotlib.collectionsr  Zmatplotlib.linesr¡   rz  Zmatplotlib.legend_handlerr   Zmatplotlib.legendr   rü   r   Zmatplotlib.font_managerr   r.   r;   rD   rN   rU   r^   rb   rl   Úmachinerx   r{   r‚   r„   rˆ   r   rž   r¢   r£   rÕ   ré   rë   rù   rþ   rÿ   r  r  r  r  r  r  r  r%  r(  r3  r„  Zparametrizer8  r9  rB  rF  rI  rL  rO  rQ  rS  rT  rU  rV  rW  rY  r`  rb  rg  rh  Úarrayrt  Úintru  rv  rw  rx  ry  r}  r~  r€  r‹  rŽ  r,   r,   r,   r-   Ú<module>   sæ   
	
	



	
ÿ
ÿ

ÿ



 `@


	&

	

		
	þ

þ
			