o
    :a }                  	   @   s  d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dl	m
Z d dlZd dlmZ d dlm Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ dd Zed	gd
ddd Zedgd
ddd Z edgdd Z!edgd
ddd Z"edgd
ddd Z#edgd
ddd Z$edgd
e% dkrd ndd d!d" Z&ed#gd
e% dkrd ndd d$d% Z'ed&gd
dd'd( Z(ed)gd
e% dkrd nd*d d+d, Z)ed-d.gd
dd/d0 Z*ed1gd
dd2d3 Z+ed4gd
d5d6d7d8 Z,d9d: Z-G d;d< d<Z.G d=d> d>Z/ed?gd@dA Z0dBdC Z1dDdE Z2dFdG Z3edHgdIdJ Z4edKgdLdM Z5dNdO Z6dPdQ Z7dRdS Z8dTdU Z9dVdW Z:dXdY Z;dZd[ Z<d\d] Z=ej>?d^d_d`da Z@dbdc ZAddde ZBdfdg ZCdhdi ZDej>?d^d_djdk ZEdldm ZFdndo ZGdpdq ZHdrds ZIdtdu ZJdvdw ZKdxdy ZLej>jMeNd
 dzd{d|d} ZOd~d ZPdd ZQej>?dddgdeRddggdd ZSej>?dddeTgdd ZUej>?dddgdeRddggdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dS )    N)mock)image_comparison)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randomZrandnpltsubplotszipscatterZget_legend_handles_labelscollectionsOrderedDictlegendvalueskeys)XYlabelscolorsfigaxxyr   colorhandlesr    r)   >/usr/lib/python3/dist-packages/matplotlib/tests/test_legend.pytest_legend_ordereddict   s   
r+   Zlegend_auto1T)remove_textc                  C   sR   t  \} }td}|j|d| ddd |j||d ddd |jdd d	S )
Test automatic legend placementd   2   oy=1r   y=-1bestr   N)r   r   r   arangeplotr   )r#   r$   r%   r)   r)   r*   test_legend_auto1&   s
   
r8   Zlegend_auto2c                  C   sh   t  \} }td}|j||ddd}|j||ddd ddd}|j|d |d gd	d
gdd dS )r-   r.   Zedgem)Zalignr'   Nr   r   ZupZdownr4   r5   )r   r   r   r6   barr   )r#   r$   r%   Zb1Zb2r)   r)   r*   test_legend_auto20   s
   
$r<   Zlegend_auto3c                  C   sV   t  \} }g d}g d}|j||ddd |dd |dd |jdd	 d
S )r-   )?皙?r>   r=   r=   r   )ffffff?r?   皙?r@   r   r   zo-liner2                 ?r4   r5   N)r   r   r7   set_xlimset_ylimr   )r#   r$   r%   r&   r)   r)   r*   test_legend_auto3:   s   rF   Zlegend_various_labelsc                  C   sl   t  } | d}|jtdddd |jtddddd |jtddddd	d |jdd
d d S )Ny      r0   r   r2   gffffff@u   Développésr:   Z__nolegend__r4   )	numpointsr   )r   figureZadd_subplotr7   r   r6   linspacer   r#   r$   r)   r)   r*   test_various_labelsF   s   
rM   zlegend_labels_first.pngc                  C   sh   t  \} }|jtdddd |jtdd ddd |jtddd	d
dd |jddd d S )Nr   -or   r2   r	   z:xr%      r:   dZdiamondr4   F)r   Zmarkerfirst)r   r   r7   r   r6   Zonesr   rL   r)   r)   r*   test_labels_firstQ   s
   rQ   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         rN   rS   rT   rH   z-x)rT   rH   r	   z-d)ztwo keyszpad=0zone keyr   )ndivider   )rV   Zpad)rI   handler_map)r   r   r7   r   r   )r#   r$   p1p2Zp3r)   r)   r*   test_multiple_keys[   s   
rZ   zrgba_alpha.pngZx86_64g{Gz?)r,   Ztolc                  C   sB   t  \} }|jtddd t jdgdd}|jg d d S )Nr   r	   lwLonglabel that will go awaycenterr5   r   r   r   r   )r   r   r7   ranger   legendPatchset_facecolorr#   r$   legr)   r)   r*   test_alpha_rgbah   s   re   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      ?)Zrcr]   r^   r5   r_   )	r   r   r7   r`   mplr   r   ra   rb   rc   r)   r)   r*   test_alpha_rcparamq   s   "rg   Zfancyc                   C   s~   t d t jdgd ddd t jtdtdddd	d t jtdtdd
d
dd t jddd
gddddd d S )NrG   r	   r   zo--ZXXr2   r   r:   zXX
XXr   )ZxerrZyerrr   r   rC   rS   T	My legendr   )r   r   ncolshadowtitlerI   )r   subplotr7   r   r   r6   Zerrorbarr   r)   r)   r)   r*   
test_fancy   s   
 
