
    g>                        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mZ d dlmZmZ d dlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"  e
dgd	      d
        Z#d Z$d Z%d Z&ejN                  jQ                  ddgg ddgddgf      ejN                  jQ                  dd      ejN                  jQ                  dd      ejN                  jQ                  dd      d                             Z) edd      Z*ejN                  jQ                  d e*g ddddg df        e*g dd!dd!g df        e*g dd"dd"g df       g      d#        Z+ejN                  jQ                  d e*g d$dddg d%f        e*g dd!dd!g d&f        e*g dd"dd"g d'f       g      d(        Z,ejN                  jQ                  d e*g d)d*dd*g d+f        e*g d,d-dd-g d.f        e*g d/ddd*g d+f       g      d0        Z-d1 Z.ejN                  jQ                  d2g d3      ejN                  jQ                  d4g d5      d6               Z/ e
d7gdd89      d:        Z0ejN                  jQ                  d;d<d=g      d>        Z1d? Z2d@ Z3ejN                  jQ                  dAg dB      dC        Z4dD Z5dE Z6dF Z7 e	       dG        Z8 e
dHgdd89      dI        Z9dJ Z:dK Z;y)L    )
namedtupleN)assert_allclose)check_figures_equalimage_comparison)MouseButton
MouseEvent)AnchoredOffsetboxAnnotationBboxAnchoredTextDrawingAreaHPacker	OffsetBoxOffsetImage	PaddedBoxTextAreaVPacker_get_packed_offsetsoffsetbox_clippingT)remove_textc            	         t        j                         \  } }d}t        ||d      }|j                  sJ t	        j
                  d||ddd      }t        j                  | d	z  |d
z  g|dz  |dz  gdd      }t        d|ddd|j                  d      }|j                  |       |j                  |       |j                  |       |j                  d       |j                  d       y )Nd   Tclipr   r   #CCCCCCNoner   	facecolor	edgecolor	linewidth      ?      ?   black
   colorr    center        Fr!   r!   locchildpadframeonbbox_to_anchorbbox_transform	borderpad)r      )pltsubplotsr   clip_childrenmpatches	RectanglemlinesLine2Dr	   	transAxes
add_artistset_xlimset_ylimfigaxsizedabglineanchored_boxs          \/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_offsetbox.pytest_offsetbox_clippingrH      s     llnGCD	T4d	+B			FD$&/&,&'
)B ==4%(DH-QQ/?&#%'D %||L MM"MM$MM,KKKK    c            	         t        j                         \  } }d}t        ||d      }t        j                  d||ddd      }t        j                  | d	z  |d
z  g|dz  |dz  gdd      }t        d|ddd|j                  d      }|j                  |       |j                  |       |j                  |       | j                  j                          | j                  rJ d|_        | j                  sJ y )Nr   Tr   r   r   r   r   r   r!   r"   r#   r$   r%   r&   r(   r)   Fr*   r+   )r4   r5   r   r7   r8   r9   r:   r	   r;   r<   canvasdrawstaler6   r?   s          rG   test_offsetbox_clip_childrenrN   7   s     llnGCD	T4d	+B			FD$&/&,&'
)B ==4%(DH-QQ/?&#%'D %||L MM"MM$MM,JJOOyy=B999rI   c                      ddddddddd	d
d
} t        j                         \  }}t        dd      }| D ]   }t        ||      }|j	                  |       " |j
                  j                          y )Nr3   r#                     	   r%   )
