
    2|h-              	       	   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlZ	d dl
mZ d dlZd dlmZmZ d dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlm Z d dlm Z! d dl"m#Z# d dl$m%Z& d dlm'Z' d dl(m)Z) d	 Z* ed
gd      d        Z+ edgd      d        Z, edg      d        Z-d Z.d Z/ edgd      d        Z0 edgd ejb                         dk(  rd nd      d        Z2 edgd ejb                         dk(  rd nd      d        Z3 edgd ejb                         dk(  rd nd      d        Z4 ed gd ejb                         dk(  rd nd      d!        Z5 ed"gdd#      d$        Z6 ed%gd ejb                         dk(  rd nd&      d'        Z7 ed(d)gd      d*        Z8 ed+gd      d,        Z9 ed-gdd./      d0        Z:d1 Z;d2 Z< ed3g4      d5        Z= G d6 d7      Z> G d8 d9      Z?d: Z@ ed;g ejb                         dk(  rd nd<=      d>        ZAd? ZBd@ ZCdA ZD edBg      dC        ZE edDg      dE        ZFdF ZGdG ZHdH ZIdI ZJ edJgddK ejb                         dk(  rd ndLM      dN        ZKdO ZLdP ZMdQ ZNdR ZOdS ZPdT ZQej                  j                  dUdV      dW        ZTej                  j                  dXdY      dZ        ZUej                  j                  dXd[      d\        ZVej                  j                  dUdV      d]        ZWej                  j                  d^d_      d`        ZXda ZYdb ZZdc Z[dd Z\de Z]df Z^dg Z_dh Z`di Zadj Zbdk Zcdl Zddm Zeej                  j                  d^d_      dn        Zfdo Zgdp Zhdq Zidr Zjds Zkej                  j                  dt      du        Zmej                  j                  dvdw      dx        Zndy Zoedz        Zpd{ Zqd| Zrej                  j                  d}d~dgd e	j                  d~dg      g      d        Ztej                  j                  dddeug      d        Zvej                  j                  d}d~dgd e	j                  d~dg      g      d        Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Z ed3g4      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  dt      d        Zd Zd Zd Zd Zy)    N)mock)assert_allclose)check_figures_equalimage_comparison)needs_usetex)HandlerTuple)
rc_context)FontPropertiesc                     t         j                  j                  d      } t         j                  j                  d      }dgdz  dgdz  z   }dgdz  dgdz  z   }t        j                         \  }}t        | |||      D ]  \  }}}}	|j                  ||||	        |j                         \  }
}t        j                  t        ||
            }|j                  |j                         |j                         dd	
       y )N
   a   brglabelccenter left)         ?)locbbox_to_anchor)nprandomrandnpltsubplotszipscatterget_legend_handles_labelscollectionsOrderedDictlegendvalueskeys)XYlabelscolorsfigaxxyr   colorhandlesr$   s               [/var/www/html/test/engine/venv/lib/python3.12/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddictr2      s     			A
		AUQY#"FUQY#"FllnGC!!Q7 /1eU


1au
./ 224OGV$$S%9:FIIfmmov{{}  9    zlegend_auto1.pngT)remove_textc                      t        j                         \  } }t        j                  d      }|j	                  |d|z
  dd       |j	                  ||dz
  dd       |j                  d       y	)
Test automatic legend placementd   2   oy=1r   y=-1bestr   N)r   r   r   arangeplotr$   )r+   r,   r-   s      r1   test_legend_auto1rA   -   s^     llnGC
		#AGGArAvs%G(GGAq2vs&G)II&Ir3   zlegend_auto2.pngc                      t        j                         \  } }t        j                  d      }|j	                  ||dd      }|j	                  ||ddd   dd      }|j                  |d   |d   gd	d
gd       y)r6   r7   edgem)alignr/   Nr   r   updownr=   r>   )r   r   r   r?   barr$   )r+   r,   r-   b1b2s        r1   test_legend_auto2rL   7   sv     llnGC
		#A	1F#	.B	1TrT7&	4BIIr!ubentVn&I9r3   zlegend_auto3.pngc                      t        j                         \  } }g d}g d}|j                  ||dd       |j                  dd       |j	                  dd       |j                  d	       y
)r6   ?皙?rP   rO   rO   r   ffffff?rR   皙?rS   r   r   o-liner;                 ?r=   r>   N)r   r   r@   set_xlimset_ylimr$   )r+   r,   r-   r.   s       r1   test_legend_auto3rZ   A   s[     llnGC&A*AGGAq$fG%KKSKKSII&Ir3   c                  b   t        j                  dd      \  } }g }t        |j                  d      D ]  \  }}|j	                  |       |j                  dgddgz  z   t        d      d	|
       |j                  d      }| j                  j                          |j                  |j                         j                  |j                  j                                       t        |d   j                   |d   j                          t        |d   j                   |d   j                          y)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)rI   step
stepfilledr   r   	   r   Legend)binsr   histtyper=   r>   r      N)r   r   r   flat	set_titlehistranger$   canvasdrawappendget_window_extenttransformed	transAxesinvertedr   bounds)r+   axs
leg_bboxesr,   htlegs         r1   test_legend_auto4rw   M   s     ||!Z8HCJchh => JB
R
ae%)8bIiiFi#

!!#//0E0E0GH	JJ JqM((*Q-*>*>?JqM((*Q-*>*>?r3   c                     t        j                  dd      \  } }g }t        |j                  d      D ]  \  }}t	        j
                  dddd	      t	        j                  t        j                  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      t	        j                  ddd
ddd      fD ]  }|j                  |        |j                  ddgddgd       |j                  |      }| j                  j                          |j                  |j!                         j#                  |j$                  j'                                      ! t)        |d   j*                  |d
   j*                         y)z
    Check that the automatic placement handle a rather complex
    case with non rectangular patch. Related to issue #9580.
    rf   )g333333#@g333333@r]   centerr=   )r   rO   皙?皙?C1)xywidthheightfcr   r   rO   rW   rP   )r   )r   r   r   ih  rS   C0)r   r   z	A segmentr;   r>   N)r   r   r   rg   mpatchesEllipsePolygonr   arrayWedge	add_patchr@   r$   rk   rl   rm   rn   ro   rp   rq   r   rr   )r+   rs   rt   r,   r   _patchrv   s          r1   test_legend_auto5r   c   sv   
 ||!Z8HCJsxx!34 JC
   !STC  FQFQFQFS#Jc
#Jc
S#J+8 "9=AC z33dtL 	!F LL 	! 	c
S#Jk:iiCi 

!!#//0E0E0GH	J%J* JqM((*Q-*>*>?r3   zlegend_various_labels.pngc                  d   t        j                         } | j                  d      }|j                  t	        j
                  d      dd       |j                  t	        j                  dd      dd       |j                  t	        j
                  ddd      dd	       |j                  dd
       y )Ny      r9   r   r;   gffffff@u   DéveloppésrF   __nolegend__r=   )	numpointsr   )r   figureadd_subplotr@   r   r?   linspacer$   r+   r,   s     r1   test_various_labelsr      s     **,C		BGGBIIaL#QG'GGBKK3NG;GGBIIaBNG;IIvI&r3   zlegend_labels_first.pngx86_64g9v?)r4   tolc                  L   t        j                         \  } }|j                  t        j                  d      dd       |j                  t        j
                  d      dz  dd       |j                  t        j                  ddd	      d
d       |j                  dd       y )Nr   -or   r;   r   z:xr-      rF   ddiamondr=   F)r   markerfirst)r   r   r@   r   r?   onesr$   r   s     r1   test_labels_firstr      sz     llnGCGGBIIbM4qG)GGBGGBKM4sG+GGBIIb"b!3iG8II&eI,r3   zlegend_multiple_keys.pngc                  ,   t        j                         \  } }|j                  g dd      \  }|j                  g dd      \  }|j                  g dd      \  }|j                  ||f||f|gg dd||ft	        d 	      ||ft	        d d
      i       y )Nr   rf   r\   r   rf   r\   r   z-xr\   r   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)r   handler_map)r   r   r@   r$   r   )r+   r,   p1p2p3s        r1   test_multiple_keysr      s     llnGC
