o
    d(b                     @  s2  d Z ddlmZ ddlmZmZ ddlmZmZm	Z	 ddl
ZddlmZ er,ddlmZ d-ddZG dd dZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG d d! d!Zd.d%d&Zd/d*d+Zed,krddlZe  dS dS )0z-
Module for formatting output data in Latex.
    )annotations)ABCabstractmethod)TYPE_CHECKINGIteratorSequenceN)ABCMultiIndex)DataFrameFormattercaptionstr | tuple[str, str] | Nonereturntuple[str, str]c              
   C  sh   | r,t | tr| }d}||fS z	| \}}W ||fS  ty+ } zd}t||d}~ww d}d}||fS )a  Extract full and short captions from caption string/tuple.

    Parameters
    ----------
    caption : str or tuple, optional
        Either table caption string or tuple (full_caption, short_caption).
        If string is provided, then it is treated as table full caption,
        while short_caption is considered an empty string.

    Returns
    -------
    full_caption, short_caption : tuple
        Tuple of full_caption, short_caption strings.
     z9caption must be either a string or a tuple of two stringsN)
isinstancestr
ValueError)r
   full_captionshort_captionerrmsg r   \/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/io/formats/latex.py_split_into_full_short_caption   s    



r   c                   @  s   e Zd ZdZ			d.d/ddZd0ddZed1ddZed1ddZed1ddZ	ed1ddZ
d2ddZed3dd Zd4d$d%Zd5d&d'Zd6d)d*Zd7d,d-ZdS )8RowStringConverterav  Converter for dataframe rows into LaTeX strings.

    Parameters
    ----------
    formatter : `DataFrameFormatter`
        Instance of `DataFrameFormatter`.
    multicolumn: bool, optional
        Whether to use \multicolumn macro.
    multicolumn_format: str, optional
        Multicolumn format.
    multirow: bool, optional
        Whether to use \multirow macro.

    FN	formatterr	   multicolumnboolmulticolumn_format
str | Nonemultirowr   Nonec                 C  sF   || _ | j j| _|| _|| _|| _g | _|  | _tt	| j | _
d S N)fmtframer   r   r   clinebuf_get_strcolsstrcolslistzipstrrows)selfr   r   r   r   r   r   r   __init__I   s   

