a
    
d                  	   @   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	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 Z-dd Z.edgddd d! Z/ed"gddd#d$ Z0ed%gde1 d&krd nd'd(d)d* Z2ed+gde1 d&krd nd'd(d,d- Z3ed.gddd/d0 Z4ed1gde1 d&krd nd2d(d3d4 Z5ed5d6gddd7d8 Z6ed9gddd:d; Z7ed<gdd=d>d?d@ Z8dAdB Z9dCdD Z:edEgdFdGdH Z;G dIdJ dJZ<G dKdL dLZ=dMdN Z>edOgdPdQ Z?dRdS Z@dTdU ZAdVdW ZBedXgdYdZ ZCed[gd\d] ZDd^d_ ZEd`da ZFdbdc ZGddde ZHdfdg ZIdhdi ZJdjdk ZKdldm ZLdndo ZMe	jNOdpdqdrds ZPe	jNOdpdqdtdu ZQe	jNOdvdwdxdy ZRdzd{ ZSd|d} ZTd~d ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_e	jNOdvdwdd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfe	jNOdddd Zgdd Zhedd Zidd Zjdd Zke	jNOdddgdelddggdd Zme	jNOdddengdd Zoe	jNOdddgdelddggdd Zpdd Zqdd Zrdd Zsdd ZtddĄ ZuddƄ ZvddȄ Zwe ddʄ Zxd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 qZ| \}
}t	t||
}|j
| | dd	d
 d S )N
   a   brglabelccenter left)         ?)locbbox_to_anchor)nprandomZrandnpltsubplotszipscatterget_legend_handles_labelscollectionsOrderedDictlegendvalueskeys)XYlabelscolorsfigaxxyr   colorhandlesr!    r.   e/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddict   s    r0   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
    
r=   Zlegend_auto2c                  C   sh   t  \} }td}|j||ddd}|j||ddd ddd}|j|d |d gd	d
gdd dS )r2   r3   Zedgem)alignr,   Nr   r   ZupZdownr9   r:   )r   r   r   r;   barr!   )r(   r)   r*   b1b2r.   r.   r/   test_legend_auto24   s
    
rD   Zlegend_auto3c                  C   sV   t  \} }g d}g d}|j||ddd |dd |dd |jdd	 d
S )r2   )?皙?rF   rE   rE   r   )ffffff?rG   皙?rH   r   r   zo-liner7                 ?r9   r:   N)r   r   r<   set_xlimset_ylimr!   )r(   r)   r*   r+   r.   r.   r/   test_legend_auto3>   s    rN   c                  C   s   t jddd\} }g }t|jdD ]d\}}|| |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)rA   stepZ
stepfilledr   r   	   r
   Legend)Zbinsr   Zhisttyper9   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)   Zhtlegr.   r.   r/   test_legend_auto4J   s    
"
rf   c                  C   s  t jddd\} }g }t|jdD ]\}}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 ]}|
| q|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.
    rV   )g333333#@g333333@rP   )centerr9   )r   rE   皙?皙?C1)Zxywidthheightfcr   r   rE   rK   rF   )rm   )r   r   r   ih  rH   ZC0)rk   rm   z	A segmentr7   r:   N)r   r   r   rW   mpatchesZEllipseZPolygonr   arrayZWedge	add_patchr<   r!   r[   r\   r]   r^   r_   r`   ra   r   rb   )r(   rc   rd   r)   r   Z_patchre   r.   r.   r/   test_legend_auto5`   s,    $
rq   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      r5   r   r7   gffffff@u   Développésr@   Z__nolegend__r9   )	numpointsr   )r   figureZadd_subplotr<   r   r;   linspacer!   r(   r)   r.   r.   r/   test_various_labels   s    
rx   c                  C   sr   t  \} }|jddgdd\}tjtdd |j|gd}W d   n1 sR0    Y  t|jdksnJ dS )	z
    Test that artists with labels starting with an underscore are not added to
    the legend, and that a warning is issued if one tries to add them
    explicitly.
    r   r   Z_foor7   z*starts with '_'.*excluded from the legend.matchr-   N)	r   r   r<   pytestwarnsUserWarningr!   lenlegend_handles)r(   r)   rI   r!   r.   r.   r/   )test_legend_label_with_leading_underscore   s    ,r   zlegend_labels_first.pngc                  C   sh   t  \} }|jtdddd |jtdd ddd |jtddd	d