rm   
framealphag{Gz?c                  C   s4   t ddd} | }tj| |ddd tjdd d S )Nr   r.   Zmylabelr   )r   r\   r   )rn   )r   rK   r   r7   r   )r%   r&   r)   r)   r*   test_framealpha   s   ro   Zscatter_rc3Zscatter_rc1c                  C   s   t   t d} | jtdtddddd | jddd	gd
d dtjd< t   t d} | jtdtddddd | jddd	gd
d d S )NrG   r   r   r:   Zthreer2   r   rC   r   rh   )r   r   rk   r   zlegend.scatterpointsone)	r   rJ   rl   r   r   r6   r   rf   rcParams)r$   r)   r)   r*   test_rc   s   
 

 
rr   Zlegend_expandc                  C   s   ddg} t t| d\}}td}t|| D ]:\}}|j|d| ddd |jd	|d
}|| |j||d ddd |jd|d
}|| |jd|dd qdS )zTest expand modeNexpandr   r.   r/   r0   r1   r2   z
upper left)r   moder3   rightz
lower leftrS   )r   rt   ri   )	r   r   lenr   r6   r   r7   r   Z
add_artist)Zlegend_modesr#   axsr%   r$   rt   l1l2r)   r)   r*   test_legend_expand   s   


rz   Zhatchingdefault)r,   Z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?ZxxzPatch
default color
filled)hatchr   )Q?r   z||ZC1zPatch
explicit color
filled)r~   	edgecolorr   )r   皙?FzPatch
default color
unfilled)r~   fillr   )r   r   zPatch
explicit color
unfilled)r~   r   r   r   )r   g333333?r}   )皙?r   r   )r=   rC   r=   +zPath
default color)r   gQ?g)\(?ZC2zPath
explicit colorg{Gzg?rH   )ZhandlelengthZhandleheight)	r   rq   r   Z	RectangleZ	add_patchfill_betweenrD   rE   r   )r#   r$   patchr)   r)   r*   test_hatching   s8   




r   c                  C   sb   t  \} }|td}| |d}|  | jg ksJ |d}|  | d u s/J d S )Nr   test)r   r   r7   r`   r   removeZlegendsZ
get_legend)r#   r$   linesrd   r)   r)   r*   test_legend_remove   s   
r   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestLegendFunctionc                 C   s\   t jtddd}td}t   W d    n1 sw   Y  |t  |dg d S )Nr   hello worldr2   matplotlib.legend.Legendr   r7   r`   r   r   r   assert_called_withgcaselfr   Legendr)   r)   r*   test_legend_no_args   s
   
z&TestLegendFunction.test_legend_no_argsc                 C   s^   t td}td}t |dg W d    n1 sw   Y  |t  |dg d S )Nr   r   r   r   r   r)   r)   r*   %test_legend_positional_handles_labels   s
   z8TestLegendFunction.test_legend_positional_handles_labelsc                 C   sL   t td}tjtdd t | W d    d S 1 sw   Y  d S )Nr   zbut found an Artist)match)r   r7   r`   pytestraises	TypeErrorr   )r   r   r)   r)   r*   #test_legend_positional_handles_only   s   "z6TestLegendFunction.test_legend_positional_handles_onlyc                 C   s`   t jtddd}td}t dg W d    n1 sw   Y  |t  |dg d S )Nr   r   r2   r   foobarr   r   r)   r)   r*   "test_legend_positional_labels_only   s
   z5TestLegendFunction.test_legend_positional_labels_onlyc                 C   sj   t jtddd}td}t j|dgdd W d    n1 s"w   Y  |jt  |dgdd d S )Nr   r   r2   r   r   ru   r5   r   r   r)   r)   r*   test_legend_three_args   s
   z)TestLegendFunction.test_legend_three_argsc                 C   sr   t jtddd}td}|dgf|_t jddid W d    n1 s'w   Y  |t  gddi d S )Nr   r   r2   z,matplotlib.legend._get_legend_handles_labels1rS   )rW   )	r   r7   r`   r   r   Zreturn_valuer   r   r   )r   r   Zhandles_labelsr)   r)   r*   test_legend_handler_map  s   
