Ë
    ¤eh£  ã                  ór   — 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	  G d„ d«      Z
d	d„Zedk(  r e«        yy)
é    )Úannotations)ÚTYPE_CHECKINGN)ÚIterablec                  ó^   — 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
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       úS/var/www/skyplay_api_hub/venv/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>+   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}|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 ]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z   D «       «      }dt)        j                  |«      z  }|j                  d|«      }d}t        ||«      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>Q   ó   øè ø€ ÒB°r §¡¨B£°Õ 2ÑBùr!   c              3  óF   •K  — | ]  }‰j                  |«      d    –— Œ y­wr   r   r   s     €r   r    z$TablePlotter.plot.<locals>.<genexpr>R   r1   r!   ç      ð?)Ú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>[   s   øè ø€ ÒG°"˜4Ÿ;™; r›?¨1Õ-ÑGùr!   r$   g333333ë?)Ú
matplotlibr.   Ú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)   r.   Úpltr   r+   r*   r/   ÚfigÚgsÚmax_left_colsÚmax_left_rowsÚiÚ_leftÚ_labelÚaxÚmax_rowsr5   Úsps   `                     r   ÚplotzTablePlotter.plot1   sœ  ø€ õ 	(Ý'ä˜$¤Ô%Ø�6ˆDØ)-Ö. 2�—
‘
˜2•Ð.ˆÐ.Ø—
‘
˜5Ó!ˆàŸ™¨¨u°hÓ?‰ˆ�áØ—o‘o¨Ñ.°×0@Ñ0@À6Ñ0IÐI‰Gð —o‘o¨Ñ.°×0@Ñ0@À6Ñ0IÐIˆGØ�j‰j ˆjÓ)ˆáØ×"Ñ"¤3 t£9¨fÓ5ˆBäÓB¸TÔBÓBˆMÜÓB¸TÔBÓBˆMÜ&/´°D¸&Ó0AÓ&Bò VÑ"�‘?�E˜6Ø—_‘_ R¨¨1¨]¨?Ð(:Ñ%;Ó<�Ø× Ñ   U°&ÀÀ}ÑATÐ ÕUðVð —‘˜R¢ =¡>Ð 1Ñ2Ó3ˆBØ×Ñ˜R ¨h¸tÀf¹}ÐÔMØ×Ñ C°¸4ÀtÐÔLð" ˆ
ô ÓG¸À¸w¹ÔGÓGˆHØœ2Ÿ6™6 (Ó+Ñ+ˆFØ×"Ñ" 1 fÓ-ˆBàˆAÜ! $¨Ó/ò ‘
��FØ—[‘[ “_�Ø—_‘_ R¨¨1¨q°2°a±5©y¨=Ð(8Ñ%9Ó:�Ø× Ñ   R¨v¸fÐ ÔEØ�R˜‘U‘
‘ð	ð —‘˜R  1¡2 ™YÓ'ˆBØ×Ñ˜R ¨h¸vÐÔFØ×Ñ D°¸DÈÐÔMàˆ
ùòQ /s   ¥I=c                óº   — t        |t        j                  «      r/|j                  €|j	                  d¬«      }n|j	                  «       }|j                  d«      }|S )zF
        Convert each input to appropriate for table outplot.
        Ú )ÚnameÚNaN)r=   ÚpdÚSeriesrY   Úto_frameÚfillna)r   Údatas     r   r?   zTablePlotter._convl   sJ   € ô �dœBŸI™IÔ&Ø�y‰yÐ Ø—}‘}¨"�}Ó-‘à—}‘}“�Ø�{‰{˜5Ó!ˆØˆ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   Ú_valuesr[   Ú	DataFrameÚconcat)r   r_   Úidx_nlevelsrP   Úcol_nlevelsr   ÚvaluesÚcol_dfs           r   Ú_insert_indexzTablePlotter._insert_indexx   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é	   )Úlocr3   r$   Úcelldéÿÿÿÿz#AAAAAA)ÚsizeÚoff)Úset_visibleÚpandasro   r   r   r   rm   ÚtableÚset_fontsizer   rB   Ú
propertiesÚitemsÚset_facecolorÚ
set_heightÚ	set_titleÚaxis)r   rS   r   r4   r5   ro   ri   rj   ÚtbÚpropsÚrÚcÚcells                r   rF   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   zpd.DataFramer†   útuple[int, int])r†   rˆ   )© T)rJ   zIterable[str]r)   Úboolr	   )r4   Ústrr5   zfloat | Noner†   r‡   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r,   rV   r?   rm   rF   r‰   r   r   r   r      s]   „ ñð !Ø!Øð	#àð#ð ð#ð ð	#ð
 
ó#ó@óô9òv
òõ,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)rJ   r)   )ÚXÚZr$   )r   F)©r$   rš   ©r$   r›   )r$   rœ   )é   rš   )r£   r›   )r£   rœ   r¡   r¢   )r$   r£   é   é   é   é   )r¦   r§   é   é   rp   r‘   )Úv1Úv2)r   Údf3)rJ   )r;   r<   r   r[   rg   rV   rh   ÚshowÚ
MultiIndexÚfrom_tuplesr   )rK   Ú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   ÚnumpyrI   rw   r[   Úcollections.abcr   r   r³   rŒ   r‰   r   r   ú<module>r¹      s=   ðÝ "å  ã ã áÝ(÷]ñ ]ó@ð8 ˆzÒÙ…Fð r   