o
    *wÖi-Ö  ã                	   @   sR  d dl Z 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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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-dd„ Z.dd„ Z/edgdddd„ ƒZ0edgde 1¡ dkr¶d ndd d!d"„ ƒZ2ed#gde 1¡ dkrÊd ndd d$d%„ ƒZ3ed&gde 1¡ dkrÞd nd'd d(d)„ ƒZ4ed*gde 1¡ dkròd nd'd d+d,„ ƒZ5ed-gdd.d d/d0„ ƒZ6ed1gde 1¡ dkrd nd2d d3d4„ ƒZ7ed5d6gddd7d8„ ƒZ8ed9gddd:d;„ ƒZ9ed<gdd=d>d?d@„ ƒZ:dAdB„ Z;dCdD„ Z<edEgdFdGdH„ ƒZ=G dIdJ„ dJƒZ>G dKdL„ dLƒZ?dMdN„ Z@edOge 1¡ dkrnd ndPdQdRdS„ ƒZAdTdU„ ZBdVdW„ ZCdXdY„ ZDedZgƒd[d\„ ƒZEed]gƒd^d_„ ƒZFd`da„ ZGdbdc„ ZHddde„ ZIdfdg„ ZJedhgddie 1¡ dkr²d ndjdkdldm„ ƒZKdndo„ ZLdpdq„ ZMdrds„ ZNdtdu„ ZOdvdw„ ZPdxdy„ ZQejR Sdzd{¡d|d}„ ƒZTejR Sd~d¡d€d„ ƒZUejR Sd~d‚¡dƒd„„ ƒZVejR Sdzd{¡d…d†„ ƒZWejR Sd‡dˆ¡d‰dŠ„ ƒZXd‹dŒ„ ZYddŽ„ ZZdd„ Z[d‘d’„ Z\d“d”„ Z]d•d–„ Z^d—d˜„ Z_d™dš„ Z`d›dœ„ Zaddž„ ZbdŸd „ Zcd¡d¢„ Zdd£d¤„ ZeejR Sd‡dˆ¡d¥d¦„ ƒZfd§d¨„ Zgd©dª„ Zhd«d¬„ Zid­d®„ Zjd¯d°„ ZkejR ld±¡d²d³„ ƒZmejR Sd´dµ¡d¶d·„ ƒZnd¸d¹„ Zoedºd»„ ƒZpd¼d½„ Zqd¾d¿„ ZrejR SdÀdÁdÂgdÃe	 sdÁdÂg¡g¡dÄdÅ„ ƒZtejR SdÆdÇdÈeug¡dÉdÊ„ ƒZvejR SdÀdÁdÂgdÃe	 sdÁdÂg¡g¡dËdÌ„ ƒZwdÍdÎ„ ZxdÏdÐ„ ZydÑdÒ„ ZzdÓdÔ„ Z{dÕdÖ„ Z|d×dØ„ Z}dÙdÚ„ Z~dÛdÜ„ ZedEgdFdÝdÞ„ ƒZ€dßdà„ Zdá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ŠejR ld±¡dódô„ ƒZ‹dõdö„ ZŒd÷dø„ Zdùdú„ ZŽdûdü„ ZdS )ýé    N)Úmock)Úassert_allclose)Ú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 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/   úY/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/matplotlib/tests/test_legend.pyÚtest_legend_ordereddict   s   
ÿr1   zlegend_auto1.pngT)Ú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/   r0   Útest_legend_auto1-   s
   
r>   zlegend_auto2.pngc                  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 )r3   r4   ÚedgeÚm)Úalignr-   Néÿÿÿÿr   r   ÚupÚdownr:   r;   )r   r   r   r<   Úbarr"   )r)   r*   r+   Úb1Úb2r/   r/   r0   Útest_legend_auto27   s
   
$rH   zlegend_auto3.pngc                  C   sV   t  ¡ \} }g d¢}g d¢}|j||ddd | dd¡ | dd¡ |jdd	 d
S )r3   ©çÍÌÌÌÌÌì?çš™™™™™¹?rK   rJ   rJ   r   ©çffffffî?rM   çš™™™™™©?rN   r   r   úo-Úliner8   ç        ç      ð?r:   r;   N)r   r   r=   Úset_xlimÚset_ylimr"   )r)   r*   r+   r,   r/   r/   r0   Útest_legend_auto3A   s   rU   c                  C   s¸   t jddd\} }g }t|jdƒD ]2\}}| |¡ |jdgddg  tdƒd	|d
 |jdd}| j 	¡  | 
| ¡  |j ¡ ¡¡ qt|d j|d jƒ t|d j|d jƒ dS )zŠ
    Check that the legend location with automatic placement is the same,
    whatever the histogram type is. Related to issue #9580.
    é   )gš™™™™™@g333333@©ÚncolsÚfigsize)rE   ÚstepÚ
stepfilledr   r   é	   r
   ÚLegend)Úbinsr   Úhisttyper:   r;   r   é   N)r   r   r   ÚflatÚ	set_titleÚhistÚranger"   ÚcanvasÚdrawÚappendÚget_window_extentÚtransformedÚ	transAxesÚinvertedr   Úbounds)r)   ÚaxsÚ
