o
    i˿                  	   @   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$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! Z0ed"gddd#d$ Z1ed%gde2 d&krd nd'd(d)d* Z3ed+gde2 d&krd nd'd(d,d- Z4ed.gdd/d(d0d1 Z5ed2gde2 d&krd nd3d(d4d5 Z6ed6d7gddd8d9 Z7ed:gddd;d< Z8ed=gdd>d?d@dA Z9dBdC Z:dDdE Z;edFgdGdHdI Z<G dJdK dKZ=G dLdM dMZ>dNdO Z?edPgdQdR Z@dSdT ZAdUdV ZBdWdX ZCedYgdZd[ ZDed\gd]d^ ZEd_d` ZFdadb ZGdcdd ZHdedf ZIedggddhd?didj ZJdkdl ZKdmdn ZLdodp ZMdqdr ZNdsdt ZOdudv ZPe	jQRdwdxdydz ZSe	jQRd{d|d}d~ ZTe	jQRd{ddd ZUe	jQRdwdxdd ZVe	jQRdddd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zde	jQRdddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd Zke	jQRdddd Zldd Zmedd Zndd Zodd Zpe	jQRdddgdeqddggdd Zre	jQRdddesgddƄ Zte	jQRdddgdeqddggddȄ Zuddʄ Zvdd̄ Zwdd΄ ZxddЄ Zydd҄ ZzddԄ Z{ddք Z|e dd؄ Z}ddڄ Z~dd܄ Zddބ Zdd Zdd Zdd Zdd ZdS )    N)mock)assert_allclose)check_figures_equalimage_comparison)needs_usetex)HandlerTuple)_api
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scatterget_legend_handles_labelscollectionsOrderedDictlegendvalueskeys)XYlabelscolorsfigaxxyr   colorhandlesr"    r/   k/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddict   s   
r1   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/   r0   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 )r3   r4   edgem)alignr-   Nr   r   upZdownr:   r;   )r   r   r   r<   barr"   )r)   r*   r+   b1b2r/   r/   r0   test_legend_auto24   s
   
$rG   Zlegend_auto3c                  C   sV   t  \} }g d}g d}|j||ddd |dd |dd |jdd	 d
S )r3   )?皙?rI   rH   rH   r   )ffffff?rJ   皙?rK   r   r   zo-liner8                 ?r:   r;   N)r   r   r=   set_xlimset_ylimr"   )r)   r*   r+   r,   r/   r/   r0   test_legend_auto3>   s   rQ   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)rD   stepZ
stepfilledr   r   	   r   Legend)Zbinsr   Zhisttyper:   r;   r      N)r   r   r   flat	set_titlehistranger"   canvasdrawappendget_window_extenttransformed	transAxesinvertedr   bounds)r)   axs
leg_bboxesr*   Zhtlegr/   r/   r0   test_legend_auto4J   s   
"
ri   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.
    rY   )g333333#@g333333@rS   centerr:   )r   rH   皙?皙?C1)Zxywidthheightfcr   r   rH   rN   rI   )rq   )r   r   r   ih  rK   ZC0)ro   rq   z	A segmentr8   r;   N)r   r   r   rZ   mpatchesZEllipseZPolygonr   arrayZWedge	add_patchr=   r"   r^   r_   r`   ra   rb   rc   rd   r   re   )r)   rf   rg   r*   r   Z_patchrh   r/   r/   r0   test_legend_auto5`   s,   $
