
    g1                        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
mZ d dlmZmZ d dlmZ d5dZ e	dgd	      d
        Z e	dg      d        Z e	dg      d        Z e	dgdd      d        Z e	dg      d        Z e	dg      d        Z e	dgd	      d        Z e	dgd	      d        Z e	dg      d        Zd Zd6d Z e	d!d"g      d#        Zd$ Zej@                  jC                  d%d&d'g      d(        Z"d) Z#d* Z$d+ Z%d, Z&d- Z'ej@                  jQ                  d.      d/        Z)d0 Z*d1 Z+d2 Z,d3 Z-d4 Z.y)7    N)assert_array_equal)image_comparison)AnchoredOffsetboxDrawingArea)	Rectanglec                     | j                  ddg       | j                  d       | j                  d|       | j                  d|       | j	                  d|       y )	N         nbinsx-labelfontsizey-labelTitle)plotlocator_params
set_xlabel
set_ylabel	set_title)axr   s     ^/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_tightlayout.pyexample_plotr      sR    GGQFOAMM)hM/MM)hM/LL8L,    tight_layout1gffffff?)tolc                  t    t        j                         \  } }t        |d       t        j                          y)z'Test tight_layout for a single subplot.   r   Npltsubplotsr   tight_layoutfigr   s     r   test_tight_layout1r&      s)     llnGCb!r   tight_layout2c                      t        j                  dd      \  } \  \  }}\  }}t        |       t        |       t        |       t        |       t        j                          y)(Test tight_layout for multiple subplots.r
   )nrowsncolsNr    )r%   ax1ax2ax3ax4s        r   test_tight_layout2r0      sR     %(LLq$B!C	!*3jsCr   tight_layout3c                      t        j                  d      } t        j                  d      }t        j                  d      }t        |        t        |       t        |       t        j                          y)r)         z   N)r!   subplotr   r#   )r,   r-   r.   s      r   test_tight_layout3r7   )   sR     ++c
C
++c
C
++c
Cr   tight_layout4)z2.5.5z2.6.1Q?)freetype_versionr   c                  B   t        j                  dd      } t        j                  ddd      }t        j                  dddd      }t        j                  ddd	      }t        |        t        |       t        |       t        |       t        j                          y
)z#Test tight_layout for subplot2grid.)r   r   r   r   )r   r	   r
   )colspan)r	   r   r=   rowspan)r	   r
   )r?   N)r!   subplot2gridr   r#   )r,   r-   r.   r/   s       r   test_tight_layout4rA   5   s     

66
*C


661
5C


661a
@C


661
5Cr   tight_layout5c                      t        j                         } t        j                  d      j	                  d      }| j                  |d       t        j                          y)zTest tight_layout for image.d   
   rF   none)interpolationN)r!   r6   nparangereshapeimshowr#   )r   arrs     r   test_tight_layout5rN   D   sC     
B
))C.
 
 
*CIIcI(r   tight_layout6c            
         t        j                         5  t        j                  dt               t	        j
                         } t        j                  j                  dd      }| j                  |d         }| j                  |d         }t        |       t        |       |j                  | g d       t        j                  j                  dd      }|D ]@  }| j                  |      }t        |       |j                  d       |j                  d       B j                  d	d
       |j                  | g dd       t        |j                  |j                        }t!        |j"                  |j"                        }|j                  | dd||j"                  z
  z   dd|j                  |z
  z
  g       |j                  | dd||j"                  z
  z   dd|j                  |z
  z
  gd       ddd       y# 1 sw Y   yxY w)zTest tight_layout for gridspec.ignorer
   r	   r   )r   r         ?r	   rectr    r      r   )rR   r   r	   r	   g?)rT   h_padNrR   )warningscatch_warningssimplefilterUserWarningr!   figuremplgridspecGridSpecadd_subplotr   r#   r   r   mintopmaxbottom)	r%   gs1r,   r-   gs2ssr   rb   rd   s	            r   test_tight_layout6rh   M   s    
	 	 	"  %h4jjlll##Aq)ooc!f%ooc!f%SS>2ll##Aq) 	B$BLLMM"		 	i"->>#''377#SZZ,D!vcjj/@*A$'cggck):$< 	=CfSZZ.?)@$(!swws{*;$=# 	 	%= %  %  %s   GG==Htight_layout7c                  D   d} t        j                         \  }}|j                  ddg       |j                  d       |j	                  d|        |j                  d|        |j                  d	d
|        |j                  dd|        t        j                          y )Nr   r	   r
   r   r   r   r   r   z
