Ë
    u™ãjØ  ã                  óŠ   — 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 d dlmZ  G d„ d«      Zdd	„Zed
k(  r e«        yy)é    )Úannotations)ÚTYPE_CHECKINGN)ÚIterable)ÚAxes)ÚFigurec                  óœ   — e Zd ZdZ	 	 	 d
	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Z		 d	 	 	 	 	 	 	 	 	 dd	„Z
y)ÚTablePlotterzg
    Layout some DataFrames in vertical/horizontal layout for explanation.
    Used in merging.rst
    c                ó.   — || _         || _        || _        y ©N)Ú
cell_widthÚcell_heightÚ	font_size)Úselfr   r   r   s       ú`/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/util/_doctools.pyÚ__init__zTablePlotter.__init__   s   € ð %ˆŒØ&ˆÔØ"ˆ�ó    c                ó„   — |j                   \  }}||j                  j                  z   ||j                  j                  z   fS )zA
        Calculate table shape considering index levels.
        )ÚshapeÚcolumnsÚnlevelsÚindex)r   ÚdfÚrowÚcols       r   Ú_shapezTablePlotter._shape    s:   € ð —8‘8‰ˆˆSØ�R—Z‘Z×'Ñ'Ñ'¨¨r¯x©x×/?Ñ/?Ñ)?Ð?Ð?r   c                óâ  ‡ — |r]t        t        ˆ fd„|D «       «      ‰ j                  |«      d   «      }t        ˆ fd„|D «       «      ‰ j                  |«      d   z   }||fS t        |D �cg c]  }‰ j                  |«      d   ‘Œ c}‰ j                  |«      d   gz   «      }t        |D �cg c]  }‰ j                  |«      d   ‘Œ c}‰ j                  |«      d   gz   «      }||fS c c}w c c}w )zQ
        Calculate appropriate figure size based on left and right data.
        c              3  óF   •K  — | ]  }‰j                  |«      d    –— Œ y­w©r   N©r   ©Ú.0r   r   s     €r   ú	<genexpr>z*TablePlotter._get_cells.<locals>.<genexpr>/   s   øè ø€ Ò?°B˜TŸ[™[¨›_¨QÕ/Ñ?ùó   ƒ!r   c              3  óF   •K  — | ]  }‰j                  |«      d    –— Œ y­w©é   Nr   r    s     €r   r"   z*TablePlotter._get_cells.<locals>.<genexpr>0   s   øè ø€ Ò;°˜Ÿ™ R›¨Õ+Ñ;ùr#   r&   )ÚmaxÚsumr   )r   ÚleftÚrightÚverticalÚvcellsÚhcellsr   s   `      r   Ú
_get_cellszTablePlotter._get_cells'   sä   ø€ ñ äœÓ?¸$Ô?Ó?ÀÇÁÈUÓASÐTUÑAVÓWˆFÜÓ;°dÔ;Ó;¸d¿k¹kÈ%Ó>PÐQRÑ>SÑSˆFð �vˆ~Ðô °tÖ<°˜$Ÿ+™+ b›/¨!Ó,Ò<ÀÇÁÈEÓ@RÐSTÑ@UÐ?VÑVÓWˆFÜ°tÖ<°˜$Ÿ+™+ b›/¨!Ó,Ò<ÀÇÁÈEÓ@RÐSTÑ@UÐ?VÑVÓWˆFØ�vˆ~Ðùò =ùÚ<s   Á*C'Â+C,c           	     ó  ‡ — ddl m} ddlm} t	        |t
        «      s|g}n|}|D �cg c]  }‰ j                  |«      ‘Œ }	}‰ j                  |«      }