ru   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      r6   r   r8   gffffff@u   DéveloppésrB   Z__nolegend__r:   )	numpointsr   )r   figureZadd_subplotr=   r   r<   linspacer"   r)   r*   r/   r/   r0   test_various_labels   s   
r|   c                  C   st   t  \} }|jddgdd\}tjtjdd |j|gd}W d   n1 s*w   Y  t|j	dks8J 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_foor8   zwith an underscorematchr.   N)
r   r   r=   pytestwarnsr   ZMatplotlibDeprecationWarningr"   lenlegend_handles)r)   r*   rL   r"   r/   r/   r0   )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   r8   r   z:xr+      rB   dZdiamondr:   F)r   Zmarkerfirst)r   r   r=   r   r<   Z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   rY   rR   r   rY   rR   rw   z-x)rR   rw   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)rx   handler_map)r   r   r=   r"   r   )r)   r*   p1p2Zp3r/   r/   r0   test_multiple_keys   s   
r   zrgba_alpha.pngx86_64g{Gz?)r2   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 awayrk   r;   r   r   r   r   )r   r   r=   r]   r"   legendPatchset_facecolorr)   r*   rh   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   rk   r;   r   )	r   r   r=   r]   mplr	   r"   r   r   r   r/   r/   r0   test_alpha_rcparam   s   "r   fancyrK   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 )Nrv   r   r   zo--ZXXr8   r   rB   zXX
XXr   )ZxerrZyerrr   r   rN   rY   T	My legendr   )r   r   rT   shadowtitlerx   )r   subplotr=   r   r   r<   Zerrorbarr"   r/   r/   r/   r0   
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   r4   Zmylabelr   )r   r   r   )r   )r   rz   r   r=   r"   )r+   r,   r/   r/   r0   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 )Nrv   r   r   rB   threer8   r   rN   r   r   )r   r   r   r   zlegend.scatterpointsone)	r   ry   r   r   r   r<   r"   r   rcParams)r*   r/   r/   r0   test_rc   s   
 

 
r   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   r4   r5   r6   r7   r8   
upper left)r   moder9   right
lower leftrY   )r   r   rT   )	r   r   r   r   r<   r   r=   r"   
add_artist)Zlegend_modesr)   rf   r+   r*   r   l1l2r/   r/   r0   test_legend_expand   s   


r   Zhatchingdefault)r2   stylec               	   C   s  dt jd< t  \} }t jdddddd}|| t jdddd	d
dd}|| t jddddddd}|| t jdddd	dd
dd}|| |jg dg dg dddd |jg dg dg ddddd |dd |dd |jddd d S ) N   ztext.kerning_factor)r   r   333333?xxzPatch
default color
filled)hatchr   )Q?r   z||rn   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   )rl   rl   rl   )rH   rN   rH   +zPath
default color)r   gQ?g)\(?ZC2zPath
explicit colorg{Gz皙?rw   )ZhandlelengthZhandleheight)	r   r   r   Z	Rectanglert   fill_betweenrO   rP   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=   r]   r"   removeZlegendsZ
get_legend)r)   r*   linesrh   r/   r/   r0   test_legend_remove   s   
r   c            	      C   s   t  \} }d}d}g d}g d}|j|||d |d d |j|||d |d d |j|||d |d d |jdd}d	d
 | D }dd
 |jD }|tt|ksZJ |tt|ksdJ dS )z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label).,r6   r   r8   rY   Treversec                 S      g | ]}|  qS r/   get_text).0tr/   r/   r0   
<listcomp>7      z:test_reverse_legend_handles_and_labels.<locals>.<listcomp>c                 S   r   r/   
get_marker)r   hr/   r/   r0   r   8  r   N)r   r   r=   r"   	get_textsr   listreversed)	r)   r*   r+   r,   r'   markersrh   Zactual_labelsZactual_markersr/   r/   r0   &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firstr8   rY   bxsecondTr   N)r   r=   r"   )fig_testfig_refr*   r/   r/   r0   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w   Y  |t  |dg d S )Nr   hello worldr8   matplotlib.legend.Legendr   r=   r]   r   r   r"   assert_called_withgcaselfr   rX   r/   r/   r0   test_legend_no_argsM  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_labelsS  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 Artistr}   )r   r=   r]   r   raises	TypeErrorr"   )r   r   r/   r/   r0   #test_legend_positional_handles_onlyY  s   "z6TestLegendFunction.test_legend_positional_handles_onlyc                 C   s`   t jtddd}td}t dg W d    n1 sw   Y  |t  |dg d S )Nr   r   r8   r   foobarr   r   r/   r/   r0   "test_legend_positional_labels_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   r8   r   r   r   r;   r   r   r/   r/   r0   test_legend_three_argsf  s
   z)TestLegendFunction.test_legend_three_argsc                 C   sr   t jtddd}td}|dgf|_t jddid W d    n1 s'w   Y  |t  gddi d S )Nr   r   r8   z,matplotlib.legend._get_legend_handles_labels1rY   )r   )	r   r=   r]   r   r   return_valuer"   r   r   )r   r   Zhandles_labelsr/   r/   r0   test_legend_handler_mapl  s   