dd |jddd d S )Nr
   -or   r7   r   z:xr*      r@   dZdiamondr9   F)r   Zmarkerfirst)r   r   r<   r   r;   Zonesr!   rw   r.   r.   r/   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   rV   rO   r   rV   rO   rs   z-x)rO   rs   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)rt   handler_map)r   r   r<   r!   r   )r(   r)   p1p2Zp3r.   r.   r/   test_multiple_keys   s    r   zrgba_alpha.pngx86_64g{Gz?)r1   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 awayrg   r:   r   r   r   r   )r   r   r<   rZ   r!   legendPatchset_facecolorr(   r)   re   r.   r.   r/   test_alpha_rgba   s    r   zrcparam_alpha.pngc                  C   sr   t  \} }|jtddd tjddid0 t jdgdd	}|jg d
 W d    n1 sd0    Y  d S )Nr
   r   r   zlegend.framealphag      ?)rcr   rg   r:   r   )	r   r   r<   rZ   mplr   r!   r   r   r   r.   r.   r/   test_alpha_rcparam   s
    r   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 )Nrr   r   r
   zo--ZXXr7   r   r@   zXX
XXr   )ZxerrZyerrr   r   rK   rV   T	My legendr   )r   r   rQ   shadowtitlert   )r   subplotr<   r   r   r;   Zerrorbarr!   r.   r.   r.   r/   
test_fancy   s    
 r   
framealphag{Gz?c                  C   s4   t ddd} | }tj| |ddd tjdd d S )Nr   r3   Zmylabelr
   )r   r   r   )r   )r   rv   r   r<   r!   )r*   r+   r.   r.   r/   test_framealpha   s    r   Zscatter_rc3Zscatter_rc1c                  C   s   t   t d} | jtdtddddd | jddd	gd
d dtjd< t   t d} | jtdtddddd | jddd	gd
d d S )Nrr   r
   r   r@   Zthreer7   r   rK   r   r   )r   r   r   r   zlegend.scatterpointsone)	r   ru   r   r   r   r;   r!   r   rcParams)r)   r.   r.   r/   test_rc   s    
 

 r   Zlegend_expandc                  C   s   ddg} t t| d\}}td}t|| D ]t\}}|j|d| ddd |jd	|d
}|| |j||d ddd |jd|d
}|| |jd|dd q0dS )zTest expand modeNexpandr   r3   r4   r5   r6   r7   z
upper left)r   moder8   rightz
lower leftrV   )r   r   rQ   )	r   r   r   r   r;   r   r<   r!   Z
add_artist)Zlegend_modesr(   rc   r*   r)   r   l1l2r.   r.   r/   test_legend_expand   s    


r   Zhatchingdefault)r1   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||rj   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   )rh   rh   rh   )rE   rK   rE   +zPath
default color)r   gQ?g)\(?ZC2zPath
explicit colorg{Gzg?rs   )ZhandlelengthZhandleheight)	r   r   r   Z	Rectanglerp   fill_betweenrL   rM   r!   )r(   r)   patchr.   r.   r/   test_hatching   s8    




r   c                  C   sb   t  \} }|td}| |d}|  | jg ks<J |d}|  | d u s^J d S )Nr
   test)r   r   r<   rZ   r!   removeZlegendsZ
