
    ȯei                        d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z	 erddl
mZmZ ddlmZ ddZ	 d	 	 	 	 	 	 	 dd
ZddZddZddZddZy	)ztData marshalling utilities for ArrowTable protobufs, which are used by
CustomComponent for dataframe serialization.
    )annotations)TYPE_CHECKINGAny)dataframe_util)pandas_styler_utils)	DataFrameIndex)
ArrowTablec                <    t        | t              rt        |       S | S )z;Convert a tuple to a list. Leave as is if it's not a tuple.)
isinstancetuplelist)items    i/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/streamlit/components/v1/component_arrow.py_maybe_tuple_to_listr       s    #D%04::d:    Nc                    t        j                  |      rt        j                  | ||       t        j                  |      }t        | |j                         t        | |j                         t        | |       y)a:  Marshall data into an ArrowTable proto.

    Parameters
    ----------
    proto : proto.ArrowTable
        Output. The protobuf for a Streamlit ArrowTable proto.

    data : pandas.DataFrame, pandas.Styler, numpy.ndarray, Iterable, dict, or None
        Something that is or can be converted to a dataframe.

    N)
r   is_pandas_stylerr   marshall_stylerconvert_anything_to_pandas_df_marshall_indexindex_marshall_columnscolumns_marshall_data)protodatadefault_uuiddfs       r   marshallr    %   sZ     &&t,++E4F		5	5d	;BE288$eRZZ(5"r   c                    ddl }t        t        t        |j                              }|j                  |      }t        j                  |      | _        y)aH  Marshall pandas.DataFrame index into an ArrowTable proto.

    Parameters
    ----------
    proto : proto.ArrowTable
        Output. The protobuf for a Streamlit ArrowTable proto.

    index : pd.Index
        Index to use for resulting frame.
        Will default to RangeIndex (0, 1, 2, ..., n) if no index is provided.

    r   N)	pandasr   mapr   valuesr   r    convert_pandas_df_to_arrow_bytesr   )r   r   pdindex_valuesindex_dfs        r   r   r   <   s=     0%,,?@L||L)H AA(KEKr   c                    ddl }t        t        t        |j                              }|j                  |      }t        j                  |      | _        y)aZ  Marshall pandas.DataFrame columns into an ArrowTable proto.

    Parameters
    ----------
    proto : proto.ArrowTable
        Output. The protobuf for a Streamlit ArrowTable proto.

    columns : Index
        Column labels to use for resulting frame.
        Will default to RangeIndex (0, 1, 2, ..., n) if no column labels are provided.

    r   N)	r"   r   r#   r   r$   r   r   r%   r   )r   r   r&   column_values
columns_dfs        r   r   r   P   s=     17>>BCMm,J"CCJOEMr   c                8    t        j                  |      | _        y)zMarshall pandas.DataFrame data into an ArrowTable proto.

    Parameters
    ----------
    proto : proto.ArrowTable
        Output. The protobuf for a Streamlit ArrowTable proto.

    df : pandas.DataFrame
        A dataframe to marshall.

    N)r   r%   r   )r   r   s     r   r   r   d   s      @@DEJr   c                   t        j                  d      rt        d      ddl}t        j                  | j
                        }t        j                  | j                        }t        j                  | j                        }|j                  |j                         |j                         j                  j                         |j                         j                  j                               S )zConvert ArrowTable proto to pandas.DataFrame.

    Parameters
    ----------
    proto : proto.ArrowTable
        Output. pandas.DataFrame

    z14.0.1zThe installed pyarrow version is not compatible with this component. Please upgrade to 14.0.1 or higher: pip install -U pyarrowr   N)r   r   )r   is_pyarrow_version_less_thanRuntimeErrorr"    convert_arrow_bytes_to_pandas_dfr   r   r   r   to_numpyTtolist)r   r&   r   r   r   s        r   arrow_proto_to_dataframer4   s   s     228<I
 	

 ::5::FD;;EKKHE==emmLG<<nn  '')  "$$++-   r   )r   r   returnr   )N)r   ArrowTableProtor   r   r   z
str | Noner5   None)r   r6   r   
Index[Any]r5   r7   )r   r6   r   r8   r5   r7   )r   r6   r   r   r5   r7   )r   r6   r5   r   )__doc__
__future__r   typingr   r   	streamlitr   streamlit.elements.libr   r"   r   r	   streamlit.proto.Components_pb2r
   r6   r   r    r   r   r   r4    r   r   <module>r@      si    # % $ 6'L; CG"%5?	.L(P(Er   