z*TestLegendFunction.test_legend_handler_mapc                 C   s   t  \}}tddd}|j||dd\}|j|d| dd\}|j|d| d	d\}td
}|j||gd W d    n1 sDw   Y  ||||gd	dg d S )Nr   r      r+   r8   rY   2xrR   Z3xr   r   	r   r   r   rz   r=   r   r   r"   r   )r   r)   r*   r+   ln1ln2Zln3rX   r/   r/   r0   test_legend_kwargs_handles_onlyt  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   rY   r   r+   r   r'   r   )r   r)   r*   r+   r   r   rX   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   rY      sinr8   cosr   r   r   )r'   r.   )r   r   r   rz   pir=   r   r   r   r   r"   r   )r   r)   r*   thlnslncrX   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
ksYJ d S )Nr   rY   r   r   r8   r   r   r   r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rz   r   r=   r   r   r   r   UserWarningr"   r   strmessage)r   r)   r*   r   r  r  recordr/   r/   r0   test_warn_mixed_args_and_kwargs  s   z2TestLegendFunction.test_warn_mixed_args_and_kwargsc                 C   s   ddl m} |d}| }|jg dg ddd\}|jg dg ddd\}td	}t  W d    n1 s<w   Y  ||||gddg d S )
Nr   )host_subploto   r   r   rY   ZDensityr8   )r   rR   rY   ZTemperaturer   )	Zmpl_toolkits.axes_grid1r
  Ztwinxr=   r   r   r   r"   r   )r   r
  hostparr   r   rX   r/   r/   r0   test_parasite  s   
z TestLegendFunction.test_parasiteN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r  r	  r  r/   r/   r/   r0   r   K  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=   r]   r   r   r"   r   transFigurer   r)   r*   r   rX   r/   r/   r0   test_legend_handle_label  s   
z1TestLegendFigureFunction.test_legend_handle_labelc                 C   sj   t  \}}|jtddd}td}|  W d    n1 s#w   Y  |j||dg|jd d S )Nr   r   r8   r   r  r  r  r/   r/   r0   r     s   

z,TestLegendFigureFunction.test_legend_no_argsc                 C   sj   t  \}}|td}td}|dg W d    n1 s#w   Y  |j||dg|jd d S )Nr   r   r   r  r  r  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=   r]   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   rY   r   r          @r   r   r   )r   r'   r.   )r   r  )r   r   r=   r]   r   r<   r   r   r"   r   r  )r   r)   rf   r   lines2rX   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ksNJ d S )	Nr   rY   r   r   r  r   r   r  )r   r   r=   r]   r   r<   r   r   r  r"   r   r  r  )r   r)   rf   r   r  r  r/   r/   r0   test_warn_args_kwargs  s   z.TestLegendFigureFunction.test_warn_args_kwargsN)	r  r  r  r  r   r  r  r  r   r/   r/   r/   r0   r    s    
r  c                  C   sN  dd dD } | dd dD 7 } | dd dD 7 } | dd dD 7 } g d}g d	}g d
}g d}||||||||||||g}g dg dg dg dg dg dg dg dg dg dg dg dg}t | D ]:\}}t| tjddd\}	}
|
jtddd |	jd| d}|	  t|
	 j
