o
    ÞÁgóf  ã                	   @   s  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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„ 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edg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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d,d-gd	d
d.d/„ ƒZ%ed0gd	d
d1d2„ ƒZ&ed3gd	d4d5d6d7„ ƒZ'd8d9„ Z(G d:d;„ d;ƒZ)G d<d=„ d=ƒZ*ed>gƒd?d@„ ƒZ+dAdB„ Z,dCdD„ Z-dEdF„ Z.edGgƒdHdI„ ƒZ/edJgƒdKdL„ ƒZ0dMdN„ Z1dOdP„ Z2dQdR„ Z3dSdT„ Z4dUdV„ Z5dWdX„ Z6dYdZ„ Z7d[d\„ Z8ej9 :d]d^¡d_d`„ ƒZ;dadb„ Z<dcdd„ Z=dedf„ Z>dgdh„ Z?didj„ Z@dkdl„ ZAej9jBe Cd	¡ dmdndodp„ ƒZDdqdr„ ZEdsdt„ ZFej9 :dudvdwgdxe Gdvdwg¡g¡dydz„ ƒZHej9 :d{d|d}eIg¡d~d„ ƒZJej9 :dudvdwgdxe Gdvdwg¡g¡d€d„ ƒZKd‚dƒ„ ZLd„d…„ ZMdS )†é    N)Úmock)Úimage_comparison)ÚHandlerTuple)Ú
rc_contextc                  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 q-| ¡ \}
}t 	t||
ƒ¡}|j
| ¡ | ¡ dd	d
 d S )Né
   Úaé   ÚbÚrÚg)ÚlabelÚcúcenter left)é   ç      à?)ÚlocÚbbox_to_anchor)ÚnpÚrandomÚ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*   úZ/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/matplotlib/tests/test_legend.pyÚtest_legend_ordereddict   s   
ÿr,   Ú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:   Ú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 )r/   r0   ÚedgeÚm)Úalignr(   Néÿÿÿÿr   r   ÚupÚdownr6   r7   )r   r   r   r8   Úbarr   )r$   r%   r&   Úb1Úb2r*   r*   r+   Útest_legend_auto2.   s
   
$rE   Úlegend_auto3c                  C   sV   t  ¡ \} }g d¢}g d¢}|j||ddd | dd¡ | dd¡ |jdd	 d
S )r/   )çÍÌÌÌÌÌì?çš™™™™™¹?rH   rG   rG   r   )çffffffî?rI   çš™™™™™©?rJ   r   r   zo-Úliner4   ç        ç      ð?r6   r7   N)r   r   r9   Úset_xlimÚset_ylimr   )r$   r%   r&   r'   r*   r*   r+   Útest_legend_auto38   s   rP   Ú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   é   r2   r   r4   gffffff@u   DÃ©veloppÃ©sr?   Ú__nolegend__r6   )Ú	numpointsr   )r   ÚfigureÚadd_subplotr9   r   r8   Úlinspacer   ©r$   r%   r*   r*   r+   Útest_various_labelsD   s   
rZ   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   r4   r   z:xr&   é   r?   ÚdÚdiamondr6   F)r   Úmarkerfirst)r   r   r9   r   r8   Úonesr   rY   r*   r*   r+   Útest_labels_firstO   s
   ra   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[   ©rc   rd   rS   z-x)rd   rS   r   z-d)ztwo keyszpad=0zone keyr   )Úndivider   )rf   Úpad)rU   Úhandler_map)r   r   r9   r   r   )r$   r%   Úp1Úp2Úp3r*   r*   r+   Útest_multiple_keysY   s   ÿ
þrl   zrgba_alpha.pngÚx86_64g{®Gáz„?)r.   Ú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Úcenterr7   ©r   r   r   r   )r   r   r9   Úranger   ÚlegendPatchÚset_facecolor©r$   r%   Úlegr*   r*   r+   Útest_alpha_rgbaf   s   ry   zrcparam_alpha.pngc                  C   st   t  ¡ \} }|jtdƒdd tjddid t jdgdd	}|j g d
¢¡ W d   ƒ d S 1 s3w   Y  d S )Nr   r   ro   zlegend.framealphag      è?)Úrcrq   rr   r7   rs   )	r   r   r9   rt   Úmplr   r   ru   rv   rw   r*   r*   r+   Útest_alpha_rcparamo   s   "úr|   Úfancyc                   C   s~   t  d¡ t jt d¡t ddd¡dd t jdg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 )NrR   r   r   r?   zXX
XXr4   r   zo--ÚXXr   )ÚxerrÚyerrr   r   rM   rc   Tú	My legendr   )r   r   ÚncolÚshadowÚtitlerU   )r   Úsubplotr   r   r8   r9   Ú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   r0   Úmylabelr   )r   rp   r   )rˆ   )r   rX   r   r9   r   )r&   r'   r*   r*   r+   Útest_framealpha‰   s   rŠ   Úscatter_rc3Ú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 )NrR   r   r   r?   Úthreer4   r   rM   r   r   )r   r   r„   r   zlegend.scatterpointsÚone)	r   rV   r…   r   r   r8   r   r{   ÚrcParams)r%   r*   r*   r+   Útest_rc’   s   
 ÿ

 