z*TestLegendFunction.test_legend_handler_mapc                 C   s   t  \}}tddd}|j||dd\}|j|d| dd\}|j|d| d	d\}td
}|j||gd W d    n1 sDw   Y  ||||gd	dg d S )Nr   r      r%   r2   rS   2xrT   Z3xr   )r(   	r   r   r   rK   r7   r   r   r   r   )r   r#   r$   r%   ln1ln2Zln3r   r)   r)   r*   test_legend_kwargs_handles_only
  s   z2TestLegendFunction.test_legend_kwargs_handles_onlyc                 C   s   t  \}}tddd}|||\}||d| \}td}|jddgd W d    n1 s5w   Y  ||||gddg d S )	Nr   r   r   rS   r   r%   r   r!   r   )r   r#   r$   r%   r   r   r   r)   r)   r*   test_legend_kwargs_labels_only  s   z1TestLegendFunction.test_legend_kwargs_labels_onlyc                 C   s   t  \}}tddtj d}|j|t|dd\}|j|t|dd\}t	d}|j
d||fd	 W d    n1 sAw   Y  ||||fd d S )
Nr   rS      sinr2   cosr   r   r
   )r!   r(   )r   r   r   rK   pir7   r   r   r   r   r   r   )r   r#   r$   thlnslncr   r)   r)   r*   !test_legend_kwargs_handles_labels  s   z4TestLegendFunction.test_legend_kwargs_handles_labelsc                 C   s   t  \}}tddtj d}|j|t|dd\}|j|t|dd\}t	t
}|j||fdd W d    n1 sAw   Y  t|d	ksNJ t|d jd
ksYJ d S )Nr   rS   r   r   r2   r   r   r   r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rK   r   r7   r   r   r   warnsUserWarningr   rv   strmessage)r   r#   r$   r   r   r   recordr)   r)   r*   test_warn_mixed_args_and_kwargs'  s   z2TestLegendFunction.test_warn_mixed_args_and_kwargsc                 C   s   ddl m} |d}| }|jg dg ddd\}|jg dg ddd\}td	}t  W d    n1 s<w   Y  ||||gddg d S )
Nr   )host_subploto   r   r   rS   ZDensityr2   )r   rT   rS   ZTemperaturer   )	Zmpl_toolkits.axes_grid1r   Ztwinxr7   r   r   r   r   r   )r   r   ZhostZparrX   rY   r   r)   r)   r*   test_parasite3  s   
z TestLegendFunction.test_parasiteN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   r      s    
	
r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestLegendFigureFunctionc                 C   sl   t  \}}|td}td}||dg W d    n1 s$w   Y  |j||dg|jd d S )Nr   r   r   bbox_transform	r   r   r7   r`   r   r   r   r   transFigurer   r#   r$   r   r   r)   r)   r*   test_legend_handle_labelC  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   r2   r   r   r   r   r)   r)   r*   r   K  s   

z,TestLegendFigureFunction.test_legend_no_argsc                 C   sj   t  \}}|td}td}|dg W d    n1 s#w   Y  |j||dg|jd d S )Nr   r   r   r   r   r   r)   r)   r*   test_legend_label_argS  s   
z.TestLegendFigureFunction.test_legend_label_argc                 C   sp   t  \}}|td}td}||dgd W d    n1 s%w   Y  |j||dgd|jd d S )Nr   r   r   ru   r   r   r   r)   r)   r*   test_legend_label_three_args[  s   
z5TestLegendFigureFunction.test_legend_label_three_argsc                 C   s^   t  \}}|td}tt |j|dgddd W d    d S 1 s(w   Y  d S )Nr   r   ru   leftr5   )r   r   r7   r`   r   r   	Exceptionr   )r   r#   r$   r   r)   r)   r*   #test_legend_label_three_args_pluskwc  s
   "z<TestLegendFigureFunction.test_legend_label_three_args_pluskwc                 C   s   t dd\}}|d td}|d tdd }td}|jdd||fd	 W d    n1 s7w   Y  |j	|||fdd|j