leg_bboxesr*   ÚhtÚlegr/   r/   r0   Útest_legend_auto4M   s   
"
ÿrq   c                  C   s  t jddd\} }g }t|jdƒD ]h\}}tjddddd	tjt d
dgd
d
gdd
gddgddgddgddgddgddgg	¡ddtj	ddd
ddddfD ]}| 
|¡ qM|jddgddgdd |j|d}| j ¡  | | ¡  |j ¡ ¡¡ qt|d j|d
 jƒ dS )z
    Check that the automatic placement handle a rather complex
    case with non rectangular patch. Related to issue #9580.
    r`   )g333333#@g333333@rW   ©Úcenterr:   )r   rJ   çš™™™™™é?çš™™™™™É?ÚC1)ÚxyÚwidthÚheightÚfcr   r   rJ   rR   rK   )rz   )r   r   r   ih  rN   ÚC0)rx   rz   z	A segmentr8   r;   N)r   r   r   ra   ÚmpatchesÚEllipseÚPolygonr   ÚarrayÚWedgeÚ	add_patchr=   r"   re   rf   rg   rh   ri   rj   rk   r   rl   )r)   rm   rn   r*   r   Ú_patchrp   r/   r/   r0   Útest_legend_auto5c   s,   ÿ$þþú
ÿrƒ   zlegend_various_labels.pngc                  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   é   r6   r   r8   gffffff@u   DÃ©veloppÃ©srB   Ú__nolegend__r:   )Ú	numpointsr   )r   ÚfigureÚadd_subplotr=   r   r<   Úlinspacer"   ©r)   r*   r/   r/   r0   Útest_various_labelsƒ   s   
rŒ   zlegend_labels_first.pngÚx86_64g9´Èv¾ŸŠ?)r2   Útolc                  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   r8   r   z:xr+   é   rB   ÚdÚdiamondr:   F)r   Úmarkerfirst)r   r   r=   r   r<   Úonesr"   r‹   r/   r/   r0   Útest_labels_firstŽ   s
   r•   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`   rV   r   ©r`   rV   r…   z-x©rV   r…   r   z-d)ztwo keyszpad=0zone keyr   )Úndivider   )r™   Úpad)r‡   Úhandler_map)r   r   r=   r"   r   )r)   r*   Úp1Úp2Úp3r/   r/   r0   Útest_multiple_keys™   s   ÿ
þrŸ   zrgba_alpha.pngg¸…ëQ¸ž?c                  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 awayrs   r;   ©r   r   r   r   )r   r   r=   rd   r"   ÚlegendPatchÚset_facecolor©r)   r*   rp   r/   r/   r0   Útest_alpha_rgba§   s   r§   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   r    zlegend.framealphag      è?)Úrcr¢   rs   r;   r£   )	r   r   r=   rd   Úmplr   r"   r¤   r¥   r¦   r/   r/   r0   Útest_alpha_rcparam°   s   "úrª   z	fancy.pngrN   c                   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 )Nr„   r   r
   zo--ÚXXr8   r   rB   zXX
XXr   )ÚxerrÚyerrr   r   rR   r`   Tú	My legendr   )r   r   rX   ÚshadowÚtitler‡   )r   Úsubplotr=   r   r   r<   Úerrorbarr"   r/   r/   r/   r0   Ú
test_fancy¾   s   
 ÿ
ÿr³   Ú
framealphagú~j¼t“˜?c                  C   s4   t  ddd¡} | }tj| |ddd tjdd d S )Nr   r4   Úmylabelr
   )r   r¡   r   )r´   )r   rŠ   r   r=   r"   )r+   r,   r/   r/   r0   Útest_framealphaÌ   s   r¶   zscatter_rc3.pngzscatter_rc1.pngc                  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 )Nr„   r
   r   rB   Úthreer8   r   rR   r   r®   )r   r   r°   r   zlegend.scatterpointsÚone)	r   rˆ   r±   r   r   r<   r"   r©   ÚrcParams)r*   r/   r/   r0   Útest_rcÕ   s   
 ÿ

 
ÿrº   zlegend_expand.pngc                  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   r4   r5   r6   r7   r8   ú
upper left)r   Úmoder9   Úrightú
lower leftr`   )r   r½   rX   )	r   r   Úlenr   r<   r   r=   r"   Ú
add_artist)Úlegend_modesr)   rm   r+   r*   r½   Úl1Úl2r/   r/   r0   Útest_legend_expandæ   s   


ùrÅ   ÚhatchingÚdefault)r2   Ú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||rv   z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Ê   )rt   rt   rt   )rJ   rR   rJ   ú+zPath
default color)rÍ   g¸…ëQ¸Þ?g)\Âõ(ä?ÚC2zPath
explicit colorg{®Gáz„¿çš™™™™™ñ?r…   )ÚhandlelengthÚhandleheight)	r   r¹   r   Ú	Rectangler   Úfill_betweenrS   rT   r"   )r)   r*   Úpatchr/   r/   r0   Ú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=   rd   r"   ÚremoveÚlegendsÚ
get_legend)r)   r*   Úlinesrp   r/   r/   r0   Útest_legend_remove  s   
rß   c            	      C   sÌ   t  ¡ \} }d}d}g d¢}g d¢}|j|||d |d d |j|||d |d d |j|||d |d d |jdd}d	d
„ | ¡ D ƒ}dd
„ |jD ƒ}|tt|ƒƒksZJ ‚|tt|ƒƒksdJ ‚dS )z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label)Ú.ú,r6   r   r8   r`   T©Úreversec                 S   ó   g | ]}|  ¡ ‘qS r/   ©Úget_text)Ú.0Útr/   r/   r0   Ú
<listcomp>/  ó    z:test_reverse_legend_handles_and_labels.<locals>.<listcomp>c                 S   rä   r/   ©Ú
get_marker©rç   Úhr/   r/   r0   ré   0  rê   N)r   r   r=   r"   Ú	get_textsÚlegend_handlesÚlistÚreversed)	r)   r*   r+   r,   r'   Úmarkersrp   Úactual_labelsÚactual_markersr/   r/   r0   Ú&test_reverse_legend_handles_and_labels#  s   rö   Úpng)Ú
extensionsc                 C   sp   |   ¡ }|jdgddd |jdgddd |jdd	 |  ¡ }|jdgddd |jdgddd | ¡  d
S )z3Check that the rendered legend entries are reversedr   ÚroÚfirstr8   r`   ÚbxÚsecondTrâ   N)r   r=   r"   )Úfig_testÚfig_refr*   r/   r/   r0   Útest_reverse_legend_display5  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 worldr8   úmatplotlib.legend.Legend©r   r=   rd   r   rØ   r"   Úassert_called_withÚgca©ÚselfrÞ   r]   r/   r/   r0   Útest_legend_no_argsE  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/   r0   Ú%test_legend_positional_handles_labelsK  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   r=   rd   ÚpytestÚraisesÚ	TypeErrorr"   )r  rÞ   r/   r/   r0   Ú#test_legend_positional_handles_onlyQ  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  r8   r  Úfoobarr  r  r/   r/   r0   Ú"test_legend_positional_labels_onlyX  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  r8   r  r  r¾   r;   r  r  r/   r/   r0   Ú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  r8   z,matplotlib.legend._get_legend_handles_labelsÚ1r`   )r›   )	r   r=   rd   r   rØ   Úreturn_valuer"   r  r  )r  rÞ   Úhandles_labelsr/   r/   r0   Útest_legend_handler_mapd  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+   r8   r`   Ú2xrV   Ú3xr  )r.   ©	r   r   r   rŠ   r=   r   rØ   r"   r  )r  r)   r*   r+   Úln1Úln2Úln3r]   r/   r/   r0   Útest_legend_kwargs_handles_onlyl  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  r`   r  r+   r  ©r'   r  )r  r)   r*   r+   r  r  r]   r/   r/   r0   Útest_legend_kwargs_labels_onlyv  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   r`   é   Úsinr8   Úcosr  ©r   r   )r'   r.   )r   r   r   rŠ   Úpir=   r"  r#  r   rØ   r"   r  )r  r)   r*   ÚthÚlnsÚlncr]   r/   r/   r0   Ú!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
¡sZJ ‚d S )Nr   r`   r!  r"  r8   r#  r$  r  r   úMYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rŠ   r%  r=   r"  r#  r  ÚwarnsÚDeprecationWarningr"   rÀ   ÚstrÚmessageÚ
startswith)r  r)   r*   r&  r'  r(  Úrecordr/   r/   r0   Ú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   r`   ÚDensityr8   )r   rV   r`   ÚTemperaturer  )	Úmpl_toolkits.axes_grid1r2  Útwinxr=   r   rØ   r   r"   r  )r  r2  ÚhostÚparrœ   r   r]   r/   r/   r0   Útest_parasite•  s   
ÿz TestLegendFunction.test_parasiteN)Ú__name__Ú
__module__Ú__qualname__r  r	  r  r  r  r  r  r   r)  r1  r;  r/   r/   r/   r0   r   C  s    
	
r   c                   @   s<   e Z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   r=   rd   r   rØ   r"   r  ÚtransFigure©r  r)   r*   rÞ   r]   r/   r/   r0   Útest_legend_handle_label¥  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  r8   r  r@  rB  rD  r/   r/   r0   r  ­  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@  rB  rD  r/   r/   r0   Útest_legend_label_argµ  s   ÿ
ÿz.TestLegendFigureFunction.test_legend_label_argc                 C   s    t  ¡ \}}| tdƒ¡}tjtdd | |dgd¡ W d   ƒ n1 s'w   Y  tjtdd |j|dgddd W d   ƒ d S 1 sIw   Y  d S )Nr
   z0-2r
  r  r¾   Úleftr;   )r   r   r=   rd   r  r  r  r"   )r  r)   r*   rÞ   r/   r/   r0   Útest_legend_label_three_args½  s   ÿ"ÿz5TestLegendFigureFunction.test_legend_label_three_argsc                 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   r`   r   r
   ç       @r  r¾   r$  )r   r'   r.   )r   rA  )r   r   r=   rd   r   r<   r   rØ   r"   r  rC  )r  r)   rm   rÞ   Úlines2r]   r/   r/   r0   Útest_legend_kw_argsÅ  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¡sOJ ‚d S )	Nr   r`   r   r
   rI  r$  r  r*  )r   r   r=   rd   r   r<   r  r+  r,  r"   rÀ   r-  r.  r/  )r  r)   rm   rÞ   rJ  r0  r/   r/   r0   Útest_warn_args_kwargsÏ  s   ÿÿz.TestLegendFigureFunction.test_warn_args_kwargsN)	r<  r=  r>  rE  r  rF  rH  rK  rL  r/   r/   r/   r0   r?  £  s    