‰ j                  |	|
|«      \  }}|r‰ j                  |z  ‰ j                  |z  f}n‰ j                  |z  ‰ j                  |z  f}|j                  |¬«      }|rÞ|j                  t        |	«      |«      }t        ˆ fd„|	D «       «      }t        ˆ fd„|	D «       «      }t        t        |	|d¬«      «      D ]8  \  }\  }}|j!                  ||d|…f   «      }‰ j#                  |||d	|z  ¬
«       Œ: |j%                  |dd…|d…f   «      }‰ j#                  ||
dd|z  ¬
«       |j'                  dddd¬«       |S t        ˆ fd„g |	¢|
‘D «       «      }d	t)        j                  |«      z  }|j                  d|«      }d}t        |	|d¬«      D ]Q  \  }}‰ j+                  |«      }|j!                  |d|||d   z   …f   «      }‰ j#                  ||||¬
«       ||d   z  }ŒS |j%                  |d|d…f   «      }‰ j#                  ||
d|¬
«       |j'                  dddd¬«       |S c c}w )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   )ÚgridspecN)Úfigsizec              3  óF   •K  — | ]  }‰j                  |«      d    –— Œ y­wr%   r   r    s     €r   r"   z$TablePlotter.plot.<locals>.<genexpr>^   ó   øè ø€ ÒF°r §¡¨B£°Õ 2ÑFùr#   c              3  óF   •K  — | ]  }‰j                  |«      d    –— Œ y­wr   r   r    s     €r   r"   z$TablePlotter.plot.<locals>.<genexpr>_   r3   r#   T)Ústrictç      ð?)ÚtitleÚheightÚResultgÍÌÌÌÌÌð?gÍÌÌÌÌÌì?gš™™™™™©?gffffffî?)ÚtopÚbottomr)   r*   c              3  óF   •K  — | ]  }‰j                  |«      d    –— Œ y­wr   r   r    s     €r   r"   z$TablePlotter.plot.<locals>.<genexpr>h   s   øè ø€ ÒN°"˜4Ÿ;™; r›?¨1Õ-ÑNùr#   r&   g333333ë?)Ú
matplotlibr0   Úmatplotlib.pyplotÚpyplotÚ
isinstanceÚlistÚ_convr.   r   r   ÚfigureÚGridSpecÚlenr'   Ú	enumerateÚzipÚadd_subplotÚ_make_tableÚsubplotÚsubplots_adjustÚnpr   )r   r)   r*   Úlabelsr+   r0   ÚpltÚleft_rawr   Úleft_dfsÚright_dfr-   r,   r1   ÚfigÚgsÚmax_left_colsÚmax_left_rowsÚiÚ_leftÚ_labelÚaxÚmax_rowsr8   Úsps   `                        r   ÚplotzTablePlotter.plot6   sª  ø€ õ$ 	(Ý'ä˜$¤Ô%Ø�v‰HàˆHØ-5Ö6 r�D—J‘J˜r•NÐ6ˆÐ6Ø—:‘:˜eÓ$ˆàŸ™¨°8¸XÓF‰ˆ�áØ—o‘o¨Ñ.°×0@Ñ0@À6Ñ0IÐI‰Gð —o‘o¨Ñ.°×0@Ñ0@À6Ñ0IÐIˆGØ�j‰j ˆjÓ)ˆáØ×"Ñ"¤3 x£=°&Ó9ˆBäÓF¸XÔFÓFˆMÜÓF¸XÔFÓFˆMÜ&/´°H¸fÈTÔ0RÓ&Sò VÑ"�‘?�E˜6Ø—_‘_ R¨¨1¨]¨?Ð(:Ñ%;Ó<�Ø× Ñ   U°&ÀÀ}ÑATÐ ÕUðVð —‘˜R¢ =¡>Ð 1Ñ2Ó3ˆBØ×Ñ˜R °À$ÈÁ-ÐÔPØ×Ñ C°¸4ÀtÐÔLð" ˆ
ô ÓNÐ8M¸(Ð8MÀHÐ8MÔNÓNˆHØœ2Ÿ6™6 (Ó+Ñ+ˆFØ×"Ñ" 1 fÓ-ˆBàˆAÜ! (¨F¸4Ô@ò ‘
��FØ—[‘[ “_�Ø—_‘_ R¨¨1¨q°2°a±5©y¨=Ð(8Ñ%9Ó:�Ø× Ñ   R¨v¸fÐ ÔEØ�R˜‘U‘
‘ð	ð —‘˜R  1¡2 ™YÓ'ˆBØ×Ñ˜R °À&ÐÔIØ×Ñ D°¸DÈÐÔMàˆ
ùòQ 7s   ¨Jc                óà   — t        |t        j                  «      r/|j                  €|j	                  d¬«      }n|j	                  «       }|j                  t        «      j                  d«      }|S )zL
        Convert each input to appropriate format for table output.
        Ú )ÚnameÚNaN)r@   ÚpdÚSeriesr_   Úto_frameÚastypeÚobjectÚfillna)r   Údatas     r   rB   zTablePlotter._convy   sU   € ô �dœBŸI™IÔ&Ø�y‰yÐ Ø—}‘}¨"�}Ó-‘à—}‘}“�Ø�{‰{œ6Ó"×)Ñ)¨%Ó0ˆØˆr   c                óŒ  — |j                  «       }|j                  j                  }|dk(  r|j                  dd|j                  «       n?t	        |«      D ]1  }|j                  |d|› �|j                  j                  |«      «       Œ3 |j                  j                  }|dkD  r›|j                  j                  d«      }t	        d|«      D �cg c]'  }|j                  j                  |«      j                  ‘Œ) }}t        j                  |«      }|j                  |_        t        j                  ||g«      }||_        |S c c}w )Nr&   r   ÚIndex)Úcopyr   r   ÚinsertÚrangeÚ_get_level_valuesr   Ú_valuesra   Ú	DataFrameÚconcat)r   rg   Úidx_nlevelsrV   Úcol_nlevelsr   ÚvaluesÚcol_dfs           r   Ú_insert_indexzTablePlotter._insert_index…   s  € à�y‰y‹{ˆØ—j‘j×(Ñ(ˆØ˜!ÒØ�K‰K˜˜7 D§J¡JÕ/ä˜;Ó'ò M�Ø—‘˜A  q c˜{¨D¯J©J×,HÑ,HÈÓ,KÕLðMð —l‘l×*Ñ*ˆØ˜Š?Ø—,‘,×0Ñ0°Ó3ˆCäCHÈÈKÓCXöØ>?�—‘×.Ñ.¨qÓ1×9Ó9ðˆFð ô —\‘\ &Ó)ˆFØ!Ÿ>™>ˆDŒLÜ—9‘9˜f d˜^Ó,ˆDØˆDŒLØˆùòs   Ã,ENc                ó¬  — |€|j                  d«       y ddlm} |j                  j                  }|j
                  j                  }| j                  |«      }|j                  ||d¬«      }|j                  | j                  «       |€dt        |«      dz   z  }|j                  «       }	|	d   j                  «       D ]g  \  \  }
}}|d	k(  r|j                  d«       n7|
|k  r||k  r|j                  d«       n|
|k  s||k  r|j                  d
«       |j                  |«       Œi |j                  || j                  ¬«       |j!                  d«       y )NFr   )Úplottingé	   )Úlocr6   r&   Úcelldéÿÿÿÿz#AAAAAA)ÚsizeÚoff)Úset_visibleÚpandasrw   r   r   r   ru   ÚtableÚset_fontsizer   rE   Ú
propertiesÚitemsÚset_facecolorÚ
set_heightÚ	set_titleÚaxis)r   rY   r   r7   r8   rw   rq   rr   ÚtbÚpropsÚrÚcÚcells                r   rI   zTablePlotter._make_table›   s+  € ð ˆ:Ø�N‰N˜5Ô!Øå#à—h‘h×&Ñ&ˆØ—j‘j×(Ñ(ˆà×Ñ Ó#ˆØ�^‰^˜B ¨ˆ^Ó*ˆØ
�‰˜Ÿ™Ô'àˆ>ØœC ›G a™KÑ(ˆFà—‘“ˆØ! '™N×0Ñ0Ó2ò 	$‰L‰FˆQ��DØ�BŠwØ× Ñ  Õ'Ø�[’ Q¨¢_Ø× Ñ  Õ'Ø�[’ A¨¢OØ×"Ñ" 9Ô-Ø�O‰O˜FÕ#ð	$ð 	�‰�U §¡ˆÔ0Ø
�‰��r   )g®Gáz®×?g      Ð?g      @)r   Úfloatr   r�   r   r�   ÚreturnÚNone)r   úpd.DataFramerŽ   útuple[int, int])r)   zlist[pd.DataFrame]r*   r�   r+   ÚboolrŽ   r‘   )© T)
r)   z9pd.DataFrame | pd.Series | list[pd.DataFrame | pd.Series]r*   úpd.DataFrame | pd.SeriesrM   zIterable[str]r+   r’   rŽ   r   )rg   r”   rŽ   r�   )rg   r�   rŽ   r�   r   )
rY   r   r   zpd.DataFrame | Noner7   Ústrr8   zfloat | NonerŽ   r�   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r.   r\   rB   ru   rI   r“   r   r   r	   r	      sð   „ ñð !Ø!Øð	#àð#ð ð#ð ð	#ð
 
