o
    “ÄŽiR×  ã                	   @   sZ  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*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„ Z0edgdddd„ ƒZ1edgde 2¡ d krºd nd!d"d#d$„ ƒZ3ed%gde 2¡ d krÎd nd!d"d&d'„ ƒZ4ed(gde 2¡ d krâd nd)d"d*d+„ ƒZ5ed,gde 2¡ d kröd nd)d"d-d.„ ƒZ6ed/gdd0d"d1d2„ ƒZ7ed3gde 2¡ d krd nd4d"d5d6„ ƒZ8ed7d8gddd9d:„ ƒZ9ed;gddd<d=„ ƒZ:ed>gdd?d@dAdB„ ƒZ;dCdD„ Z<dEdF„ Z=edGgdHdIdJ„ ƒZ>G dKdL„ dLƒZ?G dMdN„ dNƒZ@dOdP„ ZAedQge 2¡ d krrd ndRdSdTdU„ ƒZBdVdW„ ZCdXdY„ ZDdZd[„ ZEed\gƒd]d^„ ƒZFed_gƒd`da„ ƒZGdbdc„ ZHddde„ ZIdfdg„ ZJdhdi„ ZKedjgddke 2¡ d kr¶d ndldmdndo„ ƒZLdpdq„ ZMdrds„ ZNdtdu„ ZOdvdw„ ZPdxdy„ ZQdzd{„ ZRejS Td|d}¡d~d„ ƒZUejS Td€d¡d‚dƒ„ ƒZVejS Td€d„¡d…d†„ ƒZWejS Td|d}¡d‡dˆ„ ƒZXejS Td‰dŠ¡d‹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¤„ Zed¥d¦„ ZfejS Td‰dŠ¡d§d¨„ ƒZgd©dª„ Zhd«d¬„ Zid­d®„ Zjd¯d°„ Zkd±d²„ ZlejS md³¡d´dµ„ ƒZnejS Td¶d·¡d¸d¹„ ƒZodºd»„ Zped¼d½„ ƒZqd¾d¿„ ZrdÀdÁ„ ZsejS TdÂdÃdÄgdÅe	 tdÃdÄg¡g¡dÆdÇ„ ƒZuejS TdÈdÉdÊevg¡dËdÌ„ ƒZwejS TdÂdÃdÄgdÅe	 tdÃdÄg¡g¡dÍdÎ„ ƒZxdÏdÐ„ ZydÑdÒ„ ZzdÓdÔ„ Z{dÕdÖ„ Z|d×dØ„ Z}dÙdÚ„ Z~dÛdÜ„ ZdÝdÞ„ Z€edGgdH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Šdódô„ Z‹ejS md³¡dõdö„ ƒZŒd÷dø„ Zdùdú„ ZŽdûdü„ Zdý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/   úX/home/jeff/fluffinator/venv/lib/python3.10/site-packages/matplotlib/tests/test_legend.pyÚtest_legend_ordereddict   s   
ÿr1   c                  C   s\   t  ¡ \} }| ddg¡ | ddg¡ dd„ | ¡ D ƒ}dd„ dD ƒ}|j||dd	 d S )
Nr   r   é   c                 s   ó    | ]}|V  qd S ©Nr/   ©Ú.0Úliner/   r/   r0   Ú	<genexpr>3   ó   € z(test_legend_generator.<locals>.<genexpr>c                 s   r3   r4   r/   )r6   r   r/   r/   r0   r8   4   r9   )ÚspamÚeggsú
upper left©r   )r   r   ÚplotÚ	get_linesr"   )r)   r*   r.   r'   r/   r/   r0   Útest_legend_generator-   s   r@   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Úbestr=   N)r   r   r   Úaranger>   r"   )r)   r*   r+   r/   r/   r0   Útest_legend_auto19   s
   
rK   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 )rB   rC   ÚedgeÚm)Úalignr-   Néÿÿÿÿr   r   ÚupÚdownrI   r=   )r   r   r   rJ   Úbarr"   )r)   r*   r+   Úb1Úb2r/   r/   r0   Útest_legend_auto2C   s
   