r?  c                  C   sN  dd„ dD ƒ} | dd„ dD ƒ7 } | dd„ dD ƒ7 } | dd„ dD ƒ7 } g d¢}g d	¢}g d
¢}g d¢}||||||||||||g}g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t | ƒD ]:\}}t|ƒ tjddd\}	}
|
jtdƒdd |	jd| d}|	 ¡  t|
 	¡ j
|| ƒ t| 	¡ j
|| ƒ qjd S )Nc                 S   ó   g | ]}d | ‘qS )zupper r/   ©rç   Úposr/   r/   r0   ré   Ü  rê   z.test_figure_legend_outside.<locals>.<listcomp>)rG  rs   r¾   c                 S   rM  )zlower r/   rN  r/   r/   r0   ré   Ý  rê   c                 S   rM  )zleft r/   rN  r/   r/   r0   ré   Þ  rê   )Úlowerrs   Úupperc                 S   rM  )zright r/   rN  r/   r/   r0   ré   ß  rê   )çQ‡nùX4@çQ‡nù¸;@ç‹lçû©´ˆ@g¢E¶óý@)rR  g ™žÃQ@rT  ç‹lçû©f‚@)gL‡NÏõb@rS  rT  rU  )rR  rS  g¢E¶óý™„@rU  )ç      $@ç     X@ç      `@ç     p‚@)ç     (u@rW  ç     Ø|@rY  )é›  rW  ç     °ˆ@rY  )rV  rV  rX  ç     €F@)rZ  rV  r[  r^  )ç     Ø„@rV  r]  r^  )rV  ç     ¨q@rX  ç     Øs@)r\  rV  r]  r^  )r_  r`  r]  ra  )r_  rW  r]  rY  Tr4   )Úconstrained_layoutÚdpir
   ÚBoo1r8   zoutside r;   )Ú	enumerateÚprintr   r   r=   rd   r"   Údraw_without_renderingr   rh   Úextents)ÚtodosÚupperextÚlowerextÚleftextÚrightextÚaxbbÚlegbbÚnnÚtodor)   rm   rp   r/   r/   r0   Útest_figure_legend_outsideÛ  sN   ýõ
ÿ
ÿ÷rr  zlegend_stackplot.pnggX9´Èv¾Ÿ?)rŽ   c                  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
   rR   rI  r   g      @r`   )Úy1Úy2Úy3r  )r   r
   )r   éF   r:   r;   N)r   r   r   rŠ   Ú	stackplotrS   rT   r"   )r)   r*   r+   rs  rt  ru  r/   r/   r0   Útest_legend_stackplot  s   

rx  c                  C   s<   t  ¡ \} }t  ¡ \}}| tdƒtdƒ¡}| |d¡ d S )NrV   Úfoo)r   r   rE   rd   r"   )r)   r*   Úfig2Úax2Úbrsr/   r/   r0   Ú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 )Nr6   r   rV   )ÚmarkerÚ	facecolorrÎ   Úsr   )ÚredÚgreenÚblueiî  r`   g      i@rÊ   Únone)r   r€  r   ÚalphaÚ
edgecolorsT)	r   r   r   r   Únanr"   r   ÚrandÚgrid)r)   r*   rî   r-   Únr+   r,   Úscaler/   r/   r0   Ú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 )NrQ   rR   Úkr6   rÚ   )r-   r~  r   r   r   Úvr`   )r   r   r   r"   ÚmlegendÚ_get_legend_handles_labelsrÀ   )r)   r*   ÚhandÚlabr/   r/   r0   Útest_legend_repeatcheckok0  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   rV   )r-   )ry  ry  ry  r:   r;   g      à¿çš™™™™™@)rd   r   r   r"   r  rS   rT   )r(   rŠ  r/   r/   r0   Ú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   é   iè  r
   )Ú	transformry  rE   r:   r;   )ÚmtransformsÚAffine2DÚ	translater   rŠ   r   r=   r   r  Ú	transDatar"   )Úoffsetr+   r/   r/   r0   Ú#test_not_covering_scatter_transformK  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 ‚qpd S )N)r   r   )r   r   )rÊ   ç333333ã?)ru   ru   gffffffæ?ru   rt   rÏ   r   rž  rK   z--rV   )Ú