zRowStringConverter.__init__row_numintr   c           	      C  s   | j | }|| jk o| jjo| j}|| jko!| jjo!| jo!| jdk}|o,|t	| j d k }| 
|}|r9| |}|rA| ||}g }|d| |d |r`| |t	| j}|| d|S )z%Get string representation of the row.   z & z \\r   )r)   column_levelsr"   headerr   header_levelsindexr   index_levelslen_preprocess_row_format_multicolumn_format_multirowappendjoin_compose_cliner&   )	r*   r,   rowis_multicolis_multirowis_cline_maybe_requiredcrowlstcliner   r   r   
get_strrowY   s.   






zRowStringConverter.get_strrowc                 C  s   | j jr| jS dS )zNumber of rows in header.r   )r"   r0   r1   r*   r   r   r   _header_row_numy   s   z"RowStringConverter._header_row_numc                 C  
   | j jjS )z"Integer number of levels in index.)r#   r2   nlevelsrC   r   r   r   r3   ~   s   
zRowStringConverter.index_levelsc                 C  rE   r!   )r#   columnsrF   rC   r   r   r   r/      s   
z RowStringConverter.column_levelsc                 C  s"   | j }| jjr| jjr|d7 }|S )Nr.   )r/   r"   has_index_namesshow_index_names)r*   rF   r   r   r   r1      s   z RowStringConverter.header_levelslist[list[str]]c                   s   | j jjr| jgg}n| j  }| j jrlt| jjtrl| jjjd| j j	| j j
| j jd}dd fdd|D }| jjj  fdd|D }| jjj}t|rdd	d |D }||| jjjd
  d < ||d
d  }|S )z%String representation of the columns.F)adjoinsparsifynamesna_repc                   s>   t | D ]  r| d g fdd| dd  D    S qd S )Nr   c                   s    g | ]}|r|nd t   qS ) r4   .0ipadr   r   
<listcomp>   s     zHRowStringConverter._get_strcols.<locals>.pad_empties.<locals>.<listcomp>r.   )reversed)xr   rT   r   pad_empties   s
   (z4RowStringConverter._get_strcols.<locals>.pad_emptiesc                 3  s    | ]} |V  qd S r!   r   rQ   )rY   r   r   	<genexpr>   s    z2RowStringConverter._get_strcols.<locals>.<genexpr>c                   s&   g | ]}d t |d  g  | qS )rO   rP   rQ   )clevelsr   r   rV      s   & z3RowStringConverter._get_strcols.<locals>.<listcomp>c                 S     g | ]}|r|nd qS {}r   rQ   r   r   r   rV          r.   N)r"   r#   empty_empty_info_lineget_strcolsr2   r   r   formatrL   rH   rN   rG   rF   rM   any)r*   r&   outgencnames	new_namesr   )r\   rY   r   r%      s(   

	

zRowStringConverter._get_strcolsc                 C  s&   dt | jj d| jj d| jj S )NzEmpty z

Columns: z
Index: )typer#   __name__rG   r2   rC   r   r   r   rb      s   z#RowStringConverter._empty_info_liner;   Sequence[str]	list[str]c                 C  s@   | j jr	t|}ndd |D }| j jr| j jrt|| j}|S )zPreprocess elements of the row.c                 S  r]   r^   r   rR   rX   r   r   r   rV      r`   z6RowStringConverter._preprocess_row.<locals>.<listcomp>)r"   escape_escape_symbols	bold_rowsr2   _convert_to_boldr3   )r*   r;   r?   r   r   r   r5      s   
z"RowStringConverter._preprocess_rowc                   sp   |dj  dd d fdd}|j d D ]}| r, r'|  | dqd7 q r6|  S )	z
        Combine columns belonging to a group to a single multicolumn entry
        according to self.multicolumn_format

        e.g.:
        a &  &  & b & c &
        will become
        \multicolumn{3}{l}{a} & b & \multicolumn{2}{l}{c}
        Nr.   r   r   r    c                	     s@   dkr dddj d   d d S    d S )Nr.   \multicolumn{dz}{})r8   r   stripr   coltextncolrow2r*   r   r   
append_col   s   z:RowStringConverter._format_multicolumn.<locals>.append_col)r   r    )r3   rv   )r*   r;   r{   cr   rw   r   r6      s   

z&RowStringConverter._format_multicolumnrS   c                 C  s   t | jD ]C}||  rHd}| j|d d D ]}||  s%|d7 }q |dkrHd|dd||   d||< | j|| d |d g q|S )z
        Check following rows, whether row should be a multirow

        e.g.:     becomes:
        a & 0 &   \multirow{2}{*}{a} & 0 &
          & 1 &     & 1 &
        b & 0 &   \cline{1-2}
                  b & 0 &
        r.   Nz
\multirow{rt   z}{*}{ru   )ranger3   rv   r)   r$   r8   )r*   r;   rS   jnrowrr   r   r   r7      s   

 z#RowStringConverter._format_multirowicolc                   s\   g }| j D ]#}|d  kr(|d|d dd|dd  fdd| j D | _ qd	|S )
zC
        Create clines after multirow-blocks are finished.
        r   z
\cline{r.   rt   -ru   c                   s   g | ]
}|d   kr|qS )r   r   rn   rS   r   r   rV     s    z5RowStringConverter._compose_cline.<locals>.<listcomp>r   )r$   r8   r9   )r*   rS   r   r@   clr   r   r   r:     s   
 
z!RowStringConverter._compose_cline)FNF)
r   r	   r   r   r   r   r   r   r   r    )r,   r-   r   r   )r   r-   )r   rJ   r   r   r;   rl   r   rm   )r;   rm   r   rm   )r;   rm   rS   r-   r   rm   )rS   r-   r   r-   r   r   )rk   
__module____qualname____doc__r+   rB   propertyrD   r3   r/   r1   r%   rb   r5   r6   r7   r:   r   r   r   r   r   9   s,    
 
'