Left Titleleft)locr   zRight Titleright)r!   r"   r   r   r   r   r   r#   )r   r%   r   s      r   test_tight_layout7rn   w   s     HllnGCGGQFOAMM)hM/MM)hM/LL6HL=LLGhL?r   tight_layout8{Gzt?c                      t        j                         } | j                  dd       | j                         }t	        |d       | j                          y)#Test automatic use of tight_layout.tight皙?)layoutpadr   r   N)r!   r\   set_layout_enginer`   r   draw_without_renderingr$   s     r   test_tight_layout8ry      sD     **,Cc2		Bb! r   tight_layout9c                      t        j                  dd      \  } }|d   d   j                  d       t        j                          y )Nr
   r	   F)r!   r"   set_visibler#   )faxarrs     r   test_tight_layout9r      s:     ||Aq!HAu	!HQKE"r   c                     t        j                         } | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       |j                  j	                  ddddd	       |j
                  j	                  ddddd	       |j                  j                  d
gd       |j
                  j                  d
gd       | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       | j                  d      }|j                  j	                  ddd       |j
                  j	                  ddd       t        j                          ddgddggddgddggddgddggddgddggg}t        | j                        D ]D  \  }}t        t        j                  |j                         j                         d      ||          F y)rr   r3   out   r   )tickdirlengthwidth    Tminor)r   r   r   tick1Onwhichr   )r      inr4   inout   gK?gCl?gʡE?gB`"?gI+?g/$?gQ?gm?N)r!   r\   r`   xaxisset_tick_paramsyaxis	set_ticksr#   	enumerateaxesr   rI   roundget_position