ÿr   Úlegend_expandc                  C   sª   ddg} t  t| ƒd¡\}}t d¡}t|| ƒD ]:\}}|j|d| ddd |jd	|d
}| |¡ |j||d ddd |jd|d
}| |¡ |jd|dd qdS )zTest expand modeNÚexpandr   r0   r1   r2   r3   r4   z
upper left)r   Úmoder5   Úrightz
lower leftrc   )r   r“   r‚   )	r   r   Úlenr   r8   r   r9   r   Ú
add_artist)Úlegend_modesr$   Úaxsr&   r%   r“   Úl1Úl2r*   r*   r+   Útest_legend_expand£   s   


ùr›   Ú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||Ú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¨   )rG   rM   rG   ú+zPath
default color)r£   g¸…ëQ¸Þ?g)\Âõ(ä?ÚC2zPath
explicit colorg{®Gáz„¿gš™™™™™ñ?rS   )ÚhandlelengthÚhandleheight)	r   r   r   Ú	RectangleÚ	add_patchÚfill_betweenrN   rO   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   r9   rt   r   ÚremoveÚlegendsÚ
get_legend)r$   r%   Úlinesrx   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w   Y  | t  ¡ |dg¡ d S )Nr   úhello worldr4   úmatplotlib.legend.Legend©r   r9   rt   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w   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   sL   t  tdƒ¡}tjtdd t  |¡ W d   ƒ d S 1 sw   Y  d S )Nr   zbut found an Artist)Úmatch)r   r9   rt   ÚpytestÚ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w   Y  | t  ¡ |dg¡ d S )Nr   r¹   r4   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 s"w   Y  |jt  ¡ |dgdd d S )Nr   r¹   r4   rº   rÈ   r”   r7   r»   r¾   r*   r*   r+   Útest_legend_three_argsú   s
   ÿ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 s'w   Y  | t  ¡ gddi¡ d S )Nr   r¹   r4   z,matplotlib.legend._get_legend_handles_labelsÚ1rc   )rh   )	r   r9   rt   r   r°   Úreturn_valuer   r¼   r½   )r¿   r¶   Ú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 sDw   Y  | |||gd	dg¡ d S )Nr   r   é   r&   r4   rc   Ú2xrd   Ú3xrº   )r)   ©	r   r   r   rX   r9   r   r°   r   r¼   )r¿   r$   r%   r&   Úln1Úln2Ú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 s5w   Y  | |||gddg¡ d S )	Nr   r   rÏ   rc   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 sAw   Y  | |||fd¡ d S )