(r   c                   @  s   e Zd ZdZedddZdS )RowStringIteratorz:Iterator over rows of the header or the body of the table.r   Iterator[str]c                 C     dS )z2Iterate over LaTeX string representations of rows.Nr   rC   r   r   r   __iter__      zRowStringIterator.__iter__Nr   r   )rk   r   r   r   r   r   r   r   r   r   r     s    r   c                   @     e Zd ZdZdddZdS )RowHeaderIteratorz#Iterator for the table header rows.r   r   c                 c  s0    t t| jD ]}|| jk r| |V  qd S r!   r}   r4   r)   rD   rB   r*   r,   r   r   r   r         
zRowHeaderIterator.__iter__Nr   rk   r   r   r   r   r   r   r   r   r         r   c                   @  r   )RowBodyIteratorz!Iterator for the table body rows.r   r   c                 c  s0    t t| jD ]}|| jkr| |V  qd S r!   r   r   r   r   r   r   )  r   zRowBodyIterator.__iter__Nr   r   r   r   r   r   r   &  r   r   c                   @  s   e Zd ZdZ								d%d&ddZd'ddZeed'ddZeed'ddZ	eed'ddZ
eed'ddZeed'dd Zeed'd!d"Zeed'd#d$ZdS )(TableBuilderAbstracta  
    Abstract table builder producing string representation of LaTeX table.

    Parameters
    ----------
    formatter : `DataFrameFormatter`
        Instance of `DataFrameFormatter`.
    column_format: str, optional
        Column format, for example, 'rcl' for three columns.
    multicolumn: bool, optional
        Use multicolumn to enhance MultiIndex columns.
    multicolumn_format: str, optional
        The alignment for multicolumns, similar to column_format.
    multirow: bool, optional
        Use multirow to enhance MultiIndex rows.
    caption: str, optional
        Table caption.
    short_caption: str, optional
        Table short caption.
    label: str, optional
        LaTeX label.
    position: str, optional
        Float placement specifier, for example, 'htb'.
    NFr   r	   column_formatr   r   r   r   r   r
   r   labelpositionr   r    c
           
      C  s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S r!   )	r"   r   r   r   r   r
   r   r   r   )
r*   r   r   r   r   r   r
   r   r   r   r   r   r   r+   I  s   
zTableBuilderAbstract.__init__r   c                 C  sD   | j | j| j| j| j| j| jg}ddd |D }d}||7 }|S )z%String representation of LaTeX table.
c                 S     g | ]}|r|qS r   r   rR   itemr   r   r   rV   j      z3TableBuilderAbstract.get_result.<locals>.<listcomp>)	env_begintop_separatorr0   middle_separatorenv_bodybottom_separatorenv_endr9   )r*   elementsresulttrailing_newliner   r   r   
get_result_  s   	zTableBuilderAbstract.get_resultc                 C  r   )zBeginning of the environment.Nr   rC   r   r   r   r   o  r   zTableBuilderAbstract.env_beginc                 C  r   )zTop level separator.Nr   rC   r   r   r   r   t  r   z"TableBuilderAbstract.top_separatorc                 C  r   )zHeader lines.Nr   rC   r   r   r   r0   y  r   zTableBuilderAbstract.headerc                 C  r   )zMiddle level separator.Nr   rC   r   r   r   r   ~  r   z%TableBuilderAbstract.middle_separatorc                 C  r   )zEnvironment body.Nr   rC   r   r   r   r     r   zTableBuilderAbstract.env_bodyc                 C  r   )zBottom level separator.Nr   rC   r   r   r   r     r   z%TableBuilderAbstract.bottom_separatorc                 C  r   )zEnd of the environment.Nr   rC   r   r   r   r     r   zTableBuilderAbstract.env_end)NFNFNNNN)r   r	   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r    r   )rk   r   r   r   r+   r   r   r   r   r   r0   r   r   r   r   r   r   r   r   r   /  sB    
r   c                   @  s   e Zd ZdZedddZedddZeddd	Zedd
dZdddZ	edddZ
edddZedddZdddZd ddZdS )!GenericTableBuilderz=Table builder producing string representation of LaTeX table.r   r   c                 C     | j dd}dt|S )Nr0   overr   _create_row_iteratorr9   r'   r*   iteratorr   r   r   r0        zGenericTableBuilder.headerc                 C  r   )Nz\topruler   rC   r   r   r   r        z!GenericTableBuilder.top_separatorc                 C  s   |   rdS dS )N\midruler   )_is_separator_requiredrC   r   r   r   r     s   z$GenericTableBuilder.middle_separatorc                 C  r   )Nbodyr   r   r   r   r   r   r   r     r   zGenericTableBuilder.env_bodyr   c                 C  s   t | jo| jS r!   )r   r0   r   rC   r   r   r   r     s   z*GenericTableBuilder._is_separator_requiredc                 C     | j r
d| j  dS dS )z7Position macro, extracted from self.position, like [h].[]r   )r   rC   r   r   r   _position_macro     z#GenericTableBuilder._position_macroc                 C  s8   | j rdd| jrd| j dndd| j  dgS dS )zCaption macro, extracted from self.caption.

        With short caption:
            \caption[short_caption]{caption_string}.

        Without short caption:
            \caption{caption_string}.
        r   z\captionr   r   {ru   )r
   r9   r   rC   r   r   r   _caption_macro  s   
