
    A>i                        S SK Jr  S SKJr  S SKrS SKr\(       a  S SKJ	r	  S SK
Jr   " S S5      rS
S jr\S	:X  a  \" 5         gg)    )annotations)TYPE_CHECKINGN)Iterable)Figurec                      \ rS rSrSr   S       SS jjrSS jrSS jr S     SS jjrS r	S r
SSS
 jjrSrg	)TablePlotter   z[
Layout some DataFrames in vertical/horizontal layout for explanation.
Used in merging.rst
c                (    Xl         X l        X0l        g N)
cell_widthcell_height	font_size)selfr   r   r   s       T/var/www/html/land-tabula/venv/lib/python3.13/site-packages/pandas/util/_doctools.py__init__TablePlotter.__init__   s     %&"    c                ~    UR                   u  p#X!R                  R                  -   X1R                  R                  -   4$ )z1
Calculate table shape considering index levels.
)shapecolumnsnlevelsindex)r   dfrowcols       r   _shapeTablePlotter._shape   s4     88ZZ'''xx/?/?)???r   c                  ^  U(       a^  [        [        U 4S jU 5       5      T R                  U5      S   5      n[        U 4S jU 5       5      T R                  U5      S   -   nXT4$ [        U Vs/ s H  nT R                  U5      S   PM     snT R                  U5      S   /-   5      n[        U Vs/ s H  nT R                  U5      S   PM     snT R                  U5      S   /-   5      nXT4$ s  snf s  snf )zA
Calculate appropriate figure size based on left and right data.
c              3  L   >#    U  H  nTR                  U5      S    v   M     g7fr   Nr   .0r   r   s     r   	<genexpr>*TablePlotter._get_cells.<locals>.<genexpr>,   s     ?$BT[[_Q/$   !$r   c              3  L   >#    U  H  nTR                  U5      S    v   M     g7f   Nr!   r"   s     r   r$   r%   -   s     ;dR+dr&   r)   )maxsumr   )r   leftrightverticalvcellshcellsr   s   `      r   
_get_cellsTablePlotter._get_cells&   s     ?$??UASTUAVWF;d;;dkk%>PQR>SSF ~ t<t$++b/!,t<E@RST@U?VVWFt<t$++b/!,t<E@RST@U?VVWF~ =<s   0C24C7c           	       ^  SSK Jn  SSKJn  [	        U[
        5      (       d  U/nU Vs/ s H  nT R                  U5      PM     nnT R                  U5      nT R                  XU5      u  pU(       a  T R                  U-  T R                  U	-  4n
OT R                  U-  T R                  U	-  4n
UR                  U
S9nU(       a  UR                  [        U5      U5      n[        U 4S jU 5       5      n[        U 4S jU 5       5      n[        [        XSS95       H5  u  nu  nnUR!                  XSU24   5      nT R#                  UUUS	U-  S
9  M7     UR%                  USS2US24   5      nT R#                  UUSSU	-  S
9  UR'                  SSSSS9  U$ [        U 4S j/ UQUP 5       5      nS	[(        R                  " U5      -  nUR                  SU5      nSn[        XSS9 HN  u  nnT R+                  U5      nUR!                  USXUS   -   24   5      nT R#                  UUUUS
9  UUS   -  nMP     UR%                  USUS24   5      nT R#                  UUSUS
9  UR'                  SSSSS9  U$ s  snf )aE  
Plot left / right DataFrames in specified layout.

Parameters
----------
left : list of DataFrames before operation is applied
right : DataFrame of operation result
labels : list of str to be drawn as titles of left DataFrames
vertical : bool, default True
    If True, use vertical layout. If False, use horizontal layout.
r   )gridspecN)figsizec              3  L   >#    U  H  nTR                  U5      S    v   M     g7fr(   r!   r"   s     r   r$   $TablePlotter.plot.<locals>.<genexpr>U        BTrB 2Tr&   c              3  L   >#    U  H  nTR                  U5      S    v   M     g7fr    r!   r"   s     r   r$   r7   V   r8   r&   T)strict      ?)titleheightResultg?g?g?gffffff?)topbottomr,   r-   c              3  L   >#    U  H  nTR                  U5      S    v   M     g7fr    r!   r"   s     r   r$   r7   _   s     G"4;;r?1-r&   r)   g333333?)
matplotlibr4   matplotlib.pyplotpyplot
isinstancelist_convr1   r   r   figureGridSpeclenr*   	enumeratezipadd_subplot_make_tablesubplotsubplots_adjustnpr   )r   r,   r-   labelsr.   r4   pltr   r0   r/   r5   figgsmax_left_colsmax_left_rowsi_left_labelaxmax_rowsr=   sps   `                     r   plotTablePlotter.plot3   s    	('$%%6D)-.2

2.

5!h?oo.0@0@60IIG oo.0@0@60IIGjjj)""3t9f5BBTBBMBTBBM&/D0N&O"?E6__R1]?(:%;<  U&}AT U 'P R=> 123BRhtf}MC4tL" 
 G$GGH266(++F""1f-BA!$t<
F[[___R12a5y=(8%9:  Rvf ERU
	 = R12Y'BRhvFDDM
Q /s   I:c                    [        U[        R                  5      (       a-  UR                  c  UR	                  SS9nOUR	                  5       nUR                  S5      nU$ )z6
Convert each input to appropriate for table outplot.
 )nameNaN)rE   pdSeriesrb   to_framefillna)r   datas     r   rG   TablePlotter._convp   sM     dBII&&yy }}"}-}}{{5!r   c                   UR                  5       nUR                  R                  nUS:X  a  UR                  SSUR                  5        OA[	        U5       H2  nUR                  USU 3UR                  R                  U5      5        M4     UR                  R                  nUS:  a  UR                  R                  S5      n[	        SU5       Vs/ s H'  o1R                  R                  U5      R                  PM)     nn[        R                  " U5      nUR                  Ul        [        R                  " Xq/5      nXQl        U$ s  snf )Nr)   r   Index)copyr   r   insertrange_get_level_valuesr   _valuesrd   	DataFrameconcat)r   rh   idx_nlevelsrX   col_nlevelsr   valuescol_dfs           r   _insert_indexTablePlotter._insert_index|   s	   yy{jj((!KK7DJJ/;'Aqc{DJJ,H,H,KL ( ll**?,,003CCHKCXCXa..q199CX   \\&)F!>>DL99f^,DLs   .ENc                   Uc  UR                  S5        g SSKJn  UR                  R                  nUR
                  R                  nU R                  U5      nUR                  XSS9nUR                  U R                  5        Uc  S[        U5      S-   -  nUR                  5       n	U	S   R                  5        Hh  u  u  pnUS	:X  a  UR                  S5        O7X:  a  X:  a  UR                  S5        OX:  d  X:  a  UR                  S
5        UR                  U5        Mj     UR                  X0R                  S9  UR!                  S5        g )NFr   )plotting	   )locr;   r)   celldz#AAAAAA)sizeoff)set_visiblepandasrz   r   r   r   rw   tableset_fontsizer   rJ   
propertiesitemsset_facecolor
set_height	set_titleaxis)r   r[   r   r<   r=   rz   rs   rt   tbpropsrccells                r   rN   TablePlotter._make_table   s   :NN5!#hh&&jj((#^^B^*
'>CGaK(F!'N002LFQDBw  'Q_  'AO""9-OOF# 3 	U0
r   )r   r   r   )gGz?g      ?g      @)r   floatr   r   r   r   returnNone)r   zpd.DataFramer   tuple[int, int])r   r   ) T)rR   zIterable[str]r.   boolr   r   r   )r<   strr=   zfloat | Noner   r   )__name__
__module____qualname____firstlineno____doc__r   r   r1   r^   rG   rw   rN   __static_attributes__r   r   r   r   r      s     !!	## # 	#
 
#@ IM;#0;AE;	;z
, r   r   c                    SS K Jn   [        5       n[        R                  " / SQ/ SQ/ SQS.5      n[        R                  " SS/SS	/S
.5      nUR                  X#/[        R                  " X#/5      SS/SS9  U R                  5         [        R                  " SS/SS	/S.5      nUR                  X$/[        R                  " X$/SS9SS/SS9  U R                  5         [        R                  R                  / SQ5      n[        R                  R                  SS/5      n[        R                  " / SQ/ SQS.US9nXdl
        UR                  XDS/S9  U R                  5         g )Nr   )
         )         )          )ABCr   r   r   r   )r   r   df1df2T)rR   r.   )XZr)   )r   F)r)   r   r)   r   )r)   r   )   r   )r   r   )r   r   r   r   )r)   r               )r   r         r{   r   )v1v2)r   df3)rR   )rC   rD   r   rd   rq   r^   rr   show
MultiIndexfrom_tuplesr   )rS   pr   r   r   idxcolumns          r   mainr      s(   #A
,,\<P
QC
,,b"XRH5
6CFFC:ryy#,eU^dFSHHJ
,,b"XRH5
6CFF	
BIIsjq15%.SX   HHJ
--
#
#DC ]]&&(';<F
,,08KLTW
XCKFF3UGF$HHJr   __main__)r   r   )
__future__r   typingr   numpyrQ   r   rd   collections.abcr   matplotlib.figurer   r   r   r   r   r   r   <module>r      s@    "    ((_ _D8 zF r   