upper right
upper leftz
lower leftlower rightrightcenter leftcenter rightzlower centerzupper centerr(   r   )r,   r-   )r4   r5   r   r	   r<   rK   rL   )codesr@   rA   rC   coderF   s         rG   test_offsetbox_loc_codesr_   \   s{    
E llnGC	S#	B $(T<
l#$ JJOOrI   c                      t        j                         \  } }ddg}ddg}|j                  |d       |j                  |d       |j                  dd       | j	                          y )Nr3   r#   zseries 1)labelzseries 2expand)ncolsmode)r4   r5   plotlegendtight_layout)r@   rA   d1d2s       rG   test_expand_with_tight_layoutrj   q   s_    llnGC
QB
QBGGBjG!GGBjG!IIAHI%rI   widths   )rl   rl   rl   皙?total)   r   r   Nsep)ro   r3   r   rp   rd   )rb   fixedequalc                 "    t        | |||       y )Nrd   )r   )rk   rn   rq   rd   s       rG   test_get_packed_offsetsrv   ~   s     s6rI   _Paramszwd_list, total, sep, expectedzwidths, total, sep, expected)rP   r3   r#   r3   rU   )r   rQ   rS   )rn   rq   expectedr%   rR   c                 `    t        | ||d      }|d   |d   k(  sJ t        |d   |d          y )Nrr   ru   r   r3   r   r   rk   rn   rq   rx   results        rG   test_get_packed_offsets_fixedr}      s<     !'BF!9###F1Ix{+rI   )rm   rm   rm   )r   g??)r   rR   rU   )r   g      @rP   c                 `    t        | ||d      }|d   |d   k(  sJ t        |d   |d          y )Nrb   ru   r   r3   rz   r{   s        rG   test_get_packed_offsets_expandr      s<     !(CF!9###F1Ix{+rI   )rP   r#   r3   rS   )r   r#   rQ   )rP   r#   r3   r!   r#   )r   r!   r3   r"   )r!   r3   皙?c                 `    t        | ||d      }|d   |d   k(  sJ t        |d   |d          y )Nrs   ru   r   r3   rz   r{   s        rG   test_get_packed_offsets_equalr      s<     !'BF!9###F1Ix{+rI   c                      t        j                  t              5  t        g dd d d       d d d        y # 1 sw Y   y xY w)N)r3   r3   r3   rs   )rn   rq   rd   )pytestraises
ValueErrorr    rI   rG   1test_get_packed_offsets_equal_total_none_sep_noner      s5    	z	" KITt'JK K Ks   5>
child_type)rL   imagetext	boxcoords)axes fractionaxes pixelsaxes pointsdatac                 :  	 | dk(  r5t        dd      }|j                  t        j                  dddd             nJ| dk(  r&t	        j
                  d      }d|d<   t        |      }n| d	k(  rt        d
ddi      }n
J d|         t        j                         \  }}t        |d|      }|j                  d       |j                  |       g 	|j                  j                  d	fd       |dk(  rI|j                  j                  d      \  }}|d|j                   z  dz  z  }|d|j                   z  dz  z  }nL|dk(  r)|j                  j                  d      \  }}|dz  }|dz  }n|j                  j                  d      \  }}|j                  j#                          	j%                          t'        d|j                  ||t(        j*                        j-                          t/        	      dk(  r	d   j0                  |k(  sJ |j3                  dd       |j5                  dd       |j                  j#                          	j%                          t'        d|j                  ||t(        j*                        j-                          t/        	      dk(  sJ y )NrL   rR   r   r   )r    r   )rR   rR   )r#   r#   r   u   ■fontsize)	textpropszUnknown picking child type r*   )r   T
pick_eventc                 &    j                  |       S )N)append)eventcallss    rG   <lambda>ztest_picking.<locals>.<lambda>   s    u||E7J rI   r   r!   H   r   button_press_eventr3   rp   )r   r<   r7   r8   nponesr   r   r4   r5   r
   
set_pickerrK   mpl_connectr;   transform_pointdpirL   clearr   r   LEFT_processlenartistr=   r>   )
r   r   picking_childimr@   rA   abxyr   s
            @rG   test_pickingr      s9    V#Aq)  !3!3FAqA!NO	w	WWV_4#B	v	 !3
AO@3J<@@ullnGC	zY	GBMM$MM"EJJ<)JK M!||++F31	S377]R	S377]R	m	#||++F31	S	S||++J71JJOO	KKMcjj!Q0@0@BBJ(*u:?uQx"444 KKAKKAJJOO	KKMcjj!Q0@0@BBJ(*u:??rI   zanchoredtext_align.pngmpl20)r   stylec                      t        j                         \  } }t        dddddi      }|j                  |       t        dddddi      }|j                  |       t        ddddd	i      }|j                  |       y )
Nztest
test long textr[   r   haleft)r,   r.   propr(   r\   rZ   )r4   r5   r   r<   )r@   rA   text0text1text2s        rG   &test_anchoredtext_horizontal_alignmentr      s~    llnGC/] f~7EMM%/X h'79EMM%/^ g8EMM%rI   extent_kindwindow_extent	tightbboxc                    t         j                  j                  t         j                         t        j                  dd      \  }}|j                  g d       |j                  dddt        d	      d
dd      }t        ddddd      }t        j                  dd      }|j                  |       t        |ddgddddt        d	            }|j                  |       t        t        j                  j!                  dd      d      }||j"                  _        t        |ddddd t        d	      !      }|j                  |        t'        |d"|               }	g d#}
t)        |	j*                  |
d$%        t'        |d"|               }g d&}t)        |j*                  |d$%        t'        |d"|               }g d'}t)        |j*                  |d$%       t-        j.                         }|j1                  |d()       |j3                  d       t        j4                  |      j6                  }d*}t)        ||d$%       |j8                  j;                          |j=                          |j8                  j;                          y )+N)rQ   rP   r   )figsizer   )r   r3   r   r3   
Annotation)r~   r~   )皙?r   ->)
arrowstyleFbaseliner   )xyxytext
arrowpropsclip_onvar      r   Tr   )i       r!   皙ɿr!   r   r   r)   r!   xyboxxycoordsr   box_alignmentr   r%   rP   )zoom)r!   g333333ӿ)r   K   zoffset points333333?)r   r   r   r.   r   get_)gffffft@gYn@g     0}@gfffffr@r#   )atol)g1g      `@gfffffi@gd@)g     f@g      @g     l@g9W@tight)bbox_inches)i^  i  rQ   )r4   rcParamsupdatercParamsDefaultr5   axisannotatedictr   r7   Circler<   r
   r   r   randomrandr   axesgetattrr   extentsioBytesIOsavefigseekimreadshaperK   rL   rg   )r   r@   rA   an1rC   pab3r   ab6bb1target1bb3target3bb6target6bufr   targetshapes                     rG   test_annotationbbox_extentsr     s   LL++,ll6s3GCGGL
