
    EVf˿              	       h   d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dl	Z	d dl
mZmZ d dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlm Z d dlmZ d dlm Z  d dl!m"Z# d dlm$Z$m%Z% d dl&m'Z' d	 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.d Z/ edgd      d        Z0 edgd      d        Z1 edgd ejd                         dk(  rd nd      d        Z3 ed gd ejd                         dk(  rd nd      d!        Z4 ed"gdd#      d$        Z5 ed%gd ejd                         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./      d0        Z9d1 Z:d2 Z; ed3g4      d5        Z< G d6 d7      Z= G d8 d9      Z>d: Z? ed;g      d<        Z@d= ZAd> ZBd? ZC ed@g      dA        ZD edBg      dC        ZEdD ZFdE ZGdF ZHdG ZI edHgddI/      dJ        ZJdK ZKdL ZLdM ZMdN ZNdO ZOdP ZPe	j                  j                  dQdR      dS        ZSe	j                  j                  dTdU      dV        ZTe	j                  j                  dTdW      dX        ZUe	j                  j                  dQdR      dY        ZVe	j                  j                  dZd[      d\        ZWd] ZXd^ ZYd_ ZZd` Z[da Z\db Z]dc Z^dd Z_de Z`df Zadg Zbdh Zcdi Zde	j                  j                  dZd[      dj        Zedk Zfdl Zgdm Zhdn Zido Zjdp Zke	j                  j                  dqdr      ds        Zldt Zmedu        Zndv Zodw Zpe	j                  j                  dxdydzgd{ ej                  dydzg      g      d|        Zre	j                  j                  d}d~desg      d        Zte	j                  j                  dxdydzgd{ ej                  dydzg      g      d        Zud Zvd Zwd Zxd Zyd Zzd Z{d Z| e       d        Z}d Z~d Zd Zd Zd Zd Zd Zy)    N)mock)assert_allclose)check_figures_equalimage_comparison)needs_usetex)HandlerTuple)_api
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               e/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddictr3      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      r2   test_legend_auto1rC   *   s^     llnGC
		#AGGArAvs%G(GGAq2vs&G)II&Ir4   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)r8   r9   edgem)alignr0   Nr   r   updownr?   r@   )r   r   r   rA   barr%   )r,   r-   r.   b1b2s        r2   test_legend_auto2rO   4   sv     llnGC
		#A	1F#	.B	1TrT7&	4BIIr!ubentVn&I9r4   legend_auto3c                      t        j                         \  } }g d}g d}|j                  ||dd       |j                  dd       |j	                  dd       |j                  d	       y
)r8   )?皙?rS   rR   rR   r   )ffffff?rT   皙?rU   r   r   zo-liner=                 ?r?   r@   N)r   r   rB   set_xlimset_ylimr%   )r,   r-   r.   r/   s       r2   test_legend_auto3r[   >   s[     llnGC&A*AGGAq$fG%KKSKKSII&Ir4   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)rL   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         r2   test_legend_auto4rx   J   s     ||!Z8HCJchh => JB
R
ae%)8bIiiFi#

!!#//0E0E0GH	JJ JqM((*Q-*>*>?JqM((*Q-*>*>?r4   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.
    rg   )g333333#@g333333@r^   centerr?   )r   rR   皙?皙?C1)xywidthheightfcr   r   rR   rX   rS   )r   )r   r   r   ih  rU   C0)r   r   z	A segmentr=   r@   N)r   r   r    rh   mpatchesEllipsePolygonr   arrayWedge	add_patchrB   r%   rl   rm   rn   ro   rp   rq   rr   r   rs   )r,   rt   ru   r-   r   _patchrw   s          r2   test_legend_auto5r   `   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-*>*>?r4   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ésrI   __nolegend__r?   )	numpointsr   )r   figureadd_subplotrB   r   rA   linspacer%   r,   r-   s     r2   test_various_labelsr      s     **,C		BGGBIIaL#QG'GGBKK3NG;GGBIIaBNG;IIvI&r4   c                  .   t        j                         \  } }|j                  ddgd      \  }t        j                  t
        j                  d      5  |j                  |g      }ddd       t        j                        dk(  sJ y# 1 sw Y   $xY w)	z
    Test that artists with labels starting with an underscore are not added to
    the legend, and that a warning is issued if one tries to add them
    explicitly.
    r   r   _foor=   zwith an underscorematchr1   N)
