
    \
qi                        d dl mZ d dlmZ d dlZd dlZerd dlm	Z	 d dl
mZ  G d d          Zdd
Zedk    r e             dS dS )    )annotations)TYPE_CHECKINGN)Iterable)Figurec                  T    e Zd ZdZ	 	 	 d!d"dZd#dZd$dZ	 d%d&dZd Zd Z	d'd(d Z
dS ))TablePlotterzg
    Layout some DataFrames in vertical/horizontal layout for explanation.
    Used in merging.rst
    Gz?      ?      @
cell_widthfloatcell_height	font_sizereturnNonec                0    || _         || _        || _        d S N)r   r   r   )selfr   r   r   s       u/var/www/html/bestrading.cuttalo.com/services/ml-inference/venv/lib/python3.11/site-packages/pandas/util/_doctools.py__init__zTablePlotter.__init__   s     %&"    dfpd.DataFrametuple[int, int]c                R    |j         \  }}||j        j        z   ||j        j        z   fS )zA
        Calculate table shape considering index levels.
        )shapecolumnsnlevelsindex)r   r   rowcols       r   _shapezTablePlotter._shape   s.     8SRZ''rx/?)???r   c                    |rzt          t           fd|D                                            |          d                   }t           fd|D                                            |          d         z   }npt           fd|D                                  |          d         gz             }t           fd|D                                  |          d         gz             }||fS )zQ
        Calculate appropriate figure size based on left and right data.
        c              3  N   K   | ]}                     |          d          V   dS r   Nr"   .0r   r   s     r   	<genexpr>z*TablePlotter._get_cells.<locals>.<genexpr>,   s2      ??BT[[__Q/??????r   r   c              3  N   K   | ]}                     |          d          V   dS    Nr&   r'   s     r   r)   z*TablePlotter._get_cells.<locals>.<genexpr>-   s2      ;;R+;;;;;;r   r,   c                F    g | ]}                     |          d          S )r   r&   r'   s     r   
<listcomp>z+TablePlotter._get_cells.<locals>.<listcomp>/   (    <<<$++b//!,<<<r   c                F    g | ]}                     |          d          S )r,   r&   r'   s     r   r.   z+TablePlotter._get_cells.<locals>.<listcomp>0   r/   r   )maxsumr"   )r   leftrightverticalvcellshcellss   `     r   
_get_cellszTablePlotter._get_cells&   s	     	X????$?????UASASTUAVWWF;;;;d;;;;;dkk%>P>PQR>SSFF<<<<t<<<E@R@RST@U?VVWWF<<<<t<<<E@R@RST@U?VVWWFv~r    TlabelsIterable[str]r5   boolr   c           	         ddl m} ddlm} t	          |t
                    s|g} fd|D             }                     |          }                     |||          \  }}|r j        |z   j	        |z  f}	n j        |z   j	        |z  f}	|
                    |	          }
|r|                    t          |          |          }t           fd|D                       }t           fd|D                       }t          t          ||d	                    D ]C\  }\  }}|
                    ||d|f                   }                     |||d
|z             D|                    |dd|df                   }                     ||dd|z             |
                    dddd           nt           fdg ||D                       }d
t)          j        |          z  }|                    d|          }d}t          ||d	          D ]f\  }}                     |          }|
                    |d|||d         z   f                   }                     ||||           ||d         z  }g|                    |d|df                   }                     ||d|           |
                    dddd           |
S )a  
        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   )gridspecNc                :    g | ]}                     |          S r9   )_convr'   s     r   r.   z%TablePlotter.plot.<locals>.<listcomp>F   s#    ...2

2...r   )figsizec              3  N   K   | ]}                     |          d          V   dS r+   r&   r'   s     r   r)   z$TablePlotter.plot.<locals>.<genexpr>U   2      BBrB 2BBBBBBr   c              3  N   K   | ]}                     |          d          V   dS r%   r&   r'   s     r   r)   z$TablePlotter.plot.<locals>.<genexpr>V   rC   r   T)strict      ?)titleheightResultg?g?g?gffffff?)topbottomr3   r4   c              3  N   K   | ]}                     |          d          V   dS r%   r&   r'   s     r   r)   z$TablePlotter.plot.<locals>.<genexpr>_   s2      GG"4;;r??1-GGGGGGr   r,   g333333?)
matplotlibr>   matplotlib.pyplotpyplot
isinstancelistr@   r8   r   r   figureGridSpeclenr1   	enumeratezipadd_subplot_make_tablesubplotsubplots_adjustnpr"   )r   r3   r4   r:   r5   r>   pltr7   r6   rA   figgsmax_left_colsmax_left_rowsi_left_labelaxmax_rowsrH   r   sps   `                     r   plotzTablePlotter.plot3   sP    	('''''''''''$%% 	6D.......