d
 d S )Nr   rS   r   r          @r   ru   r   )r   r!   r(   )r   r   )r   r   r7   r`   r   r6   r   r   r   r   r   )r   r#   rw   r   lines2r   r)   r)   r*   test_legend_kw_argsk  s   
z,TestLegendFigureFunction.test_legend_kw_argsc                 C   s   t dd\}}|d td}|d tdd }tt}|j	||fdd W d    n1 s6w   Y  t
|dksCJ t|d jdksNJ d S )	Nr   rS   r   r   r   r   r   r   )r   r   r7   r`   r   r6   r   r   r   r   rv   r   r   )r   r#   rw   r   r   r   r)   r)   r*   test_warn_args_kwargsu  s   z.TestLegendFigureFunction.test_warn_args_kwargsN)
r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   r   A  s    
r   zlegend_stackplot.pngc                  C   sv   t  \} }tddd}d| }d| d }d| d }|j||||g dd	 |d
 |d |jdd dS )z/Test legend for PolyCollection using stackplot.r   r   rC   r   r   g      @rS   )y1y2y3r   )r   r   )r   F   r4   r5   N)r   r   r   rK   Z	stackplotrD   rE   r   )r#   r$   r%   r   r   r   r)   r)   r*   test_legend_stackplot  s   

r   c                  C   s<   t  \} }t  \}}|tdtd}||d d S )NrT   foo)r   r   r;   r`   r   )r#   r$   Zfig2Zax2Zbrsr)   r)   r*   test_cross_figure_patch_legend  s   r   c               
   C   s   t  \} }|jtjgtjgddddd}||gdg t  \} }dD ]!}d}tjd|\}}d	tj| }|j|||||d
dd q%|  |d d S )Nr0   r   rT   )marker	facecolorr   sr   )redZgreenZbluei  rS   g      i@r}   none)r   r   r   alphaZ
edgecolorsT)	r   r   r   r   nanr   r   ZrandZgrid)r#   r$   hr'   nr%   r&   Zscaler)   r)   r*   test_nanscatter  s   r   c                  C   s   t  \} }|jdddddd |jdddd	dd |  t|g\}}t|d
ks.J t  \} }|jdddddd |jdddd	dd |  t|g\}}t|d
ks\J d S )NrB   rC   kr0   r   )r'   r   r   r   r   vrS   )r   r   r   r   mlegendZ_get_legend_handles_labelsrv   )r#   r$   ZhandZlabr)   r)   r*   test_legend_repeatcheckok  s   r   znot_covering_scatter.pngc                  C   sd   g d} t dD ]}tj|g|g| | d qtjg ddd t dd t dd d S )	N)r
   r   r   rT   )r'   )r   r   r   r4   r5   g      g@)r`   r   r   r   r   rD   rE   )r"   r   r)   r)   r*   test_not_covering_scatter  s   r   z"not_covering_scatter_transform.pngc                  C   s^   t  dd} tddd}t|| tjdgdg| t j	 d tj
dd	gd
d d S )NirO   r        r   )Z	transformr   r;   r4   r5   )mtransformsZAffine2D	translater   rK   r   r7   r   r   Z	transDatar   )offsetr%   r)   r)   r*   #test_not_covering_scatter_transform  s
   r   c                  C   s"  ddgddgg} ddgddggd	dgd
dggg}d
dgddggd	dgddggg}t j| ddd}t j|dd}t j|dd	d}t \}}|| || || ||||gg d}|j\}	}
}t|||f|	|
|fD ]\}}| d d |j	ksJ | d d |j
ksJ qpd S )N)r   r   )r   r   )r}   333333?)皙?r   gffffff?r   r   r   r   r   r>   z--rT   )
linestylesr\   z-.)r   :)Zline1Zline2zline 3r   r   )mcollectionsZLineCollectionr   r   Zadd_collectionr   legendHandlesr   Zget_linestylesZ_dashSeqZ_dashOffset)Zlines1r   Zlines3Zlc1Zlc2Zlc3r#   r$   rd   Zh1Zh2Zh3Zohlhr)   r)   r*   !test_linecollection_scaled_dashes  s      


r   c                  C   s.   t  \} }|jtddd |jdd dS )z(Test legend handler with numpoints <= 1.r	   r   r2   r   rI   N)r   r   r7   r`   r   rL   r)   r)   r*   test_handler_numpoints  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   r2   N)r   r;   r   r)   r)   r)   r*    test_empty_bar_chart_with_legend  s   r   c                  C   sD   t  \} }|jtddd |jddd}|  dks J d S )Nr.   r   r2   Tw)rj   r   r   )r   r   r7   r`   r   Z	get_frameZ	get_alpharc   r)   r)   r*   test_shadow_framealpha  s   r   c                  C   sJ   t  \} }|td | }|  dksJ |  r#J d S )Nr    )r   r   r7   r`   r   	get_titleget_textZget_visiblerc   r)   r)   r*   test_legend_title_empty  s
   r   c                  C   s   t jdd\} }|jtddd | }|| j j}t jdd\} }|jtddd | }|| j j}t	