r   r   rB   pytestwarnsr	   MatplotlibDeprecationWarningr%   lenlegend_handles)r,   r-   rV   r%   s       r2   )test_legend_label_with_leading_underscorer      s     llnGCGGQF&G)ED	d77?S	T +D6*+v$$%***+ +s   BBzlegend_labels_first.pngc                  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.      rI   ddiamondr?   F)r   markerfirst)r   r   rB   r   rA   onesr%   r   s     r2   test_labels_firstr      sz     llnGCGGBIIbM4qG)GGBGGBKM4sG+GGBIIb"b!3iG8II&eI,r4   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   rg   r]   r   rg   r]   r   z-x)r]   r   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)r   handler_map)r   r   rB   r%   r   )r,   r-   p1p2p3s        r2   test_multiple_keysr      s     llnGC
'')T
"CB
'')T
"CB
'')T
"CBIIBx"b2&(H8\$%?8\$A%FH  Ir4   zrgba_alpha.pngx86_64g{Gz?)r6   tolc                      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   rB   rk   r%   legendPatchset_facecolorr,   r-   rw   s      r2   test_alpha_rgbar      sM     llnGCGGE"I!G
**34(
CCOO!!.1r4   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   rB   rk   mplr
   r%   r   r   r   s      r2   test_alpha_rcparamr      sv     llnGCGGE"I!G	/5	6 6jj78hG
 	%%n56 6 6s   6BBfancyrU   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   rI   zXX
XXr   )xerryerrr   r   rX   rg   T	My legendr   )r   r   r_   shadowtitler   )r   subplotrB   r!   r   rA   errorbarr%    r4   r2   
test_fancyr      s    
 KKHHaS2XuD)KK		"ryyQ38DLL2		"C'JJ=#st;!Er4   
framealphag{Gz?c                      t        j                  ddd      } | }t        j                  | |dd       t        j                  d       y )Nr   r9   mylabelr   )r   r   r   )r   )r   r   r   rB   r%   )r.   r/   s     r2   test_framealphar      s9     	AsC A	AHHQr*JJ#r4   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   rI   threer=   r   rX   r   r   )r   r   r   r   zlegend.scatterpointsone)	r   r   r   r!   r   rA   r%   r   rcParams)r-   s    r2   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
  !r4   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   r9   r:   r;   r<   r=   
upper left)r   moder>   right
lower leftrg   )r   r   r_   )	r   r   r   r   rA   r    rB   r%   
add_artist)legend_modesr,   rt   r.   r-   r   l1l2s           r2   test_legend_expandr      s     (#L||C-q1HC
		#A\* 8D
263e,YY<dY3
b
1r63f-YY7Y.
b
		lQ	78r4   hatchingdefault)r6   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   rX   rR   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)	r   r   r   	Rectangler   fill_betweenrY   rZ   r%   )r,   r-   patchs      r2   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-r4   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   rB   rk   r%   removelegends