z"GenericTableBuilder._caption_macroc                 C  r   )z9Label macro, extracted from self.label, like \label{ref}.z\label{ru   r   )r   rC   r   r   r   _label_macro  r   z GenericTableBuilder._label_macror   r   c                 C  s"   |  |}|| j| j| j| jdS )a
  Create iterator over header or body of the table.

        Parameters
        ----------
        over : {'body', 'header'}
            Over what to iterate.

        Returns
        -------
        RowStringIterator
            Iterator over body or header.
        )r   r   r   r   )_select_iteratorr"   r   r   r   )r*   r   iterator_kindr   r   r   r     s   
z(GenericTableBuilder._create_row_iteratortype[RowStringIterator]c                 C  s,   |dkrt S |dkrtS d| d}t|)z'Select proper iterator over table rows.r0   r   z.'over' must be either 'header' or 'body', but z was provided)r   r   r   )r*   r   r   r   r   r   r     s   z$GenericTableBuilder._select_iteratorNr   )r   r   )r   r   r   r   )r   r   r   r   )rk   r   r   r   r   r0   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s&    

r   c                   @  sR   e Zd ZdZedddZdddZeddd	Zedd
dZedddZ	dS )LongTableBuilderaV  Concrete table builder for longtable.

    >>> from pandas.io.formats import format as fmt
    >>> df = pd.DataFrame({"a": [1, 2], "b": ["b1", "b2"]})
    >>> formatter = fmt.DataFrameFormatter(df)
    >>> builder = LongTableBuilder(formatter, caption='a long table',
    ...                            label='tab:long', column_format='lrl')
    >>> table = builder.get_result()
    >>> print(table)
    \begin{longtable}{lrl}
    \caption{a long table}
    \label{tab:long}\\
    \toprule
    {} &  a &   b \\
    \midrule
    \endfirsthead
    \caption[]{a long table} \\
    \toprule
    {} &  a &   b \\
    \midrule
    \endhead
    \midrule
    \multicolumn{3}{r}{{Continued on next page}} \\
    \midrule
    \endfoot
    <BLANKLINE>
    \bottomrule
    \endlastfoot
    0 &  1 &  b1 \\
    1 &  2 &  b2 \\
    \end{longtable}
    <BLANKLINE>
    r   r   c                 C  s8   d| j  d| j d}||   g}ddd |D S )Nz\begin{longtable}r   ru   r   c                 S  r   r   r   r   r   r   r   rV     r   z.LongTableBuilder.env_begin.<locals>.<listcomp>)r   r   _caption_and_labelr9   )r*   	first_rowr   r   r   r   r     s   zLongTableBuilder.env_beginc                 C  sD   | j s| jr d}| j | j g}ddd |D }||7 }|S dS )Nz\\r   c                 S  r   r   r   r   r   r   r   rV     r   z7LongTableBuilder._caption_and_label.<locals>.<listcomp>r   )r
   r   r   r   r9   )r*   double_backslashr   caption_and_labelr   r   r   r     s   z#LongTableBuilder._caption_and_labelc                 C  sf   | j dd}dd| jrd| j dnd| j| jdddd	t|j d
ddddg}|  r1d|S dS )Nr0   r   r   z\endfirstheadz\caption[]{z} \\r   z\endheadrs   z!}{r}{{Continued on next page}} \\z	\endfoot
\bottomrulez\endlastfootr   )r   r
   r   r0   r4   r&   r   r9   )r*   r   r   r   r   r   r     s$   