Nr   rc   é   Úsinr4   Úcosrº   ©r   r	   )r"   r)   )r   r   r   rX   Úpir9   rÚ   rÛ   r   r°   r   r¼   )r¿   r$   r%   ÚthÚlnsÚlncrÀ   r*   r*   r+   Ú!test_legend_kwargs_handles_labels  s   þ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 sAw   Y  t|ƒd	ksNJ ‚t|d jƒd
ksYJ ‚d S )Nr   rc   rÙ   rÚ   r4   rÛ   rÜ   r×   r   úMYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rX   rÝ   r9   rÚ   rÛ   rÄ   ÚwarnsÚUserWarningr   r•   ÚstrÚmessage)r¿   r$   r%   rÞ   rß   rà   Úrecordr*   r*   r+   Útest_warn_mixed_args_and_kwargs%  s   ÿÿ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 s<w   Y  | |||gddg¡ d S )
Nr   )Úhost_subplotéo   ©r   r   rc   ÚDensityr4   )r   rd   rc   ÚTemperaturerº   )	Úmpl_toolkits.axes_grid1ré   Útwinxr9   r   r°   r   r   r¼   )r¿   ré   ÚhostÚparri   rj   rÀ   r*   r*   r+   Útest_parasite1  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 s$w   Y  |j||dg|jd d S )Nr   rº   r¹   ©Úbbox_transform©	r   r   r9   rt   r   r°   r   r¼   ÚtransFigure©r¿   r$   r%   r¶   rÀ   r*   r*   r+   Útest_legend_handle_labelA  s   ÿ
ÿz1TestLegendFigureFunction.test_legend_handle_labelc                 C   sj   t  ¡ \}}|jtdƒdd}t d¡}| ¡  W d   ƒ n1 s#w   Y  |j||dg|jd d S )Nr   r¹   r4   rº   r÷   rù   rû   r*   r*   r+   rÁ   I  s   
ÿ
ÿz,TestLegendFigureFunction.test_legend_no_argsc                 C   sj   t  ¡ \}}| tdƒ¡}t d¡}| dg¡ W d   ƒ n1 s#w   Y  |j||dg|jd d S )Nr   rº   rÈ   r÷   rù   rû   r*   r*   r+   Útest_legend_label_argQ  s   ÿ
ÿz.TestLegendFigureFunction.test_legend_label_argc                 C   sp   t  ¡ \}}| tdƒ¡}t d¡}| |dgd¡ W d   ƒ n1 s%w   Y  |j||dgd|jd d S )Nr   rº   rÈ   r”   r÷   rù   rû   r*   r*   r+   Útest_legend_label_three_argsY  s   ÿ
ÿz5TestLegendFigureFunction.test_legend_label_three_argsc                 C   s^   t  ¡ \}}| tdƒ¡}t t¡ |j|dgddd W d   ƒ d S 1 s(w   Y  d S )Nr   rÈ   r”   Úleftr7   )r   r   r9   rt   rÄ   rÅ   Ú	Exceptionr   )r¿   r$   r%   r¶   r*   r*   r+   Ú#test_legend_label_three_args_pluskwa  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 s7w   Y  |j	|||fdd|j
d
 d S )Nr   rc   r   r   ç       @rº   r”   rÜ   )r   r"   r)   )r   rø   )r   r   r9   rt   r   r8   r   r°   r   r¼   rú   )r¿   r$   r˜   r¶   Úlines2rÀ   r*   r*   r+   Útest_legend_kw_argsi  s   ÿ
þ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 s6w   Y  t
|ƒdksCJ ‚t|d jƒdksNJ ‚d S )	Nr   rc   r   r   r  rÜ   r×   râ   )r   r   r9   rt   r   r8   rÄ   rã   rä   r   r•   rå   ræ   )r¿   r$   r˜   r¶   r  rç   r*   r*   r+   Útest_warn_args_kwargss  s   ÿÿz.TestLegendFigureFunction.test_warn_args_kwargsN)
ró   rô   rõ   rü   rÁ   rý   rþ   r  r  r  r*   r*   r*   r+   rö   ?  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   rM   r  r   g      @rc   )Úy1Úy2Úy3r×   )r   r   )r   éF   r6   r7   N)r   r   r   rX   Ú	stackplotrN   rO   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 )Nrd   Úfoo)r   r   rB   rt   r   )r$   r%   Úfig2Úax2Ú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 ]!}d}tj d|¡\}}d	tj |¡ }|j|||||d
dd q%| ¡  | d¡ d S )Nr2   r
   rd   )ÚmarkerÚ	facecolorr¥   Úsr   )ÚredÚgreenÚblueiî  rc   g      i@r    Únone)r   r  r   ÚalphaÚ
edgecolorsT)	r   r   r   r   Únanr   r   Ú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 )NrL   rM   Úkr2   r²   )r(   r  r   r   r
   Úvrc   )r   r   r   r   ÚmlegendÚ_get_legend_handles_labelsr•   )r$   r%   ÚhandÚ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
   rd   )r(   )r  r  r  r6   r7   g      à¿gš™™™™™@)rt   r   r   r   r½   rN   rO   )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   )Ú	transformr  rB   r6   r7   )ÚmtransformsÚAffine2DÚ	translater   rX   r   r9   r   r½   Ú	transDatar   )Úoffsetr&   r*   r*   r+   Ú#test_not_covering_scatter_transformÅ  s
   r1  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 d |j	ksJ ‚| ¡ d d |j
ksŽJ ‚qpd S )N)r   r   )r   r   )r    ç333333ã?)çš™™™™™É?r3  gffffffæ?r3  r¨   r¦   r   r2  rH   z--rd   )Ú
linestylesrp   z-.)r4  ú:)Úline1Úline2zline 3r   r   )ÚmcollectionsÚLineCollectionr   r   Úadd_collectionr   ÚlegendHandlesr   Úget_linestylesÚ_dashSeqÚ_dashOffset)Úlines1r  Úlines3Úlc1Úlc2Úlc3r$   r%   rx   Úh1Úh2Úh3ÚohÚlhr*   r*   r+   Ú!test_linecollection_scaled_dashesÑ  s      