get_legend)r,   r-   linesrw   s       r2   test_legend_remover     sw    llnGCGGE"IE
**UF
#CJJL;;"
))F
CJJL==?"""r4   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=   rg   TreverseN)
r   r   rB   r%   	get_textsget_textr   
get_markerlistreversed)r,   r-   r.   r/   r*   markersrw   tactual_labelshactual_markerss              r2   &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=   rg   bxsecondTr  N)r   rB   r%   )fig_testfig_refr-   s      r2   test_reverse_legend_displayr  =  s     
			BGGQCWG%GGQCXG&IIdI				BGGQCXG&GGQCWG%IIKr4   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   rB   rk   r   r   r%   assert_called_withgcaselfr   rd   s      r2   test_legend_no_argsz&TestLegendFunction.test_legend_no_argsM  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      r2   %test_legend_positional_handles_labelsz8TestLegendFunction.test_legend_positional_handles_labelsS  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 Artistr   )r   rB   rk   r   raises	TypeErrorr%   )r%  r   s     r2   #test_legend_positional_handles_onlyz6TestLegendFunction.test_legend_positional_handles_onlyY  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      r2   "test_legend_positional_labels_onlyz5TestLegendFunction.test_legend_positional_labels_only`  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      r2   test_legend_three_argsz)TestLegendFunction.test_legend_three_argsf  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1rg   )r   )	r   rB   rk   r   r   return_valuer%   r"  r#  )r%  r   handles_labelss      r2   test_legend_handler_mapz*TestLegendFunction.test_legend_handler_mapl  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=   rg   2xr]   3xr   r   	r   r   r   r   rB   r   r   r%   r"  )r%  r,   r-   r.   ln1ln2ln3rd   s           r2   test_legend_kwargs_handles_onlyz2TestLegendFunction.test_legend_kwargs_handles_onlyt  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   r8  rg   r   r.   r9  r*   r;  )r%  r,   r-   r.   r<  r=  rd   s          r2   test_legend_kwargs_labels_onlyz1TestLegendFunction.test_legend_kwargs_labels_only~  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   rg      sinr=   cosr   r   r   )r*   r1   )r   r   r   r   pirB   rE  rF  r   r   r%   r"  )r%  r,   r-   thlnslncrd   s          r2   !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                        d
k(  sJ y # 1 sw Y   7xY w)Nr   rg   rD  rE  r=   rF  rG  rA  r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   r   rH  rB   rE  rF  r   r   UserWarningr%   r   strmessage)r%  r,   r-   rI  rJ  rK  records          r2   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$$% 	 	5 	5s   +C77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   rg   Densityr=   )r   r]   rg   Temperaturer   )	mpl_toolkits.axes_grid1rU  twinxrB   r   r   r   r%   r"  )r%  rU  hostparr   r   rd   s          r2   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/  r1  r6  r?  rB  rL  rS  r^  r   r4   r2   r  r  K  s@    EE@MA@?>
Nr4   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   rB   rk   r   r   r%   r"  transFigurer%  r,   r-   r   rd   s        r2   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        r2   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        r2   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   rB   rk   r   r*  r+  r%   )r%  r,   r-   r   s       r2   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   rg   r   r          @r   r   rG  )r   r*   r1   )r   rf  )r   r   rB   rk   r   rA   r   r   r%   r"  rh  )r%  r,   rt   r   lines2rd   s         r2   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                        dk(  sJ y # 1 sw Y   7xY w)	Nr   rg   r   r   rr  rG  rA  rN  )r   r   rB   rk   r   rA   r   r   rO  r%   r   rP  rQ  )r%  r,   rt   r   rs  rR  s         r2   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$$% 	 	; 	;s   :CCN)	r_  r`  ra  rj  r&  rm  rp  rt  rv  r   r4   r2   rc  rc    s#    BBB?,	r4   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  Tr9   )constrained_layoutdpir   Boo1r=   zoutside r@   )	enumerateprintr   r   rB   rk   r%   draw_without_renderingr   ro   extents)postodosupperextlowerextleftextrightextaxbblegbbnntodor,   rt   rw   s                r2   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.pngc                  "   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   rX   rr  r   g      @rg   )y1y2y3rA  )r   r   )r   F   r?   r@   N)r   r   r   r   	stackplotrY   rZ   r%   )r,   r-   r.   r  r  r  s         r2   test_legend_stackplotr    s     llnGC
Ar2A	qB	q1B	q1BLLBB'9L:KKKKII&Ir4   c                      t        j                         \  } }t        j                         \  }}|j                  t        d      t        d            }|j	                  |d       y )Nr]   foo)r   r   rL   rk   r%   )r,   r-   fig2ax2brss        r2   test_cross_figure_patch_legendr    sF    llnGCID#
&&q58
$CKKUr4   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  rg   g      i@r   none)r   r  r   alpha
edgecolorsT)	r   r   r!   r   nanr%   r   randgrid)r,   r-   r  r0   nr.   r/   scales           r2   test_nanscatterr  #  s    llnGC


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


1a5E 	 	1	1 IIKGGDMr4   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 )NrW   rX   kr;   r   )r0   r  r   r   r   vrg   )r   r   r!   r%   mlegend_get_legend_handles_labelsr   )r,   r-   handlabs       r2   test_legend_repeatcheckokr  7  s    llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48ID#s8q==llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48ID#s8q==r4   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]   )r0   )r  r  r  r?   r@   g      皙@)rk   r   r!   r%   r#  rY   rZ   )r+   r  s     r2   test_not_covering_scatterr  F  so    F1X /QC!F1I./ JJ$&1GGItS!GGItS!r4   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        r   )	transformr  rL   r?   r@   )mtransformsAffine2D	translater   r   r   rB   r!   r#  	transDatar%   )offsetr.   s     r2   #test_not_covering_scatter_transformr  R  su     !!#--c26F
Ar4 AHHQNKKrdfswwy/B/B&BCJJu~6*r4   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-   rw   h1h2h3ohlhs                 r2   !test_linecollection_scaled_dashesr  ^  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:r4   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   rB   rk   r%   r   s     r2   test_handler_numpointsr  r  s5     llnGCGGE!HFG#IIIr4   c                  "   t        j                         \  } }|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   textr   )r.   r/   r  r   Nr   )r   r   error)r   r   r  r   r   rO  r%   r   
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr"   )r,   r-   rR  fs       r2   test_text_nohandler_warningr  z  s    llnGCGGa1gG.	k	" f
		v;! LLNEArMM"))##Aq(34		 	 	" 'g&
$$&' ' ' 's   C9
&D9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   rL   r%   r   r4   r2    test_empty_bar_chart_with_legendr    s     GGB&!JJLr4   zshadow_argument_types.pngmpl20c            
      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   )r0   r  center right)rS   r}   r   )r0   oyr   ztab:cyanr   )r0   oxlower rightr@   )r   r   rB   r%   r   )r,   r-   legsls       r2   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 r4   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   rB   r   r*  
ValueErrorr%   r   s     r2   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 )Nr9   r   r=   Tw)r   r  r   )r   r   rB   rk   r%   	get_frame	get_alphar   s      r2   test_shadow_framealphar    sV     llnGCGGE#JfG%
))43)
/C==?$$&!+++r4   c                     t        j                         \  } }|j                  t        d             |j	                         }|j                         j                         dk(  sJ |j                         j                         rJ y )Nr    )r   r   rB   rk   r%   	get_titler  get_visibler   s      r2   test_legend_title_emptyr    sf     llnGCGGE"I
))+C==?##%+++}}**,,,,r4   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 )	Nr9   r  r   Aardvarkr=      rg   rS   )r   r   rB   rk   r%   ro   rl   get_rendererx0r   approx)r,   r-   rw   x01x02s        r2    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$+++r4   c                  "   t        j                  d      \  } }|j                  t        d      d       |j	                         }| j	                         }| j
                  j                          |j                          |j                          y )Nr9   r  r   r  r=   )r   r   rB   rk   r%   rl   rm   ro   )r,   r-   rw   leg2s       r2   "test_window_extent_cached_rendererr    sd    lls#GCGGE"IZG(
))+C::<DJJOOr4   c                  N   t        j                  t        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   j                  dd      }|j                         j                         dk(  sJ |d   j                  t        d             |d   j                  dddd      }|j                         j                         dk(  sJ |d   j                  t        d             d t        j                  d<   |d   j                  dddi      }|j                         j                         t        j                  d   k(  sJ |d	   j                  t        d             |d	   j                  d      }|j                         j                         t        j                  d   k(  sJ |d   j                  t        d             dt        j                  d<   |d   j                  dddi      }|j                         j                         dk(  sJ |d   j                  t        d             |d   j                  d      }|j                         j                         dk(  sJ y # 1 sw Y   xY w)Nr   r     serif)familysize)r   title_fontsizetitle_fontproperties)r   r   rg   r]   )r   r   )r`   r   )r   r  r   zlegend.title_fontsizer  z	font.sizer   r   r   r   )r   rB   rk   r   r*  r  r%   r   r
  get_sizer   rh   get_fontsizer   r   )	rw   r,   axesleg0leg1r  leg3leg4leg5s	            r2   #test_legend_title_fontprop_fontsizer*    s   HHU2Y	z	" I

B3:B(G	II **:N.5B=@ AC==?##%+++Q73IC99DGLLr7>>
2>>D>>((*b000GLLr7>>
:A2/N  PD>>((*b000GLLr,0CLL()7>>
08'/B  DD>>((*cll;.GGGGGLLr7>>
>+D>>((*cll;.GGGGGLLr,.CLL()7>>
08'/B  DD>>((*b000GLLr7>>
>+D>>((*b000AI Is   LL$	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   rB   rk   r%   get_childrenrH   get_alignmentr+  r,   r-   rw   s       r2   test_legend_alignmentr0    sp    llnGCGGE"IVG$
))*	)
:Ca &&)333)+++r4   r   rz   c                    t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        |j                         t        j                  j                  |    k(  sJ y )Nr   r   r=   )
r   r   rB   rk   r%   set_loc_get_locr  rd   codesr   r,   r-   rw   s       r2   test_ax_legend_set_locr6    s_    llnGCGGE"IVG$
))+CKK<<>W^^11#6666r4   )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   rB   rk   r%   r2  
startswithsplitr3  r  rd   r4  r5  s       r2   test_fig_legend_set_locr;    s{    llnGCGGE"IVG$
**,CKKNN95#))+a.3C<<>W^^11#6666r4   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   rB   rk   r%   set_alignmentr-  rH   r.  r/  s       r2   test_legend_set_alignmentr>  "  sw    llnGCGGE"IVG$
))+Ci a &&)333)+++r4   r0   )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=   rg   #2r]   #3
labelcolor)r   r   rB   r   rA   r%   r  r   r+   
same_color	get_colorr0   r,   r-   rw   r  s        r2   test_legend_labelcolor_singlerH  ,  s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
))u)
%C >zz$$T^^%5u===>r4   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=   rg   rA  r]   rB  r   r   r   rC  r   r   rB   r   rA   r%   r    r  r   r+   rE  rF  r,   r-   rw   r  r0   s        r2   test_legend_labelcolor_listrM  9  s    llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
)))
/C3==?O< >ezz$$T^^%5u===>r4   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   r0   rg   rA  r   r]   rB  r   	linecolorrC  rJ  rK  rL  s        r2    test_legend_labelcolor_linecolorrQ  E  s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB
)){)
+C3==?O< >ezz$$T^^%5u===>r4   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   rg   rA  r   r]   rB  r   rP  rC  rJ  r   r   r!   r   rA   r%   r    r  r   r+   rE  rF  rL  s        r2   /test_legend_pathcollection_labelcolor_linecolorrT  Q  s    llnGCJJryy}biimAoTSJAJJryy}biimAoTSJAJJryy}biimAoTSJA
)){)
+C3==?O< >ezz$$T^^%5u===>r4   c                     t        j                         \  } }t        j                  j	                         j                  g dd      }|j                  t        j                  d      t        j                  d      dz  d|       |j                  d      }|j                         \  }t        j                  j                  |j                         d      sJ y )	NrJ  r   r   r@  r   rP  rC  black)r   r   r   r   default_rngchoicer!   rA   r%   r  r   r+   rE  rF  )r,   r-   r+   rw   r  s        r2   8test_legend_pathcollection_labelcolor_linecolor_iterablerY  ]  s     llnGCYY""$++OR@FJJryy}biimAoTVJD
)){)
+CMMOED::  !17;;;r4   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  rV  )r   r   r!   r   rA   r%   r  r   r+   rE  rF  )r,   r-   rw   r  s       r2   4test_legend_pathcollection_labelcolor_linecolor_cmapr[  i  s}     llnGCJJryy}biimryy}DJI
)){)
+CMMOED::  !17;;;r4   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   markeredgecolorrg   rA  r   r]   rB  r   r^  rC  rJ  rK  rL  s        r2   &test_legend_labelcolor_markeredgecolorr_  t      llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL
))0)
1C3==?O< >ezz$$T^^%5u===>r4   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   rg   rA  r   r]   rB  r   r^  rC  rJ  rS  rL  s        r2   5test_legend_pathcollection_labelcolor_markeredgecolorrc        llnGCJJryy}biimAoTSJIJJryy}biimAoTSJIJJryy}biimAoTSJI
))0)
1C3==?O< >ezz$$T^^%5u===>r4   c                     t        j                         \  } }t        j                  j	                         j                  g dd      }|j                  t        j                  d      t        j                  d      dz  d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )	NrJ  r   r   r@  rb  r^  rC  r  r   r   r   r   rW  rX  r!   rA   r%   r    r  r   r+   rE  rF  r,   r-   r+   rw   r  r0   s         r2   >test_legend_pathcollection_labelcolor_markeredgecolor_iterablerh         llnGCYY""$++OR@FJJryy}biimAoTVJL
))0)
1C3==?SE2 >ezz$$T^^%5u===>r4   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!   rA   r%   r    r  r+   rE  rF  )r,   r-   r  rw   r  r0   s         r2   :test_legend_pathcollection_labelcolor_markeredgecolor_cmaprp    s     llnGC		r 23JJJ
		"
		"
))B-   ))0)
1C3==?SE2 >ezz$$T^^%5u===>r4   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   markerfacecolorrg   rA  r   r]   rB  r   rs  rC  rJ  rK  rL  s        r2   &test_legend_labelcolor_markerfacecolorrt    r`  r4   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  rg   rA  r   r]   rB  r   rs  rC  rJ  rS  rL  s        r2   5test_legend_pathcollection_labelcolor_markerfacecolorrw    rd  r4   c                     t        j                         \  } }t        j                  j	                         j                  g dd      }|j                  t        j                  d      t        j                  d      dz  d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )	NrJ  r   r   r@  rv  rs  rC  r  rf  rg  s         r2   >test_legend_pathcollection_labelcolor_markerfacecolor_iterablery    ri  r4   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  rs  rC  r  rm  )r,   r-   
facecolorsrw   r  r0   s         r2   8test_legend_pathcollection_labelcolor_markfacecolor_cmapr|    s     llnGC		r 23JJJ
		"
		"
))B-   ))0)
1C3==?SE2 >ezz$$T^^%5u===>r4   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=   rg   rA  r]   rB  legend.labelcolor)r   r   rB   r   rA   r   r   r%   r  r+   rE  rF  rG  s        r2   %test_legend_labelcolor_rcparam_singler    s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7(-CLL$%
))+C >zz$$T^^%5u===>r4   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  rg   rA  r   r]   rB  r   rP  r~  rJ  r   r   rB   r   rA   r   r   r%   r    r  r+   rE  rF  rL  s        r2   (test_legend_labelcolor_rcparam_linecolorr    s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB(3CLL$%
))+C3==?O< >ezz$$T^^%5u===>r4   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]  rg   rA  r   r]   rB  r   r^  r~  rJ  r  rL  s        r2   .test_legend_labelcolor_rcparam_markeredgecolorr        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(9CLL$%
))+C3==?O< >ezz$$T^^%5u===>r4   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]  rg   rA  r   r]   rB  r   mecr~  rJ  r  rL  s        r2   4test_legend_labelcolor_rcparam_markeredgecolor_shortr  	      llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(-CLL$%
))+C3==?O< >ezz$$T^^%5u===>r4   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   rr  rg   rA  r   r]   rB  r   rs  r~  rJ  r  rL  s        r2   .test_legend_labelcolor_rcparam_markerfacecolorr    r  r4   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   rr  rg   rA  r   r]   rB  r   mfcr~  rJ  r  rL  s        r2   4test_legend_labelcolor_rcparam_markerfacecolor_shortr  #  r  r4   c                      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    r2   test_get_set_draggabler  0  sb    ZZ\F##%%%
!!!
##%%%%r4   	draggable)TFc                     t        j                         \  }}|j                  t        d      d       |j	                  |       }|j                         | u sJ y )Nr   shabnamsr=   )r  )r   r   rB   rk   r%   r  )r  r,   r-   rw   s       r2   test_legend_draggabler  9  sL    llnGCGGE"IZG(
))i)
(C)+++r4   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   r0   rX   rI   r   )r   rj   r%   r   	set_alphaget_facecolorget_edgecolor)r.   r  hhr%   r  s        r2   test_alpha_handlesr  A  s    xx	V5IHAq"ZZ\F## 
Scr"be&9&9&;CR&@@@@cr"be&9&9&;CR&@@@@r4   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   rB   r%   rl   rm   r  )caplogr,   r-   s      r2   test_usetex_no_warnr  J  s{    ")CLL!2CLL"&CLLllnGCGGAqG IIKI JJOO-V[[@@@r4   c                     t        j                         \  } }| j                  j                          t	        d      D ](  }|j                  t        j                  d      |       * t        ddi      5  |j                         }d d d        t        j                  t              5 }| j                         d d d        t              dk(  sJ |D ]  }t        |j                         dk(  rJ  y # 1 sw Y   nxY w# 1 sw Y   GxY w)Nr    r=   z
legend.locr?   rg   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   rl   rm   rk   rB   r   rA   r
   r%   r   r   rO  draw_artistr   rP  rQ  )r,   r-   idxr%   recordsrR  s         r2   test_warn_big_data_best_locr  X  s    llnGCJJOOT{ ,
		$s+,	\6*	+ 	k	"  g  w<1  6>>"  	        s   5C3'C?3C<?Dc                     t        j                         \  } }| j                  j                          t	        d      D ](  }|j                  t        j                  d      |       * |j                  d      }| j                  |       y )Nr  r  r=   r?   )
r   r   rl   rm   rk   rB   r   rA   r%   r  )r,   r-   r  r%   s       r2   (test_no_warn_big_data_when_loc_specifiedr  j  sd    llnGCJJOOT{ ,
		$s+,YYvFOOFr4   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   rg   r   r   rc   r=   r  r  )r   r   rB   r%   r  r  )r  r.   r/   r,   r-   rw   entrylegend_textss           r2   'test_plot_multiple_input_multiple_labelr  s  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   rg   r   r   rc   r=   )r   r   rB   r%   r  r  rP  )r   r.   r/   r,   r-   rw   r  r  s           r2   %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                         \  }}|j                  |||        |j                         }t	        |j                               dk(  sJ |j                         d   j                         t        |       k(  sJ y )Nr   )rg   r   r   r=   r   r   )r   r   rB   r%   r   r  r  rP  )r  r.   r/   r,   r-   rw   s         r2   %test_plot_single_input_multiple_labelr    sz     	AAllnGCGGAqG$
))+Cs}}1$$$==?1&&(C,<<<<r4   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   rg   r   r   rc   )r  r  mediumr=   )r   r*  r  r   r   rB   )r.   r/   r   r,   r-   s        r2   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     r2   test_legend_face_edgecolorr    s9    llnGCOOIy)!V6  CIIKr4   c                      t        j                         \  } }|j                  ddgddgd       |j                         }|j                  |u sJ |j                         d   j                  |u sJ y )Nr   rg   r]   r   rV   r=   r   )r   r   rB   r%   r$  r  r   s      r2   test_legend_text_axesr    se    llnGCGGQFQF&G)
))+C88r>>==?1""b(((r4   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-   r1   rw   s       r2   test_handlerline2dr    s    llnGCJJ1v1vcJ*}}aS1#c23G
))Gj\Q)
7C1:  "c&8&8&;&F&F&HHHHr4   c                      t        j                         j                         } | j                         }|j	                  ddgddgd       | j                         }|j                  | u sJ y )Nr   r   rV   r=   )r   r   
subfiguresr   rB   r%   )subfigr-   rw   s      r2   test_subfigure_legendr    sY    ZZ\$$&F		BGGQFQF&G)
--/C::r4   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   rg   r]   z#123456r   )r0   r   r   )r   r   r%   get_patchesr  r  tupler  )pcr   s     r2   -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Hr4   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  rL   xyzzy)	r   r   r  r  r	  r%   	get_linesr  r  )_markersr,   r-   markr   r*   rV   r  r%   new_markersr  
new_labelss               r2   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       r2   test_ncol_ncolsr    s.     -GEOOG%O(NN7%N(r4   c                     t        j                         \  } }t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d       d d d        t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   vxY w# 1 sw Y   Lx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@   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     r2    test_loc_invalid_tuple_exceptionr    s     llnGC	z +C 
E 
		g	 
z +T 
V /
		-	./ 
z +Q 
S *
		(	)* * / /* *s#   B;)CC;CCCc                  z    t        j                         \  } }|j                  d       |j                  d       y )N)r  }?5^I?r@   )r   rg   r   r   r%   r   s     r2   test_loc_valid_tupler    s-    llnGCII.I!II&Ir4   c                      t        j                         \  } }|j                  ddg       |j                  ddg       y )Nr  r  r@   r   rg   r  r   s     r2   test_loc_valid_listr    s5    llnGCII5%.I!II1a&Ir4   c                      t        j                         \  } }t        j                  t        d      5  |j                  g d       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   s     r2   test_loc_invalid_list_exceptionr    sI    llnGC	z +L 
N '
		o	&' ' '   AAc                      t        j                         \  } }t        j                  t        d      5  |j                  ddi       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   s     r2   test_loc_invalid_typer    sM    llnGC	z +F 
H %
		udm	$% % %r  c                     t        j                         \  } }|j                  d       |j                  d       |j                  d       |j                  d       t        j                  t
        d      5  |j                  d       d d d        t        j                  t
        d	      5  |j                  d
       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nr   r@   r   r   r   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r   r8  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rI   r   r   r%   r   r*  r  r   s     r2   !test_loc_validation_numeric_valuer  !  s    llnGCII!III!III!III"I	z +; 
= 
		b	 
z +; 
= 
		b	 	  s   ;C1CCC"c                  f   t        j                         \  } }|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  zlower centerzupper centerz 'wrong' is not a valid value forr   wrongr  r   s     r2    test_loc_validation_string_valuer  0  s    llnGCII&III-I II&III-I II,III,III-I II'III-I II.I!II.I!II.I!	z)K	L 
		g	  s   D''D0)r#   platformunittestr   r  numpyr   numpy.testingr   r   matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotr   
matplotlibr   matplotlib.patchespatchesr   matplotlib.transforms
transformsr  matplotlib.collectionsr  matplotlib.linesr   r  matplotlib.legend_handlerr   matplotlib.legendr%   r  r	   r
   matplotlib.font_managerr   r3   rC   rO   r[   rx   r   r   r   r   r   machiner   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  parametrizer0  r6  r;  r>  rH  rM  rQ  rT  rY  r[  r_  rc  rh  rp  rt  rw  ry  r|  r  r  r  r  r  r  r  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   r4   r2   <module>r     s        )  O 4   % + - ! 2 # ' 29$ >"5 6 >"5: 6: >"# $@,@@ *+>' ?'
+ ,-4@- A- -.DA	I B	I #$$+8++-9atE2E2 &'T+8++-9atE	6E	6 7)48
E 9
E <.d+8++-9atEE =-0dC! D!  ?#68 78 :,D	B. C.B#5$ (
 )
]N ]N@5 5p&#R )*+ ,( -./" 0" 789+ :+:('  ./T!!!!*7,-,#1L &AB, C,  347 57  ;<7 =7 &AB, C, "?@	> A	>	>	>	>	<<	>	>	>>&	>	>	>>$ "?@
> A
>
>
>
>
>
>& m4, 5,A 
A 
A $ %)8)15&/)B)D E+E+ 5!S/2, 3, %)8)15&/)B)D E	=E	=
#)I I " ) )*"'%r4   