get_legend)r(   r)   linesre   r.   r.   r/   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sJ |tt|ksJ dS )z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label).,r5   r   r7   rV   Treversec                 S   s   g | ]}|  qS r.   get_text).0tr.   r.   r/   
<listcomp>5      z:test_reverse_legend_handles_and_labels.<locals>.<listcomp>c                 S   s   g | ]}|  qS r.   
get_marker)r   hr.   r.   r/   r   6  r   N)r   r   r<   r!   	get_textsr   listreversed)	r(   r)   r*   r+   r&   markersre   Zactual_labelsZactual_markersr.   r.   r/   &test_reverse_legend_handles_and_labels)  s    r   Z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firstr7   rV   bxsecondTr   N)r   r<   r!   )fig_testfig_refr)   r.   r.   r/   test_reverse_legend_display;  s    r   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestLegendFunctionc                 C   s\   t jtddd}td}t   W d    n1 s:0    Y  |t  |dg d S )Nr
   hello worldr7   matplotlib.legend.Legendr   r<   rZ   r   r   r!   assert_called_withgcaselfr   rU   r.   r.   r/   test_legend_no_argsK  s    &z&TestLegendFunction.test_legend_no_argsc                 C   s^   t td}td}t |dg W d    n1 s<0    Y  |t  |dg d S )Nr
   r   r   r   r   r.   r.   r/   %test_legend_positional_handles_labelsQ  s    ,z8TestLegendFunction.test_legend_positional_handles_labelsc                 C   sJ   t td}tjtdd t | W d    n1 s<0    Y  d S )Nr
   zbut found an Artistry   )r   r<   rZ   r|   raises	TypeErrorr!   )r   r   r.   r.   r/   #test_legend_positional_handles_onlyW  s    z6TestLegendFunction.test_legend_positional_handles_onlyc                 C   s`   t jtddd}td}t dg W d    n1 s>0    Y  |t  |dg d S )Nr
   r   r7   r   foobarr   r   r.   r.   r/   "test_legend_positional_labels_only^  s    *z5TestLegendFunction.test_legend_positional_labels_onlyc                 C   sj   t jtddd}td"}t j|dgdd W d    n1 sD0    Y  |jt  |dgdd d S )Nr
   r   r7   r   r   r   r:   r   r   r.   r.   r/   test_legend_three_argsd  s    0z)TestLegendFunction.test_legend_three_argsc                 C   sr   t jtddd}td,}|dgf|_t jddid W d    n1 sN0    Y  |t  gddi d S )Nr
   r   r7   z,matplotlib.legend._get_legend_handles_labels1rV   )r   )	r   r<   rZ   r   r   Zreturn_valuer!   r   r   )r   r   Zhandles_labelsr.   r.   r/   test_legend_handler_mapj  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 s0    Y  ||||gd	dg d S )Nr   r      r*   r7   rV   2xrO   Z3xr   r{   	r   r   r   rv   r<   r   r   r!   r   )r   r(   r)   r*   ln1ln2Zln3rU   r.   r.   r/   test_legend_kwargs_handles_onlyr  s    .z2TestLegendFunction.test_legend_kwargs_handles_onlyc                 C   s   t  \}}tddd}|||\}||d| \}td }|jddgd W d    n1 sj0    Y  ||||gddg d S )	Nr   r   r   rV   r   r*   r   r&   r   )r   r(   r)   r*   r   r   rU   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 s0    Y  ||||fd d S )
Nr   rV      sinr7   cosr   r   r   )r&   r-   )r   r   r   rv   pir<   r   r   r   r   r!   r   )r   r(   r)   thlnslncrU   r.   r.   r/   !test_legend_kwargs_handles_labels  s    0z4TestLegendFunction.test_legend_kwargs_handles_labelsc                 C   s   t  \}}tddtj d}|j|t|dd\}|j|t|dd\}t	t
"}|j||fdd W d    n1 s0    Y  t|d	ksJ t|d jd
ksJ d S )Nr   rV   r   r   r7   r   r   r   r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rv   r   r<   r   r   r|   r}   r~   r!   r   strmessage)r   r(   r)   r   r   r   recordr.   r.   r/   test_warn_mixed_args_and_kwargs  s    0z2TestLegendFunction.test_warn_mixed_args_and_kwargsc                 C   s   ddl m} |d}| }|jg dg ddd\}|jg dg ddd\}td	}t  W d    n1 sx0    Y  ||||gddg d S )
Nr   )host_subploto   r   r   rV   ZDensityr7   )r   rO   rV   ZTemperaturer   )	Zmpl_toolkits.axes_grid1r   Ztwinxr<   r   r   r   r!   r   )r   r   hostparr   r   rU   r.   r.   r/   test_parasite  s    &z TestLegendFunction.test_parasiteN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r  r.   r.   r.   r/   r   I  s   
	