þrI  c                  C   s.   t  ¡ \} }|jtdƒdd |jdd dS )z(Test legend handler with numpoints <= 1.r   r²   r4   r   )rU   N)r   r   r9   rt   r   rY   r*   r*   r+   Útest_handler_numpointsæ  s   rJ  c                   C   s   t jg g dd t  ¡  dS )z1Test legend when bar chart is empty with a label.r²   r4   N)r   rB   r   r*   r*   r*   r+   Ú test_empty_bar_chart_with_legendî  s   rK  c                  C   sD   t  ¡ \} }|jtdƒdd |jddd}| ¡  ¡ dks J ‚d S )Nr0   r²   r4   TÚw)rƒ   r  r   )r   r   r9   rt   r   Ú	get_frameÚ	get_alpharw   r*   r*   r+   Útest_shadow_framealphaö  s   rO  c                  C   sJ   t  ¡ \} }| tdƒ¡ | ¡ }| ¡  ¡ dksJ ‚| ¡  ¡ r#J ‚d S )Nr   Ú )r   r   r9   rt   r   Ú	get_titleÚget_textÚget_visiblerw   r*   r*   r+   Útest_legend_title_emptyÿ  s
   rT  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sHJ ‚d S )	Nr0   ©Údpir   ÚAardvarkr4   éÈ   rc   rH   )r   r   r9   rt   r   Úget_window_extentÚcanvasÚget_rendererÚx0rÄ   Úapprox)r$   r%   rx   Úx01Ú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 )Nr0   rU  r   rW  r4   )r   r   r9   rt   r   rZ  ÚdrawrY  )r$   r%   rx   Úleg2r*   r*   r+   Ú"test_window_extent_cached_renderer  s   
