§
    tŠtjÿ  ã                  ó�   — 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
    ç®Gáz®×?ç      Ð?ç      @Ú
cell_widthÚfloatÚcell_heightÚ	font_sizeÚreturnÚNonec                ó0   — || _         || _        || _        d S ©N)r   r   r   )Úselfr   r   r   s       úS/var/www/html/CA-Chatbot/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Ø�R”ZÔ'Ñ'¨¨r¬xÔ/?Ñ)?Ð?Ð?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   øè è € Ð?Ð?°B˜TŸ[š[¨™_œ_¨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å�Ð?Ð?Ð?Ð?¸$Ð?Ñ?Ô?Ñ?Ô?ÀÇÂÈUÑASÔASÐTUÔAVÑWÔWˆFÝÐ;Ð;Ð;Ð;°dÐ;Ñ;Ô;Ñ;Ô;¸d¿kºkÈ%Ñ>PÔ>PÐQRÔ>SÑSˆFˆFåÐ<Ð<Ð<Ð<°tÐ<Ñ<Ô<ÀÇÂÈEÑ@RÔ@RÐSTÔ@UÐ?VÑVÑWÔWˆFÝÐ<Ð<Ð<Ð<°tÐ<Ñ<Ô<ÀÇÂÈEÑ@RÔ@RÐSTÔ@UÐ?VÑVÑWÔWˆFØ�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ÐB°r §¢¨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  ø€ ð 	(Ð'Ð'Ð'Ð'Ð'Ø'Ð'Ð'Ð'Ð'Ð'å˜$¥Ñ%Ô%ð 	Ø�6ˆDØ.Ð.Ð.Ð.¨Ð.Ñ.Ô.ˆØ—
’
˜5Ñ!Ô!ˆàŸš¨¨u°hÑ?Ô?‰ˆ�àð 	JØ”o¨Ñ.°Ô0@À6Ñ0IÐIˆGˆGð ”o¨Ñ.°Ô0@À6Ñ0IÐIˆGØ�jŠj ˆjÑ)Ô)ˆàñ 	NØ×"Ò"¥3 t¡9¤9¨fÑ5Ô5ˆBåÐBÐBÐBÐB¸TÐBÑBÔBÑBÔBˆMÝÐBÐBÐBÐB¸TÐBÑBÔBÑBÔBˆMÝ&/µ°D¸&ÈÐ0NÑ0NÔ0NÑ&OÔ&Oð Vð VÑ"�‘?�E˜6Ø—_’_ R¨¨1¨]¨?Ð(:Ô%;Ñ<Ô<�Ø× Ò   U°&ÀÀ}ÑATÐ ÑUÔUÐUÐUà—’˜R    = > >Ð 1Ô2Ñ3Ô3ˆBØ×Ò˜R ¨h¸tÀf¹}ÐÑMÔMÐMØ×Ò C°¸4ÀtÐÑLÔLÐLÑLåÐGÐGÐGÐG¸¸$¸À¸ÐGÑGÔGÑGÔGˆHØ�2œ6 (Ñ+Ô+Ñ+ˆFØ×"Ò" 1 fÑ-Ô-ˆBàˆAÝ! $¨°tÐ<Ñ<Ô<ð ð ‘
��FØ—[’[ ‘_”_�Ø—_’_ R¨¨1¨q°2°a´5©y¨=Ð(8Ô%9Ñ:Ô:�Ø× Ò   R¨v¸fÐ ÑEÔEÐEØ�R˜”U‘
��à—’˜R  1 2 2 œYÑ'Ô'ˆBØ×Ò˜R ¨h¸vÐÑ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   € õ �d�BœIÑ&Ô&ð 	'ØŒ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  ø€ à�yŠy‰{Œ{ˆØ”jÔ(ˆØ˜!ÒÐØ�KŠK˜˜7 D¤JÑ/Ô/Ð/Ð/å˜;Ñ'Ô'ð Mð M�Ø—’˜A˜{ q˜{˜{¨D¬J×,HÒ,HÈÑ,KÔ,KÑLÔLÐLÐLà”lÔ*ˆØ˜Š?ˆ?Ø”,×0Ò0°Ñ3Ô3ˆCðð ð ð ÝCHÈÈKÑCXÔCXðñ ô ˆFõ ”\ &Ñ)Ô)ˆFØ!œ>ˆDŒLÝ”9˜f d˜^Ñ,Ô,ˆDØˆDŒLØˆ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,   Úcelldéÿÿÿÿz#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|  € Øˆ:Ø�NŠN˜5Ñ!Ô!Ð!ØˆFà#Ð#Ð#Ð#Ð#Ð#à”hÔ&ˆØ”jÔ(ˆà×Ò Ñ#Ô#ˆØ�^Š^˜B ¨ˆ^Ñ*Ô*ˆØ
�Š˜œÑ'Ô'Ð'àˆ>Ø�C ™GœG a™KÑ(ˆFà—’‘”ˆØ! 'œN×0Ò0Ñ2Ô2ð 	$ð 	$‰L‰FˆQ��DØ�BŠwˆwØ× Ò  Ñ'Ô'Ð'Ð'Ø�[’� Q¨¢_ _Ø× Ò  Ñ'Ô'Ð'Ð'Ø�[’� A¨¢O OØ×"Ò" 9Ñ-Ô-Ð-Ø�OŠO˜FÑ#Ô#Ð#Ð#à
�Š�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Ô
Q€CÝ
Œ,˜b "˜X¨R°¨HÐ5Ð5Ñ
6Ô
6€Cà‡F‚FˆC�ˆ:•r”y # s Ñ,Ô,°e¸U°^Èd€FÑSÔSÐSØ‡H‚H�J„J€Jå
Œ,˜b "˜X¨R°¨HÐ5Ð5Ñ
6Ô
6€Cà‡F‚FØ	ˆcˆ
•B”I˜s C˜j¨qÐ1Ñ1Ô1¸5À%¸.ÐSXð ñ ô ð ð ‡H‚H�J„J€Jå
Œ-×
#Ò
#ØDÐDÐDñô €Cõ Œ]×&Ò&¨°(Ð';Ñ<Ô<€FÝ
Œ,Ð0Ð0Ð0Ð8KÐ8KÐ8KÐLÐLÐTWÐ
XÑ
XÔ
X€CØ€C„KØ‡F‚Fˆ3�˜U˜G€FÑ$Ô$Ð$Ø‡H‚H�J„J€J€J€Jr   Ú__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ÒÐØ€D�F„F€F€F€Fð Ðr   