linestylesr¡   z-.)rŸ  ú:)Úline1Úline2zline 3r   )
ÚmcollectionsÚLineCollectionr   r   Úadd_collectionr"   rð   r   Úget_linestylesÚ_dash_pattern)Úlines1rJ  Úlines3Úlc1Úlc2Úlc3r)   r*   rp   Úh1Úh2Úh3ÚohÚlhr/   r/   r0   Ú!test_linecollection_scaled_dashesW  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Ú   r8   r   ©r‡   N)r   r   r=   rd   r"   r‹   r/   r/   r0   Útest_handler_numpointsk  s   r´  c                  C   sÒ   t  ¡ \} }|jdgdd |jddddd t t¡}| ¡  W d  ƒ n1 s+w   Y  t|ƒdks8J ‚t  ¡ \}}| 	t
j ddd	¡¡ t ¡  t d
¡ | ¡  W d  ƒ dS 1 sbw   Y  dS )z2Test that Text artists with labels raise a warningr   ú	mock datar8   Útextr   )r+   r,   r€  r   Nr   )r
   r
   Úerror)r   r   r=   r¶  r  r+  ÚUserWarningr"   rÀ   Ú
pcolormeshr   r   ÚuniformÚwarningsÚcatch_warningsÚsimplefilterr   )r)   r*   r0  Úfr/   r/   r0   Útest_text_nohandler_warnings  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Ú   r8   N)r   rE   r"   r/   r/   r/   r0   Ú test_empty_bar_chart_with_legend„  s   rÀ  zshadow_argument_types.pngÚmpl20gyé&1¬œ?)r2   rÈ   rŽ   c               	   C   s”   t  ¡ \} }|jg d¢dd |jddd|jddd|jd	d
ddœd|jddddœd|jddddœdf}|D ]}| |¡ q:|jdd d S )Nr–   rÚ   r8   r¼   T©r   r¯   úupper rightFr   r  rK   )r-   r…  úcenter right)rK   ru   r   éûÿÿÿ)r-   Úoyr¿   ztab:cyanr
   )r-   Úoxúlower rightr;   )r   r   r=   r"   rÁ   )r)   r*   ÚlegsÚlr/   r/   r0   Útest_shadow_argument_typesŒ  s"   ÿÿÿú	rË  c                  C   s`   t  ¡ \} }|jg d¢dd tjtdd |jddd W d   ƒ d S 1 s)w   Y  d S )	Nr–   rÚ   r8   zdict or boolr
  r¼   ÚaardvarkrÂ  )r   r   r=   r  r  Ú
ValueErrorr"   r‹   r/   r/   r0   Útest_shadow_invalid_argument£  s
   "ÿrÎ  c                  C   sD   t  ¡ \} }|jtdƒdd |jddd}| ¡  ¡ dks J ‚d S )Nr4   rÚ   r8   TÚw)r¯   r  r   )r   r   r=   rd   r"   Ú	get_frameÚ	get_alphar¦   r/   r/   r0   Útest_shadow_framealpha¬  s   rÒ  c                  C   sN   t  ¡ \} }|jtdƒdd | ¡ }| ¡  ¡ dksJ ‚| ¡  ¡ r%J ‚d S )Nr
   rµ  r8   Ú )r   r   r=   rd   r"   Ú	get_titleræ   Úget_visibler¦   r/   r/   r0   Ú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sHJ ‚d S )	Nr4   ©rc  r
   ÚAardvarkr8   éÈ   r`   rK   )r   r   r=   rd   r"   rh   re   Úget_rendererÚx0r  Úapprox)r)   r*   rp   Úx01Úx02r/   r/   r0   Ú test_legend_proper_window_extentÀ  s   rß  c                  C   sP   t jdd\} }|jtdƒdd | ¡ }|  ¡ }| j ¡  | ¡  | ¡  d S )Nr4   r×  r
   rØ  r8   )r   r   r=   rd   r"   re   rf   rh   )r)   r*   rp   Úleg2r/   r/   r0   Ú"test_window_extent_cached_rendererÎ  s   