'')T
"CB
'')T
"CB
'')T
"CBIIBx"b2&(H8\$%?8\$A%FH  Ir3   zrgba_alpha.pnggQ?c                      t        j                         \  } }|j                  t        d      d       t        j                  dgd      }|j
                  j                  g d       y )Nr   r   lwLonglabel that will go awayrz   r>   r   r   r   r   )r   r   r@   rj   r$   legendPatchset_facecolorr+   r,   rv   s      r1   test_alpha_rgbar      sM     llnGCGGE"I!G
**34(
CCOO!!.1r3   zrcparam_alpha.pngc                  .   t        j                         \  } }|j                  t        d      d       t	        j
                  ddi      5  t        j                  dgd	      }|j                  j                  g d
       d d d        y # 1 sw Y   y xY w)Nr   r   r   zlegend.framealphag      ?)rcr   rz   r>   r   )	r   r   r@   rj   mplr	   r$   r   r   r   s      r1   test_alpha_rcparamr      sv     llnGCGGE"I!G	/5	6 6jj78hG
 	%%n56 6 6s   6BBz	fancy.pngrS   c                     t        j                  d       t        j                  dgdz  dd       t        j                  t	        j
                  d      t	        j
                  ddd      d	       t        j                  t	        j
                  d      t	        j
                  d      d
d
d       t        j                  ddd
gdddd       y )Nr   r   r   zo--XXr;   r   rF   zXX
XXr   )xerryerrr   r   rW   rf   T	My legendr   )r   r   r^   shadowtitler   )r   subplotr@   r    r   r?   errorbarr$    r3   r1   
test_fancyr      s    
 KKHHaS2XuD)KK		"ryyQ38DLL2		"C'JJ=#st;!Er3   
framealphag~jt?c                      t        j                  ddd      } | }t        j                  | |dd       t        j                  d       y )Nr   r7   mylabelr   )r   r   r   )r   )r   r   r   r@   r$   )r-   r.   s     r1   test_framealphar      s9     	AsC A	AHHQr*JJ#r3   zscatter_rc3.pngzscatter_rc1.pngc                     t        j                          t        j                  d      } | j                  t	        j
                  d      t	        j
                  ddd      d       | j                  ddd	gd
       dt        j                  d<   t        j                          t        j                  d      } | j                  t	        j
                  d      t	        j
                  ddd      d       | j                  ddd	gd
       y )Nr   r   r   rF   threer;   r   rW   r   r   )r   r   r   r   zlegend.scatterpointsone)	r   r   r   r    r   r?   r$   r   rcParams)r,   s    r1   test_rcr      s     JJL	S	BJJryy}biiAr2'JBII-c
  ! ,-CLL'(JJL	S	BJJryy}biiAr2%J@II-c
  !r3   zlegend_expand.pngc                     ddg} t        j                  t        |       d      \  }}t        j                  d      }t        ||       D ]  \  }}|j                  |d|z
  dd       |j                  d	|
      }|j                  |       |j                  ||dz
  dd       |j                  d|
      }|j                  |       |j                  d|d        y)zTest expand modeNexpandr   r7   r8   r9   r:   r;   
upper left)r   moder<   right
lower leftrf   )r   r   r^   )	r   r   lenr   r?   r   r@   r$   
add_artist)legend_modesr+   rs   r-   r,   r   l1l2s           r1   test_legend_expandr      s     (#L||C-q1HC
		#A\* 8D
263e,YY<dY3
b
1r63f-YY7Y.
b
		lQ	78r3   hatchingdefault)r4   stylec            	         dt         j                  d<   t        j                         \  } }t        j                  ddddd      }|j	                  |       t        j                  dddd	d