$rU   zlegend_auto3.pngc                  C   sV   t  ¡ \} }g d¢}g d¢}|j||ddd | dd¡ | dd¡ |jdd	 d
S )rB   ©çÍÌÌÌÌÌì?çš™™™™™¹?rX   rW   rW   r   ©çffffffî?rZ   çš™™™™™©?r[   r   r   úo-r7   rG   ç        ç      ð?rI   r=   N)r   r   r>   Úset_xlimÚset_ylimr"   )r)   r*   r+   r,   r/   r/   r0   Útest_legend_auto3M   s   ra   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)rR   ÚstepÚ
stepfilledr   r   é	   r
   ÚLegend)Úbinsr   ÚhisttyperI   r=   r   r2   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_auto4Y   s   
"
ÿr|   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.
    r2   )g333333#@g333333@rc   ©ÚcenterrI   )r   rW   çš™™™™™é?çš™™™™™É?ÚC1)ÚxyÚwidthÚheightÚfcr   r   rW   r^   rX   )r…   )r   r   r   ih  r[   ÚC0)rƒ   r…   z	A segmentrG   r=   N)r   r   r   rl   ÚmpatchesÚEllipseÚPolygonr   ÚarrayÚWedgeÚ	add_patchr>   r"   rp   rq   rr   rs   rt   ru   rv   r   rw   )r)   rx   ry   r*   r   Ú_patchr{   r/   r/   r0   Útest_legend_auto5o   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   é   rE   r   rG   gffffff@u   DÃ©veloppÃ©srO   Ú__nolegend__rI   )Ú	numpointsr   )r   ÚfigureÚadd_subplotr>   r   rJ   Úlinspacer"   ©r)   r*   r/   r/   r0   Útest_various_labels   s   
r—   zlegend_labels_first.pngÚx86_64g9´Èv¾ŸŠ?)rA   Ú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   rG   r   z:xr+   é   rO   ÚdÚdiamondrI   F)r   Úmarkerfirst)r   r   r>   r   rJ   Ú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   r2   rb   rš   ©r2   rb   r   z-x©rb   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 awayr~   r=   ©r   r   r   r   )r   r   r>   ro   r"   ÚlegendPatchÚset_facecolor©r)   r*   r{   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­   r~   r=   r®   )	r   r   r>   ro   Úmplr   r"   r¯   r°   r±   r/   r/   r0   Útest_alpha_rcparam¼   s   "úrµ   z	fancy.pngr[   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--ÚXXrG   r   rO   zXX
XXr   )ÚxerrÚyerrr   r   r^   r2   Tú	My legendr   )r   r   rd   ÚshadowÚtitler’   )r   Úsubplotr>   r   r   rJ   Ú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   rC   Ú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   rO   ÚthreerG   r   r^   r   r¹   )r   r   r»   r   zlegend.scatterpointsÚone)	r   r“   r¼   r   r   rJ   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   rC   rD   rE   rF   rG   r<   )r   ÚmoderH   Úrightú
lower leftr2   )r   rÇ   rd   )	r   r   Úlenr   rJ   r   r>   r"   Ú
add_artist)Úlegend_modesr)   rx   r+   r*   rÇ   Úl1Úl2r/   r/   r0   Útest_legend_expandò   s   