ó#ó@ðØ&ðØ/;ðØGKðà	óð& !#ØðAàGðAð (ðAð ð	Að
 ðAð 
óAóF
óð6  $ð"àð"ð  ð"ð ð	"ð
 ð"ð 
ô"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
œ«      }|j                  ||gt        j                  ||g«      ddgd¬«       | j                  «        t        j                  ddgdd	gdœ«      }|j                  ||gt        j                  ||gd¬«      ddgd¬«       | j                  «        t        j                  j                  g d¢«      }t        j                  j                  ddg«      }t        j                  g d¢g d¢dœ|¬«      }||_
        |j                  ||dg¬«       | j                  «        y )Nr   )é
   é   é   )é   é   é   )é   é   é    )ÚAÚBÚCr›   r�   r¡   r£   )r¤   r¦   Údf1Údf2T)rM   r+   )ÚXÚZr&   )r‡   F)©r&   r¤   ©r&   r¥   )r&   r¦   )é   r¤   )r­   r¥   )r­   r¦   r«   r¬   )r&   r­   é   é   é   é   )r°   r±   é   é   rx   r›   )Úv1Úv2)r   Údf3)rM   )r>   r?   r	   ra   ro   r\   rp   ÚshowÚ
MultiIndexÚfrom_tuplesr   )rN   Úpr§   r¨   r¶   ÚidxÚcolumns          r   Úmainr½   À   s4  € Ý#ä‹€Aä
�,‰,š\²Â<ÑPÓ
Q€CÜ
�,‰,˜b "˜X¨R°¨HÑ5Ó
6€Cà‡F�FˆC�ˆ:”r—y‘y # s Ó,°e¸U°^Èd€FÔSØ‡H�H„Jä
�,‰,˜b "˜X¨R°¨HÑ5Ó
6€Cà‡F�FØ	ˆcˆ
”B—I‘I˜s C˜j¨qÔ1¸5À%¸.ÐSXð ô ð ‡H�H„Jä
�-‰-×
#Ñ
#ÚDó€Cô �]‰]×&Ñ&¨°(Ð';Ó<€FÜ
�,‰,Ò0Ò8KÑLÐTWÔ
X€CØ€C„KØ‡F�Fˆ3�˜U˜G€FÔ$Ø‡H�H…Jr   Ú__main__)rŽ   r�   )Ú
__future__r   Útypingr   ÚnumpyrL   r   ra   Úcollections.abcr   Úmatplotlib.axesr   Úmatplotlib.figurer   r	   r½   r–   r“   r   r   ú<module>rÅ      sC   ðÝ "å  ã ã áÝ(å$Ý(÷mñ mó`ð8 ˆzÒÙ…Fð r   