++lx
!%!6#  0C 
RQ	-B	2&AMM!
b"X[6#2($(D$9;C MM#	RYY^^B+!	4BBHHM
Zw"1#2$(D$9;C MM# -'#k]+
,
.C*GCKKq1 -'#k]+
,
.C*GCKKq1
,'#k]+
,
.C)GCKKq1 **,CKKK)HHQKJJsO!!EKE;Q/ JJOOJJOOrI   c                  :    t        d      j                  dk(  sJ y )N*   )zorder)r   r   r   rI   rG   test_zorderr   ?  s    B&&",,,rI   c            	          t        ddddd      } ddd}t        | ddgd	d
dd|      }|j                  |usJ |d   dk(  sJ y )Nr   r   Tr   r   )r   gffffff?)r   relposr!   r   r   r   r   r   r   )r   r
   r   )rC   r   r   s      rG   test_arrowprops_copiedr   C  sc    	RQ	-B $9J	RHK&"1#-
/B =="""h8+++rI   align)r   bottomtopr   rZ   r(   c           
         t        j                  d      }|j                  j                         }d\  }}d\  }}t	        ||      }t	        ||      }t        ||g|       }	|	j                  |       |	j                  |      }
|	j                  |
|      \  }}t        |
j                  dd||z   t        ||      f       | dv rd}n| dv r||z
  }n| d	k(  r||z
  d
z  }t        |	j                         D cg c]  }|j                          c}||z   f||z   |fg       t        ||g|       }|j                  |       |j                  |      }
|j                  |
|      \  }}t        |
j                  dt        ||       t        ||      ||z   f       | dv rd}n| dv r||z
  }n| d	k(  r||z
  d
z  }t        |j                         D cg c]  }|j                          c}|z   |f|||z
  fg       y c c}w c c}w )Nr   )r   )r%   r   )r   <   )childrenr   r   )r   r   r   )rZ   r   r(   r#   )r4   figurerK   get_rendererr   r   rL   get_bbox
get_offsetr   boundsmaxget_childrenr   )r   r@   rendererx1y1x2y2r1r2hpackerbboxpxpyy_heightr-   vpackerx_heights                    rG   test_packersr  M  s    **
Czz&&(HFBFB	R	B	R	B Bxu5GLLH%Dh/FBDKK!QRR!=>..	"	"7	(	Gq=W5I5I5KLEU%%'L"x-(27B-8: Bxu5GLLH%Dh/FBDKK!c"bk\3r2;R!HI..	"	"7	(	Gq=W5I5I5KLEU%%'L8mR(2rBw-8:% M$ Ms   5G9G>c                      t        j                         \  } }t        dd      }t        |ddid      }|j	                  |       | j                          y )NfoorX   r   rT)patch_attrs
draw_frame)r4   r5   r   r   r<   draw_without_rendering)r@   rA   atpbs       rG   test_paddedbox_default_valuesr"  ~  sH    llnGC	el	+B	2K#5$	GBMM" rI   c            	          t        t        ddddd      dd      } | j                  dk(  sJ | j                  dk(  sJ t        t        ddddd      dddd	
      } | j                  dk(  sJ | j                  d	k(  sJ y )Nr   r   Tr   r*   r   )r   )r   g?r   )r   r   r   )r
   r   xyann	anncoords)r   s    rG   test_annotationbbox_propertiesr&    s    	BAqt<j!'
)B88z!!!<<6!!!	BAqt<j)F"1
3B 88{"""<<?***rI   c                      t        d      } | j                         dk(  sJ | j                         rJ | j                  d       | j	                  d       | j                         dk(  sJ | j                         sJ y )NFooBarT)r   get_textget_multilinebaselineset_textset_multilinebaseline)tas    rG   test_textarea_propertiesr/    sq    	%B;;=E!!!'')))KKT";;=E!!!##%%%rI   c                     |j                         }t        dd      }|j                  |       | j                         }t        dd      }|j                  |       |j                  j	                  d       y )Nr(  rX   r)  )add_subplotr   r<   txtr,  )fig_testfig_refax_refr   ax_testr   s         rG   test_textarea_set_textr7    sd      "F-E
e""$G-Eu	IIurI   zpaddedbox.pngc                     t        j                         \  } }t        d      }t        |dddid      }t	        d|      }|j                  |       t        d	      }t        |d
ddi      }t	        d|      }|j                  |       t        d      }t        |dd      }t	        d|      }|j                  |       y )Nr  rR   r   r  T)r.   r  r  rX   )r-   barr%   b)r.   r  rW   foobar   )r.   r  rY   )r4   r5   r   r   r	   r<   )r@   rA   r.  r!  r   s        rG   test_paddedboxr=    s    llnGC	%B	21;*<	NB	<r	2BMM"	%B	22K+=	>B	=	3BMM"	(	B	22$	/B	=	3BMM"rI   c                      t        j                         \  } }|j                  dd      }|j                  d       |j	                          t        d| j                  dd      j                          y )Nr  r*   Tbutton_release_eventr3   )r4   r5   r   	draggableremover   rK   r   )r@   rA   ans      rG   test_remove_draggablerC    sR    llnGC	UH	%BLLIIK%szz1a8AACrI   c                  `   t        j                         } | j                         j                  g d      j	                  dd      }|j                  d       | j                  j                          t        d| j                  dd      j                          |j                  j                  sJ y )N)r   r   r3   r3   r  r   Tr   r3   )r4   r  
subfiguresadd_axesr   r@  rK   rL   r   r   
_draggable
got_artist)r@   anns     rG   test_draggable_in_subfigurerJ    sz    
**,C
..

#
#L
1
:
:5&
ICMM$JJOO#SZZA6??A>>$$$$rI   )<collectionsr   r   numpyr   numpy.testingr   r   matplotlib.testing.decoratorsr   r   matplotlib.pyplotpyplotr4   matplotlib.patchespatchesr7   matplotlib.lineslinesr9   matplotlib.backend_basesr   r   matplotlib.offsetboxr	   r
   r   r   r   r   r   r   r   r   r   rH   rN   r_   rj   markparametrizerv   rw   r}   r   r   r   r   r   r   r   r   r  r"  r&  r/  r7  r=  rC  rJ  r   rI   rG   <module>rY     sh   " 	  )  O  % ! <O O O O
 '(d;  < F"J*
 %3%#sDF"9:0!=>7 ? 1 ;F
7 Y ?
@ 719~?b)_>Q	N<: ,, 7Dda5FHb)_>Q,<>: ,, 79~?QDA7G3HJ4Q!YA: ,,K
 '@A"#/# B/d +,$gN O +(FG7 H7t-,  #> ?,:?,:^!
+&   ?#WE F&D%rI   