||  t|	 j
||  qjd S )Nc                 S      g | ]}d | qS )zupper r/   r   posr/   r/   r0   r     r   z.test_figure_legend_outside.<locals>.<listcomp>)r  rk   r   c                 S   r!  )zlower r/   r"  r/   r/   r0   r     r   c                 S   r!  )zleft r/   r"  r/   r/   r0   r     r   )lowerrk   upperc                 S   r!  )zright r/   r"  r/   r/   r0   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/  r2  )     ؄@r*  r1  r2  )r*       q@r,       s@)r0  r*  r1  r2  )r3  r4  r1  r5  )r3  r+  r1  r-  Tr4   )Zconstrained_layoutdpir   ZBoo1r8   zoutside r;   )	enumerateprintr   r   r=   r]   r"   Zdraw_without_renderingr   ra   Zextents)ZtodosZupperextZlowerextZleftextZrightextZaxbbZlegbbnntodor)   rf   rh   r/   r/   r0   test_figure_legend_outside  sN   

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   rN   r  r   g      @rY   )y1y2y3r   )r   r   )r   F   r:   r;   N)r   r   r   rz   Z	stackplotrO   rP   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 )NrR   foo)r   r   rD   r]   r"   )r)   r*   Zfig2Zax2Zbrsr/   r/   r0   test_cross_figure_patch_legend  s   rB  c               
   C   s   t  \} }|jtjgtjgddddd}||gdg t  \} }dD ]!}d}tjd|\}}d	tj| }|j|||||d
dd q%|  |d d S )Nr6   r   rR   )marker	facecolorr   sr   )redgreenbluei  rY   g      i@r   none)r   rE  r   alpha
edgecolorsT)	r   r   r   r   nanr"   r   randgrid)r)   r*   r   r-   nr+   r,   scaler/   r/   r0   test_nanscatter#  s   rQ  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 )NrM   rN   kr6   r   )r-   rC  r   r   r   vrY   )r   r   r   r"   mlegendZ_get_legend_handles_labelsr   )r)   r*   handZlabr/   r/   r0   test_legend_repeatcheckok7  s   rV  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   rR   )r-   )rA  rA  rA  r:   r;   g      皙@)r]   r   r   r"   r   rO   rP   )r(   rO  r/   r/   r0   test_not_covering_scatterF  s   rX  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	transformrA  rD   r:   r;   )mtransformsZAffine2D	translater   rz   r   r=   r   r   Z	transDatar"   )offsetr+   r/   r/   r0   #test_not_covering_scatter_transformR  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?)rm   rm   gffffff?rm   rl   r   r   r_  rI   z--rR   )
linestylesr   z-.)r`  :)line1line2zline 3r   )
mcollectionsZLineCollectionr   r   Zadd_collectionr"   r   r   Zget_linestylesZ_dash_pattern)Zlines1r  Zlines3Zlc1Zlc2Zlc3r)   r*   rh   Zh1Zh2Zh3Zohlhr/   r/   r0   !test_linecollection_scaled_dashes^  s     


rf  c                  C   s.   t  \} }|jtddd |jdd dS )z(Test legend handler with numpoints <= 1.r   r   r8   r   rx   N)r   r   r=   r]   r"   r{   r/   r/   r0   test_handler_numpointsr  s   rh  c                  C   s   t  \} }|jddddd tt}|  W d   n1 s#w   Y  t|dks0J t  \}}|t	j
ddd t  td |  W d   dS 1 sZw   Y  dS )	z2Test that Text artists with labels raise a warningr   textr   )r+   r,   rE  r   Nr   )r   r   error)r   r   ri  r   r   r  r"   r   Z
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr   )r)   r*   r  fr/   r/   r0   test_text_nohandler_warningz  s   



"rp  c                   C   s   t jg g dd t   dS )z1Test legend when bar chart is empty with a label.r   r8   N)r   rD   r"   r/   r/   r/   r0    test_empty_bar_chart_with_legend  s   rq  zshadow_argument_types.pngZmpl20c               	   C   s   t  \} }|jg ddd |jddd|jddd|jd	d
ddd|jddddd|jdddddf}|D ]}|| q:|jdd d S )Nr   r   r8   r   Tr   r   upper rightFr   rF  rI   )r-   rJ  center right)rI   rm   r   )r-   Zoyr   ztab:cyanr   )r-   oxlower rightr;   )r   r   r=   r"   r   )r)   r*   Zlegslr/   r/   r0   test_shadow_argument_types  s"   	ry  c                  C   s`   t  \} }|jg ddd tjtdd |jddd W d    d S 1 s)w   Y  d S )	Nr   r   r8   zdict or boolr}   r   Zaardvarkrr  )r   r   r=   r   r   
ValueErrorr"   r{   r/   r/   r0   test_shadow_invalid_argument  s
   "r{  c                  C   sD   t  \} }|jtddd |jddd}|  dks J d S )Nr4   r   r8   Tw)r   rD  r   )r   r   r=   r]   r"   Z	get_frameZ	get_alphar   r/   r/   r0   test_shadow_framealpha  s   r}  c                  C   sJ   t  \} }|td | }|  dksJ |  r#J d S )Nr    )r   r   r=   r]   r"   	get_titler   Zget_visibler   r/   r/   r0   test_legend_title_empty  s
   r  c                  C   s   t jdd\} }|jtddd | }|| j j}t jdd\} }|jtddd | }|| j j}t	
