
    gq              	       	   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        Z/ edgd ej`                         dk(  rdnd       d        Z1 edgd ej`                         dk(  rdnd       d        Z2 edgd ej`                         dk(  rd nd      d         Z3 ed!gd ej`                         dk(  rd nd      d"        Z4 ed#gdd$      d%        Z5 ed&gd ej`                         dk(  rd nd'      d(        Z6 ed)d*gd      d+        Z7 ed,gd      d-        Z8 ed.gdd/0      d1        Z9d2 Z:d3 Z; ed4g5      d6        Z< G d7 d8      Z= G d9 d:      Z>d; Z? ed<g ej`                         dk(  rd=nd >      d?        Z@d@ ZAdA ZBdB ZC edCg      dD        ZD edEg      dF        ZEdG ZFdH ZGdI ZHdJ ZI edKgddL ej`                         dk(  rdMnd N      dO        ZJdP ZKdQ ZLdR ZMdS ZNdT ZOdU ZPej                  j                  dVdW      dX        ZSej                  j                  dYdZ      d[        ZTej                  j                  dYd\      d]        ZUej                  j                  dVdW      d^        ZVej                  j                  d_d`      da        ZWdb ZXdc ZYdd ZZde Z[df Z\dg Z]dh Z^di Z_dj Z`dk Zadl Zbdm Zcdn Zdej                  j                  d_d`      do        Zedp Zfdq Zgdr Zhds Zidt Zjej                  j                  du      dv        Zlej                  j                  dwdx      dy        Zmdz Zned{        Zod| Zpd} Zqej                  j                  d~ddgd ej                  ddg      g      d        Zsej                  j                  dddetg      d        Zuej                  j                  d~ddgd ej                  ddg      g      d        Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~ e       d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  du      d        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               Y/var/www/dash_apps/app1/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    legend_auto1T)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_auto1rB   ,   s^     llnGC
		#AGGArAvs%G(GGAq2vs&G)II&Ir3   legend_auto2c                      t        j                         \  } }t        j                  d      }|j	                  ||dd      }|j	                  ||ddd   dd      }|j                  |d   |d   gd	d
gd       y)r7   r8   edgem)alignr/   Nr   r   updownr>   r?   )r   r   r   r@   barr$   )r+   r,   r-   b1b2s        r1   test_legend_auto2rN   6   sv     llnGC
		#A	1F#	.B	1TrT7&	4BIIr!ubentVn&I9r3   legend_auto3c                      t        j                         \  } }g d}g d}|j                  ||dd       |j                  dd       |j	                  dd       |j                  d	       y
)r7   ?皙?rS   rR   rR   r   ffffff?rU   皙?rV   r   r   o-liner<                 ?r>   r?   N)r   r   rA   set_xlimset_ylimr$   )r+   r,   r-   r.   s       r1   test_legend_auto3r]   @   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)rK   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_auto4rz   L   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.
    ri   )g333333#@g333333@r`   centerr>   )r   rR   皙?皙?C1)xywidthheightfcr   r   rR   rZ   rS   )r   )r   r   r   ih  rV   C0)r   r   z	A segmentr<   r?   N)r   r   r   rj   mpatchesEllipsePolygonr   arrayWedge	add_patchrA   r$   rn   ro   rp   rq   rr   rs   rt   r   ru   )r+   rv   rw   r,   r   _patchry   s          r1   test_legend_auto5r   b   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   legend_various_labelsc                  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      r:   r   r<   gffffff@u   DéveloppésrH   __nolegend__r>   )	numpointsr   )r   figureadd_subplotrA   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arm64g9v?)r5   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-      rH   ddiamondr>   F)r   markerfirst)r   r   rA   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   ri   r_   r   ri   r_   r   z-xr_   r   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)r   handler_map)r   r   rA   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.pngx86_64g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 awayr}   r?   r   r   r   r   )r   r   rA   rm   r$   legendPatchset_facecolorr+   r,   ry   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   r}   r?   r   )	r   r   rA   rm   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fancyrV   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   rH   zXX