rá  c            	      C   s.  t jtdƒdd t t¡ t jdddddœd W d   ƒ n1 s$w   Y  t jdtdddd	} |  ¡  	¡ dks>J ‚t j
d
ddd\}}|j}|d jtdƒdd |d jddd}| ¡  ¡ dksiJ ‚|d jtdƒdd |d jddddœd	}| ¡  ¡ dksŠJ ‚|d
 jtdƒdd d tjd< |d
 jdddid	}| ¡  ¡ tjd ks²J ‚|d jtdƒdd |d jdd}| ¡  ¡ tjd ksÒJ ‚|d jtdƒdd dtjd< |d jdddid	}| ¡  ¡ dks÷J ‚|d jtdƒdd |d jdd}| ¡  ¡ dksJ ‚d S )Nr
   rµ  r8   rØ  é   Úserif)ÚfamilyÚsize)r°   Útitle_fontsizeÚtitle_fontproperties)r°   rç  r`   rV   )r
   rÉ   )rY   r   )r°   ræ  r   zlegend.title_fontsizerä  z	font.size©r°   r…   r   r   )r   r=   rd   r  r  rÍ  r"   r	   rÔ  Úget_sizer   ra   Úget_fontsizer©   r¹   )	rp   r)   ÚaxesÚleg0Úleg1rà  Úleg3Úleg4Úleg5r/   r/   r0   Ú#test_legend_title_fontprop_fontsizeÙ  sL   ÿÿ
ÿ
ÿ

ÿ

ÿrñ  Ú	alignment)rs   rG  r¾   c                 C   sV   t  ¡ \}}|jtdƒdd |jd| d}| ¡ d j| ks!J ‚| ¡ | ks)J ‚d S )Nr
   rÚ   r8   rØ  )r°   rò  r   )r   r   r=   rd   r"   Úget_childrenrA   Úget_alignment©rò  r)   r*   rp   r/   r/   r0   Útest_legend_alignmentÿ  s
   rö  r   rr   c                 C   sL   t  ¡ \}}|jtdƒdd | ¡ }| | ¡ | ¡ tjj	|  ks$J ‚d S )Nr
   rÚ   r8   )
r   r   r=   rd   r"   Úset_locÚ_get_locr  r]   Úcodes©r   r)   r*   rp   r/   r/   r0   Útest_ax_legend_set_loc  s
   
rû  )zoutside rightr¾   c                 C   sf   t  ¡ \}}|jtdƒdd | ¡ }| | ¡ |  d¡r#|  ¡ d n| } | ¡ t	j
j|  ks1J ‚d S )Nr
   rÚ   r8   Úoutsider   )r   r   r=   rd   r"   r÷  r/  Úsplitrø  r  r]   rù  rú  r/   r/   r0   Útest_fig_legend_set_loc  s   
rþ  c                 C   sZ   t  ¡ \}}|jtdƒdd | ¡ }| | ¡ | ¡ d j| ks#J ‚| ¡ | ks+J ‚d S )Nr
   rÚ   r8   r   )	r   r   r=   rd   r"   Úset_alignmentró  rA   rô  rõ  r/   r/   r0   Útest_legend_set_alignment  s   
r   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   ú#1r8   r`   ú#2rV   ú#3©Ú
labelcolor)r   r   r=   r   r<   r"   rï   r©   r(   Ú
same_colorÚ	get_color©r-   r)   r*   rp   r¶  r/   r/   r0   Útest_legend_labelcolor_single&  s      ÿ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g d	¢d
}t| ¡ g d	¢ƒD ]\}}tj	 
| ¡ |¡sVJ ‚qGd S )Nr
   r   r  r8   r`   r  rV   r  ©r   r   r   r  ©r   r   r=   r   r<   r"   r   rï   r©   r(   r  r  ©r)   r*   rp   r¶  r-   r/   r/   r0   Útest_legend_labelcolor_list3  s      ÿr  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   r  r   ©r   r-   r`   r  r   rV   r  r   Ú	linecolorr  r
  r  r  r/   r/   r0   Ú test_legend_labelcolor_linecolor?  ó   """ÿr  c                  C   r  )Nr
   r   r  r   r   r`   r  r   rV   r  r   r  r  r
  ©r   r   r   r   r<   r"   r   rï   r©   r(   r  r  r  r/   r/   r0   Ú/test_legend_pathcollection_labelcolor_linecolorK  r  r  c                  C   sl   t  ¡ \} }t g d¢d ¡}|jt d¡t d¡d|d |jdd}| ¡ \}tj	 
| ¡ d¡s4J ‚d S )	N©r   r   r   r   r@   r`   r
   r  r   r  r  Úblack)r   r   r   r   r   r<   r"   rï   r©   r(   r  r  )r)   r*   r(   rp   r¶  r/   r/   r0   Ú8test_legend_pathcollection_labelcolor_linecolor_iterableW  s   
r  c                  C   s`   t  ¡ \} }|jt d¡t d¡t d¡dd |jdd}| ¡ \}tj 	| 
¡ d¡s.J ‚d S )Nr
   r  )r   r   r  r  r  )r   r   r   r   r<   r"   rï   r©   r(   r  r  )r)   r*   rp   r¶  r/   r/   r0   Ú4test_legend_pathcollection_labelcolor_linecolor_cmapc  s
   $
r  c                  C   r  )Nr
   r   r  r   ©r   Úmarkeredgecolorr`   r  r   rV   r  r   r  r  r
  r  r  r/   r/   r0   Ú&test_legend_labelcolor_markeredgecolorn  r  r  c                  C   r  )Nr
   r   r  r   ©r   rÎ   r`   r  r   rV   r  r   r  r  r
  r  r  r/   r/   r0   Ú5test_legend_pathcollection_labelcolor_markeredgecolorz  r  r  c                  C   ó|   t  ¡ \} }t g d¢d ¡}|jt d¡t d¡d|d |jdd}t| ¡ dgƒD ]\}}t	j
 | ¡ |¡s;J ‚q,d S )	Nr  r`   r
   r  r  r  r  r  ©r   r   r   r   r   r<   r"   r   rï   r©   r(   r  r  ©r)   r*   r(   rp   r¶  r-   r/   r/   r0   Ú>test_legend_pathcollection_labelcolor_markeredgecolor_iterable†  ó   ÿr!  c                  C   sˆ   t  ¡ \} }tj tj d¡¡}|jt 	d¡t 	d¡dt 	d¡|dd |j
dd}t| ¡ dgƒD ]\}}tj | ¡ |¡sAJ ‚q2d S )Nr
   r  ÚReds)r   r   rÎ   Úcmapr  r  r  ©r   r   r©   ÚcmÚviridisr   r   rˆ  r   r<   r"   r   rï   r(   r  r  )r)   r*   r†  rp   r¶  r-   r/   r/   r0   Ú:test_legend_pathcollection_labelcolor_markeredgecolor_cmap’  s   ú	ÿr(  c                  C   r  )Nr
   r   r  r   ©r   Úmarkerfacecolorr`   r  r   rV   r  r   r*  r  r
  r  r  r/   r/   r0   Ú&test_legend_labelcolor_markerfacecolor¥  r  r+  c                  C   r  )Nr
   r   r  r   ©r   r  r`   r  r   rV   r  r   r*  r  r
  r  r  r/   r/   r0   Ú5test_legend_pathcollection_labelcolor_markerfacecolor±  r  r-  c                  C   r  )	Nr  r`   r
   r  r,  r*  r  r  r  r   r/   r/   r0   Ú>test_legend_pathcollection_labelcolor_markerfacecolor_iterable½  r"  r.  c                  C   s~   t  ¡ \} }tj tj d¡¡}|jt 	d¡t 	d¡d|d |j
dd}t| ¡ dgƒD ]\}}tj | ¡ |¡s<J ‚q-d S )Nr
   r  r   r*  r  r  r%  r   r/   r/   r0   Ú8test_legend_pathcollection_labelcolor_markfacecolor_cmapÉ  s   üÿ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 | tjd	< | ¡ }| ¡ D ]}tj	 
| ¡ | ¡sPJ ‚qCd S )
Nr
   r   r  r8   r`   r  rV   r  úlegend.labelcolor)r   r   r=   r   r<   r©   r¹   r"   rï   r(   r  r  r  r/   r/   r0   Ú%test_legend_labelcolor_rcparam_singleÚ  s      
ÿr1  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 dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡sZJ ‚qKd S )Nr
   r   r  r   r  r`   r  r   rV   r  r   r  r0  r
  ©r   r   r=   r   r<   r©   r¹   r"   r   rï   r(   r  r  r  r/   r/   r0   Ú(test_legend_labelcolor_rcparam_linecolorè  ó   """
