
    Mh                        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5      r
S	S jr\S:X  a  \" 5         gg)
    )annotations)TYPE_CHECKINGN)Iterablec                  v    \ 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       G/var/www/html/env/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5      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X/-    5       5      nS[(        R                  " U5      -  nUR                  SU5      nSn[        X5       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>Q        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#   r6   R   r7   r%         ?)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#   r6   [   s     G"4;;r?1-r%   r(   g333333?)
matplotlibr3   matplotlib.pyplotpyplot
isinstancelist_convr0   r   r   figureGridSpeclenr)   	enumeratezipadd_subplot_make_tablesubplotsubplots_adjustnpr   )r   r+   r,   labelsr-   r3   pltr   r/   r.   r4   figgsmax_left_colsmax_left_rowsi_left_labelaxmax_rowsr;   sps   `                     r   plotTablePlotter.plot1   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&/D0A&B"?E6__R1]?(:%;<  U&}AT U 'C R=> 123BRhtf}MC4tL" 
 GwGGH266(++F""1f-BA!$/
F[[___R12a5y=(8%9:  Rvf ERU
	 0 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)rC   pdSeriesr`   to_framefillna)r   datas     r   rE   TablePlotter._convl   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   _valuesrb   	DataFrameconcat)r   rf   idx_nlevelsrV   col_nlevelsr   valuescol_dfs           r   _insert_indexTablePlotter._insert_indexx   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	   )locr9   r(   celldz#AAAAAA)sizeoff)set_visiblepandasrx   r   r   r   ru   tableset_fontsizer   rH   
propertiesitemsset_facecolor
set_height	set_titleaxis)r   rY   r   r:   r;   rx   rq   rr   tbpropsrccells                r   rL   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)rP   zIterable[str]r-   boolr
   )r:   strr;   zfloat | Noner   r   )__name__
__module____qualname____firstlineno____doc__r   r   r0   r\   rE   ru   rL   __static_attributes__r   r   r   r   r      sb     !!	## # 	#
 
#@9v
, 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)rP   r-   )XZr(   )r   F)r(   r   r(   r   )r(   r   )   r   )r   r   )r   r   r   r   )r(   r               )r   r         ry   r   )v1v2)r   df3)rP   )rA   rB   r   rb   ro   r\   rp   show
MultiIndexfrom_tuplesr   )rQ   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   numpyrO   r   rb   collections.abcr   r   r   r   r   r   r   <module>r      s=    "    (] ]@8 zF r   