z!LongTableBuilder.middle_separatorc                 C  r   )Nr   r   rC   r   r   r   r   9  r   z!LongTableBuilder.bottom_separatorc                 C  r   )Nz\end{longtable}r   rC   r   r   r   r   =  r   zLongTableBuilder.env_endNr   )
rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    "

r   c                   @  :   e Zd ZdZedddZedddZeddd	Zd
S )RegularTableBuildera  Concrete table builder for regular table.

    >>> from pandas.io.formats import format as fmt
    >>> df = pd.DataFrame({"a": [1, 2], "b": ["b1", "b2"]})
    >>> formatter = fmt.DataFrameFormatter(df)
    >>> builder = RegularTableBuilder(formatter, caption='caption', label='lab',
    ...                               column_format='lrc')
    >>> table = builder.get_result()
    >>> print(table)
    \begin{table}
    \centering
    \caption{caption}
    \label{lab}
    \begin{tabular}{lrc}
    \toprule
    {} &  a &   b \\
    \midrule
    0 &  1 &  b1 \\
    1 &  2 &  b2 \\
    \bottomrule
    \end{tabular}
    \end{table}
    <BLANKLINE>
    r   r   c                 C  s<   d| j  d| j | j d| j dg}ddd |D S )Nz\begin{table}z
\centering\begin{tabular}{ru   r   c                 S  r   r   r   r   r   r   r   rV   e  r   z1RegularTableBuilder.env_begin.<locals>.<listcomp>)r   r   r   r   r9   )r*   r   r   r   r   r   \  s   
zRegularTableBuilder.env_beginc                 C  r   Nr   r   rC   r   r   r   r   g  r   z$RegularTableBuilder.bottom_separatorc                 C  s   d ddgS )Nr   \end{tabular}z\end{table})r9   rC   r   r   r   r   k     zRegularTableBuilder.env_endNr   rk   r   r   r   r   r   r   r   r   r   r   r   r   B  s    
r   c                   @  r   )TabularBuildera  Concrete table builder for tabular environment.

    >>> from pandas.io.formats import format as fmt
    >>> df = pd.DataFrame({"a": [1, 2], "b": ["b1", "b2"]})
    >>> formatter = fmt.DataFrameFormatter(df)
    >>> builder = TabularBuilder(formatter, column_format='lrc')
    >>> table = builder.get_result()
    >>> print(table)
    \begin{tabular}{lrc}
    \toprule
    {} &  a &   b \\
    \midrule
    0 &  1 &  b1 \\
    1 &  2 &  b2 \\
    \bottomrule
    \end{tabular}
    <BLANKLINE>
    r   r   c                 C  s   d| j  dS )Nr   ru   )r   rC   r   r   r   r     r   zTabularBuilder.env_beginc                 C  r   r   r   rC   r   r   r   r     r   zTabularBuilder.bottom_separatorc                 C  r   )Nr   r   rC   r   r   r   r     r   zTabularBuilder.env_endNr   r   r   r   r   r   r   p  s    r   c                   @  s   e Zd ZdZ								d&d'ddZd(ddZed)ddZd*ddZed+ddZ	e	j
d,d!dZ	d(d"d#Zd(d$d%ZdS )-LatexFormattera  
    Used to render a DataFrame to a LaTeX tabular/longtable environment output.

    Parameters
    ----------
    formatter : `DataFrameFormatter`
    longtable : bool, default False
        Use longtable environment.
    column_format : str, default None
        The columns format as specified in `LaTeX table format
        <https://en.wikibooks.org/wiki/LaTeX/Tables>`__ e.g 'rcl' for 3 columns
    multicolumn : bool, default False
        Use \multicolumn to enhance MultiIndex columns.
    multicolumn_format : str, default 'l'
        The alignment for multicolumns, similar to `column_format`
    multirow : bool, default False
        Use \multirow to enhance MultiIndex rows.
    caption : str or tuple, optional
        Tuple (full_caption, short_caption),
        which results in \caption[short_caption]{full_caption};
        if a single string is passed, no short caption will be set.
    label : str, optional
        The LaTeX label to be placed inside ``\label{}`` in the output.
    position : str, optional
        The LaTeX positional argument for tables, to be placed after
        ``\begin{}`` in the output.

    See Also
    --------
    HTMLFormatter
    FNr   r	   	longtabler   r   r   r   r   r   r
   r   r   r   r   r    c
           
      C  sN   || _ | j j| _|| _|| _|| _|| _|| _t|\| _| _	|| _
|	| _d S r!   )r"   r#   r   r   r   r   r   r   r
   r   r   r   )