ÿr4  c                  C   r2  )Nr
   r   r  r   r  r`   r  r   rV   r  r   r  r0  r
  r3  r  r/   r/   r0   Ú.test_legend_labelcolor_rcparam_markeredgecolorõ  r5  r6  c                  C   r2  )Nr
   r   r  r   r  r`   r  r   rV   r  r   Úmecr0  r
  r3  r  r/   r/   r0   Ú4test_legend_labelcolor_rcparam_markeredgecolor_short  r5  r8  c                  C   r2  )Nr
   r   r  r   r)  r`   r  r   rV   r  r   r*  r0  r
  r3  r  r/   r/   r0   Ú.test_legend_labelcolor_rcparam_markerfacecolor  r5  r9  c                  C   r2  )Nr
   r   r  r   r)  r`   r  r   rV   r  r   Úmfcr0  r
  r3  r  r/   r/   r0   Ú4test_legend_labelcolor_rcparam_markerfacecolor_short  r5  r;  z4ignore:No artists with labels found to put in legendc                  C   sD   t  ¡ } |  ¡ r
J ‚|  d¡ |  ¡ sJ ‚|  d¡ |  ¡ r J ‚d S )NTF)r   r"   Úget_draggableÚset_draggable©r"   r/   r/   r0   Útest_get_set_draggable)  s   

r?  Ú	draggable)TFc                 C   s>   t  ¡ \}}|jtdƒdd |j| d}| ¡ | u sJ ‚d S )Nr
   Úshabnamsr8   )r@  )r   r   r=   rd   r"   r<  )r@  r)   r*   rp   r/   r/   r0   Útest_legend_draggable3  s   rB  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 )	Nr–   g      Ð?Údatar  )r…  r   r-   rR   rB   r   )r   rc   r"   rð   Ú	set_alphaÚget_facecolorÚget_edgecolor)r+   rŠ  Úhhr"   r±  r/   r/   r0   Útest_alpha_handles;  s   
(,rH  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   Úinputr8   r®   rè  z Font family ['serif'] not found.)	r©   r¹   r   r   r=   r"   re   rf   r¶  )Úcaplogr)   r*   r/   r/   r0   Útest_usetex_no_warnD  s   



rK  c                    sÜ   t jddd‰ |  td‡ fdd„¡ t ¡ \}}|j ¡  g d¢}g d¢}|j||d	d
d t	ddiƒ | 
¡ }W d   ƒ n1 sCw   Y  tjtdd}| |¡ W d   ƒ n1 s_w   Y  t|ƒdkslJ ‚d S )Nr   ç      ø?©rZ   Úperf_counterc                      ó   t ˆ ƒS ©N©Únextr/   ©Úcounterr/   r0   Ú<lambda>U  ó    z-test_warn_big_data_best_loc.<locals>.<lambda>rI   rL   rO   rP   r8   z
legend.locr:   zGCreating legend with loc="best" can be slow with large amounts of data.r
  r`   )Ú	itertoolsÚcountÚsetattrÚtimer   r   re   rf   r=   r   r"   r  r+  r¸  Údraw_artistrÀ   )Úmonkeypatchr)   r*   r+   r,   r"   Úrecordsr/   rS  r0   Útest_warn_big_data_best_locR  s"   

ÿÿýr^  c                    st   t jddd‰ |  td‡ fdd„¡ t ¡ \}}|j ¡  g d¢}g d¢}|j||d	d
d | 	d¡}| 
|¡ d S )Nr   rL  rM  rN  c                      rO  rP  rQ  r/   rS  r/   r0   rU  m  rV  z:test_no_warn_big_data_when_loc_specified.<locals>.<lambda>rI   rL   rO   rP   r8   r:   )rW  rX  rY  rZ  r   r   re   rf   r=   r"   r[  )r\  r)   r*   r+   r,   r"   r/   rS  r0   Ú(test_no_warn_big_data_when_loc_specifiedj  s   

r_  Úlabel_arrayÚlowÚhigh)ra  rb  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 )Nr–   r   r`   r   r…   r\   r8   c                 S   rä   r/   rå   ©rç   Úentryr/   r/   r0   ré   ‰  rê   z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>ra  rb  )r   r   r=   r"   rï   )r`  r+   r,   r)   r*   rp   Úlegend_textsr/   r/   r0   Ú'test_plot_multiple_input_multiple_label{  s   þrf  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 )
Nr–   r   r`   r   r…   r\   r8   c                 S   rä   r/   rå   rc  r/   r/   r0   ré   ™  rê   z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r=   r"   rï   r-  )r   r+   r,   r)   r*   rp   re  r/   r/   r0   Ú%test_plot_multiple_input_single_label  s   þrg  c                 C   s˜   g d¢}g d¢}t  ¡ \}}tjtjdd |j||| d W d   ƒ n1 s)w   Y  | ¡ }t| 	¡ ƒdks<J ‚| 	¡ d  
¡ t| ƒksJJ ‚d S )Nr–   )r`   r   rÉ   z$Passing label as a length 2 sequencer
  r8   r   r   )r   r   r  r+  r©   ÚMatplotlibDeprecationWarningr=   r"   rÀ   rï   ræ   r-  )r`  r+   r,   r)   r*   rp   r/   r/   r0   Ú%test_plot_single_input_multiple_label  s   ÿþ ri  c                  C   s:   t  ¡ \} }|jdgdggdgd\}| ¡ dksJ ‚d S )Nr   r   ÚAr8   )r   r   r=   Ú	get_label)r)   r*   rP   r/   r/   r0   Ú!test_plot_single_input_list_label®  s   rl  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 )	Nr–   r   r`   r   r…   r\   )rb  ra  Úmediumr8   )r  r  rÍ  r   r   r=   )r+   r,   r   r)   r*   r/   r/   r0   Ú3test_plot_multiple_label_incorrect_length_exception´  s   þ"ùrn  c                  C   s:   t  ¡ \} }|jg d¢g d¢g d¢dddd | ¡  d S )Nr4  r–   r—   r   ÚfaceÚFill)r  rÎ   r   )r   r   r×   r"   r‹   r/   r/   r0   Útest_legend_face_edgecolorÁ  s
   ÿrq  c                  C   sT   t  ¡ \} }|jddgddgdd | ¡ }|j|u sJ ‚| ¡ d j|u s(J ‚d S )Nr   r`   rV   r…   rP   r8   r   )r   r   r=   r"   rë  rï   r¦   r/   r/   r0   Útest_legend_text_axesÉ  s
   rr  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s5J ‚d S )Nr   r   rŽ  )r~  rØ  r³  )r   r   r   ÚmlinesÚLine2Dr"   rì   rð   )r)   r*   r.   rp   r/   r/   r0   Útest_handlerline2dÒ  s
   "ru  c                  C   sL   t  ¡  ¡ } |  ¡ }|jddgddgdd |  ¡ }|jdd| u s$J ‚d S )Nr   r   rP   r8   F)Úroot)r   rˆ   Ú
subfiguresr   r=   r"   Ú
get_figure)Úsubfigr*   rp   r/   r/   r0   Útest_subfigure_legendÛ  s
   rz  c                  C   s   t jddgddgddd} t  ¡  ¡ d }| d¡ | ¡ d d… t|  ¡ d d d… ƒks0J ‚| ¡ d d… t|  ¡ d d d… ƒksFJ ‚d S )	Nr   r   r`   rV   z#123456r   )r-   r   r   )r   r×   r"   Úget_patchesrD  rE  ÚtuplerF  )ÚpcrØ   r/   r/   r0   Ú-test_setting_alpha_keeps_polycollection_colorä  s
   