XXr   )xerryerrr   r   rZ   ri   T	My legendr   )r   r   ra   shadowtitler   )r   subplotrA   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   r8   mylabelr   )r   r   r   )r   )r   r   r   rA   r$   )r-   r.   s     r1   test_framealphar      s9     	AsC A	AHHQr*JJ#r3   scatter_rc3scatter_rc1c                     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   rH   threer<   r   rZ   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   legend_expandc                     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   r8   r9   r:   r;   r<   
upper left)r   moder=   right
lower leftri   )r   r   ra   )	r   r   lenr   r@   r   rA   r$   
add_artist)legend_modesr+   rv   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)r5   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~   )rR   rZ   rR   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)	r   r   r   	Rectangler   fill_betweenr[   r\   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   rA   rm   r$   removelegends
get_legend)r+   r,   linesry   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).,r:   r   r<   ri   TreverseN)
r   r   rA   r$   	get_textsget_textlegend_handles
get_markerlistreversed)r+   r,   r-   r.   r)   markersry   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<   ri   bxsecondTr   N)r   rA   r$   )fig_testfig_refr,   s      r1   test_reverse_legend_displayr  4  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   rA   rm   r   r   r$   assert_called_withgcaselfr   rf   s      r1   test_legend_no_argsz&TestLegendFunction.test_legend_no_argsD  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_labelsJ  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   rA   rm   pytestraises	TypeErrorr$   )r   r   s     r1   #test_legend_positional_handles_onlyz6TestLegendFunction.test_legend_positional_handles_onlyP  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_onlyW  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1ri   )r   )	r   rA   rm   r   r   return_valuer$   r  r  )r   r   handles_labelss      r1   test_legend_handler_mapz*TestLegendFunction.test_legend_handler_mapc  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<   ri   2xr_   3xr  )r0   	r   r   r   r   rA   r   r   r$   r  )r   r+   r,   r-   ln1ln2ln3rf   s           r1   test_legend_kwargs_handles_onlyz2TestLegendFunction.test_legend_kwargs_handles_onlyk  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   r6  ri   r  r-   r7  r)   r9  )r   r+   r,   r-   r:  r;  rf   s          r1   test_legend_kwargs_labels_onlyz1TestLegendFunction.test_legend_kwargs_labels_onlyu  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   ri      sinr<   cosr  r   r   )r)   r0   )r   r   r   r   pirA   rC  rD  r   r   r$   r  )r   r+   r,   thlnslncrf   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   ri   rB  rC  r<   rD  rE  r?  r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   r   rF  rA   rC  rD  r'  warnsDeprecationWarningr$   r   strmessage
startswith)r   r+   r,   rG  rH  rI  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   ri   Densityr<   )r   r_   ri   Temperaturer  )	mpl_toolkits.axes_grid1rU  twinxrA   r   r   r   r$   r  )r   rU  hostparr   r   rf   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/  r4  r=  r@  rJ  rS  r^  r   r3   r1   r  r  B  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   rA   rm   r   r   r$   r  transFigurer   r+   r,   r   rf   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  re  rg  ri  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,  re  rg  ri  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   rA   rm   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   ri   r   r          @r  r   rE  )r   r)   r0   )r   rf  )r   r   rA   rm   r   r@   r   r   r$   r  rh  )r   r+   rv   r   lines2rf   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   ri   r   r   rr  rE  r?  rL  )r   r   rA   rm   r   r@   r'  rM  rN  r$   r   rO  rP  rQ  )r   r+   rv   r   rs  rR  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)	r_  r`  ra  rj  r!  rm  rp  rt  rv  r   r3   r1   rc  rc    s#    BBB?,	r3   rc  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)ro  r}   r   zupper zlower )lowerr}   upperzleft zright )QnX4@Qn;@l@gE@)rz  g Q@r|  lf@)gLNb@r{  r|  r}  )rz  r{  gE@r}  )      $@     X@     `@     p@)     (u@r       |@r  )  r       @r  )r~  r~  r       F@)r  r~  r  r  )     ؄@r~  r  r  )r~       q@r       s@)r  r~  r  r  )r  r  r  r  )r  r  r  r  Tr8   )constrained_layoutdpir   Boo1r<   zoutside r?   )	enumerateprintr   r   rA   rm   r$   draw_without_renderingr   rq   extents)postodosupperextlowerextleftextrightextaxbblegbbnntodor+   rv   ry   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   rZ   rr  r   g      @ri   )y1y2y3r?  )r   r   )r   F   r>   r?   N)r   r   r   r   	stackplotr[   r\   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   rK   rm   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 )Nr:   r   r_   )marker	facecolorr   sr    )redgreenbluei  ri   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 )NrY   rZ   kr:   r   )r/   r  r   r   r   vri   )r   r   r    r$   mlegend_get_legend_handles_labelsr   )r+   r,   handlabs       r1   test_legend_repeatcheckokr  /  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      皙@)rm   r   r    r$   r  r[   r\   )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  rK   r>   r?   )mtransformsAffine2D	translater   r   r   rA   r    r  	transDatar$   )offsetr-   s     r1   #test_not_covering_scatter_transformr  J  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  rS   z--r_   )
linestylesr   z-.)r  :)line1line2zline 3r   )
mcollectionsLineCollectionr   r   add_collectionr$   r  r   get_linestyles_dash_pattern)lines1rs  lines3lc1lc2lc3r+   r,   ry   h1h2h3ohlhs                 r1   !test_linecollection_scaled_dashesr  V  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   rA   rm   r$   r   s     r1   test_handler_numpointsr  j  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   rA   r  r'  rM  UserWarningr$   r   
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr!   )r+   r,   rR  fs       r1   test_text_nohandler_warningr  r  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   rK   r$   r   r3   r1    test_empty_bar_chart_with_legendr    s     GGB&!JJLr3   zshadow_argument_types.pngmpl20gy&1?)r5   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  rS   )r/   r  center right)rS   r   r   )r/   oyr   ztab:cyanr   )r/   oxlower rightr?   )r   r   rA   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   rA   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 )Nr8   r   r<   Tw)r   r  r   )r   r   rA   rm   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   rA   rm   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 )	Nr8   r  r   Aardvarkr<      ri   rS   )r   r   rA   rm   r$   rq   rn   get_rendererx0r'  approx)r+   r,   ry   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 )Nr8   r  r   r  r<   )r   r   rA   rm   r$   rn   ro   rq   )r+   r,   ry   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!  ri   r_   )r   r   )rb   r   )r   r   r   zlegend.title_fontsizer  z	font.sizer   r   r   r   )r   rA   rm   r'  r(  r  r$   r
   r  get_sizer   rj   get_fontsizer   r   )	ry   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)r}   ro  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   rA   rm   r$   get_childrenrG   get_alignmentr,  r+   r,   ry   s       r1   test_legend_alignmentr1    sp    llnGCGGE"IVG$
))*	)
:Ca &&)333)+++r3   r   r|   c                    t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        |j                         t        j                  j                  |    k(  sJ y )Nr   r   r<   )
r   r   rA   rm   r$   set_loc_get_locr  rf   codesr   r+   r,   ry   s       r1   test_ax_legend_set_locr7    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   rA   rm   r$   r3  rQ  splitr4  r  rf   r5  r6  s       r1   test_fig_legend_set_locr;    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   rA   rm   r$   set_alignmentr.  rG   r/  r0  s       r1   test_legend_set_alignmentr>    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<   ri   #2r_   #3
labelcolor)r   r   rA   r   r@   r$   r  r   r*   
same_color	get_colorr/   r+   r,   ry   r  s        r1   test_legend_labelcolor_singlerH  %  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   r@  r<   ri   rA  r_   rB  r   r   r   rC  r   r   rA   r   r@   r$   r   r  r   r*   rE  rF  r+   r,   ry   r  r/   s        r1   test_legend_labelcolor_listrM  2  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   r@  r   r   r/   ri   rA  r   r_   rB  r   	linecolorrC  rJ  rK  rL  s        r1    test_legend_labelcolor_linecolorrQ  >  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   r@  r   r   ri   rA  r   r_   rB  r   rP  rC  rJ  r   r   r    r   r@   r$   r   r  r   r*   rE  rF  rL  s        r1   /test_legend_pathcollection_labelcolor_linecolorrT  J  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   rF   ri   r   r@  r   rP  rC  black)r   r   r   r   r    r@   r$   r  r   r*   rE  rF  )r+   r,   r*   ry   r  s        r1   8test_legend_pathcollection_labelcolor_linecolor_iterablerX  V  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   r@  )r   r   rP  rC  rW  )r   r   r    r   r@   r$   r  r   r*   rE  rF  )r+   r,   ry   r  s       r1   4test_legend_pathcollection_labelcolor_linecolor_cmaprZ  b  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   r@  r   r   markeredgecolorri   rA  r   r_   rB  r   r]  rC  rJ  rK  rL  s        r1   &test_legend_labelcolor_markeredgecolorr^  m      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   r@  r   r   r   ri   rA  r   r_   rB  r   r]  rC  rJ  rS  rL  s        r1   5test_legend_pathcollection_labelcolor_markeredgecolorrb  y      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 )	NrV  ri   r   r@  ra  r]  rC  r  r   r   r   r   r    r@   r$   r   r  r   r*   rE  rF  r+   r,   r*   ry   r  r/   s         r1   >test_legend_pathcollection_labelcolor_markeredgecolor_iterablerg         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   r@  Reds)r   r   r   cmapr]  rC  r  r   r   r   cmviridisr   r   r  r    r@   r$   r   r  r*   rE  rF  )r+   r,   r  ry   r  r/   s         r1   :test_legend_pathcollection_labelcolor_markeredgecolor_cmapro    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   r@  r   r   markerfacecolorri   rA  r   r_   rB  r   rr  rC  rJ  rK  rL  s        r1   &test_legend_labelcolor_markerfacecolorrs    r_  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   r@  r   r   r  ri   rA  r   r_   rB  r   rr  rC  rJ  rS  rL  s        r1   5test_legend_pathcollection_labelcolor_markerfacecolorrv    rc  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 )	NrV  ri   r   r@  ru  rr  rC  r  re  rf  s         r1   >test_legend_pathcollection_labelcolor_markerfacecolor_iterablerx    rh  r3   c                     t        j                         \  } }t        j                  j	                  t
        j                  j                  d            }|j                  t        j                  d      t        j                  d      dt        j                  d      |       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r@  )r   r   r  rr  rC  r  rl  )r+   r,   