r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestLegendFigureFunctionc                 C   sl   t  \}}|td}td}||dg W d    n1 sH0    Y  |j||dg|jd d S )Nr
   r   r   bbox_transform	r   r   r<   rZ   r   r   r!   r   transFigurer   r(   r)   r   rU   r.   r.   r/   test_legend_handle_label  s    ,z1TestLegendFigureFunction.test_legend_handle_labelc                 C   sj   t  \}}|jtddd}td}|  W d    n1 sF0    Y  |j||dg|jd d S )Nr
   r   r7   r   r  r
  r  r.   r.   r/   r     s    &z,TestLegendFigureFunction.test_legend_no_argsc                 C   sj   t  \}}|td}td}|dg W d    n1 sF0    Y  |j||dg|jd d S )Nr
   r   r   r  r
  r  r.   r.   r/   test_legend_label_arg  s    *z.TestLegendFigureFunction.test_legend_label_argc                 C   sp   t  \}}|td}td }||dgd W d    n1 sJ0    Y  |j||dgd|jd d S )Nr
   r   r   r   r  r
  r  r.   r.   r/   test_legend_label_three_args  s    .z5TestLegendFigureFunction.test_legend_label_three_argsc                 C   s\   t  \}}|td}tt$ |j|dgddd W d    n1 sN0    Y  d S )Nr
   r   r   leftr:   )r   r   r<   rZ   r|   r   	Exceptionr!   )r   r(   r)   r   r.   r.   r/   #test_legend_label_three_args_pluskw  s    z<TestLegendFigureFunction.test_legend_label_three_args_pluskwc                 C   s   t dd\}}|d td}|d tdd }td$}|jdd||fd	 W d    n1 sn0    Y  |j	|||fdd|j
d
 d S )Nr   rV   r   r
          @r   r   r   )r   r&   r-   )r   r	  )r   r   r<   rZ   r   r;   r   r   r!   r   r  )r   r(   rc   r   lines2rU   r.   r.   r/   test_legend_kw_args  s    2z,TestLegendFigureFunction.test_legend_kw_argsc                 C   s   t dd\}}|d td}|d tdd }tt"}|j	||fdd W d    n1 sl0    Y  t
|dksJ t|d jdksJ d S )	Nr   rV   r   r
   r  r   r   r   )r   r   r<   rZ   r   r;   r|   r}   r~   r!   r   r   r   )r   r(   rc   r   r  r   r.   r.   r/   test_warn_args_kwargs  s    0z.TestLegendFigureFunction.test_warn_args_kwargsN)
r  r  r  r  r   r  r  r  r  r  r.   r.   r.   r/   r    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| tjddd\}	}
|
jtddd |	jd| d}|	  t|
	 j