d      }|j	                  |       t        j                  dddddd      }|j	                  |       t        j                  dddd	dd
d      }|j	                  |       |j                  g dg dg ddd       |j                  g dg dg dddd       |j                  dd       |j                  dd       |j                  dd       y ) N   ztext.kerning_factor)r   r   333333?xxzPatch
default color
filled)hatchr   )Q?r   z||r}   zPatch
explicit color
filled)r   	edgecolorr   )r   皙?FzPatch
default color
unfilled)r   fillr   )r   r   zPatch
explicit color
unfilled)r   r   r   r   )r   g333333?r   )r{   r{   r{   )rO   rW   rO   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)	r   r   r   	Rectangler   fill_betweenrX   rY   r$   )r+   r,   patchs      r1   test_hatchingr      s4    +,CLL&'llnGC MM&#s$ >@ELLMM)S#TT ?AELLMM(CDu @BELLMM+sCt%$( ACE LL OOL,%:  <OOO\=5K  M KKsKKsII11I-r3   c                  2   t        j                         \  } }|j                  t        d            }| j	                  |d      }|j                          | j                  g k(  sJ |j	                  d      }|j                          |j                         J y )Nr   test)r   r   r@   rj   r$   removelegends
get_legend)r+   r,   linesrv   s       r1   test_legend_remover     sw    llnGCGGE"IE
**UF
#CJJL;;"
))F
CJJL==?"""r3   c                  ,   t        j                         \  } }d}d}g d}g d}|j                  |||d   |d          |j                  |||d   |d          |j                  |||d   |d          |j                  d      }|j	                         D cg c]  }|j                          }}|j                  D 	cg c]  }	|	j                          }
}	|t        t        |            k(  sJ |
t        t        |            k(  sJ y	c c}w c c}	w )
z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label).,r9   r   r;   rf   TreverseN)
r   r   r@   r$   	get_textsget_textlegend_handles
get_markerlistreversed)r+   r,   r-   r.   r)   markersrv   tactual_labelshactual_markerss              r1   &test_reverse_legend_handles_and_labelsr  #  s    llnGC	A	A;FGGGAq'!*F1IG.GGAq'!*F1IG.GGAq'!*F1IG.
))D)
!C+.==?;aQZZ\;M;.1.@.@AallnANAD&!12222T(7"34444 <As   D Dpng)
extensionsc                 0   | j                         }|j                  dgdd       |j                  dgdd       |j                  d	       |j                         }|j                  dgdd       |j                  dgdd       |j                          y
)z3Check that the rendered legend entries are reversedr   rofirstr;   rf   bxsecondTr   N)r   r@   r$   )fig_testfig_refr,   s      r1   test_reverse_legend_displayr  5  s     
			BGGQCWG%GGQCXG&IIdI				BGGQCXG&GGQCWG%IIKr3   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestLegendFunctionc                    t        j                  t        d      d      }t        j                  d      5 }t        j
                          d d d        j                  t        j                         |dg       y # 1 sw Y   0xY w)Nr   hello worldr;   matplotlib.legend.Legendr   r@   rj   r   r   r$   assert_called_withgcaselfr   rc   s      r1   test_legend_no_argsz&TestLegendFunction.test_legend_no_argsE  s]    r-8ZZ23 	vJJL	!!#'')U]OD	 	s   A::Bc                    t        j                  t        d            }t        j                  d      5 }t        j
                  |dg       d d d        j                  t        j                         |dg       y # 1 sw Y   0xY w)Nr   r  r  r  r  s      r1   %test_legend_positional_handles_labelsz8TestLegendFunction.test_legend_positional_handles_labelsK  sb    r#ZZ23 	/vJJu}o.	/!!#'')U]OD	/ 	/s   A;;Bc                     t        j                  t        d            }t        j                  t
        d      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr   zbut found an Artistmatch)r   r@   rj   pytestraises	TypeErrorr$   )r  r   s     r1   #test_legend_positional_handles_onlyz6TestLegendFunction.test_legend_positional_handles_onlyQ  sF    r#]]9,AB 	 JJu	 	 	s   AA"c                    t        j                  t        d      d      }t        j                  d      5 }t        j
                  dg       d d d        j                  t        j                         |dg       y # 1 sw Y   0xY w)Nr   r  r;   r  foobarr  r  s      r1   "test_legend_positional_labels_onlyz5TestLegendFunction.test_legend_positional_labels_onlyX  sb    r-8ZZ23 	#vJJz"	#!!#'')UXJ?	# 	#s   A<<Bc                    t        j                  t        d      d      }t        j                  d      5 }t        j
                  |dgd       d d d        j                  t        j                         |dgd       y # 1 sw Y   2xY w)Nr   r  r;   r  r#  r   r>   r  r  s      r1   test_legend_three_argsz)TestLegendFunction.test_legend_three_args^  sk    r-8ZZ23 	7vJJuxjg6	7!!#'')UXJG!L	7 	7s   BB
c                 *   t        j                  t        d      d      }t        j                  d      5 }|dgf|_        t        j                  ddi       d d d        j                  t        j                         gddi       y # 1 sw Y   1xY w)Nr   r  r;   z,matplotlib.legend._get_legend_handles_labels1rf   )r   )	r   r@   rj   r   r   return_valuer$   r  r  )r  r   handles_labelss      r1   test_legend_handler_mapz*TestLegendFunction.test_legend_handler_mapd  s|    r-8ZZ 5 6 	-9G*/-*@N'JJC8,	- 	))3779+Qx@		- 	-s   #B		Bc                    t        j                         \  }}t        j                  ddd      }|j	                  ||d      \  }|j	                  |d|z  d      \  }|j	                  |d|z  d	      \  }t        j                  d
      5 }|j                  ||g       d d d        j                  |||gd	dg       y # 1 sw Y   !xY w)Nr   r      r-   r;   rf   2xr\   3xr  )r0   	r   r   r   r   r@   r   r   r$   r  )r  r+   r,   r-   ln1ln2ln3rc   s           r1   test_legend_kwargs_handles_onlyz2TestLegendFunction.test_legend_kwargs_handles_onlyl  s    ,,.RKK1b!wwq!3w'wwq!A#Tw*wwq!A#Tw*ZZ23 	*vIIsCjI)	*!!"sCj4,?	* 	*s   CC
c                 `   t        j                         \  }}t        j                  ddd      }|j	                  ||      \  }|j	                  |d|z        \  }t        j                  d      5 }|j                  ddg       d d d        j                  |||gddg       y # 1 sw Y   !xY w)	Nr   r   r-  rf   r  r-   r.  r)   r0  )r  r+   r,   r-   r1  r2  rc   s          r1   test_legend_kwargs_labels_onlyz1TestLegendFunction.test_legend_kwargs_labels_onlyv  s    ,,.RKK1b!wwq!}wwq!A#ZZ23 	*vIIc4[I)	*!!"sCj3+>	* 	*s   /B$$B-c                    t        j                         \  }}t        j                  ddt        j                  z  d      }|j                  |t        j                  |      d      \  }|j                  |t        j                  |      d      \  }t        j                  d      5 }|j                  d||f	       d d d        j                  |||fd       y # 1 sw Y   xY w)
Nr   rf      sinr;   cosr  r   r   )r)   r0   )r   r   r   r   pir@   r:  r;  r   r   r$   r  )r  r+   r,   thlnslncrc   s          r1   !test_legend_kwargs_handles_labelsz4TestLegendFunction.test_legend_kwargs_handles_labels  s    ,,.R[[AbeeGT*wwr266":Uw3wwr266":Uw3ZZ23 	=vIIZ#sI<	= 	!!"sCj*=	= 	=s   'CC$c                    t        j                         \  }}t        j                  ddt        j                  z  d      }|j                  |t        j                  |      d      \  }|j                  |t        j                  |      d      \  }t        j                  t              5 }|j                  ||fd       d d d        t              d	k(  sJ t        |d   j                        j                  d
      sJ y # 1 sw Y   CxY w)Nr   rf   r9  r:  r;   r;  r<  r6  r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   r   r=  r@   r:  r;  r  warnsDeprecationWarningr$   r   strmessage
startswith)r  r+   r,   r>  r?  r@  records          r1   test_warn_mixed_args_and_kwargsz2TestLegendFunction.test_warn_mixed_args_and_kwargs  s    ,,.R[[AbeeGT*wwr266":Uw3wwr266":Uw3\\,- 	5IIsCjI4	56{a6!9$$%00 	 	5 	5s   +DDc                 R   ddl m}  |d      }|j                         }|j                  g dg dd      \  }|j                  g dg dd      \  }t	        j
                  d	      5 }t        j                          d d d        j                  |||gddg       y # 1 sw Y   !xY w)
Nr   )host_subploto   r   r   rf   Densityr;   )r   r\   rf   Temperaturer  )	mpl_toolkits.axes_grid1rL  twinxr@   r   r   r   r$   r  )r  rL  hostparr   r   rc   s          r1   test_parasitez TestLegendFunction.test_parasite  s    8C jjlii	9Ii>hhy)=hAZZ23 	vJJL	!!$R9m2LM	 	s   (BB&N)__name__
__module____qualname__r  r  r!  r$  r&  r+  r4  r7  rA  rJ  rU  r   r3   r1   r  r  C  s@    EE@MA@?>
Nr3   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestLegendFigureFunctionc                     t        j                         \  }}|j                  t        d            }t	        j
                  d      5 }|j                  |dg       d d d        j                  ||dg|j                         y # 1 sw Y   *xY w)Nr   r  r  bbox_transform	r   r   r@   rj   r   r   r$   r  transFigurer  r+   r,   r   rc   s        r1   test_legend_handle_labelz1TestLegendFigureFunction.test_legend_handle_label  sz    ,,.Rb	"ZZ23 	/vJJu}o.	/!!#u}o14 	" 	B	/ 	/s   BBc                    t        j                         \  }}|j                  t        d      d      }t	        j
                  d      5 }|j                          d d d        j                  ||dg|j                         y # 1 sw Y   *xY w)Nr   r  r;   r  r\  r^  r`  s        r1   r  z,TestLegendFigureFunction.test_legend_no_args  sw    ,,.Rb	7ZZ23 	vJJL	!!#u}o14 	" 	B	 	s   	BBc                    t        j                         \  }}|j                  t        d            }t	        j
                  d      5 }|j                  dg       d d d        j                  ||dg|j                         y # 1 sw Y   *xY w)Nr   r  r#  r\  r^  r`  s        r1   test_legend_label_argz.TestLegendFigureFunction.test_legend_label_arg  sx    ,,.Rb	"ZZ23 	#vJJz"	#!!#uxj14 	" 	B	# 	#s   BBc                 z   t        j                         \  }}|j                  t        d            }t	        j
                  t        d      5  |j                  |dgd       d d d        t	        j
                  t        d      5  |j                  |dgdd       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   z0-2r  r#  r   leftr>   )r   r   r@   rj   r  r  r   r$   )r  r+   r,   r   s       r1   test_legend_label_three_argsz5TestLegendFigureFunction.test_legend_label_three_args  s    ,,.Rb	"]]9E2 	3JJuxj'2	3]]9E2 	?JJuxj'vJ>	? 	?	3 	3	? 	?s   B%B1%B.1B:c                    t        j                  dd      \  }}|d   j                  t        d            }|d   j                  t	        j
                  d      dz        }t        j                  d      5 }|j                  dd||f	       d d d        j                  |||fdd|j                  
       y # 1 sw Y   ,xY w)Nr   rf   r   r          @r  r   r<  )r   r)   r0   )r   r]  )r   r   r@   rj   r   r?   r   r   r$   r  r_  )r  r+   rs   r   lines2rc   s         r1   test_legend_kw_argsz,TestLegendFigureFunction.test_legend_kw_args  s    <<1%SAE"I&QRYYr]R/0ZZ23 	PvJJ7:vJO	P!!%*'?? 	" 	,	P 	Ps   6B88Cc                    t        j                  dd      \  }}|d   j                  t        d            }|d   j                  t	        j
                  d      dz        }t        j                  t              5 }|j                  ||fd       d d d        t              dk(  sJ t        |d   j                        j                  d      sJ y # 1 sw Y   CxY w)	Nr   rf   r   r   ri  r<  r6  rC  )r   r   r@   rj   r   r?   r  rD  rE  r$   r   rF  rG  rH  )r  r+   rs   r   rj  rI  s         r1   test_warn_args_kwargsz.TestLegendFigureFunction.test_warn_args_kwargs  s    <<1%SAE"I&QRYYr]R/0\\,- 	;JJvzJ:	;6{a6!9$$%00 	 	; 	;s   :CCN)	rV  rW  rX  ra  r  rd  rg  rk  rm  r   r3   r1   rZ  rZ    s#    BBB?,	r3   rZ  c                     dD  cg c]  } d| z   	 }} |dD  cg c]  } d| z   	 c} z  }|dD  cg c]  } d| z   	 c} z  }|dD  cg c]  } d| z   	 c} z  }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      \  }
}|j	                  t        d      d       |
j                  d|	z         }|
j                          t        |j                         j                  ||          t        |j                         j                  ||           y c c} w c c} w c c} w c c} w )N)rf  rz   r   zupper zlower )lowerrz   upperzleft zright )QnX4@Qn;@l@gE@)rq  g Q@rs  lf@)gLNb@rr  rs  rt  )rq  rr  gE@rt  )      $@     X@     `@     p@)     (u@rv       |@rx  )  rv       @rx  )ru  ru  rw       F@)ry  ru  rz  r}  )     ؄@ru  r|  r}  )ru       q@rw       s@)r{  ru  r|  r}  )r~  r  r|  r  )r~  rv  r|  rx  Tr7   )constrained_layoutdpir   Boo1r;   zoutside r>   )	enumerateprintr   r   r@   rj   r$   draw_without_renderingr   rn   extents)postodosupperextlowerextleftextrightextaxbblegbbnntodor+   rs   rv   s                r1   test_figure_legend_outsider    s   'BCX^CEC	(CDhnDDE	'CDgmDDE	(DEhnEEE8H8H7G8HhhWgh*D
 %'%#&$"&$"'%'E e$ 
#Dd<<4SASr&)jjZ$.j/""$--/77R	"--/77b		#
#7 DDDEs   E!E&E+E0zlegend_stackplot.pnggX9v?)r   c                  "   t        j                         \  } }t        j                  ddd      }d|z  }d|z  dz   }d|z  dz   }|j	                  ||||g d	       |j                  d
       |j                  d       |j                  d       y)z/Test legend for PolyCollection using stackplot.r   r   rW   ri  r   g      @rf   )y1y2y3r6  )r   r   )r   F   r=   r>   N)r   r   r   r   	stackplotrX   rY   r$   )r+   r,   r-   r  r  r  s         r1   test_legend_stackplotr    s    
 llnGC
Ar2A	qB	q1B	q1BLLBB'9L:KKKKII&Ir3   c                      t        j                         \  } }t        j                         \  }}|j                  t        d      t        d            }|j	                  |d       y )Nr\   foo)r   r   rI   rj   r$   )r+   r,   fig2ax2brss        r1   test_cross_figure_patch_legendr    sF    llnGCID#
&&q58
$CKKUr3   c            
          t        j                         \  } }|j                  t        j                  gt        j                  gdddd      }|j                  |gdg       t        j                         \  } }dD ]a  }d}t        j                  j                  d|      \  }}d	t        j                  j                  |      z  }|j                  |||||d
d       c |j                          |j                  d       y )Nr9   r   r\   )marker	facecolorr   sr    )redgreenbluei  rf   g      i@r   none)r   r  r   alpha
edgecolorsT)	r   r   r    r   nanr$   r   randgrid)r+   r,   r  r/   nr-   r.   scales           r1   test_nanscatterr    s    llnGC


BFF8bffXc C1 	 	6A IIqcI;llnGC) 1yy~~a#1		q))


1a5E 	 	1	1 IIKGGDMr3   c                     t        j                         \  } }|j                  ddddd       |j                  dddd	d       |j                          t	        j
                  |g      \  }}t        |      d
k(  sJ t        j                         \  } }|j                  ddddd       |j                  dddd	d       |j                          t	        j
                  |g      \  }}t        |      d
k(  sJ y )NrV   rW   kr9   r   )r/   r  r   r   r   vrf   )r   r   r    r$   mlegend_get_legend_handles_labelsr   )r+   r,   handlabs       r1   test_legend_repeatcheckokr  0  s    llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48ID#s8q==llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48ID#s8q==r3   znot_covering_scatter.pngc                  (   g d} t        d      D ]  }t        j                  |g|g| |          ! t        j                  g dd       t        j                         j                  dd       t        j                         j                  dd       y )	N)r   r   r   r\   )r/   )r  r  r  r=   r>   g      皙@)rj   r   r    r$   r  rX   rY   )r*   r  s     r1   test_not_covering_scatterr  ?  so    F1X /QC!F1I./ JJ$&1GGItS!GGItS!r3   z"not_covering_scatter_transform.pngc                  J   t        j                         j                  dd      } t        j                  ddd      }t        j                  ||       t        j                  dgdg| t        j                         j                  z          t        j                  dd	gd
       y )Nir   r      i  r   )	transformr  rI   r=   r>   )mtransformsAffine2D	translater   r   r   r@   r    r  	transDatar$   )offsetr-   s     r1   #test_not_covering_scatter_transformr  K  su     !!#--c26F
Ar4 AHHQNKKrdfswwy/B/B&BCJJu~6*r3   c                  <   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      }t        j                  |d      }t        j                  |dd	      }t        j                         \  }}|j	                  |       |j	                  |       |j	                  |       |j                  |||gg d      }|j                  \  }	}
}t        |||f|	|
|f      D ]'  \  }}|j                         d   |j                  k(  r'J  y )N)r   r   )r   r   )r   333333?)r|   r|   gffffff?r|   r{   r   r   r  rP   z--r\   )
linestylesr   z-.)r  :)line1line2zline 3r   )
mcollectionsLineCollectionr   r   add_collectionr$   r   r   get_linestyles_dash_pattern)lines1rj  lines3lc1lc2lc3r+   r,   rv   h1h2h3ohlhs                 r1   !test_linecollection_scaled_dashesr  W  sA    8X"67FRy2r(#r2hR%9:FRy2r(#r2hR%9:F

%
%f!
DC

%
%f
>C

%
%f
DCllnGCccc
))S#sO%A
BC##JBBsCoB|4 :B  "1%)9)9999:r3   c                      t        j                         \  } }|j                  t        d      d       |j	                  d       y)z(Test legend handler with numpoints <= 1.r   r   r;   r   r   N)r   r   r@   rj   r$   r   s     r1   test_handler_numpointsr  k  s5     llnGCGGE!HFG#IIIr3   c                  J   t        j                         \  } }|j                  dgd       |j                  dddd       t	        j
                  t              5 }|j                          ddd       t              dk(  sJ t        j                         \  }}|j                  t        j                  j                  ddd	             t        j                         5  t        j                  d
       |j!                          ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z2Test that Text artists with labels raise a warningr   	mock datar;   textr   )r-   r.   r  r   Nr   )r   r   error)r   r   r@   r  r  rD  UserWarningr$   r   
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr!   )r+   r,   rI  fs       r1   test_text_nohandler_warningr  s  s    llnGCGGQC{G#GGa1gG.	k	" f
		v;! LLNEArMM"))##Aq(34		 	 	" 'g&
$$&' ' ' 's   D&DDD"c                  \    t        j                  g g d       t        j                          y)z1Test legend when bar chart is empty with a label.r   r;   N)r   rI   r$   r   r3   r1    test_empty_bar_chart_with_legendr    s     GGB&!JJLr3   zshadow_argument_types.pngmpl20gy&1?)r4   r   r   c            
      z   t        j                         \  } }|j                  g dd       |j                  dd      |j                  dd      |j                  d	d
dd      |j                  dddd      |j                  dddd      f}|D ]  }|j	                  |        |j                  d       y )Nr   r   r;   r   Tr   r   upper rightFr   r  rP   )r/   r  center right)rP   r|   r   )r/   oyr   ztab:cyanr   )r/   oxlower rightr>   )r   r   r@   r$   r   )r+   r,   legsls       r1   test_shadow_argument_typesr    s     llnGCGGIVG$ II,tI4II-I6II-',s;  =II.'6bA  CII,'1<  >D  
aII-I r3   c                      t        j                         \  } }|j                  g dd       t        j                  t
        d      5  |j                  dd       d d d        y # 1 sw Y   y xY w)	Nr   r   r;   zdict or boolr  r   aardvarkr  )r   r   r@   r  r  
ValueErrorr$   r   s     r1   test_shadow_invalid_argumentr    sV     llnGCGGIVG$	z	8 7
		l:	67 7 7s   A%%A.c                      t        j                         \  } }|j                  t        d      d       |j	                  dd      }|j                         j                         dk(  sJ y )Nr7   r   r;   Tw)r   r  r   )r   r   r@   rj   r$   	get_frame	get_alphar   s      r1   test_shadow_framealphar    sV     llnGCGGE#JfG%
))43)
/C==?$$&!+++r3   c                     t        j                         \  } }|j                  t        d      d       |j	                         }|j                         j                         dk(  sJ |j                         j                         rJ y )Nr   r  r;    )r   r   r@   rj   r$   	get_titler   get_visibler   s      r1   test_legend_title_emptyr    sj     llnGCGGE"I[G)
))+C==?##%+++}}**,,,,r3   c                      t        j                  d      \  } }|j                  t        d      d       |j	                         }|j                  | j                  j                               j                  }t        j                  d      \  } }|j                  t        d      d       |j	                         }|j                  | j                  j                               j                  }t        j                  |dz  d      |k(  sJ y )	Nr7   r  r   Aardvarkr;      rf   rP   )r   r   r@   rj   r$   rn   rk   get_rendererx0r  approx)r+   r,   rv   x01x02s        r1    test_legend_proper_window_extentr    s    lls#GCGGE"IZG(
))+C




 7 7 9
:
=
=Clls#GCGGE"IZG(
))+C




 7 7 9
:
=
=C==Q$+++r3   c                  "   t        j                  d      \  } }|j                  t        d      d       |j	                         }| j	                         }| j
                  j                          |j                          |j                          y )Nr7   r  r   r  r;   )r   r   r@   rj   r$   rk   rl   rn   )r+   r,   rv   leg2s       r1   "test_window_extent_cached_rendererr    sd    lls#GCGGE"IZG(
))+C::<DJJOOr3   c                  j   t        j                  t        d      d       t        j                  t
              5  t        j                  ddddd       d d d        t        j                  dt        dd      	      } | j                         j                         dk(  sJ t        j                  d
dd      \  }}|j                  }|d   j                  t        d      d       |d   j                  dd      }|j                         j                         dk(  sJ |d   j                  t        d      d       |d   j                  dddd	      }|j                         j                         dk(  sJ |d
   j                  t        d      d       d t        j                  d<   |d
   j                  dddi	      }|j                         j                         t        j                  d   k(  sJ |d   j                  t        d      d       |d   j                  d      }|j                         j                         t        j                  d   k(  sJ |d   j                  t        d      d       dt        j                  d<   |d   j                  dddi	      }|j                         j                         dk(  sJ |d   j                  t        d      d       |d   j                  d      }|j                         j                         dk(  sJ y # 1 sw Y   xY w)Nr   r  r;   r     serif)familysize)r   title_fontsizetitle_fontproperties)r   r  rf   r\   )r   r   )r_   r   )r   r  r   zlegend.title_fontsizer  z	font.sizer   r   r   r   )r   r@   rj   r  r  r  r$   r
   r  get_sizer   rg   get_fontsizer   r   )	rv   r+   axesleg0leg1r  leg3leg4leg5s	            r1   #test_legend_title_fontprop_fontsizer"    s   HHU2Yk*	z	" I

B3:B(G	II **:N.5B=@ AC==?##%+++Q73IC99DGLLr+L.7>>
2>>D>>((*b000GLLr+L.7>>
:A2/N  PD>>((*b000GLLr+L.,0CLL()7>>
08'/B  DD>>((*cll;.GGGGGLLr+L.7>>
>+D>>((*cll;.GGGGGLLr+L.,.CLL()7>>
08'/B  DD>>((*b000GLLr+L.7>>
>+D>>((*b000AI Is   L((L2	alignment)rz   rf  r   c                     t        j                         \  }}|j                  t        d      d       |j	                  d|       }|j                         d   j                  | k(  sJ |j                         | k(  sJ y )Nr   r   r;   r  )r   r#  r   )r   r   r@   rj   r$   get_childrenrE   get_alignmentr#  r+   r,   rv   s       r1   test_legend_alignmentr(    sp    llnGCGGE"IVG$
))*	)
:Ca &&)333)+++r3   r   ry   c                    t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        |j                         t        j                  j                  |    k(  sJ y )Nr   r   r;   )
r   r   r@   rj   r$   set_loc_get_locr  rc   codesr   r+   r,   rv   s       r1   test_ax_legend_set_locr.    s_    llnGCGGE"IVG$
))+CKK<<>W^^11#6666r3   )zoutside rightr   c                 X   t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        | j                  d      r| j                         d   n| } |j                         t        j                  j                  |    k(  sJ y )Nr   r   r;   outsider   )r   r   r@   rj   r$   r*  rH  splitr+  r  rc   r,  r-  s       r1   test_fig_legend_set_locr2    s{    llnGCGGE"IVG$
**,CKKNN95#))+a.3C<<>W^^11#6666r3   c                    t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        |j                         d   j                  | k(  sJ |j                         | k(  sJ y )Nr   r   r;   r   )	r   r   r@   rj   r$   set_alignmentr%  rE   r&  r'  s       r1   test_legend_set_alignmentr5    sw    llnGCGGE"IVG$
))+Ci a &&)333)+++r3   r/   )r  r  )r   r   r   c                 N   t        j                         \  }}|j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  | 	      }|j                         D ]2  }t        j                  j                  |j                         |       r2J  y )
Nr   r   #1r;   rf   #2r\   #3
labelcolor)r   r   r@   r   r?   r$   r   r   r*   
same_color	get_colorr/   r+   r,   rv   r  s        r1   test_legend_labelcolor_singler?  &  s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
))u)
%C >zz$$T^^%5u===>r3   c                  p   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  g d	
      }t        |j                         g d	      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r;   rf   r8  r\   r9  r   r   r   r:  r   r   r@   r   r?   r$   r   r   r   r*   r<  r=  r+   r,   rv   r  r/   s        r1   test_legend_labelcolor_listrD  3  s    llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
)))
/C3==?O< >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   r   r/   rf   r8  r   r\   r9  r   	linecolorr:  rA  rB  rC  s        r1    test_legend_labelcolor_linecolorrH  ?  s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB
)){)
+C3==?O< >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   r   rf   r8  r   r\   r9  r   rG  r:  rA  r   r   r    r   r?   r$   r   r   r   r*   r<  r=  rC  s        r1   /test_legend_pathcollection_labelcolor_linecolorrK  K  s    llnGCJJryy}biimAoTSJAJJryy}biimAoTSJAJJryy}biimAoTSJA
)){)
+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  g ddz        }|j	                  t        j
                  d      t        j
                  d      d|       |j                  d      }|j                         \  }t        j                  j                  |j                         d      sJ y )	Nr   r   r   r   rD   rf   r   r7  r   rG  r:  black)r   r   r   r   r    r?   r$   r   r   r*   r<  r=  )r+   r,   r*   rv   r  s        r1   8test_legend_pathcollection_labelcolor_linecolor_iterablerO  W  s     llnGCXX/!34FJJryy}biim46JB
)){)
+CMMOED::  !17;;;r3   c                  v   t        j                         \  } }|j                  t        j                  d      t        j                  d      t        j                  d      d       |j                  d      }|j                         \  }t        j                  j                  |j                         d      sJ y )Nr   r7  )r   r   rG  r:  rN  )r   r   r    r   r?   r$   r   r   r*   r<  r=  )r+   r,   rv   r  s       r1   4test_legend_pathcollection_labelcolor_linecolor_cmaprQ  c  s}     llnGCJJryy}biimryy}DJI
)){)
+CMMOED::  !17;;;r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   r   markeredgecolorrf   r8  r   r\   r9  r   rT  r:  rA  rB  rC  s        r1   &test_legend_labelcolor_markeredgecolorrU  n      llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL
))0)
1C3==?O< >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   r   r   rf   r8  r   r\   r9  r   rT  r:  rA  rJ  rC  s        r1   5test_legend_pathcollection_labelcolor_markeredgecolorrY  z      llnGCJJryy}biimAoTSJIJJryy}biimAoTSJIJJryy}biimAoTSJI
))0)
1C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  g ddz        }|j	                  t        j
                  d      t        j
                  d      d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )	NrM  rf   r   r7  rX  rT  r:  r  r   r   r   r   r    r?   r$   r   r   r   r*   r<  r=  r+   r,   r*   rv   r  r/   s         r1   >test_legend_pathcollection_labelcolor_markeredgecolor_iterabler^         llnGCXX/!34FJJryy}biim46JJ
))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  j	                  t
        j                  j                  d            }|j                  t        j                  d      t        j                  d      dt        j                  d      |d       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r7  Reds)r   r   r   cmaprT  r:  r  r   r   r   cmviridisr   r   r  r    r?   r$   r   r   r*   r<  r=  )r+   r,   r  rv   r  r/   s         r1   :test_legend_pathcollection_labelcolor_markeredgecolor_cmaprf    s     llnGC		r 23JJJ
		"
		"
))B-   ))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   r   markerfacecolorrf   r8  r   r\   r9  r   ri  r:  rA  rB  rC  s        r1   &test_legend_labelcolor_markerfacecolorrj    rV  r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   r   r  rf   r8  r   r\   r9  r   ri  r:  rA  rJ  rC  s        r1   5test_legend_pathcollection_labelcolor_markerfacecolorrm    rZ  r3   c                     t        j                         \  } }t        j                  g ddz        }|j	                  t        j
                  d      t        j
                  d      d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )	NrM  rf   r   r7  rl  ri  r:  r  r\  r]  s         r1   >test_legend_pathcollection_labelcolor_markerfacecolor_iterablero    r_  r3   c                     t        j                         \  } }t        j                  j	                  t
        j                  j                  d            }|j                  t        j                  d      t        j                  d      d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r7  r   ri  r:  r  rc  r]  s         r1   8test_legend_pathcollection_labelcolor_markfacecolor_cmaprq    s     llnGCVV^^BIINN2./FJJ
		"
		"
	   ))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                 p   t        j                         \  }}|j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       | t
        j                  d	<   |j                         }|j                         D ]2  }t
        j                  j                  |j                         |       r2J  y )
Nr   r   r7  r;   rf   r8  r\   r9  legend.labelcolor)r   r   r@   r   r?   r   r   r$   r   r*   r<  r=  r>  s        r1   %test_legend_labelcolor_rcparam_singlert    s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7(-CLL$%
))+C >zz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   rF  rf   r8  r   r\   r9  r   rG  rs  rA  r   r   r@   r   r?   r   r   r$   r   r   r*   r<  r=  rC  s        r1   (test_legend_labelcolor_rcparam_linecolorrw    s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB(3CLL$%
))+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   rS  rf   r8  r   r\   r9  r   rT  rs  rA  rv  rC  s        r1   .test_legend_labelcolor_rcparam_markeredgecolorry        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(9CLL$%
))+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   rS  rf   r8  r   r\   r9  r   mecrs  rA  rv  rC  s        r1   4test_legend_labelcolor_rcparam_markeredgecolor_shortr}        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(-CLL$%
))+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   rh  rf   r8  r   r\   r9  r   ri  rs  rA  rv  rC  s        r1   .test_legend_labelcolor_rcparam_markerfacecolorr    rz  r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   r7  r   rh  rf   r8  r   r\   r9  r   mfcrs  rA  rv  rC  s        r1   4test_legend_labelcolor_rcparam_markerfacecolor_shortr    r~  r3   z4ignore:No artists with labels found to put in legendc                      t        j                         } | j                         rJ | j                  d       | j                         sJ | j                  d       | j                         rJ y )NTF)r   r$   get_draggableset_draggabler$   s    r1   test_get_set_draggabler  )  sb    ZZ\F##%%%
!!!
##%%%%r3   	draggable)TFc                     t        j                         \  }}|j                  t        d      d       |j	                  |       }|j                         | u sJ y )Nr   shabnamsr;   )r  )r   r   r@   rj   r$   r  )r  r+   r,   rv   s       r1   test_legend_draggabler  3  sL    llnGCGGE"IZG(
))i)
(C)+++r3   c                  ^   t        j                  g dddd      \  } }}t        j                         }|j                  D ]  }|j	                  d        j                         d d |d   j                         d d k(  sJ |j                         d d |d   j                         d d k(  sJ y )	Nr   g      ?datar  )r  r   r/   rW   rF   r   )r   ri   r$   r   	set_alphaget_facecolorget_edgecolor)r-   r  hhr$   r  s        r1   test_alpha_handlesr  ;  s    xx	V5IHAq"ZZ\F## 
Scr"be&9&9&;CR&@@@@cr"be&9&9&;CR&@@@@r3   c                 D   dt         j                  d<   dt         j                  d<   dt         j                  d<   t        j                         \  }}|j	                  ddd	       |j                  d
       |j                  j                          d| j                  vsJ y )Nr  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputr;   r   r  z Font family ['serif'] not found.)	r   r   r   r   r@   r$   rk   rl   r  )caplogr+   r,   s      r1   test_usetex_no_warnr  D  s{    ")CLL!2CLL"&CLLllnGCGGAqG IIKI JJOO-V[[@@@r3   c                 
   t        j                  dd      | j                  t        dfd       t	        j
                         \  }}|j                  j                          g d}g d}|j                  ||dd	
       t        ddi      5  |j                         }d d d        t        j                  t        d      5 }|j                         d d d        t              dk(  sJ y # 1 sw Y   OxY w# 1 sw Y   &xY w)Nr         ?r`   perf_counterc                      t               S Nnextcounters   r1   <lambda>z-test_warn_big_data_best_loc.<locals>.<lambda>U      d7m r3   rN   rQ   rT   rU   r;   z
legend.locr=   zGCreating legend with loc="best" can be slow with large amounts of data.r  rf   )	itertoolscountsetattrtimer   r   rk   rl   r@   r	   r$   r  rD  r  draw_artistr   )monkeypatchr+   r,   r-   r.   r$   recordsr  s          @r1   test_warn_big_data_best_locr  R  s    ooac*Gn.CDllnGCJJOO 	'A*AGGAq$fG%	\6*	+ 	k)
*  -4  w<1    s   C-C9-C69Dc                 H   t        j                  dd      | j                  t        dfd       t	        j
                         \  }}|j                  j                          g d}g d}|j                  ||dd	
       |j                  d      }|j                  |       y )Nr   r  r  r  c                      t               S r  r  r  s   r1   r  z:test_no_warn_big_data_when_loc_specified.<locals>.<lambda>m  r  r3   rN   rQ   rT   rU   r;   r=   )r  r  r  r  r   r   rk   rl   r@   r$   r  )r  r+   r,   r-   r.   r$   r  s         @r1   (test_no_warn_big_data_when_loc_specifiedr  j  s}    ooac*Gn.CDllnGCJJOO 	'A*AGGAq$fG%YYvFOOFr3   label_arraylowhigh)r  r  c                 
   g d}ddgddgddgg}t        j                         \  }}|j                  |||        |j                         }|j	                         D cg c]  }|j                          }}|dd	gk(  sJ y c c}w )
Nr   r   rf   r   r   rb   r;   r  r  )r   r   r@   r$   r   r   )r  r-   r.   r+   r,   rv   entrylegend_textss           r1   'test_plot_multiple_input_multiple_labelr  {  s     	A
Q
Q
Q	A llnGCGGAqG$
))+C25--/BENN$BLBE6?*** Cs   B r   r   r   c                     g d}ddgddgddgg}t        j                         \  }}|j                  |||        |j                         }|j	                         D cg c]  }|j                          }}|t        |       gdz  k(  sJ y c c}w )Nr   r   rf   r   r   rb   r;   )r   r   r@   r$   r   r   rF  )r   r-   r.   r+   r,   rv   r  r  s           r1   %test_plot_multiple_input_single_labelr    s     	A
Q
Q
Q	A llnGCGGAqG
))+C25--/BENN$BLBCJ<!++++ Cs   Bc                    g d}g d}t        j                         \  }}t        j                  t        j
                  d      5  |j                  |||        d d d        |j                         }t        |j                               dk(  sJ |j                         d   j                         t        |       k(  sJ y # 1 sw Y   gxY w)Nr   )rf   r   r   z$Passing label as a length 2 sequencer  r;   r   r   )r   r   r  rD  r   MatplotlibDeprecationWarningr@   r$   r   r   r   rF  )r  r-   r.   r+   r,   rv   s         r1   %test_plot_single_input_multiple_labelr    s     	AAllnGC	c66B
D )
1K() ))+Cs}}1$$$==?1&&(C,<<<<) )s   C  C	c                      t        j                         \  } }|j                  dgdggdg      \  }|j                         dk(  sJ y )Nr   r   Ar;   )r   r   r@   	get_label)r+   r,   rU   s      r1   !test_plot_single_input_list_labelr    sD    llnGCGGaS1#JseG,ED>>s"""r3   c                      t        j                  t              5  g d} ddgddgddgg}g d}t        j                         \  }}|j                  | ||       d d d        y # 1 sw Y   y xY w)	Nr   r   rf   r   r   rb   )r  r  mediumr;   )r  r  r  r   r   r@   )r-   r.   r   r+   r,   s        r1   3test_plot_multiple_label_incorrect_length_exceptionr    sn     
z	" #VVV *,,.R
1E"# # #s   ?A""A+c                      t        j                         \  } }|j                  g dg dg dddd       |j                          y )NrN  r   r   r   faceFill)r  r   r   )r   r   r   r$   r   s     r1   test_legend_face_edgecolorr    s9    llnGCOOIy)!V6  CIIKr3   c                      t        j                         \  } }|j                  ddgddgd       |j                         }|j                  |u sJ |j                         d   j                  |u sJ y )Nr   rf   r\   r   rU   r;   r   )r   r   r@   r$   r  r   r   s      r1   test_legend_text_axesr    se    llnGCGGQFQF&G)
))+C88r>>==?1""b(((r3   c                  (   t        j                         \  } }|j                  ddgddgd       t        j                  dgdgd      g}|j                  |dgd      }|d   j                         |j                  d   j                         k(  sJ y )Nr   r   r  )r  r  r  )r   r   r    mlinesLine2Dr$   r   r   )r+   r,   r0   rv   s       r1   test_handlerline2dr    s    llnGCJJ1v1vcJ*}}aS1#c23G
))Gj\Q)
7C1:  "c&8&8&;&F&F&HHHHr3   c                      t        j                         j                         } | j                         }|j	                  ddgddgd       | j                         }|j                  d      | u sJ y )Nr   r   rU   r;   F)root)r   r   
subfiguresr   r@   r$   
get_figure)subfigr,   rv   s      r1   test_subfigure_legendr    s`    ZZ\$$&F		BGGQFQF&G)
--/C>>u>%///r3   c                  ~   t        j                  ddgddgdd      } t        j                         j                         d   }|j	                  d       |j                         d d t        | j                         d   d d       k(  sJ |j                         d d t        | j                         d   d d       k(  sJ y )	Nr   r   rf   r\   z#123456r   )r/   r   r   )r   r   r$   get_patchesr  r  tupler  )pcr   s     r1   -test_setting_alpha_keeps_polycollection_colorr    s    			1a&1a&		IBJJL$$&q)E	OOC !$b.>.>.@.CBQ.G(HHHH !$b.>.>.@.CBQ.G(HHHHr3   c            	         g d} t        j                         \  }}| D cg c]  }t        j                  dgdgd|       }}g d}|D cg c]  }|j	                          }}|j                  ||      }|j                         D cg c]  }|j	                          }	}|j                         D 
cg c]  }
|
j                          }}
||	cxk(  r| k(  sJ  J ||k(  sJ y c c}w c c}w c c}w c c}
w )N)r   *r  r   None)lsr  )r  rI   xyzzy)	r   r   r  r  r   r$   	get_linesr   r   )_markersr+   r,   markr   r)   rU   r   r$   new_markersr  
new_labelss               r1   test_legend_markers_from_line2dr    s    HllnGC!# ]]A3t< #E #$F-23Tt 3G3YYuf%F171A1A1CD4??$DKD.4.>.>.@Ad$--/AJAk-X-----Z# 4 EAs   "C%C*	C/4C4c                 \    g d}d}| j                  ||       |j                  ||       y )N)r   r   r   r   er  r\   )ncol)r^   r  )r  r  stringsr^   s       r1   test_ncol_ncolsr    s.     -GEOOG%O(NN7%N(r3   c                     t        j                         \  } }t        j                  t        d      5  |j                  ddg       d d d        t        j                  t        d      5  |j                  ddg       d d d        t        j                  t        d      5  |j                  d	dg       d d d        y # 1 sw Y   zxY w# 1 sw Y   NxY w# 1 sw Y   y xY w)
NzFloc must be string, coordinate tuple, or an integer 0-10, not \(1.1,\)r  )r   r  r   r)   zWloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 0.4227, 0.4523\))bX9?g:M?gm{?zRloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 'go blue'\))r  zgo bluer   r   r  r  r  r$   r   s     r1    test_loc_invalid_tuple_exceptionr    s     llnGC	z +C 
E 5
		g{m	45 
z +T 
V E
		-{m	DE 
z +Q 
S @
		(+	?@ @5 5E E@ @s#   C+C#CC
CC"c                      t        j                         \  } }|j                  ddg       |j                  ddg       y )N)r  }?5^I?r  r  )r   rf   r   r   r$   r   s     r1   test_loc_valid_tupler    s5    llnGCII.+I7II&+I/r3   c                      t        j                         \  } }|j                  ddgdg       |j                  ddgdg       y )Nr  r  r  r  r   rf   r  r   s     r1   test_loc_valid_listr    s=    llnGCII5%.+I7II1a&+I/r3   c                      t        j                         \  } }t        j                  t        d      5  |j                  g ddg       d d d        y # 1 sw Y   y xY w)NzOloc must be string, coordinate tuple, or an integer 0-10, not \[1.1, 2.2, 3.3\]r  )r   r  gffffff
@r  r  r  r   s     r1   test_loc_invalid_list_exceptionr  #  sM    llnGC	z +L 
N =
		o{m	<= = =   AAc                      t        j                         \  } }t        j                  t        d      5  |j                  ddidg       d d d        y # 1 sw Y   y xY w)NzKloc must be string, coordinate tuple, or an integer 0-10, not {'not': True}r  notTr  r  r  r   s     r1   test_loc_invalid_typer  *  sQ    llnGC	z +F 
H ;
		udm[M	:; ; ;r  c                     t        j                         \  } }|j                  ddg       |j                  ddg       |j                  ddg       |j                  ddg       t        j                  t
        d      5  |j                  d	dg       d d d        t        j                  t
        d
      5  |j                  ddg       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nr   r  r  r   r   r   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r  r-  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rF   r   r   r$   r  r  r  r   s     r1   !test_loc_validation_numeric_valuer  1  s    llnGCII![MI*II![MI*II![MI*II"k]I+	z +; 
= 0
		b+	/0 
z +; 
= 0
		b+	/0 0	0 00 0s   C;C%C"%C.c                     t        j                         \  } }dg}|j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d	|       |j                  d
|       |j                  d|       |j                  d|       t        j                  t
        d      5  |j                  d|       d d d        y # 1 sw Y   y xY w)Nr  r=   r  r  r   r   r  r   r   r  zlower centerzupper centerz 'wrong' is not a valid value forr  wrongr  )r+   r,   r)   s      r1    test_loc_validation_string_valuer  @  s   llnGC]FII&I(II-I/II&I(II-I/II,vI.II,vI.II-I/II'&I)II-I/II.I0II.I0II.I0	z)K	L .
		gf	-. . .s   D77E c                     t        j                  t        d            \  } t        j                  t        d            \  }t        j                  t
        d      5  t        j                  | |gg d      }t        |j                        dk(  sJ t        |j                               dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   znumber of handles and labelsr  pl1pl2pl3r0   r)   rf   )
r   r@   rj   r  rD  r  r$   r   r   r   r   r  r$   s      r1   !test_legend_handle_label_mismatchr  S  s    88E"IDC88E"IDC	k)G	H ,S#J7LM6(()Q...6##%&!+++, , ,s   AB::Cc                  N   t        j                  t        d            \  } t        j                  t        d            \  }t        j                  t	        | |g      t	        g d            }t        |j                        dk(  sJ t        |j                               dk(  sJ y )Nr   r  r  rf   )r   r@   rj   r$   iterr   r   r   r  s      r1   (test_legend_handle_label_mismatch_no_lenr  \  s    88E"IDC88E"IDCZZc3Z 0#$9:<Fv$$%***v!"a'''r3   c                      t        j                  g d       t        j                  t        d      5  t        j
                          d d d        y # 1 sw Y   y xY w)Nr   zNo artists with labels foundr  )r   r@   r  r  r  r$   r   r3   r1   test_legend_nolabels_warningr
  e  s;    HHY	{*H	I 

  s   AAc                      t        j                  g d       t        j                          t        j                         j	                         J y )Nr   )r   r@   r$   r  r   r   r3   r1   test_legend_nolabels_drawr  k  s2    HHYJJL779!---r3   c            	      6   g d} g d}g d}g }t        j                  dd      \  }}t        |j                  d      D ]  \  }}|j	                  | ||dd	d
       |j                  dd       |j                  dd       |j                  |      }|j                  j                          |j                  |j                         j                  |j                  j                                       t        |d   j                   |d   j                          y )Nr   )r   r   r   )r   r   r   rf   r   r   r]   r=   r   grayr   zShaded Area)r/   r  r   r   r   rF   r   r>   r   )r   r   r   rg   r   rX   rY   r$   rk   rl   rm   rn   ro   rp   rq   r   rr   )	r-   r  r  rt   r+   rs   r,   r   rv   s	            r1   test_legend_loc_polycollectionr  r  s     	A	B	BJ||!W5HCsxx!78 JC
2rs-P
Aq
BiiCi 

!!#//0E0E0GH	JJ JqM((*Q-*>*>?r3   c                  
   t        j                  dd      \  } }g }t        |j                  d      D ]  \  }}ddg}ddg}|j	                  ||d       |j                  ddd	d
       |j                  |      }| j                  j                          |j                  |j                         j                  |j                  j                                       t        |d   j                  |d   j                         y )Nrf   r  r]   r  r   z	plot namer;   r  zsome text blahblahtop)verticalalignmentr>   r   )r   r   r   rg   r@   r  r$   rk   rl   rm   rn   ro   rp   rq   r   rr   )r+   rs   rt   r,   r   r-   r.   rv   s           r1   test_legend_textr    s     ||!W5HCJsxx!78 JCFF
1K(
Q,FiiCi 

!!#//0E0E0GH	JJ JqM((*Q-*>*>?r3   c                     t        j                         \  } }|j                  g dd       |j                  dd       |j	                  d       t
        j                  j                  | d	| j                  
      5 }| j                  t        j                                d d d        j                          y # 1 sw Y   xY w)Nr   Liner;   r   )r   r   )r~   r   r>   _get_renderer)wraps)r   r   r@   annotater$   r   r   objectr  savefigioBytesIOassert_not_called)r+   r,   mocked_get_renderers      r1   test_legend_annotater!    s    llnGCGGIVG$KKKII!I			(9(9 
 
; ">QBJJL!"
 ))+" "s   >$B;;Cc                     t         j                  j                  d       t         j                  j                  d      } t        j                  dd      \  }}g d}|d   j                  | d|	      }|d
   D cg c]  }|j                          c}|k(  sJ |d   j                         \  }}||k(  sJ t        d |D              sJ |d   j                  | |d      }|d   D cg c]  }|j                          c}|k(  sJ |d   j                         \  }}||k(  sJ t        d |D              sJ t        j                  t        d      5  |d   j                  | |d d       }	d d d        |d   j                  | d      }
|
d   d   j                         dk(  sJ t        d |
d   dd  D              sJ y c c}w c c}w # 1 sw Y   _xY w)Ni!N,)r   r   r   r   )nrowsr^   )box Azbox Bzbox Czbox Dr   T)patch_artistr   boxesc              3   d   K   | ](  }t        |t        j                  j                         * y wr  )
isinstancer   patches	PathPatch.0r  s     r1   	<genexpr>z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     Ez!S[[223E   .0F)r   showboxmediansc              3   d   K   | ](  }t        |t        j                  j                         * y wr  )r(  r   r   r  r+  s     r1   r-  z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     @1z!SYY--.@r.  z values must have same the lengthr  rf   rF   r;   r\   r$  c              3   Z   K   | ]#  }|j                         j                  d        % yw)_N)r  rH  )r,  r-   s     r1   r-  z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     Iq{{}'',Is   )+)r   r   seedr   r   boxplotr  r!   allr  r  r  )r  r+   rs   legend_labelsbp1r  r0   r)   bp2bp3bp4s              r1   test_boxplot_legend_labelsr<    s   IINN899G$D||!1-HC8M a&..D.
FC#&w<0aAKKM0MAAA!f668OGV]"""EWEEEE a&..]E.
BC#&y>2aAKKM2mCCC!f668OGV]"""@@@@@ 
z)K	L =!fnnTs);n<= a&..W.
-Cy>!&&(G333Ic)nQR6HIIII) 1 3= =s   ;G)GGG)r"   r  r  platformr  unittestr   r  numpyr   numpy.testingr   r  matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotr   
matplotlibr   matplotlib.patchesr)  r   matplotlib.transforms
transformsr  matplotlib.collectionsr  matplotlib.linesr   r  matplotlib.legend_handlerr   matplotlib.legendr$   r  r	   matplotlib.font_managerr
   r2   rA   rL   rZ   rw   r   r   machiner   r   r   r   r   r   r   r   r   r   r  r  r  rZ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r  parametrizer(  r.  r2  r5  r?  rD  rH  rK  rO  rQ  rU  rY  r^  rf  rj  rm  ro  rq  rt  rw  ry  r}  r  r  filterwarningsr  r  r  r  r  r  r   r  intr  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   r3   r1   <module>rR     s    	       )  O 4   % + - ! 2 # ! 29$ %&D9 : %&D9: :: %&' (@,@@ ./TB' C' ,-4+8++-9auF-F- -.D+8++-9auF	IF	I #$$+8++-9atE2E2 &'T+8++-9atE	6E	6 ;-Tt<
E =
E <.d+8++-9auFF $&78dK! L!  &'T:8 ;8 :,D	B. C.B#5$ (
 )
]N ]N@5 5p&#R )*+8++-9auFF( -./" 0" 789+ :+:('" ./T+8++-9auF!F!*7,-,#1L &AB, C,  347 57  ;<7 =7 &AB, C, "?@	> A	>	>	>	>	<<	>	>	>>&	>	>	>>" "?@
> A
>
>
>
>
>
> RS& T& m4, 5,A 
A 
A0" %)8)15&/)B)D E+E+ 5!S/2, 3, %)8)15&/)B)D E=E=#
#)I0I " () ))@"00=;0.&,( RS. T.@&@",Jr3   