|d d|ksHJ d S )	Nr4   r6  r   Aardvarkr8      rY   rI   )r   r   r=   r]   r"   ra   r^   Zget_rendererZx0r   Zapprox)r)   r*   rh   Zx01Zx02r/   r/   r0    test_legend_proper_window_extent  s   r  c                  C   sP   t jdd\} }|jtddd | }|  }| j  |  |  d S )Nr4   r  r   r  r8   )r   r   r=   r]   r"   r^   r_   ra   )r)   r*   rh   leg2r/   r/   r0   "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)r   title_fontsizetitle_fontproperties)r   r  rY   rR   )r   r   )rU   r   )r   r  r   zlegend.title_fontsizer  z	font.sizer   rw   r   r   )r   r=   r]   r   r   rz  r"   r
   r  get_sizer   rZ   Zget_fontsizer   r   )	rh   r)   axesZleg0Zleg1r  Zleg3Zleg4Zleg5r/   r/   r0   #test_legend_title_fontprop_fontsize  sL   





r  	alignment)rk   r  r   c                 C   sV   t  \}}|jtddd |jd| d}| d j| ks!J | | ks)J d S )Nr   r   r8   r  )r   r  r   )r   r   r=   r]   r"   get_childrenrA   get_alignmentr  r)   r*   rh   r/   r/   r0   test_legend_alignment  s
   r  r   rj   c                 C   sL   t  \}}|jtddd | }||  | tjj	|  ks$J d S )Nr   r   r8   )
r   r   r=   r]   r"   set_loc_get_locrT  rX   codesr   r)   r*   rh   r/   r/   r0   test_ax_legend_set_loc  s
   
r  )zoutside rightr   c                 C   sf   t  \}}|jtddd | }||  | dr#|  d n| } | t	j
j|  ks1J d S )Nr   r   r8   Zoutsider   )r   r   r=   r]   r"   r  
startswithsplitr  rT  rX   r  r  r/   r/   r0   test_fig_legend_set_loc  s   
r  c                 C   sZ   t  \}}|jtddd | }||  | d j| ks#J | | ks+J d S )Nr   r   r8   r   )	r   r   r=   r]   r"   Zset_alignmentr  rA   r  r  r/   r/   r0   test_legend_set_alignment"  s   
r  r-   )rF  rI  )r   r   r   c                 C   s   t  \}}|jtdtdd dd |jtdtdd dd |jtdtdd dd |j| d	}| D ]}tj	|
 | sMJ q@d S )