ùrÏ   ÚhatchingÚdefault)rA   Ú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||r   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Ô   )r   r   r   )rW   r^   rW   ú+zPath
default color)r×   g¸…ëQ¸Þ?g)\Âõ(ä?ÚC2zPath
explicit colorg{®Gáz„¿çš™™™™™ñ?r   )ÚhandlelengthÚhandleheight)	r   rÄ   r   Ú	RectanglerŒ   Úfill_betweenr_   r`   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>   ro   r"   ÚremoveÚlegendsÚ
get_legend)r)   r*   Úlinesr{   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)Ú.ú,rE   r   rG   r2   T©Úreversec                 S   ó   g | ]}|  ¡ ‘qS r/   ©Úget_text)r6   Útr/   r/   r0   Ú
<listcomp>;  ó    z:test_reverse_legend_handles_and_labels.<locals>.<listcomp>c                 S   rî   r/   ©Ú
get_marker©r6   Úhr/   r/   r0   rò   <  ró   N)r   r   r>   r"   Ú	get_textsÚlegend_handlesÚlistÚreversed)	r)   r*   r+   r,   r'   Úmarkersr{   Ú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ÚfirstrG   r2   ÚbxÚsecondTrì   N)r   r>   r"   )Úfig_testÚfig_refr*   r/   r/   r0   Útest_reverse_legend_displayA  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 worldrG   úmatplotlib.legend.Legend©r   r>   ro   r   râ   r"   Úassert_called_withÚgca©Úselfrè   ri   r/   r/   r0   Útest_legend_no_argsQ  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_labelsW  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>   ro   ÚpytestÚraisesÚ	TypeErrorr"   )r  rè   r/   r/   r0   Ú#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
  rG   r  Úfoobarr  r  r/   r/   r0   Ú"test_legend_positional_labels_onlyd  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
  rG   r  r  rÈ   r=   r  r  r/   r/   r0   Útest_legend_three_argsj  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
  rG   z,matplotlib.legend._get_legend_handles_labelsÚ1r2   )r¦   )	r   r>   ro   r   râ   Úreturn_valuer"   r  r  )r  rè   Úhandles_labelsr/   r/   r0   Útest_legend_handler_mapp  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+   rG   r2   Ú2xrb   Ú3xr  )r.   ©	r   r   r   r•   r>   r   râ   r"   r  )r  r)   r*   r+   Úln1Úln2Úln3ri   r/   r/   r0   Útest_legend_kwargs_handles_onlyx  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   r2   r  r+   r!  ©r'   r#  )r  r)   r*   r+   r$  r%  ri   r/   r/   r0   Ú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   r2   é   ÚsinrG   Úcosr  ©r   r   )r'   r.   )r   r   r   r•   Úpir>   r+  r,  r   râ   r"   r  )r  r)   r*   ÚthÚlnsÚlncri   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   r2   r*  r+  rG   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/  r0  r1  Ú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   r2   ÚDensityrG   )r   rb   r2   ÚTemperaturer  )	Úmpl_toolkits.axes_grid1r;  Útwinxr>   r   râ   r   r"   r  )r  r;  ÚhostÚparr§   r¨   ri   r/   r/   r0   Útest_parasite¡  s   
ÿz TestLegendFunction.test_parasiteN)Ú__name__Ú
__module__Ú__qualname__r  r  r  r  r  r  r'  r)  r2  r:  rD  r/   r/   r/   r0   r	  O  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>   ro   r   râ   r"   r  ÚtransFigure©r  r)   r*   rè   ri   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
  rG   r  rI  rK  rM  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  rI  rK  rM  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>   ro   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   r2   r   r
   ç       @r  rÈ   r-  )r   r'   r.   )r   rJ  )r   r   r>   ro   r   rJ   r   râ   r"   r  rL  )r  r)   rx   rè   Úlines2ri   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   r2   r   r
   rR  r-  r(  r3  )r   r   r>   ro   r   rJ   r  r4  r5  r"   rÊ   r6  r7  r8  )r  r)   rx   rè   rS  r9  r/   r/   r0   Útest_warn_args_kwargsÛ  s   ÿÿz.TestLegendFigureFunction.test_warn_args_kwargsN)	rE  rF  rG  rN  r  rO  rQ  rT  rU  r/   r/   r/   r0   rH  ¯  s    
rH  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/   ©r6   Úposr/   r/   r0   rò   è  ró   z.test_figure_legend_outside.<locals>.<listcomp>)rP  r~   rÈ   c                 S   rV  )zlower r/   rW  r/   r/   r0   rò   é  ró   c                 S   rV  )zleft r/   rW  r/   r/   r0   rò   ê  ró   )Úlowerr~   Úupperc                 S   rV  )zright r/   rW  r/   r/   r0   rò   ë  ró   )çQ‡nùX4@çQ‡nù¸;@ç‹lçû©´ˆ@g¢E¶óý@)r[  g ™žÃQ@r]  ç‹lçû©f‚@)gL‡NÏõb@r\  r]  r^  )r[  r\  g¢E¶óý™„@r^  )ç      $@ç     X@ç      `@ç     p‚@)ç     (u@r`  ç     Ø|@rb  )é›  r`  ç     °ˆ@rb  )r_  r_  ra  ç     €F@)rc  r_  rd  rg  )ç     Ø„@r_  rf  rg  )r_  ç     ¨q@ra  ç     Øs@)re  r_  rf  rg  )rh  ri  rf  rj  )rh  r`  rf  rb  TrC   )Úconstrained_layoutÚdpir
   ÚBoo1rG   zoutside r=   )Ú	enumerateÚprintr   r   r>   ro   r"   Údraw_without_renderingr   rs   Úextents)ÚtodosÚupperextÚlowerextÚleftextÚrightextÚaxbbÚlegbbÚnnÚtodor)   rx   r{   r/   r/   r0   Útest_figure_legend_outsideç  sN   ýõ
ÿ
ÿ÷r{  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
   r^   rR  r   g      @r2   )Úy1Úy2Úy3r(  )r   r
   )r   éF   rI   r=   N)r   r   r   r•   Ú	stackplotr_   r`   r"   )r)   r*   r+   r|  r}  r~  r/   r/   r0   Útest_legend_stackplot  s   

