rL iR ddlZddlZddlZddlZddlZddlmZddlZddlZ ddl m Z ddl Z ddl mZmZddlmZddlmZddlZddlmZddlmZddlmZddlm Z!ddl"m#Z#ddl$m%Z&ddlm'Z'ddl(m)Z)d Z*d Z+ed gd dZ,edgd dZ-edgdZ.dZ/dZ0edgd dZ1edgd ejddk(rdnddZ3edgd ejddk(rdnddZ4edgd ejddk(rdndd Z5ed!gd ejddk(rdndd"Z6ed#gd d$d%Z7ed&gd ejddk(rdnd'd(Z8ed)d*gd d+Z9ed,gd d-Z:ed.gd d/0d1Z;d2ZGd7d8Z?Gd9d:Z@d;ZAedd?ZBd@ZCdAZDdBZEedCgdDZFedEgdFZGdGZHdHZIdIZJdJZKedKgd dLejddk(rdndMNdOZLdPZMdQZNdRZOdSZPdTZQdUZRe jjdVdWdXZUe jjdYdZd[ZVe jjdYd\d]ZWe jjdVdWd^ZXe jjd_d`daZYdbZZdcZ[ddZ\deZ]dfZ^dgZ_dhZ`diZadjZbdkZcdlZddmZednZfe jjd_d`doZgdpZhdqZidrZjdsZkdtZle jjdudvZne jjdwdxdyZodzZped{Zqd|Zrd}Zse jjd~ddgde jddggdZue jjdddevgdZwe jjd~ddgde jddggdZxdZydZzdZ{dZ|dZ}dZ~dZdZed4g5dZdZdZdZdZdZdZdZdZdZdZe jjdudZdZdZdZdZy)N)mock)assert_allclose)check_figures_equalimage_comparison) needs_usetex) HandlerTuple) rc_context)FontPropertiesctjjd}tjjd}dgdzdgdzz}dgdzdgdzz}tj\}}t ||||D]\}}}} |j |||| |j\} }tjt || } |j| j| jdd y) N abrglabelc center left)?)locbbox_to_anchor) nprandomrandnpltsubplotszipscatterget_legend_handles_labels collections OrderedDictlegendvalueskeys) XYlabelscolorsfigaxxyrcolorhandlesr$s b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddictr2s A AUQY# "FUQY# "FllnGC!!Q7/1eU 1au ./224OGV  $ $S%9 :FIIfmmov{{}9ctj\}}|jddg|jddgd|jD}ddD}|j ||dy) Nrrc3 K|]}|ywN).0lines r1 z(test_legend_generator..3s/t/ c3 K|]}|ywr7r8)r9rs r1r;z(test_legend_generator..4s 2e 2r<)spameggs upper leftr)rrplot get_linesr$)r+r,r0r)s r1test_legend_generatorrD-s\llnGCGGQFOGGQFO/ /G 2!1 2FIIgvJB R ae %)8bIiiFi#   ! ! # / / 0E0E0G H J JJqM((*Q-*>*>?JqM((*Q-*>*>?r3ctjdd\}}g}t|jdD]\}}t j dddd t j tjd d gd d gd d gd d gd d gd dgddgdd gdd gg dt jddd dddfD]}|j||jdd gd d gd|j|}|jj|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. r5)g333333#@g333333@rkcenterrN)rr^皙?皙?C1)xywidthheightfcrrr^rer_)r)rrrihrbC0)rrz A segmentrLrAN)rrrrtmpatchesEllipsePolygonrarrayWedge add_patchrBr$rxryrzr{r|r}r~rr)r+rrr,r_patchrs r1test_legend_auto5rosv ||!Z8HCJsxx!34JC   !STC  FQFQFQFS#Jc #Jc S#J+8"9=ACz33dtL  !F LL  ! c S#Jk:iiCi    ! ! # / / 0E0E0G H J%J*JqM((*Q-*>*>?r3zlegend_various_labels.pngcdtj}|jd}|jt j ddd|jt j dddd|jt j ddddd |jdd y) NyrJrrLgffffff@u DéveloppésrU __nolegend__rN) numpointsr)rfigure add_subplotrBrrOlinspacer$r+r,s r1test_various_labelsrs **,C  BGGBIIaL#QG'GGBKK3 NG;GGBIIaB NG;IIvI&r3zlegend_labels_first.pngx86_64g9v?)rEtolcLtj\}}|jtjddd|jtj ddzdd|jtjddd d d |j d d y)Nr -orrLrz:xr-rUddiamondrNF)r markerfirst)rrrBrrOonesr$rs r1test_labels_firstrszllnGCGGBIIbM4qG)GGBGGBKM4sG+GGBIIb"b !3iG8II&eI,r3zlegend_multiple_keys.pngc ,tj\}}|jgdd\}|jgdd\}|jgdd\}|j||f||f|ggdd||ft d ||ft dd i y) Nrr5rjrr5rjrz-xrjrrz-d)ztwo keyszpad=0zone keyr)ndivider)rpad)r handler_map)rrrBr$r)r+r,p1p2p3s r1test_multiple_keysrsllnGC '')T "CB '')T "CB '')T "CBIIBx"b2&(H8\$%?8\$A%FHIr3zrgba_alpha.pnggQ?ctj\}}|jtddtjdgd}|j j gdy)Nr rlwLonglabel that will go awayrrArrrr)rrrBrwr$ legendPatch set_facecolorr+r,rs r1test_alpha_rgbarsMllnGCGGE"I!G **34( CCOO!!.1r3zrcparam_alpha.pngc.tj\}}|jtddt j ddi5tj dgd }|jjgd dddy#1swYyxYw) Nr rrzlegend.framealphag?)rcrrrAr) rrrBrwmplr r$rrrs r1test_alpha_rcparamrsvllnGCGGE"I!G /5 66jj78hG %%n5 666s 6B  Bz fancy.pngrbctjdtjdgdzddtjt j dt j dddd tj t j dt j dd d d tjd d d gddddy)Nrrr zo--XXrLrrUzXX XXr)xerryerrrrrer5T My legendr)rrrlshadowtitler)rsubplotrBr rrOerrorbarr$r8r3r1 test_fancyrs KKHHaS2XuD)KK " ryyQ38DLL2 " C'JJ=#st;!Er3 framealphag~jt?ctjddd}|}tj||ddtjdy)NrrHmylabelr )rrr)r)rrrrBr$)r-r.s r1test_framealphars9 AsC A AHHQr*JJ#r3zscatter_rc3.pngzscatter_rc1.pngctjtjd}|jt j dt j dddd|j ddd gd d tjd <tjtjd}|jt j dt j dddd|j ddd gd y)Nrr rrUthreerLrrerr)rrrrzlegend.scatterpointsone) rrrr rrOr$rrcParams)r,s r1test_rcrsJJL S BJJryy}biiAr2'JBII-c !,-CLL'(JJL S BJJryy}biiAr2%J@II-c !r3zlegend_expand.pngcddg}tjt|d\}}tjd}t ||D]\}}|j |d|z dd|jd | }|j||j ||dz dd |jd | }|j||jd |dy)zTest expand modeNexpandrrHrIrJrKrLr@)rmoderMright lower leftr5)rrrl) rrlenrrOrrBr$ add_artist) legend_modesr+rr-r,rl1l2s r1test_legend_expandrs(#L||C -q1HC #A\*8D 263e, YY @ELL MM)S#TT ? AELL MM(CDu @ BELL MM+sCt%$( A CELLOOL, %:<OOO\=5KMKKsKKsII11I-r3c2tj\}}|jtd}|j |d}|j |j gk(sJ|j d}|j |jJy)Nr test)rrrBrwr$removelegends get_legend)r+r,linesrs r1test_legend_remover$swllnGC GGE"I E **UF #CJJL ;;"   ))F CJJL ==? "" "r3c,tj\}}d}d}gd}gd}|j|||d|d|j|||d|d|j|||d|d|jd}|j Dcgc]}|j }}|j D cgc]} | j} } |tt|k(sJ| tt|k(sJy cc}wcc} w) z6Check that the legend handles and labels are reversed.r)z First labelz Second labelz Third label).,rJrrLr5TreverseN) rrrBr$ get_textsget_textlegend_handles get_markerlistreversed) r+r,r-r.r)markersrt actual_labelshactual_markerss r1&test_reverse_legend_handles_and_labelsr/sllnGC A A ;FGGGAq'!*F1IG.GGAq'!*F1IG.GGAq'!*F1IG. ))D) !C+.==?;aQZZ\;M;.1.@.@AallnANA D&!12 22 2 T(7"34 44 4<As D Dpng) extensionsc0|j}|jdgdd|jdgdd|jd |j}|jdgdd|jdgdd|jy ) z3Check that the rendered legend entries are reversedrrofirstrLr5bxsecondTrN)rrBr$)fig_testfig_refr,s r1test_reverse_legend_displayrAs    BGGQCWG%GGQCXG&IIdI    BGGQCXG&GGQCWG%IIKr3cNeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z y ) TestLegendFunctionc tjtdd}tjd5}tj dddj tj|dgy#1swY0xYw)Nr hello worldrLmatplotlib.legend.LegendrrBrwrrr$assert_called_withgcaselfrrqs r1test_legend_no_argsz&TestLegendFunction.test_legend_no_argsQs]r-8 ZZ2 3 v JJL !!#'')U]OD  s A::Bctjtd}tjd5}tj |dgdddj tj|dgy#1swY0xYw)Nr rrrr!s r1%test_legend_positional_handles_labelsz8TestLegendFunction.test_legend_positional_handles_labelsWsbr# ZZ2 3 /v JJu}o . /!!#'')U]OD / /s A;;Bctjtd}tjt d5tj |dddy#1swYyxYw)Nr zbut found an Artistmatch)rrBrwpytestraises TypeErrorr$)r"rs r1#test_legend_positional_handles_onlyz6TestLegendFunction.test_legend_positional_handles_only]sFr# ]]9,A B  JJu    s AA"ctjtdd}tjd5}tj dgdddj tj|dgy#1swY0xYw)Nr rrLrfoobarrr!s r1"test_legend_positional_labels_onlyz5TestLegendFunction.test_legend_positional_labels_onlydsbr-8 ZZ2 3 #v JJz " #!!#'')UXJ? # #s A<<Bctjtdd}tjd5}tj |dgddddj tj|dgdy#1swY2xYw)Nr rrLrr.rrArr!s r1test_legend_three_argsz)TestLegendFunction.test_legend_three_argsjskr-8 ZZ2 3 7v JJuxjg 6 7!!#'')UXJG!L 7 7s BB c*tjtdd}tjd5}|dgf|_tj ddidddjtjgddiy#1swY1xYw)Nr rrLz,matplotlib.legend._get_legend_handles_labels1r5)r) rrBrwrr return_valuer$rr )r"rhandles_labelss r1test_legend_handler_mapz*TestLegendFunction.test_legend_handler_mapps|r-8 ZZ56 -9G*/-*@N ' JJC8 , - ))3779+Qx@  - -s #B  Bctj\}}tjddd}|j ||d\}|j |d|zd\}|j |d|zd \}t j d 5}|j||g dddj|||gd dgy#1swY!xYw) Nrr r-rLr52xrj3xr)r0 rrrrrBrrr$r)r"r+r,r-ln1ln2ln3rqs r1test_legend_kwargs_handles_onlyz2TestLegendFunction.test_legend_kwargs_handles_onlyxs,,.R KK1b !wwq!3w'wwq!A#Tw*wwq!A#Tw* ZZ2 3 *v IIsCjI ) *!!"sCj4,? * *s CC c`tj\}}tjddd}|j ||\}|j |d|z\}t j d5}|jddgdddj|||gddgy#1swY!xYw) Nrrr8r5rr-r9r)r;)r"r+r,r-r<r=rqs r1test_legend_kwargs_labels_onlyz1TestLegendFunction.test_legend_kwargs_labels_onlys,,.R KK1b !wwq!}wwq!A# ZZ2 3 *v IIc4[I ) *!!"sCj3+> * *s /B$$B-ctj\}}tjddtjzd}|j |tj |d\}|j |tj|d\}tjd5}|jd||f dddj|||fdy#1swYxYw) Nrr5sinrLcosrr r)r)r0) rrrrpirBrErFrrr$r)r"r+r,thlnslncrqs r1!test_legend_kwargs_handles_labelsz4TestLegendFunction.test_legend_kwargs_handles_labelss,,.R [[AbeeGT *wwr266":Uw3wwr266":Uw3 ZZ2 3 =v IIZ#sI < = !!"sCj*= = =s 'CC$ctj\}}tjddtjzd}|j |tj |d\}|j |tj|d\}tjt5}|j||fddddtd k(sJt|djjd sJy#1swYCxYw) Nrr5rDrErLrFrGrArMYou have mixed positional and keyword arguments, some input may be discarded.)rrrrrHrBrErFr)warnsDeprecationWarningr$rstrmessage startswith)r"r+r,rIrJrKrecords r1test_warn_mixed_args_and_kwargsz2TestLegendFunction.test_warn_mixed_args_and_kwargss,,.R [[AbeeGT *wwr266":Uw3wwr266":Uw3 \\, - 5 IIsCjI 4 56{a6!9$$%00   5 5s +DD cRddlm}|d}|j}|jgdgdd\}|jgdgdd\}t j d 5}t jdddj|||gddgy#1swY!xYw) Nr) host_subplotorrr5DensityrL)rrjr5 Temperaturer) mpl_toolkits.axes_grid1rWtwinxrBrrrr$r)r"rWhostparrrrqs r1 test_parasitez TestLegendFunction.test_parasites8C jjlii 9Ii>hhy)=hA ZZ2 3 v JJL !!$R9m2LM  s (BB&N)__name__ __module__ __qualname__r#r%r,r/r1r6r?rBrLrUr`r8r3r1rrOs@E E @ M A@?>  Nr3rc0eZdZdZdZdZdZdZdZy)TestLegendFigureFunctionc tj\}}|jtd}t j d5}|j |dgdddj||dg|jy#1swY*xYw)Nr rrbbox_transform rrrBrwrrr$r transFigurer"r+r,rrqs r1test_legend_handle_labelz1TestLegendFigureFunction.test_legend_handle_labelsz,,.Rb " ZZ2 3 /v JJu}o . /!!#u}o14 " B / /s BB ctj\}}|jtdd}t j d5}|j dddj||dg|jy#1swY*xYw)Nr rrLrrgrirks r1r#z,TestLegendFigureFunction.test_legend_no_argssw,,.Rb 7 ZZ2 3 v JJL !!#u}o14 " B  s BB ctj\}}|jtd}t j d5}|j dgdddj||dg|jy#1swY*xYw)Nr rr.rgrirks r1test_legend_label_argz.TestLegendFigureFunction.test_legend_label_argsx,,.Rb " ZZ2 3 #v JJz " #!!#uxj14 " B # #s BB cztj\}}|jtd}t j t d5|j|dgddddt j t d5|j|dgdddddy#1swYDxYw#1swYyxYw)Nr z0-2r'r.rleftrA)rrrBrwr)r*r+r$)r"r+r,rs r1test_legend_label_three_argsz5TestLegendFigureFunction.test_legend_label_three_argss,,.Rb " ]]9E 2 3 JJuxj' 2 3 ]]9E 2 ? JJuxj'vJ > ? ? 3 3 ? ?s B%B1%B.1B:ctjdd\}}|djtd}|djt j ddz}t jd5}|jdd||f dddj|||fdd|j y#1swY,xYw) Nrr5rr @rrrG)rr)r0)rrh) rrrBrwrrOrrr$rrj)r"r+rrlines2rqs r1test_legend_kw_argsz,TestLegendFigureFunction.test_legend_kw_argss<<1%SA E"I&QRYYr]R/0 ZZ2 3 Pv JJ7:vJ O P!! %*'?? " , P Ps 6B88Cctjdd\}}|djtd}|djt j ddz}t jt5}|j||fddddtdk(sJt|djjdsJy#1swYCxYw) Nrr5rr rtrGrArN)rrrBrwrrOr)rOrPr$rrQrRrS)r"r+rrrurTs r1test_warn_args_kwargsz.TestLegendFigureFunction.test_warn_args_kwargss<<1%SA E"I&QRYYr]R/0 \\, - ; JJvzJ : ;6{a6!9$$%00   ; ;s :CCN) rarbrcrlr#rorrrvrxr8r3r1reres#BBB?, r3rec dDcgc]}d|z }}|dDcgc]}d|z c}z }|dDcgc]}d|z c}z }|dDcgc]}d|z c}z }gd}gd}gd }gd }||||||||||||g }gd gd gd gdgdgdgdgdgd gdgdgdg }t|D]\}} t| tjdd\} } | j t dd| j d| z} | jt| jj||t| jj||ycc}wcc}wcc}wcc}w)N)rqrrzupper zlower )lowerrupperzleft zright )QnX4@Qn;@l@gE @)r|g Q@r~lf@)gLNb@r}r~r)r|r}gE@r)$@X@`@p@)(u@r|@r)r@r)rrrF@)rrrr)؄@rrr)rq@rs@)rrrr)rrrr)rrrrTrH)constrained_layoutdpir Boo1rLzoutside rA) enumerateprintrrrBrwr$draw_without_renderingrr{extents) postodosupperextlowerextleftextrightextaxbblegbbnntodor+rrs r1test_figure_legend_outsiders'B CX^ CE C (C Dhn DDE 'C Dgm DDE (D Ehn EEE8H8H7G8H h h Wg h *D % ' % # & $ " & $ " ' % 'Ee$ #D d <<4SAS r&)jjZ$.j/ ""$--/77R "--/77b  # #7 D D D Es E! E& E+ E0zlegend_stackplot.pnggX9v?)rc"tj\}}tjddd}d|z}d|zdz}d|zdz}|j ||||gd |j d |j d |jd y)z/Test legend for PolyCollection using stackplot.rr rertrg@r5)y1y2y3rA)rr )rFrNrAN)rrrr stackplotrfrgr$)r+r,r-rrrs r1test_legend_stackplotrs llnGC Ar2A qB q1B q1BLLBB'9L:KKKKII&Ir3ctj\}}tj\}}|jtdtd}|j |dy)Nrjfoo)rrrXrwr$)r+r,fig2ax2brss r1test_cross_figure_patch_legendr sFllnGC ID# &&q58 $CKKUr3c tj\}}|jtjgtjgdddd}|j |gdgtj\}}dD]a}d}tj jd|\}}d tj j|z}|j|||||d d c|j |jd y)NrJrrj)marker facecolorrsr )redgreenblueir5gi@rnone)rrralpha edgecolorsT) rrr rnanr$rrandgrid)r+r,r r/nr-r.scales r1test_nanscatterr(sllnGC BFF8bffXc C1  6AIIqcI;llnGC)1 yy~~a#1 q)) 1a5E  1 1IIKGGDMr3ctj\}}|jddddd|jdddd d|jt j |g\}}t |d k(sJtj\}}|jddddd|jdddd d|jt j |g\}}t |d k(sJy) NrdrekrJr)r/rrrrvr5)rrr r$mlegend_get_legend_handles_labelsr)r+r,handlabs r1test_legend_repeatcheckokr<sllnGCJJsCs3fJ=JJsCs3fJ=IIK22B48ID# s8q==llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48ID# s8q==r3znot_covering_scatter.pngc(gd}tdD]}tj|g|g||!tjgddtjj ddtjj ddy) N)rrrrj)r/)rrrrNrAg皙@)rwrr r$r rfrg)r*rs r1test_not_covering_scatterrKso F 1X/ QC!F1I./JJ$&1GGItS!GGItS!r3z"not_covering_scatter_transform.pngcJtjjdd}tjddd}t j ||t jdgdg|t jjzt jdd gd y) Nirrir ) transformrrXrNrA) mtransformsAffine2D translaterrrrBr r  transDatar$)offsetr-s r1#test_not_covering_scatter_transformrWsu ! ! # - -c2 6F Ar4 AHHQNKKrdfswwy/B/B&BCJJu~6*r3c<ddgddgg}ddgddggd dgd d ggg}d dgddggd dgd d ggg}tj|d d }tj|d}tj|dd }tj\}}|j ||j ||j ||j |||ggd}|j \} } } t|||f| | | fD]'\} } | jd| jk(r'Jy)N)rr)rr)r333333?)rrgffffff?rrrrrr_z--rj) linestylesrz-.)r:)line1line2zline 3r) mcollectionsLineCollectionrradd_collectionr$rrget_linestyles _dash_pattern)lines1rulines3lc1lc2lc3r+r,rh1h2h3ohlhs r1!test_linecollection_scaled_dashesrcsA 8X"6 7FRy2r(#r2hR%9 :FRy2r(#r2hR%9 :F  % %f! DC  % %f >C  % %f DCllnGCccc ))S#sO%A BC##JBBsCoB|4:B  "1%)9)9999:r3ctj\}}|jtdd|j dy)z(Test legend handler with numpoints <= 1.rrrLrrN)rrrBrwr$rs r1test_handler_numpointsrws5llnGCGGE!HFG#IIIr3cJtj\}}|jdgd|jddddt j t 5}|jdddtdk(sJtj\}}|jtjjddd tj5tjd |j!dddy#1swYxYw#1swYyxYw) z2Test that Text artists with labels raise a warningr mock datarLtextr)r-r.rrNr)r r error)rrrBrr)rO UserWarningr$r pcolormeshrruniformwarningscatch_warnings simplefilterr!)r+r,rTfs r1test_text_nohandler_warningrsllnGCGGQC{G#GGa1gG. k "f  v;!   LLNEArMM"))##Aq(34  "'g& $$&''''sD &D DD"c\tjggdtjy)z1Test legend when bar chart is empty with a label.rrLN)rrXr$r8r3r1 test_empty_bar_chart_with_legendrsGGB&!JJLr3zshadow_argument_types.pngmpl20gy&1?)rErrc ztj\}}|jgdd|jdd|jdd|jd d d d |jd ddd|jddddf}|D]}|j ||jdy)NrrrLr@Trr upper rightFrrr_)r/r center right)r_rr)r/oyrztab:cyanr )r/ox lower rightrA)rrrBr$r)r+r,legsls r1test_shadow_argument_typesrsllnGCGGIVG$ II,tI 4 II-I 6 II-',s;  = II.'6bA  C II,'1<  >  D aII-I r3ctj\}}|jgddtjt d5|j dddddy#1swYyxYw) NrrrLz dict or boolr'r@aardvarkr)rrrBr)r* ValueErrorr$rs r1test_shadow_invalid_argumentrsVllnGCGGIVG$ z 87 l: 6777s A%%A.ctj\}}|jtdd|j dd}|j j dk(sJy)NrHrrLTw)rrr)rrrBrwr$ get_frame get_alphars r1test_shadow_framealphar sVllnGCGGE#JfG% ))43) /C ==? $ $ &! ++ +r3ctj\}}|jtdd|j }|j j dk(sJ|j jrJy)Nr rrL)rrrBrwr$ get_titler get_visiblers r1test_legend_title_emptyrsjllnGCGGE"I[G) ))+C ==? # # % ++ +}}**,, ,,r3c tjd\}}|jtdd|j }|j |j jj}tjd\}}|jtdd|j }|j |j jj}tj|dzd|k(sJy) NrHrr AardvarkrLr5r_) rrrBrwr$r{rx get_rendererx0r)approx)r+r,rx01x02s r1 test_legend_proper_window_extentrslls#GCGGE"IZG( ))+C   7 7 9 : = =Clls#GCGGE"IZG( ))+C   7 7 9 : = =C ==Q $ ++ +r3c"tjd\}}|jtdd|j }|j }|j j |j|jy)NrHrr rrL)rrrBrwr$rxryr{)r+r,rleg2s r1"test_window_extent_cached_rendererrsdlls#GCGGE"IZG( ))+C ::> 2> >D >>  ( ( *b 00 0GLLr+L. 7>> :A2/N  PD >>  ( ( *b 00 0GLLr+L.,0CLL() 7>> 08'/B  DD >>  ( ( *cll;.G GG GGLLr+L. 7>> > +D >>  ( ( *cll;.G GG GGLLr+L.,.CLL() 7>> 08'/B  DD >>  ( ( *b 00 0GLLr+L. 7>> > +D >>  ( ( *b 00 0AIIs L((L2 alignment)rrqrctj\}}|jtdd|j d|}|j dj |k(sJ|j|k(sJy)Nr rrLr)rr.r)rrrBrwr$ get_childrenrT get_alignmentr.r+r,rs r1test_legend_alignmentr3 spllnGCGGE"IVG$ ))* ) :C    a & &) 33 3    ) ++ +r3rrc tj\}}|jtdd|j }|j ||j tjj|k(sJy)Nr rrL) rrrBrwr$set_loc_get_locrrqcodesrr+r,rs r1test_ax_legend_set_locr9s_llnGCGGE"IVG$ ))+CKK <<>W^^11#6 66 6r3)z outside rightrcXtj\}}|jtdd|j }|j ||j dr|jdn|}|jtjj|k(sJy)Nr rrLoutsider) rrrBrwr$r5rSsplitr6rrqr7r8s r1test_fig_legend_set_locr=s{llnGCGGE"IVG$ **,CKKNN95#))+a.3C <<>W^^11#6 66 6r3ctj\}}|jtdd|j }|j ||j dj|k(sJ|j|k(sJy)Nr rrLr) rrrBrwr$ set_alignmentr0rTr1r2s r1test_legend_set_alignmentr@(swllnGCGGE"IVG$ ))+Ci    a & &) 33 3    ) ++ +r3r/)rr)rrrcNtj\}}|jtjdtjddzd|jtjdtjddzd|jtjdtjddzd|j | }|j D]2}tjj|j|r2Jy) Nr r#1rLr5#2rj#3 labelcolor) rrrBrrOr$rrr* same_color get_colorr/r+r,rrs r1test_legend_labelcolor_singlerJ2sllnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7 ))u) %C >zz$$T^^%5u===>r3cptj\}}|jtjdtjddzd|jtjdtjddzd|jtjdtjddzd|j gd  }t |jgd D]5\}}tjj|j|r5Jy) Nr rrBrLr5rCrjrDrrrrE rrrBrrOr$rrrr*rGrHr+r,rrr/s r1test_legend_labelcolor_listrO?sllnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7 ))) /C3==?O<> ezz$$T^^%5u===>r3crtj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d |j d }t |jgdD]5\}}tjj|j|r5Jy)Nr rrBrrr/r5rCrrjrDr linecolorrErLrMrNs r1 test_legend_labelcolor_linecolorrSKsllnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB )){) +C3==?O<> ezz$$T^^%5u===>r3crtj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d |j d }t |jgdD]5\}}tjj|j|r5Jy)Nr rrBrrr5rCrrjrDrrRrErL rrr rrOr$rrrr*rGrHrNs r1/test_legend_pathcollection_labelcolor_linecolorrVWsllnGCJJryy}biimAoTSJAJJryy}biimAoTSJAJJryy}biimAoTSJA )){) +C3==?O<> ezz$$T^^%5u===>r3ctj\}}tjgddz}|j tj dtj dd||j d}|j\}tjj|jdsJy) NrrrrrSr5r rBrrRrEblack) rrrrr rOr$rrr*rGrH)r+r,r*rrs r18test_legend_pathcollection_labelcolor_linecolor_iterablerZcsllnGC XX/!3 4FJJryy}biim46JB )){) +C MMOED :: !17 ;; ;r3cvtj\}}|jtjdtjdtjdd|j d}|j \}tjj|jdsJy)Nr rB)rrrRrErY) rrr rrOr$rrr*rGrH)r+r,rrs r14test_legend_pathcollection_labelcolor_linecolor_cmapr\os}llnGCJJryy}biimryy}DJI )){) +C MMOED :: !17 ;; ;r3crtj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d |j d }t |jgdD]5\}}tjj|j|r5Jy)Nr rrBrrmarkeredgecolorr5rCrrjrDrr_rErLrMrNs r1&test_legend_labelcolor_markeredgecolorr`zllnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL ))0) 1C3==?O<> ezz$$T^^%5u===>r3crtj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d |j d }t |jgdD]5\}}tjj|j|r5Jy)Nr rrBrrrr5rCrrjrDrr_rErLrUrNs r15test_legend_pathcollection_labelcolor_markeredgecolorrdllnGCJJryy}biimAoTSJIJJryy}biimAoTSJIJJryy}biimAoTSJI ))0) 1C3==?O<> ezz$$T^^%5u===>r3ctj\}}tjgddz}|j tj dtj dd||j d}t|jdgD]5\}}tjj|j|r5Jy) NrXr5r rBrcr_rEr rrrrr rOr$rrrr*rGrHr+r,r*rrr/s r1>test_legend_pathcollection_labelcolor_markeredgecolor_iterablerillnGC XX/!3 4FJJryy}biim46JJ ))0) 1C3==?SE2> ezz$$T^^%5u===>r3ctj\}}tjj t j jd}|jt jdt jddt jd|d|jd}t|jdgD]5\}}tjj|j|r5Jy)Nr rBReds)rrrcmapr_rErrrrcmviridisrrrr rOr$rrr*rGrH)r+r,rrrr/s r1:test_legend_pathcollection_labelcolor_markeredgecolor_cmaprqsllnGC r 23JJJ "  "  ))B-   ))0) 1C3==?SE2> ezz$$T^^%5u===>r3crtj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d |j d }t |jgdD]5\}}tjj|j|r5Jy)Nr rrBrrmarkerfacecolorr5rCrrjrDrrtrErLrMrNs r1&test_legend_labelcolor_markerfacecolorrurar3crtj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d |j d }t |jgdD]5\}}tjj|j|r5Jy)Nr rrBrrrr5rCrrjrDrrtrErLrUrNs r15test_legend_pathcollection_labelcolor_markerfacecolorrxrer3ctj\}}tjgddz}|j tj dtj dd||j d}t|jdgD]5\}}tjj|j|r5Jy) NrXr5r rBrwrtrErrgrhs r1>test_legend_pathcollection_labelcolor_markerfacecolor_iterablerzrjr3ctj\}}tjj t j jd}|jt jdt jdd||jd}t|jdgD]5\}}tjj|j|r5Jy)Nr rBrrtrErrnrhs r18test_legend_pathcollection_labelcolor_markfacecolor_cmapr|sllnGC VV^^BIINN2. /FJJ "  "    ))0) 1C3==?SE2> ezz$$T^^%5u===>r3cptj\}}|jtjdtjddzd|jtjdtjddzd|jtjdtjddzd|t j d <|j}|jD]2}t jj|j|r2Jy) Nr rrBrLr5rCrjrDlegend.labelcolor) rrrBrrOrrr$rr*rGrHrIs r1%test_legend_labelcolor_rcparam_singlersllnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7(-CLL$% ))+C >zz$$T^^%5u===>r3ctj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d d t j d <|j}t|jgdD]5\}}t jj|j|r5Jy)Nr rrBrrQr5rCrrjrDrrRr~rL rrrBrrOrrr$rrr*rGrHrNs r1(test_legend_labelcolor_rcparam_linecolorrsllnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB(3CLL$% ))+C3==?O<> ezz$$T^^%5u===>r3ctj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d d t j d <|j}t|jgdD]5\}}t jj|j|r5Jy)Nr rrBrr^r5rCrrjrDrr_r~rLrrNs r1.test_legend_labelcolor_rcparam_markeredgecolorrllnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(9CLL$% ))+C3==?O<> ezz$$T^^%5u===>r3ctj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d d t j d <|j}t|jgdD]5\}}t jj|j|r5Jy)Nr rrBrr^r5rCrrjrDrmecr~rLrrNs r14test_legend_labelcolor_rcparam_markeredgecolor_shortrllnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(-CLL$% ))+C3==?O<> ezz$$T^^%5u===>r3ctj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d d t j d <|j}t|jgdD]5\}}t jj|j|r5Jy)Nr rrBrrsr5rCrrjrDrrtr~rLrrNs r1.test_legend_labelcolor_rcparam_markerfacecolorrrr3ctj\}}|jtjdtjddzdd|jtjdtjddzdd|jtjdtjdd zd d d t j d <|j}t|jgdD]5\}}t jj|j|r5Jy)Nr rrBrrsr5rCrrjrDrmfcr~rLrrNs r14test_legend_labelcolor_rcparam_markerfacecolor_shortr(rr3z4ignore:No artists with labels found to put in legendctj}|jrJ|jd|jsJ|jd|jrJy)NTF)rr$ get_draggable set_draggabler$s r1test_get_set_draggabler5sb ZZ\F##%% %     !! ! ##%% %%r3 draggable)TFctj\}}|jtdd|j |}|j |usJy)Nr shabnamsrL)r)rrrBrwr$r)rr+r,rs r1test_legend_draggabler?sLllnGCGGE"IZG( ))i) (C    ) ++ +r3c^tjgdddd\}}}tj}|jD]}|j dj dd|dj ddk(sJ|j dd|dj ddk(sJy) Nrg?datar)rrr/rerUr)rrvr$r set_alpha get_facecolor get_edgecolor)r-rhhr$rs r1test_alpha_handlesrGsxx V5IHAq" ZZ\F## S   cr "be&9&9&;CR&@ @@ @   cr "be&9&9&;CR&@ @@ @r3cDdtjd<dtjd<dtjd<tj\}}|j ddd |j d |j jd |jvsJy) Nrz font.familyzComputer Modernz font.serifTz text.usetexrinputrLrr$z Font family ['serif'] not found.) rrrrrBr$rxryr)caplogr+r,s r1test_usetex_no_warnrPs{")CLL!2CLL"&CLLllnGCGGAqG IIKI JJOO -V[[ @@ @r3c tjdd|jtdfdt j \}}|j jgd}gd}|j||dd td d i5|j}dddtjtd 5}|jdddtdk(sJy#1swYOxYw#1swY&xYw)Nr?rn perf_counterctSr7nextcountersr1z-test_warn_big_data_best_loc..a d7mr3r]r`rcr:rLz legend.locrNzGCreating legend with loc="best" can be slow with large amounts of data.r'r5) itertoolscountsetattrtimerrrxryrBr r$r)rOr draw_artistr) monkeypatchr+r,r-r.r$recordsrs @r1test_warn_big_data_best_locr^sooac*Gn.CDllnGCJJOO 'A*AGGAq$fG% \6* + k) * -4  w<1    sC-C9-C69DcHtjdd|jtdfdt j \}}|j jgd}gd}|j||dd |jd }|j|y) NrrrrctSr7rrsr1rz:test_no_warn_big_data_when_loc_specified..yrr3r]r`rcr:rLrN) rrrrrrrxryrBr$r)rr+r,r-r.r$rs @r1(test_no_warn_big_data_when_loc_specifiedrvs}ooac*Gn.CDllnGCJJOO 'A*AGGAq$fG% YYv FOOFr3 label_arraylowhigh)rrc gd}ddgddgddgg}tj\}}|j||||j}|j Dcgc]}|j }}|dd gk(sJycc}w) Nrrr5rrrprLrr)rrrBr$rr)rr-r.r+r,rentry legend_textss r1'test_plot_multiple_input_multiple_labelrs A Q Q Q AllnGCGGAq G$ ))+C25--/BENN$BLB E6? ** *CsBrrrc gd}ddgddgddgg}tj\}}|j||||j}|j Dcgc]}|j }}|t |gdzk(sJycc}w)Nrrr5rrrprL)rrrBr$rrrQ)rr-r.r+r,rrrs r1%test_plot_multiple_input_single_labelrs A Q Q Q AllnGCGGAqG ))+C25--/BENN$BLB CJ> s "" "r3ctjt5gd}ddgddgddgg}gd}tj\}}|j |||dddy#1swYyxYw) Nrrr5rrrp)rrmediumrL)r)r*rrrrB)r-r.rr+r,s r13test_plot_multiple_label_incorrect_length_exceptionrsn z "# VVV *,,.R 1E"###s ?A""A+ctj\}}|jgdgdgdddd|jy)NrYrrrfaceFill)rrr)rrrr$rs r1test_legend_face_edgecolorrs9llnGCOOIy)!V6CIIKr3ctj\}}|jddgddgd|j}|j|usJ|j dj|usJy)Nrr5rjrr:rLr)rrrBr$r'rrs r1test_legend_text_axesrsellnGCGGQFQF&G) ))+C 88r>> ==?1  " "b (( (r3c(tj\}}|jddgddgdtjdgdgdg}|j |dgd}|dj |jdj k(sJy)Nrrr)rrr)rrr mlinesLine2Dr$rr)r+r,r0rs r1test_handlerline2drsllnGCJJ1v1vcJ*}}aS1#c23G ))Gj\Q) 7C 1: "c&8&8&;&F&F&H HH Hr3ctjj}|j}|j ddgddgd|j }|j d|usJy)Nrrr:rLF)root)rr subfiguresrrBr$ get_figure)subfigr,rs r1test_subfigure_legendrs` ZZ\ $ $ &F  BGGQFQF&G) --/C >>u> % // /r3c~tjddgddgdd}tjjd}|j d|j ddt |j dddk(sJ|jddt |jdddk(sJy) Nrrr5rjz#123456r)r/rr)rrr$ get_patchesrrtupler)pcrs r1-test_setting_alpha_keeps_polycollection_colorrs  1a&1a&  IB JJL $ $ &q )E OOC    ! $b.>.>.@.CBQ.G(H HH H    ! $b.>.>.@.CBQ.G(H HH Hr3c gd}tj\}}|Dcgc]}tjdgdgd|}}gd}|Dcgc]}|j }}|j ||}|j Dcgc]}|j } }|jD cgc]} | j} } || cxk(r|k(sJJ|| k(sJycc}wcc}wcc}wcc} w)N)r*rrNone)lsr)rrXxyzzy) rrrrrr$rCrr) _markersr+r,markrr)r:r r$ new_markersr new_labelss r1test_legend_markers_from_line2drsHllnGC! #]]A3t < #E # $F-23Tt 3G3 YYuf %F171A1A1CD4??$DKD.4.>.>.@Ad$--/AJA k -X -- -- - Z   #4EAs"C% C* C/4C4c\gd}d}|j|||j||y)N)r rrrerrj)ncol)rlr)rrstringsrls r1test_ncol_ncolsr s.-G E OOG%O( NN7%N(r3ctj\}}tjtd5|j ddgdddtjtd5|j ddgdddtjtd5|j d dgdddy#1swYzxYw#1swYNxYw#1swYyxYw) NzFloc must be string, coordinate tuple, or an integer 0-10, not \(1.1,\)r')rrrr)zWloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 0.4227, 0.4523\))bX9?g:M ?gm{?zRloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 'go blue'\))rzgo bluerrr)r*rr$rs r1 test_loc_invalid_tuple_exceptionrsllnGC z+C E5 g{m 45 z+T VE -{m DE z+Q S@ (+ ?@@55EE@@s#C+C #CC  CC"ctj\}}|jddg|jddgy)N)r}?5^I?rr)rr5rrr$rs r1test_loc_valid_tupler#s5llnGCII.+I7II&+I/r3ctj\}}|jddgdg|jddgdgy)Nrrrrrr5rrs r1test_loc_valid_listr)s=llnGCII5%.+I7II1a&+I/r3ctj\}}tjtd5|j gddgdddy#1swYyxYw)NzOloc must be string, coordinate tuple, or an integer 0-10, not \[1.1, 2.2, 3.3\]r')rrgffffff @rrrrs r1test_loc_invalid_list_exceptionr/sMllnGC z+L N= o{m <=== AActj\}}tjtd5|j ddidgdddy#1swYyxYw)NzKloc must be string, coordinate tuple, or an integer 0-10, not {'not': True}r'notTrrrrs r1test_loc_invalid_typer6sQllnGC z+F H; udm[M :;;;rctj\}}|jddg|jddg|jddg|jddgtjt d5|jd dgdddtjt d 5|jd dgdddy#1swYBxYw#1swYyxYw) Nrrrrrr z@loc must be string, coordinate tuple, or an integer 0-10, not 11r'r8z@loc must be string, coordinate tuple, or an integer 0-10, not -1rUrrr$r)r*rrs r1!test_loc_validation_numeric_valuer=sllnGCII![MI*II![MI*II![MI*II"k]I+ z+; =0 b+ /0 z+; =0 b+ /00 0000sC;C%C"%C.ctj\}}dg}|jd||jd||jd||jd||jd||jd||jd||jd||jd ||jd ||jd ||jd |tjt d 5|jd|dddy#1swYyxYw)NrrNrrr@rrrrrz lower centerz upper centerz 'wrong' is not a valid value forr'wrongr)r+r,r)s r1 test_loc_validation_string_valuerLs llnGC]FII&I(II-I/II&I(II-I/II,vI.II,vI.II-I/II'&I)II-I/II.I0II.I0II.I0 z)K L. gf -...s D77Ectjtd\}tjtd\}tjt d5tj ||ggd}t|jdk(sJt|jdk(sJ dddy#1swYyxYw)Nr znumber of handles and labelsr'pl1pl2pl3r0r)r5) rrBrwr)rOrr$rrrr r r$s r1!test_legend_handle_label_mismatchr_s 88E"I DC 88E"I DC k)G H,S#J7LM6(()Q...6##%&!+++,,,s AB::CcNtjtd\}tjtd\}tjt ||gt gd}t |j dk(sJt |jdk(sJy)Nr rr r5)rrBrwr$iterrrrr s r1(test_legend_handle_label_mismatch_no_lenrhs 88E"I DC 88E"I DC ZZc3Z 0#$9:*>?r3c tjdd\}}g}t|jdD]\}}ddg}ddg}|j ||d|j ddd d |j | }|jj|j|jj|jjt|dj|d jy)Nr5rrkrrz plot namerLrzsome text blahblahtop)verticalalignmentrAr)rrrrtrBrr$rxryrzr{r|r}r~rr)r+rrr,rr-r.rs r1test_legend_textrs||!W5HCJsxx!78JC F F 1K( Q,FiiCi    ! ! # / / 0E0E0G H JJJqM((*Q-*>*>?r3ctj\}}|jgdd|jdd|j dt j j|d |j 5}|jtjdddjy#1swYxYw) NrLinerLr )rr)rrrA _get_renderer)wraps) rrrBannotater$rrobjectr!savefigioBytesIOassert_not_called)r+r,mocked_get_renderers r1test_legend_annotater*sllnGCGGIVG$KKKII!I    (9(9  ;">Q BJJL!" ))+ ""s >$B;;Cctjjdtjjd}tjdd\}}gd}|dj |d| }|d Dcgc]}|j c}|k(sJ|dj\}}||k(sJtd |DsJ|dj ||d }|dDcgc]}|j c}|k(sJ|dj\}}||k(sJtd|DsJtjtd5|dj ||dd} ddd|dj |d} | ddj dk(sJtd| dddDsJycc}wcc}w#1swY_xYw)Ni!N,)r rrr)nrowsrl)box Azbox Bzbox Czbox DrT) patch_artistrboxesc3dK|](}t|tjj*ywr7) isinstancerpatches PathPatchr9r s r1r;z-test_boxplot_legend_labels..s!Ez!S[[223E.0F)rshowboxmediansc3dK|](}t|tjj*ywr7)r1rrrr4s r1r;z-test_boxplot_legend_labels..s!@1z!SYY--.@r5z values must have same the lengthr'r5rUrLrjr-c3ZK|]#}|jjd%yw)_N)rrS)r9r-s r1r;z-test_boxplot_legend_labels..s!Iq{{}'',Is)+) rrseedrrboxplotrr!allr)r*r) rr+r legend_labelsbp1rr0r)bp2bp3bp4s r1test_boxplot_legend_labelsrCsIINN8 99  G $D||!1-HC8M a&..D . FC#&w< 0aAKKM 0M AA A!f668OGV ] "" " EWE EE E a&..]E. BC#&y> 2aAKKM 2m CC C!f668OGV ] "" " @@ @@ @ z)K L=!fnnTs);n<= a&..W. -C y>!  & & (G 33 3 Ic)nQR6HI II I) 1 3 ==s;G)GG  G)r"r&rplatformrunittestrrnumpyr numpy.testingrr)matplotlib.testing.decoratorsrrmatplotlib.testing._markersrmatplotlib.pyplotpyplotr matplotlibrmatplotlib.patchesr2rmatplotlib.transforms transformsrmatplotlib.collectionsrmatplotlib.linesrrmatplotlib.legend_handlerrmatplotlib.legendr$rr matplotlib.font_managerr r2rDrPr[rhrrrmachinerrrrrrrrrrrrrrerrrrrrrrrrrrrr rrrr-r parametrizer3r9r=r@rJrOrSrVrZr\r`rdrirqrurxrzr|rrrrrrfilterwarningsrrrrrrrrintrrrrrrrrrrrrrrrrrrrrrrrrr*rCr8r3r1rYs  ) O4%+-!2#!29$ 1%&D9:%&D9:::%&'(@,@@./TB'C',-4+8++-9auF-F--.D+8++-9auF IF I#$$+8++-9atE2E2&'T+8++-9atE 6E 6;-Tt< E= E<.d+8++-9auFF$&78dK !L ! &'T: 8; 8:,D B.C.B#5$( ) ]N]N@55p&#R)*+8++-9auF F ( -./"0"789+:+:('"./T+8++-9auF!F!*7,- ,#1L&AB,C, 34757 ;<7=7&AB,C,"?@ >A > > > > << > > >>& > > >>""?@ >A > > > > > >RS&T&m4,5,A A A0"%)8)15&/)B)DE +E +5!S/2 ,3 ,%)8)15&/)B)DE =E =# #)I0I "()))@"0 0 =; 0.&,( RS.T. @&@" ,Jr3