Nr   r   #1r8   rY   #2rR   #3Z
labelcolor)r   r   r=   r   r<   r"   r   r   r(   
same_color	get_colorr-   r)   r*   rh   ri  r/   r/   r0   test_legend_labelcolor_single,  s      r  c                  C   s   t  \} }|jtdtdd dd |jtdtdd dd |jtdtdd dd |jg d	d
}t| g d	D ]\}}tj	
| |sVJ qGd S )Nr   r   r  r8   rY   r  rR   r  r   r   r   r  r   r   r=   r   r<   r"   r   r   r   r(   r  r  r)   r*   rh   ri  r-   r/   r/   r0   test_legend_labelcolor_list9  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-   rY   r  r   rR   r  r   	linecolorr  r  r  r  r/   r/   r0    test_legend_labelcolor_linecolorE     """r  c                  C   r  )Nr   r   r  r   r   rY   r  r   rR   r  r   r  r  r  r   r   r   r   r<   r"   r   r   r   r(   r  r  r  r/   r/   r0   /test_legend_pathcollection_labelcolor_linecolorQ  r  r  c                  C   st   t  \} }tj g dd}|jtdtdd d|d |jdd}|	 \}t
j| ds8J 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(   rh   ri  r/   r/   r0   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*   rh   ri  r/   r/   r0   4test_legend_pathcollection_labelcolor_linecolor_cmapi  s
   $
r  c                  C   r  )Nr   r   r  r   r   markeredgecolorrY   r  r   rR   r  r   r  r  r  r  r  r/   r/   r0   &test_legend_labelcolor_markeredgecolort  r  r  c                  C   r  )Nr   r   r  r   r   r   rY   r  r   rR   r  r   r  r  r  r  r  r/   r/   r0   5test_legend_pathcollection_labelcolor_markeredgecolor  r  r  c                  C      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 q0d S )	Nr  r   r   r  r  r  r  rR  r   r   r   r   r  r  r   r<   r"   r   r   r   r(   r  r  r)   r*   r(   rh   ri  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  ZReds)r   r   r   Zcmapr  r  rR  r   r   r   cmZviridisr   r   rM  r   r<   r"   r   r   r(   r  r  )r)   r*   rK  rh   ri  r-   r/   r/   r0   :test_legend_pathcollection_labelcolor_markeredgecolor_cmap  s   	r  c                  C   r  )Nr   r   r  r   r   markerfacecolorrY   r  r   rR   r  r   r  r  r  r  r  r/   r/   r0   &test_legend_labelcolor_markerfacecolor  r  r  c                  C   r  )Nr   r   r  r   r   rD  rY   r  r   rR   r  r   r  r  r  r  r  r/   r/   r0   5test_legend_pathcollection_labelcolor_markerfacecolor  r  r  c                  C   r  )	Nr  r   r   r  r  r  r  rR  r  r  r/   r/   r0   >test_legend_pathcollection_labelcolor_markerfacecolor_iterable  r  r  c                  C   s   t  \} }tjtjd}|jt	dt	ddt	d|d |j
dd}t| dgD ]\}}tj| |s@J q1d S )Nr   r  )r   r   rD  r  r  rR  r  )r)   r*   Z
facecolorsrh   ri  r-   r/   r/   r0   8test_legend_pathcollection_labelcolor_markfacecolor_cmap  s   r  c                 C   s   t  \}}|jtdtdd dd |jtdtdd dd |jtdtdd dd | tjd	< | }| D ]}tj	
| | sPJ qCd S )
Nr   r   r  r8   rY   r  rR   r  legend.labelcolor)r   r   r=   r   r<   r   r   r"   r   r(   r  r  r  r/   r/   r0   %test_legend_labelcolor_rcparam_single  s      
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  rY   r  r   rR   r  r   r  r  r  r   r   r=   r   r<   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  rY   r  r   rR   r  r   r  r  r  r  r  r/   r/   r0   .test_legend_labelcolor_rcparam_markeredgecolor  r  r  c                  C   r  )Nr   r   r  r   r  rY   r  r   rR   r  r   Zmecr  r  r  r  r/   r/   r0   4test_legend_labelcolor_rcparam_markeredgecolor_short	  r  r  c                  C   r  )Nr   r   r  r   r  rY   r  r   rR   r  r   r  r  r  r  r  r/   r/   r0   .test_legend_labelcolor_rcparam_markerfacecolor  r  r  c                  C   r  )Nr   r   r  r   r  rY   r  r   rR   r  r   Zmfcr  r  r  r  r/   r/   r0   4test_legend_labelcolor_rcparam_markerfacecolor_short#  r  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/   r0   test_get_set_draggable0  s   