||  t|	 j
||  qd S )Nc                 S   s   g | ]}d | qS )zupper r.   r   posr.   r.   r/   r     r   z.test_figure_legend_outside.<locals>.<listcomp>)r  rg   r   c                 S   s   g | ]}d | qS )zlower r.   r  r.   r.   r/   r     r   c                 S   s   g | ]}d | qS )zleft r.   r  r.   r.   r/   r     r   )lowerrg   upperc                 S   s   g | ]}d | qS )zright r.   r  r.   r.   r/   r     r   )QnX4@Qn;@l@gE@)r  g Q@r  lf@)gLNb@r  r  r  )r  r  gE@r  )      $@     X@     `@     p@)     (u@r        |@r"  )  r        @r"  )r  r  r!       F@)r#  r  r$  r'  )     ؄@r  r&  r'  )r       q@r!       s@)r%  r  r&  r'  )r(  r)  r&  r*  )r(  r   r&  r"  Tr3   )Zconstrained_layoutdpir
   ZBoo1r7   zoutside r:   )	enumerateprintr   r   r<   rZ   r!   Zdraw_without_renderingr   r^   Zextents)ZtodosZupperextZlowerextZleftextZrightextZaxbbZlegbbnntodor(   rc   re   r.   r.   r/   test_figure_legend_outside  sL    

r0  zlegend_stackplot.pngc                  C   sv   t  \} }tddd}d| }d| d }d| d }|j||||g dd	 |d
 |d |jdd dS )z/Test legend for PolyCollection using stackplot.r   r
   rK   r  r   g      @rV   )y1y2y3r   )r   r
   )r   F   r9   r:   N)r   r   r   rv   Z	stackplotrL   rM   r!   )r(   r)   r*   r1  r2  r3  r.   r.   r/   test_legend_stackplot  s    

r5  c                  C   s<   t  \} }t  \}}|tdtd}||d d S )NrO   foo)r   r   rA   rZ   r!   )r(   r)   Zfig2Zax2Zbrsr.   r.   r/   test_cross_figure_patch_legend!  s    r7  c               
   C   s   t  \} }|jtjgtjgddddd}||gdg t  \} }dD ]B}d}tjd|\}}d	tj| }|j|||||d
dd qJ|  |d d S )Nr5   r   rO   )marker	facecolorr   sr   )redZgreenZbluei  rV   g      i@r   none)r   r:  r   alpha
edgecolorsT)	r   r   r   r   nanr!   r   randZgrid)r(   r)   r   r,   nr*   r+   Zscaler.   r.   r/   test_nanscatter)  s    rB  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sJ d S )NrJ   rK   kr5   r   )r,   r8  r   r   r   vrV   )r   r   r   r!   mlegendZ_get_legend_handles_labelsr   )r(   r)   handZlabr.   r.   r/   test_legend_repeatcheckok=  s    rG  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   rO   )r,   )r6  r6  r6  r9   r:   g      g@)rZ   r   r   r!   r   rL   rM   )r'   rA  r.   r.   r/   test_not_covering_scatterL  s    rH  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 )Nir   r        r
   )Z	transformr6  rA   r9   r:   )mtransformsZAffine2D	translater   rv   r   r<   r   r   Z	transDatar!   )offsetr*   r.   r.   r/   #test_not_covering_scatter_transformX  s
    rN  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sJ qd S )N)r   r   )r   r   )r   333333?)ri   ri   gffffff?ri   rh   r   r   rO  rF   z--rO   )
linestylesr   z-.)rP  :)Zline1Zline2zline 3r   )
mcollectionsZLineCollectionr   r   Zadd_collectionr!   r   r   Zget_linestylesZ_dash_pattern)Zlines1r  Zlines3Zlc1Zlc2Zlc3r(   r)   re   h1h2h3Zohlhr.   r.   r/   !test_linecollection_scaled_dashesd  s      


rW  c                  C   s.   t  \} }|jtddd |jdd dS )z(Test legend handler with numpoints <= 1.r   r   r7   r   rt   N)r   r   r<   rZ   r!   rw   r.   r.   r/   test_handler_numpointsx  s    rY  c                  C   s   t  \} }|jddddd tt}|  W d   n1 sF0    Y  t|dks`J t  \}}|t	j
ddd t " td |  W d   n1 s0    Y  dS )	z2Test that Text artists with labels raise a warningr   textr   )r*   r+   r:  r   Nr   )r
   r
   error)r   r   rZ  r|   r}   r~   r!   r   Z
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr   )r(   r)   r   fr.   r.   r/   test_text_nohandler_warning  s    &

ra  c                   C   s   t jg g dd t   dS )z1Test legend when bar chart is empty with a label.r   r7   N)r   rA   r!   r.   r.   r.   r/    test_empty_bar_chart_with_legend  s    rb  c                  C   sD   t  \} }|jtddd |jddd}|  dks@J d S )Nr3   r   r7   Tw)r   r9  r   )r   r   r<   rZ   r!   Z	get_frameZ	get_alphar   r.   r.   r/   test_shadow_framealpha  s    rd  c                  C   sJ   t  \} }|td | }|  dks6J |  rFJ d S )Nr
    )r   r   r<   rZ   r!   	get_titler   Zget_visibler   r.   r.   r/   test_legend_title_empty  s
    rg  c                  C   s   t jdd\} }|jtddd | }|| j j}t jdd\} }|jtddd | }|| j j}t	
|d d|ksJ d S )	Nr3   r+  r
   Aardvarkr7      rV   rF   )r   r   r<   rZ   r!   r^   r[   Zget_rendererZx0r|   Zapprox)r(   r)   re   Zx01Zx02r.   r.   r/    test_legend_proper_window_extent  s    rk  c                  C   sP   t jdd\} }|jtddd | }|  }| j  |  |  d S )Nr3   rh  r
   ri  r7   )r   r   r<   rZ   r!   r[   r\   r^   )r(   r)   re   leg2r.   r.   r/   "test_window_extent_cached_renderer  s    
rm  c            	      C   s  t td tt& t jdddddd W d    n1 sD0    Y  t jdtdddd} |  	 dksxJ t j
dd	d
d\}}|j}|d td |d jddd}|  dksJ |d td |d jddddd}|  dks
J |d td d tjd< |d jdddid}|  tjd ksXJ |d	 td |d	 jdd}|  tjd k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
   ri     serif)familysize)r   title_fontsizetitle_fontproperties)r   rs  rV   rO   )r
   r   )rR   r   )r   rr  r   zlegend.title_fontsizerp  z	font.sizer   rs   r   r   )r   r<   rZ   r|   r   