get_points)r%   r   expectednns       r   test_outward_ticksr      s$   
**,C		BHHU2Q?HHU2Q?HHb4w  HHHb4w  HHHs$'HHs$'		BHHT"A>HHT"A>		BHHWRqAHHWRqA		BHHU2Q?HHU2Q? %(
%(
%(
%(	H CHH% )B288BOO$5$@$@$BAF#B<	))r   c           
      "   |d|z   }}| | f| df| |f|dfd|f||fd| f|| fd| fg	}|D ]^  }t        ||      }t        d|||ddd      }	|j                  |	       t        d|d	d|| j                  d	
      }
| j                  |
       ` 
S )z&
    Surround ax with OffsetBoxes
    r	   rR   r<   Noner   F)r   height	facecolor	edgecolor	linewidthantialiasedcenterg        )rl   childrv   frameonbbox_to_anchorbbox_transform	borderpad)r   r   
add_artistr   	transAxes)r   sizemargincolormmpanchor_pointspointda
backgroundanchored_boxs              r   add_offsetboxesr      s     AfHrAb1"XBx1"b"XBx"b1"XQBx"qb3M  $t$vT&*).)/)*+02
 	j!( << 	l#%$& r   tight_layout_offsetboxes1tight_layout_offsetboxes2c                  6   dxg dddgxfd}  |        }t        j                           |        }|dz
  d    D ]9  }|j                         D ]$  }t        |t              s|j                  d       & ; t        j                          y )Nr
   )redbluegreenyellowr   r	   c                      t        j                        \  } }|j                  }t        |      D ]'  \  }}|j	                  |       t        |d|       ) |S )N)r      )r!   r"   flatzipr   r   )	_axsr   r   colorscolsrowsxys	       r   	_subplotsz0test_tight_layout_offsetboxes.<locals>._subplots   s_    dD)3hhS&) 	1IBGGAqG&B%0	1 
r   F)r!   r#   get_children
isinstancer   r|   )	r   r   r   r   r   r   r   r   r   s	       @@@@@r   test_tight_layout_offsetboxesr      s     OD4/FFNA  +C +C46<4<  )__& 	)E%!23!!%(	))
 r   c                  L    t        j                         } | j                          y)zETest that tight layout doesn't cause an error when there are no Axes.N)r!   gcfr#   )r%   s    r   test_empty_layoutr     s    
'')Cr   labelxlabelylabelc                 ^    t        j                  d      \  }} |j                  di | di y)z8Test that no warning emitted when xlabel/ylabel too big.r   r
   figsizedaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN )r!   r"   set)r   r%   r   s      r   test_verybig_decoratorsr     s,     ll6*GC
BFF eY r   c                      t        j                  ddd      \  } }|d   j                  d       |d   j                  d       y)	z+Test that doesn't warn when xlabel too big.r	   r
   r   r   r   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbN)r!   r"   r   r%   r   s     r   test_big_decorators_horizontalr     <    ||Aq&1HCFhFhr   c                      t        j                  ddd      \  } }|d   j                  d       |d   j                  d       y)	z+Test that doesn't warn when ylabel too big.r
   r	   r   r   r   aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbN)r!   r"   r   r   s     r   test_big_decorators_verticalr     r   r   c                      t        j                  dd       t        j                  dddd       t        j                  t              5  t        j
                          d d d        y # 1 sw Y   y xY w)N)      r<   )r   r   )r   r   r   r   r>   )r!   r@   pytestwarnsr[   r#   r   r   r   test_badsubplotgridr     sS    VV$VVQ:	k	"   s   	A''A0c                  4   t        j                  d      \  } }|j                  ddg       |j                  ddg       |j	                  dddd	       |j                         }t        j                  t              5  t        j                          |j                         }|j                  |j                  k(  sJ 	 d d d        t        j                  t              5  t        j                  g d
       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)NTr#   r   r	   zBIG LONG STRING)g      ?r
   )g      %@g      ?F)xyxytextannotation_clip)r   r   皙?r   rS   )r!   r"   set_xlimset_ylimannotater   r   r   r[   r#   r   )r%   r   p1p2s       r   test_collapsedr   %  s    
 ll-GCKKAKKAKK!i %  '		B	k	" $__xx288###$
 
k	" 0./0 0$ $
0 0s   >A D DDDc                     t        j                  d      \  } }| j                  d      }|j                  d      }| j                  j                          |j                         j                  |j                         j                  kD  sJ y )NTr   foobar)	r!   r"   suptitler   canvasdrawget_window_extenty0y1)r%   r   stts       r   test_suptitler   :  sj    ll-GC	e	B
UAJJOO!$$q':':'<'?'????r   pdfc                     t         j                  j                  j                  fd}| j	                  t         j                  j                  d|       t        j                         \  }}|j                          y )Nc                 ~    t        | t        j                  j                  j                        sJ  | g|i | y )N)r   r]   backendsbackend_pdfRendererPdf)selfargskwargsunpatched_inits      r   __init__z'test_non_agg_renderer.<locals>.__init__F  s7     $ 8 8 D DEEEt-d-f-r   r
  )r]   backend_basesRendererBaser
  setattrr!   r"   r#   )monkeypatchrecwarnr
  r%   r   r	  s        @r   test_non_agg_rendererr  B  sZ    &&33<<N. ))66
HMllnGCr   c                     t        j                  dd      \  } }|d   j                  ddgddgddg      }|d   j                         }| j	                  |j
                  dz   |j                  d|j                  g      }| j                  ||       t        j                  t        d	
      5  | j                          d d d        y # 1 sw Y   y xY w)Nr	   r
   r   r   )crp   r9   )caxzThis figure includes Axesmatch)r!   r"   scatterr   add_axesx1r   r   colorbarr   r   r[   r#   )r%   r   ptsax_rectr  s        r   test_manual_colorbarr  Q  s    Q"IC
q'//1a&1a&QF/
3C1g""$G
,,	e	WZZ?C LL#L	k)D	E   s   .CCc                     t        j                  d      j                  d      } t        j                  d      }|j                  dd      }|j                  dd	      }|j                  d
d      }|||fD ]  }|j                  d       |j                  | d d df         \  }|j                  |       }|j                         sJ |j                         sJ t        ddd|j                        }|j                  |       |j                  |j                         |j                                |j                         rJ |j                         sJ  y )NrD   rE   )   r
   r      rectilinear)
projection   	mollweide   polarFr   r<   rR   )	transform)rI   rJ   rK   r!   r\   r`   gridr   pcolor_fully_clipped_to_axesr   r   set_clip_pathget_pathget_transform)	rM   r%   r,   r-   r.   r   hr   rT   s	            r   test_clipped_to_axesr.  ^  s*    ))C.
 
 
*C
**V
$C
//#-/
8C
//#+/
6C
//#'/
2CCo .
WWSAYIIcN'')))'')))cR\\B		););)=>++---++---.r   c                      t        j                         \  } }t        j                  t        d      5  | j                  ddi       d d d        | j                          y # 1 sw Y   xY w)Nzwill be deprecatedr  rv   333333?)r!   r"   r   r   PendingDeprecationWarningset_tight_layoutrx   r$   s     r   test_tight_padsr3  v  sX    llnGC	/0
2 ,eT]+,  , ,s   A  A)c                  Z    t        j                  ddi      \  } }| j                          y )Nrv   r0  r   )r!   r"   rx   r$   s     r   test_tight_kwargsr5  ~  s$    ll6GC r   c                  b   t        j                         \  } }t        j                  t              5  | j                  d       | j                         sJ | j                  d       | j                         rJ | j                  d       | j                         sJ 	 d d d        y # 1 sw Y   y xY w)NTF)r!   r"   r   r   r1  r2  get_tight_layoutr$   s     r   test_tight_toggler8    s    llnGC	/	0 &T"##%%%U#'')))T"##%%%& & &s   A*B%%B.)rV   )rF   rt   black)/rX   numpyrI   numpy.testingr   r   
matplotlibr]   matplotlib.testing.decoratorsr   matplotlib.pyplotpyplotr!   matplotlib.offsetboxr   r   matplotlib.patchesr   r   r&   r0   r7   rA   rN   rh   rn   ry   r   r   r   r   r   markparametrizer   r   r   r   r   r   backendr  r  r.  r3  r5  r8  r   r   r   <module>rE     s     ,   :  ? (- ?#- . ?#$ % ?#$ % ?#6H

 ?#$ % ?#$&% %&%R ?#-
 .
 ?#/! 0! ?#$ % )F< .0KLM$ N$N 8X"67! 8!  0*@ U 
.0!!
&r   