r  	draggable)TFc                 C   s>   t  \}}|jtddd |j| d}| | u sJ d S )Nr   Zshabnamsr8   )r  )r   r   r=   r]   r"   r  )r  r)   r*   rh   r/   r/   r0   test_legend_draggable9  s   r  c                  C   s   t jg ddddd\} }}t  }|jD ]}|d q| d d |d  d d ks1J | d d |d  d d ksEJ d S )	Nr   g      ?datarF  )rJ  r   r-   rN   rB   r   )r   r\   r"   r   	set_alphaget_facecolorget_edgecolor)r+   rO  hhr"   re  r/   r/   r0   test_alpha_handlesA  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 )Nr  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputr8   r   r  z Font family ['serif'] not found.)	r   r   r   r   r=   r"   r^   r_   ri  )Zcaplogr)   r*   r/   r/   r0   test_usetex_no_warnJ  s   



r  c                  C   s   t  \} }| j  tdD ]}|jtd|d qtddi |	 }W d    n1 s1w   Y  t
t}| | W d    n1 sKw   Y  t|dksXJ |D ]}t|jdkseJ qZd S )NrZ    r8   z
legend.locr:   rY   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   r^   r_   r]   r=   r   r<   r	   r"   r   r   r  draw_artistr   r  r  )r)   r*   idxr"   recordsr  r/   r/   r0   test_warn_big_data_best_locX  s    


r  c                  C   sP   t  \} }| j  tdD ]}|jtd|d q|d}| 	| d S )NrZ  r  r8   r:   )
r   r   r^   r_   r]   r=   r   r<   r"   r  )r)   r*   r  r"   r/   r/   r0   (test_no_warn_big_data_when_loc_specifiedj  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 )Nr   r   rY   r   rw   rW   r8   c                 S   r   r/   r   r   entryr/   r/   r0   r     r   z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>r  r  )r   r   r=   r"   r   )r  r+   r,   r)   r*   rh   legend_textsr/   r/   r0   'test_plot_multiple_input_multiple_labels  s   r  r   r   r   c                 C   sn   g d}ddgddgddgg}t  \}}|j||| d | }dd	 | D }|t| gd ks5J d S )
Nr   r   rY   r   rw   rW   r8   c                 S   r   r/   r   r  r/   r/   r0   r     r   z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r=   r"   r   r  )r   r+   r,   r)   r*   rh   r  r/   r/   r0   %test_plot_multiple_input_single_label  s   r  c                 C   sh   g d}g d}t  \}}|j||| d | }t| dks$J | d  t| ks2J d S )Nr   )rY   r   r   r8   r   r   )r   r   r=   r"   r   r   r   r  )r  r+   r,   r)   r*   rh   r/   r/   r0   %test_plot_single_input_multiple_label  s    r  c                  C   sr   t t* g d} ddgddgddgg}g d}t \}}|j| ||d W d    d S 1 s2w   Y  d S )	Nr   r   rY   r   rw   rW   )r  r  Zmediumr8   )r   r   rz  r   r   r=   )r+   r,   r   r)   r*   r/   r/   r0   3test_plot_multiple_label_incorrect_length_exception  s   "r  c                  C   s:   t  \} }|jg dg dg ddddd |  d S )Nr  r   r   r   ZfaceZFill)rD  r   r   )r   r   r   r"   r{   r/   r/   r0   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 s(J d S )Nr   rY   rR   rw   rL   r8   r   )r   r   r=   r"   r  r   r   r/   r/   r0   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s5J d S )Nr   r   rS  )rC  r  rg  )r   r   r   mlinesLine2Dr"   r   r   )r)   r*   r.   rh   r/   r/   r0   test_handlerline2d  s
   "r  c                  C   sF   t   } |  }|jddgddgdd |  }|j| u s!J d S )Nr   r   rL   r8   )r   ry   Z