r  c                  C   s<   t  ¡ \} }t  ¡ \}}| tdƒtdƒ¡}| |d¡ d S )Nrb   Úfoo)r   r   rR   ro   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 )NrE   r   rb   )ÚmarkerÚ	facecolorrØ   Úsr   )ÚredÚgreenÚblueiî  r2   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 )Nr]   r^   ÚkrE   rä   )r-   r‡  r   r   r   Úvr2   )r   r   r   r"   ÚmlegendÚ_get_legend_handles_labelsrÊ   )r)   r*   ÚhandÚlabr/   r/   r0   Ú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   rb   )r-   )r‚  r‚  r‚  rI   r=   g      à¿çš™™™™™@)ro   r   r   r"   r  r_   r`   )r(   r“  r/   r/   r0   Útest_not_covering_scatterK  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
   )Ú	transformr‚  rR   rI   r=   )ÚmtransformsÚAffine2DÚ	translater   r•   r   r>   r   r  Ú	transDatar"   )Úoffsetr+   r/   r/   r0   Ú#test_not_covering_scatter_transformW  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ã?)r€   r€   gffffffæ?r€   r   rÙ   r   r§  rX   z--rb   )Ú
linestylesr¬   z-.)r¨  ú:)Úline1Úline2zline 3r   )
ÚmcollectionsÚLineCollectionr   r   Úadd_collectionr"   rù   r   Úget_linestylesÚ_dash_pattern)Úlines1rS  Úlines3Úlc1Úlc2Úlc3r)   r*   r{   Úh1Úh2Úh3ÚohÚlhr/   r/   r0   Ú!test_linecollection_scaled_dashesc  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ä   rG   r   ©r’   N)r   r   r>   ro   r"   r–   r/   r/   r0   Útest_handler_numpointsw  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 datarG   Útextr   )r+   r,   r‰  r   Nr   )r
   r
   Úerror)r   r   r>   r¿  r  r4  ÚUserWarningr"   rÊ   Ú
pcolormeshr   r   ÚuniformÚwarningsÚcatch_warningsÚsimplefilterr   )r)   r*   r9  Úfr/   r/   r0   Ú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ä   rG   N)r   rR   r"   r/   r/   r/   r0   Ú test_empty_bar_chart_with_legend  s   rÉ  zshadow_argument_types.pngÚmpl20gyé&1¬œ?)rA   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ä   rG   r<   T©r   rº   úupper rightFr   rŠ  rX   )r-   rŽ  úcenter right)rX   r€   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ä   rG   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 )NrC   rä   rG   TÚw)rº   rˆ  r   )r   r   r>   ro   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¾  rG   Ú )r   r   r>   ro   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 )	NrC   ©rl  r
   ÚAardvarkrG   éÈ   r2   rX   )r   r   r>   ro   r"   rs   rp   Úget_rendererÚx0r  Úapprox)r)   r*   r{   Ú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 )NrC   rà  r
   rá  rG   )r   r   r>   ro   r"   rp   rq   rs   )r)   r*   r{   Ú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¾  rG   rá  é   Úserif)ÚfamilyÚsize)r»   Útitle_fontsizeÚtitle_fontproperties)r»   rð  r2   rb   )r
   rÓ   )re   r   )r»   rï  r   zlegend.title_fontsizerí  z	font.size©r»   r   r›   r   )r   r>   ro   r  r  rÖ  r"   r	   rÝ  Úget_sizer   rl   Úget_fontsizer´   rÄ   )	r{   r)   ÚaxesÚleg0Úleg1ré  Úleg3Úleg4Úleg5r/   r/   r0   Ú#test_legend_title_fontprop_fontsizeå  sL   ÿÿ
ÿ
ÿ

ÿ

ÿrú  Ú	alignment)r~   rP  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ä   rG   rá  )r»   rû  r   )r   r   r>   ro   r"   Úget_childrenrN   Úget_alignment©rû  r)   r*   r{   r/   r/   r0   Útest_legend_alignment  s
   rÿ  r   r}   c                 C   sL   t  ¡ \}}|jtdƒdd | ¡ }| | ¡ | ¡ tjj	|  ks$J ‚d S )Nr
   rä   rG   )
r   r   r>   ro   r"   Úset_locÚ_get_locr˜  ri   Úcodes©r   r)   r*   r{   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ä   rG   Úoutsider   )r   r   r>   ro   r"   r   r8  Úsplitr  r˜  ri   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ä   rG   r   )	r   r   r>   ro   r"   Úset_alignmentrü  rN   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   ú#1rG   r2   ú#2rb   ú#3©Ú
labelcolor)r   r   r>   r   rJ   r"   rø   r´   r(   Ú
same_colorÚ	get_color©r-   r)   r*   r{   r¿  r/   r/   r0   Útest_legend_labelcolor_single2  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
  rG   r2   r  rb   r  ©r   r   r   r  ©r   r   r>   r   rJ   r"   r   rø   r´   r(   r  r  ©r)   r*   r{   r¿  r-   r/   r/   r0   Útest_legend_labelcolor_list?  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-   r2   r  r   rb   r  r   Ú	linecolorr  r  r  r  r/   r/   r0   Ú test_legend_labelcolor_linecolorK  ó   """ÿr  c                  C   r  )Nr
   r   r
  r   r   r2   r  r   rb   r  r   r  r  r  ©r   r   r   r   rJ   r"   r   rø   r´   r(   r  r  r  r/   r/   r0   Ú/test_legend_pathcollection_labelcolor_linecolorW  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   rM   r2   r
   r
  r   r  r  Úblack)r   r   r   rŠ   r   rJ   r"   rø   r´   r(   r  r  )r)   r*   r(   r{   r¿  r/   r/   r0   Ú8test_legend_pathcollection_labelcolor_linecolor_iterablec  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   rJ   r"   rø   r´   r(   r  r  )r)   r*   r{   r¿  r/   r/   r0   Ú4test_legend_pathcollection_labelcolor_linecolor_cmapo  s
   $
r!  c                  C   r  )Nr
   r   r
  r   ©r   Úmarkeredgecolorr2   r  r   rb   r  r   r#  r  r  r  r  r/   r/   r0   Ú&test_legend_labelcolor_markeredgecolorz  r  r$  c                  C   r  )Nr
   r   r
  r   ©r   rØ   r2   r  r   rb   r  r   r#  r  r  r  r  r/   r/   r0   Ú5test_legend_pathcollection_labelcolor_markeredgecolor†  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  r2   r
   r
  r%  r#  r  r–  ©r   r   r   rŠ   r   rJ   r"   r   rø   r´   r(   r  r  ©r)   r*   r(   r{   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   rJ   r"   r   rø   r(   r  r  )r)   r*   r  r{   r¿  r-   r/   r/   r0   Ú:test_legend_pathcollection_labelcolor_markeredgecolor_cmapž  s   ú	ÿr1  c                  C   r  )Nr
   r   r
  r   ©r   Úmarkerfacecolorr2   r  r   rb   r  r   r3  r  r  r  r  r/   r/   r0   Ú&test_legend_labelcolor_markerfacecolor±  r  r4  c                  C   r  )Nr
   r   r
  r   ©r   rˆ  r2   r  r   rb   r  r   r3  r  r  r  r  r/   r/   r0   Ú5test_legend_pathcollection_labelcolor_markerfacecolor½  r  r6  c                  C   r'  )	Nr  r2   r
   r
  r5  r3  r  r–  r(  r)  r/   r/   r0   Ú>test_legend_pathcollection_labelcolor_markerfacecolor_iterableÉ  r+  r7  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   r3  r  r–  r.  r)  r/   r/   r0   Ú8test_legend_pathcollection_labelcolor_markfacecolor_cmapÕ  s   üÿr8  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
  rG   r2   r  rb   r  úlegend.labelcolor)r   r   r>   r   rJ   r´   rÄ   r"   rø   r(   r  r  r  r/   r/   r0   Ú%test_legend_labelcolor_rcparam_singleæ  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 dtjd< | ¡ }t| 	¡ g d¢ƒD ]\}}tj
 | ¡ |¡sZJ ‚qKd S )Nr
   r   r
  r   r  r2   r  r   rb   r  r   r  r9  r  ©r   r   r>   r   rJ   r´   rÄ   r"   r   rø   r(   r  r  r  r/   r/   r0   Ú(test_legend_labelcolor_rcparam_linecolorô  ó   """
ÿr=  c                  C   r;  )Nr
   r   r
  r   r"  r2   r  r   rb   r  r   r#  r9  r  r<  r  r/   r/   r0   Ú.test_legend_labelcolor_rcparam_markeredgecolor  r>  r?  c                  C   r;  )Nr
   r   r
  r   r"  r2   r  r   rb   r  r   Úmecr9  r  r<  r  r/   r/   r0   Ú4test_legend_labelcolor_rcparam_markeredgecolor_short  r>  rA  c                  C   r;  )Nr
   r   r
  r   r2  r2   r  r   rb   r  r   r3  r9  r  r<  r  r/   r/   r0   Ú.test_legend_labelcolor_rcparam_markerfacecolor  r>  rB  c                  C   r;  )Nr
   r   r
  r   r2  r2   r  r   rb   r  r   Úmfcr9  r  r<  r  r/   r/   r0   Ú4test_legend_labelcolor_rcparam_markerfacecolor_short(  r>  rD  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_draggable5  s   

rH  Ú	draggable)TFc                 C   s>   t  ¡ \}}|jtdƒdd |j| d}| ¡ | u sJ ‚d S )Nr
   ÚshabnamsrG   )rI  )r   r   r>   ro   r"   rE  )rI  r)   r*   r{   r/   r/   r0   Útest_legend_draggable?  s   rK  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-   r^   rO   r   )r   rn   r"   rù   Ú	set_alphaÚget_facecolorÚget_edgecolor)r+   r“  Úhhr"   rº  r/   r/   r0   Útest_alpha_handlesG  s   
(,rQ  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   ÚinputrG   r¹   rñ  z Font family ['serif'] not found.)	r´   rÄ   r   r   r>   r"   rp   rq   r¿  )Úcaplogr)   r*   r/   r/   r0   Útest_usetex_no_warnP  s   



rT  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   ç      ø?©rf   Úperf_counterc                      ó   t ˆ ƒS r4   ©Únextr/   ©Úcounterr/   r0   Ú<lambda>a  ó    z-test_warn_big_data_best_loc.<locals>.<lambda>rV   rY   r\   r7   rG   z
legend.locrI   zGCreating legend with loc="best" can be slow with large amounts of data.r  r2   )Ú	itertoolsÚcountÚsetattrÚtimer   r   rp   rq   r>   r   r"   r  r4  rÁ  Údraw_artistrÊ   )Úmonkeypatchr)   r*   r+   r,   r"   Úrecordsr/   r[  r0   Útest_warn_big_data_best_loc^  s"   

ÿÿýrf  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   rU  rV  rW  c                      rX  r4   rY  r/   r[  r/   r0   r]  y  r^  z:test_no_warn_big_data_when_loc_specified.<locals>.<lambda>rV   rY   r\   r7   rG   rI   )r_  r`  ra  rb  r   r   rp   rq   r>   r"   rc  )rd  r)   r*   r+   r,   r"   r/   r[  r0   Ú(test_no_warn_big_data_when_loc_specifiedv  s   

rg  Úlabel_arrayÚlowÚhigh)ri  rj  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   r2   r   r   rh   rG   c                 S   rî   r/   rï   ©r6   Úentryr/   r/   r0   rò   •  ró   z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>ri  rj  )r   r   r>   r"   rø   )rh  r+   r,   r)   r*   r{   Úlegend_textsr/   r/   r0   Ú'test_plot_multiple_input_multiple_label‡  s   þrn  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   r2   r   r   rh   rG   c                 S   rî   r/   rï   rk  r/   r/   r0   rò   ¥  ró   z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r>   r"   rø   r6  )r   r+   r,   r)   r*   r{   rm  r/   r/   r0   Ú%test_plot_multiple_input_single_label™  s   þro  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¡   )r2   r   rÓ   z$Passing label as a length 2 sequencer  rG   r   r   )r   r   r  r4  r´   ÚMatplotlibDeprecationWarningr>   r"   rÊ   rø   rð   r6  )rh  r+   r,   r)   r*   r{   r/   r/   r0   Ú%test_plot_single_input_multiple_label©  s   ÿþ rq  c                  C   s:   t  ¡ \} }|jdgdggdgd\}| ¡ dksJ ‚d S )Nr   r   ÚArG   )r   r   r>   Ú	get_label)r)   r*   r7   r/   r/   r0   Ú!test_plot_single_input_list_labelº  s   rt  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   r2   r   r   rh   )rj  ri  ÚmediumrG   )r  r  rÖ  r   r   r>   )r+   r,   r   r)   r*   r/   r/   r0   Ú3test_plot_multiple_label_incorrect_length_exceptionÀ  s   þ"ùrv  c                  C   s:   t  ¡ \} }|jg d¢g d¢g d¢dddd | ¡  d S )Nr=  r¡   r¢   r   ÚfaceÚFill)rˆ  rØ   r   )r   r   rá   r"   r–   r/   r/   r0   Útest_legend_face_edgecolorÍ  s
   ÿry  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   r2   rb   r   r7   rG   r   )r   r   r>   r"   rô  rø   r±   r/   r/   r0   Útest_legend_text_axesÕ  s
   rz  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.   r{   r/   r/   r0   Útest_handlerline2dÞ  s
   "r}  c                  C   sL   t  ¡  ¡ } |  ¡ }|jddgddgdd |  ¡ }|jdd| u s$J ‚d S )Nr   r   r7   rG   F)Úroot)r   r“   Ú
subfiguresr   r>   r"   Ú
get_figure)Úsubfigr*   r{   r/   r/   r0   Ú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s0J ‚| ¡ d d… t|  ¡ d d d… ƒksFJ ‚d S )	Nr   r   r2   rb   z#123456r   )r-   r   r   )r   rá   r"   Úget_patchesrM  rN  ÚtuplerO  )Ú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‡  )r{  r|  )r6   Úmarkr/   r/   r0   rò   ü  s    ÿz3test_legend_markers_from_line2d.<locals>.<listcomp>)r‚  rR   Úxyzzyc                 S   rî   r/   rô   r5   r/   r/   r0   rò   ÿ  ró   c                 S   rî   r/   rô   r5   r/   r/   r0   rò     ró   c                 S   rî   r/   rï   )r6   r¿  r/   r/   r0   rò     ró   )r   r   r"   r?   rø   )	Ú_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Ç  rb   )Úncol)rd   rG  )r  r  Ústringsrd   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   r2   ©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   r2   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_type6  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 -1rO   ©r   r   r"   r  r  rÖ  r–   r/   r/   r0   Ú!test_loc_validation_numeric_value=  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¾  rI   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_valueL  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'   r2   )
r   r>   ro   r  r4  rÁ  r"   rÊ   rù   rø   ©r¥  r¦  r"   r/   r/   r0   Ú!test_legend_handle_label_mismatch_  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¨  r2   )r   r>   ro   r"   ÚiterrÊ   rù   rø   r©  r/   r/   r0   Ú(test_legend_handle_label_mismatch_no_lenh  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_warningq  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_draww  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   r2   ©r
   r   rc   ©rI   rÉ   Úgrayr   zShaded Area)r-   rŽ  r   r   rÓ   rO   r   r=   r   )r   r   r   rl   rá   r_   r`   r"   rp   rq   rr   rs   rt   ru   rv   r   rw   )	r+   r|  r}  ry   r)   rx   r*   r   r{   r/   r/   r0   Útest_legend_loc_polycollection~  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 )Nr2   r¯  rc   r°  r   z	plot namerG   rU  zsome text blahblahÚtop)Úverticalalignmentr=   r   )r   r   r   rl   r>   r¿  r"   rp   rq   rr   rs   rt   ru   rv   r   rw   )r)   rx   ry   r*   r   r+   r,   r{   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¡   ÚLinerG   r   )r   r   )r‚   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   )Únrowsrd   )úbox Azbox Bzbox Czbox Dr   T)Úpatch_artistr   c                 S   rî   r/   ©rs  ©r6   r—  r/   r/   r0   rò   º  ró   z.test_boxplot_legend_labels.<locals>.<listcomp>Úboxesc                 s   ó    | ]
}t |tjjƒV  qd S r4   )Ú
isinstancer´   ÚpatchesÚ	PathPatchrö   r/   r/   r0   r8   ½  ó   € z-test_boxplot_legend_labels.<locals>.<genexpr>F)r   Úshowboxc                 S   rî   r/   rÄ  rÅ  r/   r/   r0   rò   Â  ró   Úmediansc                 s   rÇ  r4   )rÈ  r´   rè   r|  rö   r/   r/   r0   r8   Å  rË  z values must have same the lengthr  r2   rO   rG   rb   rÂ  c                 s   s    | ]
}|  ¡  d ¡V  qdS )Ú_N)rs  r8  )r6   r+   r/   r/   r0   r8   Î  rË  )r   r   Úseedr   r   Úboxplotr   Úallr  r  rÖ  rs  )
rL  r)   rx   Úlegend_labelsÚbp1r.   r'   Úbp2Úbp3Úbp4r/   r/   r0   Útest_boxplot_legend_labels±  s(   ÿ&r×  )‘r    r¼  r_  Úplatformrb  Ú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è   r{  Úmatplotlib.legend_handlerr   Úmatplotlib.legendr"   r˜  r   Úmatplotlib.font_managerr	   r1   r@   rK   rU   ra   r|   rŽ   r—   Úmachiner    rª   r²   rµ   r¾   rÁ   rÅ   rÏ   rã   ré   rÿ   r  r	  rH  r{  r  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*  r1  r4  r6  r7  r8  r:  r=  r?  rA  rB  rD  ÚfilterwarningsrH  rK  rQ  rT  rf  rg  rŠ   rn  Úintro  rq  rt  rv  ry  rz  r}  r‚  r†  r  r“  r—  rš  r›  rœ  rŸ  r¡  r£  rª  r¬  r­  r®  r²  rµ  rÀ  r×  r/   r/   r/   r0   Ú<module>   sV   
	
	
 

ÿ
	ÿ
ÿ
ÿ

ÿ



!

`8)ÿ



ÿ
		&




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