rc  c                  C   s@   t  ¡ \} }| tdƒ¡ |jddd}| ¡  ¡ dksJ ‚d S )Nr   rW  é   )r„   Útitle_fontsize)r   r   r9   rt   r   rQ  Úget_fontsizerw   r*   r*   r+   Útest_legend_title_fontsize#  s   rg  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 	| 
¡ | ¡sMJ ‚q@d S )
Nr   r   ú#1r4   rc   ú#2rd   ú#3©Ú
labelcolor)r   r   r9   r   r8   r   Ú	get_textsr{   r#   Ú
same_colorÚ	get_color)r(   r$   r%   rx   Útextr*   r*   r+   Útest_legend_labelcolor_single+  s      ÿrq  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	 
| ¡ |¡sVJ ‚qGd S )Nr   r   rh  r4   rc   ri  rd   rj  ©r
   r   r	   rk  ©r   r   r9   r   r8   r   r   rm  r{   r#   rn  ro  ©r$   r%   rx   rp  r(   r*   r*   r+   Útest_legend_labelcolor_list8  s      ÿru  c                  C   ó´   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	 
| ¡ |¡sWJ ‚qHd S )Nr   r   rh  r
   )r   r(   rc   ri  r   rd   rj  r	   Ú	linecolorrk  rr  rs  rt  r*   r*   r+   Ú test_legend_labelcolor_linecolorD  ó   """ÿrx  c                  C   rv  )Nr   r   rh  r
   )r   Úmarkeredgecolorrc   ri  r   rd   rj  r	   rz  rk  rr  rs  rt  r*   r*   r+   Ú&test_legend_labelcolor_markeredgecolorP  ry  r{  c                  C   rv  )Nr   r   rh  r
   )r   Úmarkerfacecolorrc   ri  r   rd   rj  r	   r|  rk  rr  rs  rt  r*   r*   r+   Ú&test_legend_labelcolor_markerfacecolor\  ry  r}  c                  C   sD   t  ¡ } |  ¡ r
J ‚|  d¡ |  ¡ sJ ‚|  d¡ |  ¡ r J ‚d S )NTF)r   r   Úget_draggableÚset_draggable)r   r*   r*   r+   Útest_get_set_draggableh  s   

r€  c                  C   sŽ   t jg d¢dddd\} }}t  ¡ }|jD ]}| d¡ q| ¡ d d… |d  ¡ d d… ks1J ‚| ¡ d d… |d  ¡ d d… ksEJ ‚d S )	Nrb   g      Ð?Údatar  )r  r   r(   rM   r?   r   )r   Úhistr   r;  Ú	set_alphaÚget_facecolorÚget_edgecolor)r&   r  Úhhr   rH  r*   r*   r+   Útest_alpha_handlesq  s   
(,r‡  z"This test needs a TeX installation)Úreasonc                 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 )NÚserifzfont.familyzComputer Modernz
font.serifTztext.usetexr   Úinputr4   r   )r„   z Font family ['serif'] not found.)	r{   r   r   r   r9   r   rZ  ra  rp  )Úcaplogr$   r%   r*   r*   r+   Útest_usetex_no_warnz  s   



rŒ  c                  C   sÐ   t  ¡ \} }| j ¡  tdƒD ]}|jt d¡|d qtddiƒ | 	¡ }W d   ƒ n1 s1w   Y  t
 t¡}|  |¡ W d   ƒ n1 sKw   Y  t|ƒdksXJ ‚|D ]}t|jƒdkseJ ‚qZd S )Nr*  éˆ  r4   z
legend.locr6   rc   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   rZ  ra  rt   r9   r   r8   r   r   rÄ   rã   rä   Údraw_artistr•   rå   ræ   )r$   r%   Úidxr   Úrecordsrç   r*   r*   r+   Útest_warn_big_data_best_locŠ  s    

ÿÿ
ÿÿr‘  c                  C   sP   t  ¡ \} }| j ¡  tdƒD ]}|jt d¡|d q| d¡}|  	|¡ d S )Nr*  r  r4   r6   )
r   r   rZ  ra  rt   r9   r   r8   r   rŽ  )r$   r%   r  r   r*   r*   r+   Ú(test_no_warn_big_data_when_loc_specifiedœ  s   

r’  Úlabel_arrayÚlowÚhigh)r”  r•  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s2J ‚d S )Nrb   r   rc   r   rS   é	   r4   c                 S   ó   g | ]}|  ¡ ‘qS r*   ©rR  ©Ú.0Úentryr*   r*   r+   Ú
<listcomp>³  ó    z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>r”  r•  )r   r   r9   r   rm  )r“  r&   r'   r$   r%   rx   Úlegend_textsr*   r*   r+   Ú'test_plot_multiple_input_multiple_label¥  s   þrŸ  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s5J ‚d S )
Nrb   r   rc   r   rS   r–  r4   c                 S   r—  r*   r˜  r™  r*   r*   r+   rœ  Ã  r  z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r9   r   rm  rå   )r   r&   r'   r$   r%   rx   rž  r*   r*   r+   Ú%test_plot_multiple_input_single_label·  s   þr   c                 C   sh   g d¢}g d¢}t  ¡ \}}|j||| d | ¡ }t| ¡ ƒdks$J ‚| ¡ d  ¡ t| ƒks2J ‚d S )Nrb   )rc   r   rŸ   r4   r   r   )r   r   r9   r   r•   rm  rR  rå   )r“  r&   r'   r$   r%   rx   r*   r*   r+   Ú%test_plot_single_input_multiple_labelÇ  s    r¡  c                  C   sr   t  t¡* g d¢} ddgddgddgg}g d¢}t ¡ \}}|j| ||d W d   ƒ d S 1 s2w   Y  d S )	Nrb   r   rc   r   rS   r–  )r•  r”  Úmediumr4   )rÄ   rÅ   Ú
ValueErrorr   r   r9   )r&   r'   r   r$   r%   r*   r*   r+   Ú3test_plot_multiple_label_incorrect_length_exceptionÖ  s   þ"ùr¤  c                  C   s:   t  ¡ \} }|jg d¢g d¢g d¢dddd | ¡  d S )Nrë   rb   re   r
   ÚfaceÚFill)r  r¥   r   )r   r   r¯   r   rY   r*   r*   r+   Útest_legend_face_edgecolorã  s
   ÿr§  )Nr   ÚplatformÚunittestr   Únumpyr   rÄ   Úmatplotlib.testing.decoratorsr   Úmatplotlib.pyplotÚpyplotr   Ú
matplotlibr{   Úmatplotlib.transformsÚ
transformsr,  Úmatplotlib.collectionsr8  Úmatplotlib.legend_handlerr   Úmatplotlib.legendr   r#  r   r,   r:   rE   rP   rZ   ra   rl   Úmachinery   r|   r‡   rŠ   r   r›   r±   r·   r¸   rö   r  r  r   r'  r(  r1  rI  rJ  rK  rO  rT  r`  rc  rg  ÚmarkÚparametrizerq  ru  rx  r{  r}  r€  r‡  ÚskipifÚcheckdep_usetexrŒ  r‘  r’  ÚarrayrŸ  Úintr   r¡  r¤  r§  r*   r*   r*   r+   Ú<module>   s¾    
	
	



	
ÿ
ÿ

ÿ



 `@


	
		
þ
	þ

þ