ValueErrorr!   r	   rf  get_sizer   rW   Zget_fontsizer   r   )	re   r(   axesZleg0Zleg1rl  Zleg3Zleg4Zleg5r.   r.   r/   #test_legend_title_fontprop_fontsize  sJ    $





rx  	alignment)rg   r  r   c                 C   sV   t  \}}|jtddd |jd| d}| d j| ksBJ | | ksRJ d S )Nr
   r   r7   ri  )r   ry  r   )r   r   r<   rZ   r!   get_childrenr?   get_alignmentry  r(   r)   re   r.   r.   r/   test_legend_alignment  s
    r}  c                 C   sZ   t  \}}|jtddd | }||  | d j| ksFJ | | ksVJ d S )Nr
   r   r7   r   )	r   r   r<   rZ   r!   Zset_alignmentrz  r?   r{  r|  r.   r.   r/   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	|
 | sJ qd S )
Nr
   r   #1r7   rV   #2rO   #3Z
labelcolor)r   r   r<   r   r;   r!   r   r   r'   
same_color	get_colorr,   r(   r)   re   rZ  r.   r.   r/   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	
| |sJ qd S )Nr
   r   r  r7   rV   r  rO   r  r   r   r   r  r   r   r<   r   r;   r!   r   r   r   r'   r  r  r(   r)   re   rZ  r,   r.   r.   r/   test_legend_labelcolor_list  s       r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr
   r   r  r   r   r,   rV   r  r   rO   r  r   	linecolorr  r  r  r  r.   r.   r/    test_legend_labelcolor_linecolor  s    """r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr
   r   r  r   r   rV   r  r   rO   r  r   r  r  r  r   r   r   r   r;   r!   r   r   r   r'   r  r  r  r.   r.   r/   /test_legend_pathcollection_labelcolor_linecolor#  s    """r  c                  C   st   t  \} }tj g dd}|jtdtdd d|d |jdd}|	 \}t
j| dspJ d S )	Nr  r
   r   r  r   r  r  black)r   r   r   r   default_rngchoicer   r;   r!   r   r   r'   r  r  )r(   r)   r'   re   rZ  r.   r.   r/   8test_legend_pathcollection_labelcolor_linecolor_iterable/  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)   re   rZ  r.   r.   r/   4test_legend_pathcollection_labelcolor_linecolor_cmap;  s
    $
r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr
   r   r  r   r   markeredgecolorrV   r  r   rO   r  r   r  r  r  r  r  r.   r.   r/   &test_legend_labelcolor_markeredgecolorF  s    """r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr
   r   r  r   r   r   rV   r  r   rO   r  r   r  r  r  r  r  r.   r.   r/   5test_legend_pathcollection_labelcolor_markeredgecolorR  s    """r  c                  C   s   t  \} }tj g dd}|jtdtdd d|d |jdd}t	|
 dgD ]\}}tj| |s`J q`d S )	Nr  r
   r   r  r  r  r  rC  r   r   r   r   r  r  r   r;   r!   r   r   r   r'   r  r  r(   r)   r'   re   rZ  r,   r.   r.   r/   >test_legend_pathcollection_labelcolor_markeredgecolor_iterable^  s    "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| |sdJ qdd S )Nr
   r  ZReds)r   r   r   Zcmapr  r  rC  r   r   r   cmZviridisr   r   r@  r   r;   r!   r   r   r'   r  r  )r(   r)   r>  re   rZ  r,   r.   r.   r/   :test_legend_pathcollection_labelcolor_markeredgecolor_cmapj  s    	r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr
   r   r  r   r   markerfacecolorrV   r  r   rO   r  r   r  r  r  r  r  r.   r.   r/   &test_legend_labelcolor_markerfacecolor}  s    """r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr
   r   r  r   r   r9  rV   r  r   rO   r  r   r  r  r  r  r  r.   r.   r/   5test_legend_pathcollection_labelcolor_markerfacecolor  s    """r  c                  C   s   t  \} }tj g dd}|jtdtdd d|d |jdd}t	|
 dgD ]\}}tj| |s`J q`d S )	Nr  r
   r   r  r  r  r  rC  r  r  r.   r.   r/   >test_legend_pathcollection_labelcolor_markerfacecolor_iterable  s    "r  c                  C   s   t  \} }tjtjd}|jt	dt	ddt	d|d |j