|d d|ksHJ d S )	Nr.   Zdpir   Aardvarkr2      rS   r>   )r   r   r7   r`   r   get_window_extentcanvasZget_rendererZx0r   Zapprox)r#   r$   rd   Zx01Zx02r)   r)   r*    test_legend_proper_window_extent  s   r  c                  C   sP   t jdd\} }|jtddd | }|  }| j  |  |  d S )Nr.   r   r   r   r2   )r   r   r7   r`   r   r  drawr   )r#   r$   rd   leg2r)   r)   r*   "test_window_extent_cached_renderer  s   
r  c            	      C   s  t t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 td |d jddd}|  dkseJ |d td |d jddddd}|  dksJ |d td d tjd< |d jdddid}|  tjd ksJ |d	 td |d	 jdd}|  tjd ksJ |d td dtjd< |d jdddid}|  dksJ |d td |d jdd}|  dksJ d S )Nr   r      serif)familysize)rk   title_fontsizetitle_fontproperties)rk   r  rS   rT   )r   r|   )Zfigsizer   )rk   r
  r   zlegend.title_fontsizer  z	font.sizerk   rH   rO   r	   )r   r7   r`   r   r   
ValueErrorr   r   r   Zget_sizer   ZflatZget_fontsizerf   rq   )	rd   r#   axesZleg0Zleg1r  Zleg3Zleg4Zleg5r)   r)   r*   #test_legend_title_fontprop_fontsize%  sL   





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   #1r2   rS   #2rT   #3Z
labelcolor)r   r   r7   r   r6   r   	get_textsrf   r"   
same_color	get_colorr'   r#   r$   rd   textr)   r)   r*   test_legend_labelcolor_singleK  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  r2   rS   r  rT   r  r   r   r
   r  r   r   r7   r   r6   r   r   r  rf   r"   r  r  r#   r$   rd   r  r'   r)   r)   r*   test_legend_labelcolor_listX  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'   rS   r  r   rT   r  r
   	linecolorr  r  r  r  r)   r)   r*    test_legend_labelcolor_linecolord     """r!  c                  C   r  )Nr   r   r  r   r   markeredgecolorrS   r  r   rT   r  r
   r$  r  r  r  r  r)   r)   r*   &test_legend_labelcolor_markeredgecolorp  r"  r%  c                  C   r  )Nr   r   r  r   r   markerfacecolorrS   r  r   rT   r  r
   r'  r  r  r  r  r)   r)   r*   &test_legend_labelcolor_markerfacecolor|  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 | tjd	< | }| D ]}tj	
| | sPJ qCd S )
Nr   r   r  r2   rS   r  rT   r  legend.labelcolor)r   r   r7   r   r6   rf   rq   r   r  r"   r  r  r  r)   r)   r*   %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  rS   r  r   rT   r  r
   r   r)  r  r   r   r7   r   r6   rf   rq   r   r   r  r"   r  r  r  r)   r)   r*   (test_legend_labelcolor_rcparam_linecolor     """
r-  c                  C   r+  )Nr   r   r  r   r#  rS   r  r   rT   r  r
   r$  r)  r  r,  r  r)   r)   r*   .test_legend_labelcolor_rcparam_markeredgecolor  r.  r/  c                  C   r+  )Nr   r   r  r   r#  rS   r  r   rT   r  r
   Zmecr)  r  r,  r  r)   r)   r*   4test_legend_labelcolor_rcparam_markeredgecolor_short  r.  r0  c                  C   r+  )Nr   r   r  r   r&  rS   r  r   rT   r  r
   r'  r)  r  r,  r  r)   r)   r*   .test_legend_labelcolor_rcparam_markerfacecolor  r.  r1  c                  C   r+  )Nr   r   r  r   r&  rS   r  r   rT   r  r
   Zmfcr)  r  r,  r  r)   r)   r*   4test_legend_labelcolor_rcparam_markerfacecolor_short  r.  r2  c                  C   sD   t  } |  r
J | d |  sJ | d |  r J d S )NTF)r   r   Zget_draggableZset_draggable)r   r)   r)   r*   test_get_set_draggable  s   

r3  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 )	NrR   g      ?datar   )r   r   r'   rC   r:   r   )r   Zhistr   r   Z	set_alphaZget_facecolorZget_edgecolor)r%   r   Zhhr   r   r)   r)   r*   test_alpha_handles  s   
(,r5  z"This test needs a TeX installation)reasonc                 C   sb   dt jd< dt jd< dt jd< t \}}|jdddd	 |jd
d |j  d| jvs/J d S )Nr  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputr2   rh   r  z Font family ['serif'] not found.)	rf   rq   r   r   r7   r   r  r  r  )Zcaplogr#   r$   r)   r)   r*   test_usetex_no_warn  s   



r8  c                  C   s   t  \} }| j  tdD ]}|jtd|d qtddi |	 }W d    n1 s1w   Y  t
t}| | W d    n1 sKw   Y  t|dksXJ |D ]}t|jdkseJ qZd S )Nr     r2   z
legend.locr4   rS   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   r  r  r`   r7   r   r6   r   r   r   r   r   draw_artistrv   r   r   )r#   r$   idxr   Zrecordsr   r)   r)   r*   test_warn_big_data_best_loc  s    