5!!uh?? 	Jo.0@60IIGG o.0@60IIGjjj)) 	N""3t99f55BBBBBTBBBBBMBBBBTBBBBBM&/D&0N0N0N&O&O V V"?E6__R1]?(:%;<<  U&}AT UUUUR=>> 1233BRhtf}MMMC4tLLLLGGGG$GGGGGH26(+++F""1f--BA!$t<<<  
F[[____R1q2a5y=(8%9::  Rvf EEERU
R122Y''BRhvFFFDDMMM
r   c                    t          |t          j                  r2|j        |                    d          }n|                                }|                    d          }|S )zF
        Convert each input to appropriate for table outplot.
        N )nameNaN)rP   pdSeriesrj   to_framefillna)r   datas     r   r@   zTablePlotter._convp   sX     dBI&& 	'y }}"}--}}{{5!!r   c                                                     j        j        }|dk    r                    ddj                   nDt	          |          D ]4}                    |d| j                            |                     5j        j        }|dk    rsj                            d          }fdt	          d|          D             }t          j        |          }|j        _        t          j	        |g          |_        S )Nr,   r   Indexc                N    g | ]!}j                             |          j        "S r9   )r   _get_level_values_values)r(   ra   rp   s     r   r.   z.TablePlotter._insert_index.<locals>.<listcomp>   s9       >?..q119  r   )
copyr   r   insertrangert   r   rl   	DataFrameconcat)r   rp   idx_nlevelsra   col_nlevelsr!   valuescol_dfs    `      r   _insert_indexzTablePlotter._insert_index|   s   yy{{j(!KK7DJ////;'' M MA{q{{DJ,H,H,K,KLLLLl*??,0033C   CHKCXCX  F \&))F!>DL9fd^,,DDLr   NrG   strrH   float | Nonec                   ||                     d           d S ddlm} |j        j        }|j        j        }|                     |          }|                    ||d          }|                    | j	                   |dt          |          dz   z  }|                                }	|	d                                         D ]|\  \  }
}}|d	k    r|                     d           nC|
|k     r||k     r|                     d           n!|
|k     s||k     r|                    d
           |                    |           }|                    || j	                   |                    d           d S )NFr   )plotting	   )locrF   r,   celldz#AAAAAA)sizeoff)set_visiblepandasr   r   r   r   r   tableset_fontsizer   rT   
propertiesitemsset_facecolor
set_height	set_titleaxis)r   rd   r   rG   rH   r   r{   r|   tbpropsrccells                r   rX   zTablePlotter._make_table   s|   :NN5!!!F######h&j(##^^B^**
'''>CGGaK(F!'N0022 	$ 	$LFQDBww  ''''[Q__  ''''[AOO""9---OOF####
U000
r   )r	   r
   r   )r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   )r9   T)r:   r;   r5   r<   r   r   r   )rG   r   rH   r   r   r   )__name__
__module____qualname____doc__r   r"   r8   rg   r@   r   rX   r9   r   r   r   r      s          !!	# # # # #@ @ @ @    IM; ; ; ; ;z
 
 
  ,      r   r   r   r   c                    dd l m}  t                      }t          j        g dg dg dd          }t          j        ddgdd	gd
          }|                    ||gt          j        ||g          ddgd           |                                  t          j        ddgdd	gd          }|                    ||gt          j        ||gd          ddgd           |                                  t          j        	                    g d          }t          j        	                    ddg          }t          j        g dg dd|          }||_
        |                    ||dg           |                                  d S )Nr   )
         )         )          )ABCr   r   r   r   )r   r   df1df2T)r:   r5   )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)r:   )rN   rO   r   rl   ry   rg   rz   show
MultiIndexfrom_tuplesr   )r\   pr   r   r   idxcolumns          r   mainr      s   ######A
,\\\<<<PP
Q
QC
,b"XRH55
6
6CFFC:ry#s,,eU^dFSSSHHJJJ
,b"XRH55
6
6CFF	c
BIsCjq1115%.SX     HHJJJ
-
#
#DDD C ]&&(';<<F
,0008K8K8KLLTW
X
X
XCCKFF3UGF$$$HHJJJJJr   __main__)r   r   )
__future__r   typingr   numpyr[   r   rl   collections.abcr   matplotlib.figurer   r   r   r   r9   r   r   <module>r      s    " " " " " "                     )((((((((((((_ _ _ _ _ _ _ _D   8 zDFFFFF r   