,0r~  c            	      C   s”   g d¢} t  ¡ \}}dd„ | D ƒ}g d¢}dd„ |D ƒ}| ||¡}dd„ | ¡ D ƒ}dd„ | ¡ D ƒ}||  kr?| ksBJ ‚ J ‚||ksHJ ‚d S )N)rà   Ú*rŽ  c                 S   s"   g | ]}t jd gd gd|d‘qS )r   ÚNone)Úlsr~  )rs  rt  )rç   Úmarkr/   r/   r0   ré   ð  s    ÿz3test_legend_markers_from_line2d.<locals>.<listcomp>)ry  rE   Úxyzzyc                 S   rä   r/   rë   ©rç   rP   r/   r/   r0   ré   ó  rê   c                 S   rä   r/   rë   r„  r/   r/   r0   ré   ö  rê   c                 S   rä   r/   rå   )rç   r¶  r/   r/   r0   ré   ÷  rê   )r   r   r"   Ú	get_linesrï   )	Ú_markersr)   r*   rÞ   r'   ró   r"   Únew_markersÚ
new_labelsr/   r/   r0   Útest_legend_markers_from_line2dì  s   ÿr‰  c                 C   s,   g d¢}d}| j ||d |j ||d d S )N)r   r   r   r‘   Úer¾  rV   )Úncol)rX   r>  )rý   rþ   ÚstringsrX   r/   r/   r0   Útest_ncol_ncolsý  s   r  c                  C   sÌ   t  ¡ \} }tjtdd |jddgd W d   ƒ n1 s w   Y  tjtdd |jddgd W d   ƒ n1 s?w   Y  tjtdd |jd	dgd W d   ƒ d S 1 s_w   Y  d S )
NzFloc must be string, coordinate tuple, or an integer 0-10, not \(1.1,\)r
  )rÓ   rµ  ©r   r'   zWloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 0.4227, 0.4523\))çbX9´ÈÞ?g“:M„Û?gmÅþ²{òÜ?zRloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 'go blue'\))r  zgo blue©r   r   r  r  rÍ  r"   r‹   r/   r/   r0   Ú test_loc_invalid_tuple_exception  s   þþ"þr‘  c                  C   s0   t  ¡ \} }|jddgd |jddgd d S )N)r  ç}?5^ºIÜ?rµ  rŽ  )r   r`   ©r   r   r"   r‹   r/   r/   r0   Útest_loc_valid_tuple  s   r”  c                  C   s8   t  ¡ \} }|jddgdgd |jddgdgd d S )Nr  r’  rµ  rŽ  r   r`   r“  r‹   r/   r/   r0   Útest_loc_valid_list  s   r•  c                  C   sT   t  ¡ \} }tjtdd |jg d¢dgd W d   ƒ d S 1 s#w   Y  d S )NzOloc must be string, coordinate tuple, or an integer 0-10, not \[1.1, 2.2, 3.3\]r
  )rÓ   r”  gffffff
@rµ  rŽ  r  r‹   r/   r/   r0   Útest_loc_invalid_list_exception#  ó   "þr–  c                  C   sT   t  ¡ \} }tjtdd |jddidgd W d   ƒ d S 1 s#w   Y  d S )NzKloc must be string, coordinate tuple, or an integer 0-10, not {'not': True}r
  ÚnotTrµ  rŽ  r  r‹   r/   r/   r0   Útest_loc_invalid_type*  r—  r™  c                  C   sÎ   t  ¡ \} }|jddgd |jddgd |jddgd |jddgd tjtdd |jd	dgd W d   ƒ n1 s@w   Y  tjtd
d |jddgd W d   ƒ d S 1 s`w   Y  d S )Nr   rµ  rŽ  r   r   r
   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r
  r  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rB   ©r   r   r"   r  r  rÍ  r‹   r/   r/   r0   Ú!test_loc_validation_numeric_value1  s   þ"þr›  c                  C   sü   t  ¡ \} }dg}|jd|d |jd|d |jd|d |jd|d |jd|d |jd|d |jd|d |jd|d |jd	|d |jd
|d |jd|d |jd|d tjtdd |jd|d W d   ƒ d S 1 sww   Y  d S )Nrµ  r:   rŽ  rÃ  r¼   r¿   rÈ  r¾   r   rÄ  zlower centerzupper centerz 'wrong' is not a valid value forr
  Úwrongrš  )r)   r*   r'   r/   r/   r0   Ú test_loc_validation_string_value@  s"   "ÿr  c                  C   s   t  tdƒ¡\} t  tdƒ¡\}tjtdd' t j| |gg d¢d}t|jƒdks,J ‚t| 	¡ ƒdks6J ‚W d   ƒ d S 1 sAw   Y  d S )Nr
   znumber of handles and labelsr
  ©Úpl1Úpl2Úpl3©r.   r'   r`   )