r<  c                  C   sP   t  \} }| j  tdD ]}|jtd|d q|d}| 	| d S )Nr   r9  r2   r4   )
r   r   r  r  r`   r7   r   r6   r   r:  )r#   r$   r;  r   r)   r)   r*   (test_no_warn_big_data_when_loc_specified  s   

r=  label_arraylowhigh)r?  r@  c                 C   sh   g d}ddgddgddgg}t  \}}|j||| d | }dd	 | D }|d
dgks2J d S )NrR   r   rS   r	   rH   	   r2   c                 S      g | ]}|  qS r)   r   .0entryr)   r)   r*   
<listcomp>"      z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>r?  r@  )r   r   r7   r   r  )r>  r%   r&   r#   r$   rd   legend_textsr)   r)   r*   'test_plot_multiple_input_multiple_label  s   rJ  r   rp   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 )
NrR   r   rS   r	   rH   rA  r2   c                 S   rB  r)   rC  rD  r)   r)   r*   rG  2  rH  z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r7   r   r  r   )r   r%   r&   r#   r$   rd   rI  r)   r)   r*   %test_plot_multiple_input_single_label&  s   rK  c                 C   sh   g d}g d}t  \}}|j||| d | }t| dks$J | d  t| ks2J d S )NrR   )rS   r	   r|   r2   r   r   )r   r   r7   r   rv   r  r   r   )r>  r%   r&   r#   r$   rd   r)   r)   r*   %test_plot_single_input_multiple_label6  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 )	NrR   r   rS   r	   rH   rA  )r@  r?  Zmediumr2   )r   r   r  r   r   r7   )r%   r&   r   r#   r$   r)   r)   r*   3test_plot_multiple_label_incorrect_length_exceptionE  s   "rM  c                  C   s:   t  \} }|jg dg dg ddddd |  d S )Nr   rR   rU   r   ZfaceZFill)r   r   r   )r   r   r   r   rL   r)   r)   r*   test_legend_face_edgecolorR  s
   rN  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   rS   rT   rH   rA   r2   r   )r   r   r7   r   r  r  rc   r)   r)   r*   test_legend_text_axesZ  s
   rO  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   mlinesZLine2Dr   Z
get_markerr   )r#   r$   r(   rd   r)   r)   r*   test_handlerline2dc  s
   "rQ  c                  C   sF   t   } |  }|jddgddgdd |  }|j| u s!J d S )Nr   r   rA   r2   )r   rJ   Z
subfiguresr   r7   r   )Zsubfigr$   rd   r)   r)   r*   test_subfigure_legendl  s
   rR  )\r   platformZunittestr   Znumpyr   r   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr   Z
matplotlibrf   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.collectionsr   Zmatplotlib.linesr   rP  Zmatplotlib.legend_handlerr   Zmatplotlib.legendr   r   r   Zmatplotlib.font_managerr   r+   r8   r<   rF   rM   rQ   rZ   machinere   rg   rm   ro   rr   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  ZmarkZparametrizer  r  r!  r%  r(  r*  r-  r/  r0  r1  r2  r3  r5  ZskipifZcheckdep_usetexr8  r<  r=  ZarrayrJ  intrK  rL  rM  rN  rO  rQ  rR  r)   r)   r)   r*   <module>   s    
	
	



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