o
    d$                     @   sf   d dl mZ d dlmZmZ d dlmZ edZdd Z							
		dddZ
G dd deZdS )    )absolute_import)
exceptionsoptional_imports)
graph_objspandasc                 C   s(   ddt | g}t ||vrtddS )z
    Table-specific validations

    Check that font_colors is supplied correctly (1, 3, or len(text)
        colors).

    :raises: (PlotlyError) If font_colors is supplied incorretly.

    See FigureFactory.create_table() for params
          z>Oops, font_colors should be a list of length 1, 3 or len(text)N)lenr   PlotlyError)
table_textfont_colorsfont_colors_len_options r   a/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/plotly/figure_factory/_table.pyvalidate_table	   s   r   NF ?   nonec                 K   s   |dur|n
ddgddgddgg}|dur|ng d}t | | t| |||||fi | }	t| |||||fi | }
tdd	|	d
|d|d|}|g}t|
t|	| d tdddddtddddddddtdddddddd}tj||dS )a
  
    Function that creates data tables.

    See also the plotly.graph_objects trace
    :class:`plotly.graph_objects.Table`

    :param (pandas.Dataframe | list[list]) text: data for table.
    :param (str|list[list]) colorscale: Colorscale for table where the
        color at value 0 is the header color, .5 is the first table color
        and 1 is the second table color. (Set .5 and 1 to avoid the striped
        table effect). Default=[[0, '#66b2ff'], [.5, '#d9d9d9'],
        [1, '#ffffff']]
    :param (list) font_colors: Color for fonts in table. Can be a single
        color, three colors, or a color for each row in the table.
        Default=['#000000'] (black text for the entire table)
    :param (int) height_constant: Constant multiplied by # of rows to
        create table height. Default=30.
    :param (bool) index: Create (header-colored) index column index from
        Pandas dataframe or list[0] for each list in text. Default=False.
    :param (string) index_title: Title for index column. Default=''.
    :param kwargs: kwargs passed through plotly.graph_objs.Heatmap.
        These kwargs describe other attributes about the annotated Heatmap
        trace such as the colorscale. For more information on valid kwargs
        call help(plotly.graph_objs.Heatmap)

    Example 1: Simple Plotly Table

    >>> from plotly.figure_factory import create_table

    >>> text = [['Country', 'Year', 'Population'],
    ...         ['US', 2000, 282200000],
    ...         ['Canada', 2000, 27790000],
    ...         ['US', 2010, 309000000],
    ...         ['Canada', 2010, 34000000]]

    >>> table = create_table(text)
    >>> table.show()

    Example 2: Table with Custom Coloring

    >>> from plotly.figure_factory import create_table
    >>> text = [['Country', 'Year', 'Population'],
    ...         ['US', 2000, 282200000],
    ...         ['Canada', 2000, 27790000],
    ...         ['US', 2010, 309000000],
    ...         ['Canada', 2010, 34000000]]
    >>> table = create_table(text,
    ...                      colorscale=[[0, '#000000'],
    ...                                  [.5, '#80beff'],
    ...                                  [1, '#cce5ff']],
    ...                      font_colors=['#ffffff', '#000000',
    ...                                 '#000000'])
    >>> table.show()

    Example 3: Simple Plotly Table with Pandas

    >>> from plotly.figure_factory import create_table
    >>> import pandas as pd
    >>> df = pd.read_csv('http://www.stat.ubc.ca/~jenny/notOcto/STAT545A/examples/gapminder/data/gapminderDataFiveYear.txt', sep='	')
    >>> df_p = df[0:25]
    >>> table_simple = create_table(df_p)
    >>> table_simple.show()

    Nr   z#00083e      ?z#ededeer   #ffffff)r   #000000r   heatmapg      ?F)typezopacity
colorscale	showscale	hoverinfo2   )tbrlreversed   r   )	autorangezeroline	gridwidthticksdticktick0showticklabelsg      )r'   r(   r)   r*   r+   r,   )annotationsheightmarginyaxisxaxis)datalayoutr   )r   _Tableget_table_matrixmake_table_annotationsdictr	   r   Figure)r   r   r   indexindex_titleannotation_offsetheight_constantr   kwargstable_matrixr-   tracer2   r3   r   r   r   create_table   s   O
	

	r@   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )r4   z<
    Refer to TraceFactory.create_table() for docstring
    c                 K   s   t r8t|t jr8|j }|j }	|j }|d| |r8|	d| tt	|D ]}
||
 d|	|
  q+|| _
|| _|| _|| _|| _tt	|d | _tt	|| _d S )Nr   )pd
isinstance	DataFramecolumnstolistr9   valuesinsertranger	   r   r   r   r;   xy)selfr   r   r   r9   r:   r;   r=   headerstable_text_indexir   r   r   __init__   s    



z_Table.__init__c                 C   s   dgt | jd  }dgt | jd  }dgt | jd  }dgt | j }||d< tdt | jdD ]}|||< q3tdt | jdD ]}|||< qC| jrV|D ]}d|d< qO|S )z
        Create z matrix to make heatmap with striped table coloring

        :rtype (list[list]) table_matrix: z matrix to make heatmap with striped
            table coloring.
        r   r   r   Nr%   )r	   r   rH   r9   )rK   headerodd_roweven_rowr>   rN   arrayr   r   r   r5      s   


z_Table.get_table_matrixc                 C   s   t | jdkr| jt | j }|S t | jdkrPttt | j}| jd |d< tdt | jdD ]	}| jd ||< q1tdt | jdD ]	}| jd ||< qD|S t | jt | jkr_| j}|S dgt | j }|S )aP  
        Fill font-color array.

        Table text color can vary by row so this extends a single color or
        creates an array to set a header color and two alternating colors to
        create the striped table pattern.

        :rtype (list[list]) all_font_colors: list of font colors for each row
            in table.
        r   r   r   r%   r   )r	   r   r   listrH   )rK   all_font_colorsrN   r   r   r   get_table_font_color   s    z_Table.get_table_font_colorc           
      C   s   t | }t | }g }t| jD ]R\}}t|D ]I\}}|dks(| jr0|dk r0dt| d nt|}| jr@|dkr@| jd n|| }	|t	j
j|| j| | j | j| ddddt|	dd	d
	 qq|S )z
        Generate annotations to fill in table text

        :rtype (list) annotations: list of annotations for each cell of the
            table.
        r   r   z<b>z</b>x1y1left)colorF)	textrI   rJ   xrefyrefalignxanchorfont	showarrow)r4   r5   rV   	enumerater   r9   strr   appendr   r3   
AnnotationrI   r;   rJ   r7   )
rK   r>   rU   r-   nrowmvalformat_text
font_colorr   r   r   r6      s<   

z_Table.make_table_annotationsN)__name__
__module____qualname____doc__rO   r5   rV   r6   r   r   r   r   r4      s    r4   )NNFr   r   r   r   )
__future__r   plotlyr   r   plotly.graph_objsr   
get_modulerA   r   r@   objectr4   r   r   r   r   <module>   s    

 