dd}t| dgD ]\}}tj| |sbJ qbd S )Nr
   r  )r   r   r9  r  r  rC  r  )r(   r)   Z
facecolorsre   rZ  r,   r.   r.   r/   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	
| | sJ qd S )
Nr
   r   r  r7   rV   r  rO   r  legend.labelcolor)r   r   r<   r   r;   r   r   r!   r   r'   r  r  r  r.   r.   r/   %test_legend_labelcolor_rcparam_single  s       
r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr
   r   r  r   r  rV   r  r   rO   r  r   r  r  r  r   r   r<   r   r;   r   r   r!   r   r   r'   r  r  r  r.   r.   r/   (test_legend_labelcolor_rcparam_linecolor  s    """
r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr
   r   r  r   r  rV   r  r   rO   r  r   r  r  r  r  r  r.   r.   r/   .test_legend_labelcolor_rcparam_markeredgecolor  s    """
r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr
   r   r  r   r  rV   r  r   rO   r  r   Zmecr  r  r  r  r.   r.   r/   4test_legend_labelcolor_rcparam_markeredgecolor_short  s    """
r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr
   r   r  r   r  rV   r  r   rO   r  r   r  r  r  r  r  r.   r.   r/   .test_legend_labelcolor_rcparam_markerfacecolor  s    """
r  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr
   r   r  r   r  rV   r  r   rO   r  r   Zmfcr  r  r  r  r.   r.   r/   4test_legend_labelcolor_rcparam_markerfacecolor_short  s    """
r  c                  C   sD   t  } |  rJ | d |  s*J | d |  r@J d S )NTF)r   r!   get_draggableZset_draggabler!   r.   r.   r/   test_get_set_draggable  s    

r  	draggable)TFc                 C   s>   t  \}}|jtddd |j| d}| | u s:J d S )Nr
   Zshabnamsr7   )r  )r   r   r<   rZ   r!   r  )r  r(   r)   re   r.   r.   r/   test_legend_draggable  s    r  c                  C   s   t jg ddddd\} }}t  }|jD ]}|d q*| d d |d  d d ksbJ | d d |d  d d ksJ d S )	Nr   g      ?datar;  )r=  r   r,   rK   r@   r   )r   rY   r!   r   	set_alphaget_facecolorget_edgecolor)r*   rA  hhr!   rV  r.   r.   r/   test_alpha_handles  s    
(r  c                 C   sb   dt jd< dt jd< dt jd< t \}}|jdddd	 |jd
d |j  d| jvs^J d S )Nro  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputr7   r   rt  z Font family ['serif'] not found.)	r   r   r   r   r<   r!   r[   r\   rZ  )Zcaplogr(   r)   r.   r.   r/   test_usetex_no_warn  s    



