
    Wh5                       d dl mZ d dlmZ d dlZd dlZ G d d          Ze	dk    rTd dl
mZ  e            Z ej        g dg dg d	d
          Z ej        ddgddgd          Ze                    eeg ej        eeg          ddgd            ej                      ej        ddgddgd          Ze                    eeg ej        eegd          ddgd            ej                     ej                            g d          Zej                            ddg          Z ej        g dg dde          Zee_        e                    eedg             ej                     dS dS )!    )annotations)IterableNc                  R    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       [/var/www/html/movieo_spanner_bot/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>+   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]r3   boolc           	         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}	 |j
        |	          }
|r|                    t          |          |          }t           fd|D                       }t           fd|D                       }t          t          ||                    D ]C\  }\  }}|
                    ||d|f                   }                     |||d|z             D |j        |dd|df                   }                     ||d	d
|z             |
                    dddd           nt           fd||gz   D                       }dt)          j        |          z  }|                    d|          }d}t          ||          D ]f\  }}                     |          }|
                    |d|||d         z   f                   }                     ||||           ||d         z  }g |j        |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   Nc                :    g | ]}                     |          S r7   )_convr%   s     r   r,   z%TablePlotter.plot.<locals>.<listcomp>?   s#    ...2

2...r   )figsizec              3  N   K   | ]}                     |          d          V   dS r)   r$   r%   s     r   r'   z$TablePlotter.plot.<locals>.<genexpr>N   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>O   r@   r         ?)titleheightResultg?g?g?gffffff?)topbottomr1   r2   c              3  N   K   | ]}                     |          d          V   dS r#   r$   r%   s     r   r'   z$TablePlotter.plot.<locals>.<genexpr>X   s2      GG"4;;r??1-GGGGGGr   r*   g333333?)matplotlib.gridspecgridspecmatplotlib.pyplotpyplot
isinstancelistr=   r6   r
   r   figureGridSpeclenr/   	enumeratezipadd_subplot_make_tablesubplotsubplots_adjustnpr    )r   r1   r2   r8   r3   rJ   pltr5   r4   r>   figgsmax_left_colsmax_left_rowsillabelaxmax_rowsrD   r   sps   `                     r   plotzTablePlotter.plot.   sD    	/.....''''''$%% 	6D.......

5!!uh?? 	Jo.0@60IIGG o.0@60IIGcj))) 	N""3t99f55BBBBBTBBBBBMBBBBTBBBBBM!*3tV+<+<!=!= Q Q:Au__R1]?(:%;<<  QeC-<O PPPPR=>> 1233BRhtf}MMMC4tLLLLGGGGwGGGGGH26(+++F""1f--BA v..  	E[[____R1q2a5y=(8%9::  RuV DDD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)rM   pdSeriesrg   to_framefillna)r   datas     r   r=   zTablePlotter._convi   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 r7   )r   _get_level_values_values)r&   r^   rm   s     r   r,   z.TablePlotter._insert_index.<locals>.<listcomp>   s9       >?..q119  r   )
copyr   r   insertrangerq   r   ri   	DataFrameconcat)r   rm   idx_nlevelsr^   col_nlevelsr   valuescol_dfs    `      r   _insert_indexzTablePlotter._insert_indexu   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   NrC   strrD   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   	   )locrB   r*   celldz#AAAAAA)sizeoff)set_visiblepandas.plottingplottingr   r   r   r|   tableset_fontsizer   rQ   
propertiesitemsset_facecolor
set_height	set_titleaxis)r   ra   r   rC   rD   r   rx   ry   tbpropsrccells                r   rU   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   )r7   T)r8   r9   r3   r:   r   )rC   r}   rD   r~   )__name__
__module____qualname____doc__r   r    r6   rd   r=   r|   rU   r7   r   r   r   r   
   s          !!	# # # # #@ @ @ @   9 9 9 9 9v
 
 
  ,      r   r   __main__)
         )         )          )ABCr   r   r   r   )r   r   df1df2T)r8   r3   )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)r8   )
__future__r   typingr   numpyrX   pandasri   r   r   rK   rL   rY   prv   r   r   rd   rw   showr   
MultiIndexfrom_tuplesidxr   r   r7   r   r   <module>r      s8   " " " " " "              ] ] ] ] ] ] ] ]@ z######A
",\\\<<<PP
Q
QC
",b"XRH55
6
6CFFC:yry#s,,eU^dFSSSCHJJJ
",b"XRH55
6
6CFF	c
IBIsCjq1115%.SX     CHJJJ
-
#
#DDD C -
#
#Xx$8
9
9C
",0008K8K8KLLTW
X
X
XCCKFF3UGF$$$CHJJJJJ3 r   