facecolorsry   r  r/   s         r1   8test_legend_pathcollection_labelcolor_markfacecolor_cmapr{    s     llnGC		r 23JJJ
		"
		"
))B-   ))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   r@  r<   ri   rA  r_   rB  legend.labelcolor)r   r   rA   r   r@   r   r   r$   r  r*   rE  rF  rG  s        r1   %test_legend_labelcolor_rcparam_singler~    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   r@  r   rO  ri   rA  r   r_   rB  r   rP  r}  rJ  r   r   rA   r   r@   r   r   r$   r   r  r*   rE  rF  rL  s        r1   (test_legend_labelcolor_rcparam_linecolorr    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   r@  r   r\  ri   rA  r   r_   rB  r   r]  r}  rJ  r  rL  s        r1   .test_legend_labelcolor_rcparam_markeredgecolorr        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   r@  r   r\  ri   rA  r   r_   rB  r   mecr}  rJ  r  rL  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   r@  r   rq  ri   rA  r   r_   rB  r   rr  r}  rJ  r  rL  s        r1   .test_legend_labelcolor_rcparam_markerfacecolorr    r  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   r@  r   rq  ri   rA  r   r_   rB  r   mfcr}  rJ  r  rL  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   rA   rm   r$   r  )r  r+   r,   ry   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/   rZ   rH   r   )r   rl   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   rA   r$   rn   ro   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         ?rc   perf_counterc                      t               S Nnextcounters   r1   <lambda>z-test_warn_big_data_best_loc.<locals>.<lambda>U      d7m r3   rQ   rT   rW   rX   r<   z
legend.locr>   zGCreating legend with loc="best" can be slow with large amounts of data.r%  ri   )	itertoolscountsetattrtimer   r   rn   ro   rA   r	   r$   r'  rM  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   rQ   rT   rW   rX   r<   r>   )r  r  r  r  r   r   rn   ro   rA   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   ri   r   r   re   r<   r  r  )r   r   rA   r$   r  r  )r  r-   r.   r+   r,   ry   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   ri   r   r   re   r<   )r   r   rA   r$   r  r  rO  )r   r-   r.   r+   r,   ry   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   )ri   r   r   z$Passing label as a length 2 sequencer%  r<   r   r   )r   r   r'  rM  r   MatplotlibDeprecationWarningrA   r$   r   r  r  rO  )r  r-   r.   r+   r,   ry   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   rA   	get_label)r+   r,   rX   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   ri   r   r   re   )r  r  mediumr<   )r'  r(  r  r   r   rA   )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 )NrW  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   ri   r_   r   rX   r<   r   )r   r   rA   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   ry   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   rX   r<   F)root)r   r   
subfiguresr   rA   r$   
get_figure)subfigr,   ry   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   ri   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  rK   xyzzy)	r   r   r  r  r  r$   	get_linesr  r  )_markersr+   r,   markr   r)   rX   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)ra   r  )r  r  stringsra   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   ri   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   ri   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%  r6  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rH   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)   ri   )
r   rA   rm   r'  rM  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  ri   )r   rA   rm   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   rA   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   rA   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   ri   r   r   r`   r>   r   grayr   zShaded Area)r/   r  r   r   r   rH   r   r?   r   )r   r   r   rj   r   r[   r\   r$   rn   ro   rp   rq   rr   rs   rt   r   ru   )	r-   r  r  rw   r+   rv   r,   r   ry   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 )Nri   r  r`   r  r   z	plot namer<   r  zsome text blahblahtop)verticalalignmentr?   r   )r   r   r   rj   rA   r  r$   rn   ro   rp   rq   rr   rs   rt   r   ru   )r+   rv   rw   r,   r   r-   r.   ry   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                  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   )nrowsra   )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%  ri   rH   r<   r_   r"  c              3   Z   K   | ]#  }|j                         j                  d        % yw)_N)r  rQ  )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+   rv   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  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   rB   rN   r]   rz   r   r   machiner   r   r   r   r   r   r   r   r   r   r  r  r  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+  r  parametrizer1  r7  r;  r>  rH  rM  rQ  rT  rX  rZ  r^  rb  rg  ro  rs  rv  rx  r{  r~  r  r  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   r3   r1   <module>rP     s          )  O 4   % + - ! 2 # ! 29$ >"5 6 >"5: 6: >"# $@,@@ *+>' ?' ,-4/x//1W<e!E-E- -.D/x//1W<e!E	IE	I #$$+8++-9atE2E2 &'T+8++-9atE	6E	6 7)48
E 9
E <.d+8++-9auFF =-0dC! D!  ?#68 78 :,D	B. C.B#5$ (
 )
]N ]N@5 5p&#R )*/x//1W<e!EE( -./" 0" 789+ :+:('" ./T/x//1W<e!E!E!*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   