r  c                  C   s   t  \} }| j  tdD ]}|jtd|d qtddi |	 }W d    n1 sb0    Y  t
t}| | W d    n1 s0    Y  t|dksJ |D ]}t|jdksJ qd S )NrJ    r7   z
legend.locr9   rV   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   r[   r\   rZ   r<   r   r;   r   r!   r|   r}   r~   draw_artistr   r   r   )r(   r)   idxr!   recordsr   r.   r.   r/   test_warn_big_data_best_loc*  s    
&(r  c                  C   sP   t  \} }| j  tdD ]}|jtd|d q|d}| 	| d S )NrJ  r  r7   r9   )
r   r   r[   r\   rZ   r<   r   r;   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sdJ d S )Nr   r   rV   r   rs   rT   r7   c                 S   s   g | ]}|  qS r.   r   r   entryr.   r.   r/   r   S  r   z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>r  r  )r   r   r<   r!   r   )r  r*   r+   r(   r)   re   legend_textsr.   r.   r/   'test_plot_multiple_input_multiple_labelE  s    r  r   r   r   c                 C   sn   g d}ddgddgddgg}t  \}}|j||| d | }dd	 | D }|t| gd ksjJ d S )
Nr   r   rV   r   rs   rT   r7   c                 S   s   g | ]}|  qS r.   r   r  r.   r.   r/   r   c  r   z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r<   r!   r   r   )r   r*   r+   r(   r)   re   r  r.   r.   r/   %test_plot_multiple_input_single_labelW  s    r  c                 C   sh   g d}g d}t  \}}|j||| d | }t| dksHJ | d  t| ksdJ d S )Nr   )rV   r   r   r7   r   r   )r   r   r<   r!   r   r   r   r   )r  r*   r+   r(   r)   re   r.   r.   r/   %test_plot_single_input_multiple_labelg  s    r  c                  C   sp   t tR g d} ddgddgddgg}g d}t \}}|j| ||d W d    n1 sb0    Y  d S )	Nr   r   rV   r   rs   rT   )r  r  Zmediumr7   )r|   r   ru  r   r   r<   )r*   r+   r   r(   r)   r.   r.   r/   3test_plot_multiple_label_incorrect_length_exceptionv  s    r  c                  C   s:   t  \} }|jg dg dg ddddd |  d S )Nr   r   r   r   faceZFill)r9  r   r   )r   r   r   r!   rw   r.   r.   r/   test_legend_face_edgecolor  s
    r  c                  C   sT   t  \} }|jddgddgdd | }|j|u s:J | d j|u sPJ d S )Nr   rV   rO   rs   rI   r7   r   )r   r   r<   r!   rw  r   r   r.   r.   r/   test_legend_text_axes  s
    r  c                  C   sn   t  \} }|jddgddgdd tjdgdgddg}|j|dgdd}|d  |jd  ksjJ d S )Nr   r   rD  )r8  ri  rX  )r   r   r   mlinesLine2Dr!   r   r   )r(   r)   r-   re   r.   r.   r/   test_handlerline2d  s
    r  c                  C   sF   t   } |  }|jddgddgdd |  }|j| u sBJ d S )Nr   r   rI   r7   )r   ru   Z
subfiguresr   r<   r!   )Zsubfigr)   re   r.   r.   r/   test_subfigure_legend  s
    r  c                  C   s   t jddgddgddd} t   d }|d | d d t|  d d d ks`J | d d t|  d d d ksJ d S )	Nr   r   rV   rO   z#123456r   )r,   r   r   )r   r   r!   Zget_patchesr  r  tupler  )Zpcr   r.   r.   r/   -test_setting_alpha_keeps_polycollection_color  s
    
,r  c            	      C   s   g d} t  \}}dd | D }g d}dd |D }|||}dd | D }dd | D }||  kr|| ksn J ||ksJ d S )N)r   *rD  c                 S   s"   g | ]}t jd gd gd|dqS )r   None)Zlsr8  )r  r  )r   markr.   r.   r/   r     s   z3test_legend_markers_from_line2d.<locals>.<listcomp>)r6  rA   Zxyzzyc                 S   s   g | ]}|  qS r.   r   r   rI   r.   r.   r/   r     r   c                 S   s   g | ]}|  qS r.   r   r  r.   r.   r/   r     r   c                 S   s   g | ]}|  qS r.   r   )r   rZ  r.   r.   r/   r     r   )r   r   r!   	get_linesr   )	_markersr(   r)   r   r&   r   r!   Znew_markersZ
new_labelsr.   r.   r/   test_legend_markers_from_line2d  s    r  c                 C   s,   g d}d}| j ||d |j ||d d S )N)r   r   r   r   er`  rO   )Zncol)rQ   r  )r   r   stringsrQ   r.   r.   r/   test_ncol_ncols  s    r  )yr   platformZunittestr   r]  numpyr   Znumpy.testingr   r|   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   Zmatplotlib.pyplotZpyplotr   Z
matplotlibr   Zmatplotlib.patchesZpatchesrn   Zmatplotlib.transformsZ
transformsrK  Zmatplotlib.collectionsrR  Zmatplotlib.linesr   r  Zmatplotlib.legend_handlerr   Zmatplotlib.legendr!   rE  r   Zmatplotlib.font_managerr	   r0   r=   rD   rN   rf   rq   rx   r   r   r   machiner   r   r   r   r   r   r   r   r   r   r   r  r0  r5  r7  rB  rG  rH  rN  rW  rY  ra  rb  rd  rg  rk  rm  rx  r  Zparametrizer}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ro   r  intr  r  r  r  r  r  r  r  r  r  r.   r.   r.   r/   <module>   s  
	
	
 


	







 

`@)


	&

	

	
	
	


			