subfiguresr   r=   r"   )Zsubfigr*   rh   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   rY   rR   z#123456r   )r-   r   r   )r   r   r"   Zget_patchesr  r  tupler  )Z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   *rS  c                 S   s"   g | ]}t jd gd gd|dqS )r   None)ZlsrC  )r  r  )r   markr/   r/   r0   r     s    z3test_legend_markers_from_line2d.<locals>.<listcomp>)rA  rD   Zxyzzyc                 S   r   r/   r   r   rL   r/   r/   r0   r     r   c                 S   r   r/   r   r  r/   r/   r0   r     r   c                 S   r   r/   r   )r   ri  r/   r/   r0   r     r   )r   r   r"   	get_linesr   )	_markersr)   r*   r   r'   r   r"   Znew_markersZ
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   ero  rR   )Zncol)rT   r  )r   r   stringsrT   r/   r/   r0   test_ncol_ncols  s   r  c                  C   s   t  \} }tjtdd |jdd W d    n1 sw   Y  tjtdd |jdd W d    n1 s;w   Y  tjtdd |jdd W d    d S 1 sYw   Y  d S )	NzFloc must be string, coordinate tuple, or an integer 0-10, not \(1.1,\)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   rz  r"   r{   r/   r/   r0    test_loc_invalid_tuple_exception  s   "r  c                  C   s(   t  \} }|jdd |jdd d S )N)r  }?5^I?r;   )r   rY   r   r   r"   r{   r/   r/   r0   test_loc_valid_tuple  s   r	  c                  C   s0   t  \} }|jddgd |jddgd d S )Nr  r  r;   r   rY   r  r{   r/   r/   r0   test_loc_valid_list  s   r
  c                  C   sP   t  \} }tjtdd |jg d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   rW  gffffff
@r;   r  r{   r/   r/   r0   test_loc_invalid_list_exception     "r  c                  C   sP   t  \} }tjtdd |jddi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/   r0   test_loc_invalid_type  r  r  c                  C   s   t  \} }|jdd |jdd |jdd |jdd tjtdd |jdd W d    n1 s6w   Y  tjtd	d |jd
d W d    d S 1 sTw   Y  d S )Nr   r;   r   r   r   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r}   r   z@loc must be string, coordinate tuple, or an integer 0-10, not -1rB   r   r   r"   r   r   rz  r{   r/   r/   r0   !test_loc_validation_numeric_value!  s   "r  c                  C   s   t  \} }|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 sgw   Y  d S )Nr:   r;   rs  r   r   rw  r   r   rt  zlower centerzupper centerz 'wrong' is not a valid value forr}   Zwrongr  r{   r/   r/   r0    test_loc_validation_string_value0  s    "r  )r    platformZunittestr   rl  numpyr   Znumpy.testingr   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   Zmatplotlib.pyplotZpyplotr   Z
matplotlibr   Zmatplotlib.patchesZpatchesrr   Zmatplotlib.transformsZ
transformsr[  Zmatplotlib.collectionsrd  Zmatplotlib.linesr   r  Zmatplotlib.legend_handlerr   Zmatplotlib.legendr"   rT  r   r	   Zmatplotlib.font_managerr
   r1   r>   rG   rQ   ri   ru   r|   r   r   r   machiner   r   r   r   r   r   r   r   r   r   r   r  r;  r@  rB  rQ  rV  rX  r^  rf  rh  rp  rq  ry  r{  r}  r  r  r  r  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  r  r  rs   r  intr  r  r  r  r  r  r  r  r   r  r  r	  r
  r  r  r  r  r/   r/   r/   r0   <module>   s.   
	
	
 


	







!

`8)



		&




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