r*   r   r   r   r   r   r   r
   r   r   r   r   r   r+     s   

zLatexFormatter.__init__r   c                 C  s
   | j  S )zp
        Render a DataFrame to a LaTeX tabular, longtable, or table/tabular
        environment output.
        )builderr   rC   r   r   r   	to_string  s   
zLatexFormatter.to_stringr   c                 C  s4   |   }|| j| j| j| j| j| j| j| j| j	d	S )zVConcrete table builder.

        Returns
        -------
        TableBuilder
        )	r   r   r   r   r   r
   r   r   r   )
_select_builderr"   r   r   r   r   r
   r   r   r   )r*   r   r   r   r   r     s   zLatexFormatter.buildertype[TableBuilderAbstract]c                 C  s&   | j rtS t| j| j| jgrtS tS )zSelect proper table builder.)r   r   re   r
   r   r   r   r   rC   r   r   r   r     s
   zLatexFormatter._select_builderc                 C  s   | j S )zColumn format.)_column_formatrC   r   r   r   r     s   zLatexFormatter.column_formatinput_column_formatc                 C  sD   |du r|   |   | _dS t|tstdt| || _dS )zSetter for column format.Nz*column_format must be str or unicode, not )_get_index_format"_get_column_format_based_on_dtypesr   r   r   r   rj   )r*   r   r   r   r   r     s   

c                 C  s$   ddd}| j jj}dt||S )zkGet column format based on data type.

        Right alignment for numbers and left - for strings.
        r   r   c                 S  s   t | jtjr	dS dS )Nr   l)
issubclassrj   npnumber)dtyper   r   r   get_col_type  s   zGLatexFormatter._get_column_format_based_on_dtypes.<locals>.get_col_typer   Nr   )r#   dtypes_valuesr9   map)r*   r   r   r   r   r   r     s   

z1LatexFormatter._get_column_format_based_on_dtypesc                 C  s   | j jrd| jjj S dS )zGet index column format.r   r   )r"   r2   r#   rF   rC   r   r   r   r     s   z LatexFormatter._get_index_format)FNFNFNNN)r   r	   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r    r   )r   r   )r   r   )r   r   )r   r   r   r    )rk   r   r   r   r+   r   r   r   r   r   setterr   r   r   r   r   r   r     s*    #


r   r;   rl   rm   c                 C  s   dd | D S )zCarry out string replacements for special symbols.

    Parameters
    ----------
    row : list
        List of string, that may contain special symbols.

    Returns
    -------
    list
        list of strings with the special symbols replaced.
    c                 S  sp   g | ]4}|r4|d kr4| dd dd dd dd d	d
 dd dd dd dd ddnd qS )r_   \z\textbackslash _z\_%z\%$z\$#z\#r   z\{ru   z\}~z\textasciitilde ^z\textasciicircum &z\&)replacern   r   r   r   rV   !  s"    

z#_escape_symbols.<locals>.<listcomp>r   )r;   r   r   r   rp     s   rp   r?   ilevelsr-   c                   s    fddt | D S )z%Convert elements in ``crow`` to bold.c                   s4   g | ]\}}| k r|  d vrd| dn|qS ))r   r_   z\textbf{ru   )rv   )rR   r~   rX   r   r   r   rV   6  s    "z$_convert_to_bold.<locals>.<listcomp>)	enumerate)r?   r   r   r   r   rr   4  s   
rr   __main__)r
   r   r   r   r   )r?   rl   r   r-   r   rm   ) r   
__future__r   abcr   r   typingr   r   r   numpyr   pandas.core.dtypes.genericr   pandas.io.formats.formatr	   r   r   r   r   r   r   r   r   r   r   r   rp   rr   rk   doctesttestmodr   r   r   r   <module>   s6    
! ]		dVY.! 

 