r   r=   rd   r  r+  r¸  r"   rÀ   rð   rï   ©rŸ  r   r"   r/   r/   r0   Ú!test_legend_handle_label_mismatchS  s   "ýr¤  c                  C   sh   t  tdƒ¡\} t  tdƒ¡\}t jt| |gƒtg d¢ƒd}t|jƒdks(J ‚t| ¡ ƒdks2J ‚d S )Nr
   rž  r¢  r`   )r   r=   rd   r"   ÚiterrÀ   rð   rï   r£  r/   r/   r0   Ú(test_legend_handle_label_mismatch_no_len\  s   
ÿr¦  c                   C   sJ   t  g d¢¡ tjtdd t  ¡  W d   ƒ d S 1 sw   Y  d S )Nr–   zNo artists with labels foundr
  )r   r=   r  r  r¸  r"   r/   r/   r/   r0   Útest_legend_nolabels_warninge  s   
"ÿr§  c                   C   s.   t  g d¢¡ t  ¡  t  ¡  ¡ d usJ ‚d S )Nr–   )r   r=   r"   r  rÝ   r/   r/   r/   r0   Útest_legend_nolabels_drawk  s   r¨  c            	   	   C   s¼   g d¢} g d¢}g d¢}g }t jddd\}}t|jdƒD ]3\}}|j| ||dd	d
d | dd¡ | dd¡ |j|d}|j 	¡  | 
| ¡  |j ¡ ¡¡ qt|d j|d jƒ d S )Nr˜   )r   r   r   )r   r   r   r`   ©r
   r   rW   ©r:   r¿   Úgrayr   zShaded Area)r-   r…  r   r   rÉ   rB   r   r;   r   )r   r   r   ra   r×   rS   rT   r"   re   rf   rg   rh   ri   rj   rk   r   rl   )	r+   rs  rt  rn   r)   rm   r*   r   rp   r/   r/   r0   Útest_legend_loc_polycollectionr  s   
ÿr¬  c                  C   s¨   t jddd\} }g }t|jdƒD ]5\}}ddg}ddg}|j||dd |jddd	d
d |j|d}| j ¡  | 	| 
¡  |j ¡ ¡¡ qt|d j|d jƒ d S )Nr`   r©  rW   rª  r   z	plot namer8   rL  zsome text blahblahÚtop)Úverticalalignmentr;   r   )r   r   r   ra   r=   r¶  r"   re   rf   rg   rh   ri   rj   rk   r   rl   )r)   rm   rn   r*   r   r+   r,   rp   r/   r/   r0   Útest_legend_text…  s   
ÿr¯  c                  C   s†   t  ¡ \} }|jg d¢dd |jddd |jdd tjj| d	| jd
}|  	t
 ¡ ¡ W d   ƒ n1 s8w   Y  | ¡  d S )Nr–   ÚLiner8   r   )r   r   )rw   r   r;   Ú_get_renderer)Úwraps)r   r   r=   Úannotater"   r   rØ   Úobjectr±  ÚsavefigÚioÚBytesIOÚassert_not_called)r)   r*   Úmocked_get_rendererr/   r/   r0   Útest_legend_annotate–  s   ÿþrº  c            
      C   sŠ  t j d¡ t j d¡} tjddd\}}g d¢}|d j| d|d	}d
d„ |d D ƒ|ks0J ‚|d  ¡ \}}||ks>J ‚tdd„ |D ƒƒsIJ ‚|d j| |dd}dd„ |d D ƒ|ks`J ‚|d  ¡ \}}||ksnJ ‚tdd„ |D ƒƒsyJ ‚tj	t
dd |d j| |d d… d}W d   ƒ n1 s˜w   Y  |d j| dd}	|	d d  ¡ dks²J ‚tdd„ |	d dd … D ƒƒsÃJ ‚d S )Ni!N,)r
   r…   r   r…   )ÚnrowsrX   )úbox Azbox Bzbox Czbox Dr   T)Úpatch_artistr   c                 S   rä   r/   ©rk  ©rç   rŽ  r/   r/   r0   ré   ®  rê   z.test_boxplot_legend_labels.<locals>.<listcomp>Úboxesc                 s   ó    | ]
}t |tjjƒV  qd S rP  )Ú
isinstancer©   ÚpatchesÚ	PathPatchrí   r/   r/   r0   Ú	<genexpr>±  ó   € z-test_boxplot_legend_labels.<locals>.<genexpr>F)r   Úshowboxc                 S   rä   r/   r¾  r¿  r/   r/   r0   ré   ¶  rê   Úmediansc                 s   rÁ  rP  )rÂ  r©   rÞ   rt  rí   r/   r/   r0   rÅ  ¹  rÆ  z values must have same the lengthr
  r`   rB   r8   rV   r¼  c                 s   s    | ]
}|  ¡  d ¡V  qdS )Ú_N)rk  r/  )rç   r+   r/   r/   r0   rÅ  Â  rÆ  )r   r   Úseedr   r   Úboxplotr   Úallr  r  rÍ  rk  )
rC  r)   rm   Úlegend_labelsÚbp1r.   r'   Úbp2Úbp3Úbp4r/   r/   r0   Útest_boxplot_legend_labels¥  s(   ÿ&rÒ  )r    r¶  rW  ÚplatformrZ  Úunittestr   r»  Únumpyr   Únumpy.testingr   r  Úmatplotlib.testing.decoratorsr   r   Úmatplotlib.testing._markersr   Úmatplotlib.pyplotÚpyplotr   Ú
matplotlibr©   Úmatplotlib.patchesrÃ  r|   Úmatplotlib.transformsÚ
transformsr˜  Úmatplotlib.collectionsr£  Úmatplotlib.linesrÞ   rs  Úmatplotlib.legend_handlerr   Úmatplotlib.legendr"   r  r   Úmatplotlib.font_managerr	   r1   r>   rH   rU   rq   rƒ   rŒ   Úmachiner•   rŸ   r§   rª   r³   r¶   rº   rÅ   rÙ   rß   rö   rÿ   r   r?  rr  rx  r}  rŒ  r“  r•  r  r²  r´  r¿  rÀ  rË  rÎ  rÒ  rÖ  rß  rá  rñ  r‚  Úparametrizerö  rû  rþ  r   r	  r  r  r  r  r  r  r  r!  r(  r+  r-  r.  r/  r1  r4  r6  r8  r9  r;  Úfilterwarningsr?  rB  rH  rK  r^  r_  r   rf  Úintrg  ri  rl  rn  rq  rr  ru  rz  r~  r‰  r  r‘  r”  r•  r–  r™  r›  r  r¤  r¦  r§  r¨  r¬  r¯  rº  rÒ  r/   r/   r/   r0   Ú<module>   sT   
	
	
 

ÿ
	ÿ
ÿ
ÿ

ÿ



!

`8)ÿ



ÿ
		&




	



	
	
þ

þ
			

		

