
    j*                    ~   d dl mZ d dlmZ d dlmZ d dlmZ	 d dl
mZ d dlmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZmZm Z  er d dl!m"Z"m#Z# d dl$m%Z% d dlm&Z&m'Z'm(Z(m)Z) d dlm"Z*  ed          ddd5d            Z+d6dZ,d6dZ-d7d!Z.d8d"Z/d8d#Z0	 d9d:d*Z1d;d+Z2	 d9d<d1Z3	 d9d=d3Z4d>d4Z5dS )?    )annotations)TYPE_CHECKINGN)
deprecated)qualified_type_name)BooleanEnumInt64StringUInt8UInt32)InvalidOperationError)PolarsDataFrame)ColumnNullTypeCopyNotAllowedError	DtypeKind)dtype_to_polars_dtypeget_buffer_length_in_elements!polars_dtype_to_data_buffer_dtype)	DataFrameSeries)PolarsDataType)BufferColumnDtypeSupportsInterchange)r   zQSupport for the dataframe interchange protocol is deprecated since version 1.40.0T
allow_copydfr   r   boolreturnr   c                   t          | t          j                  r| S t          | t                    r| j        S t          | d          s"dt          |           d}t          |          t          | 	                    |          |          S )a  
    Build a Polars DataFrame from any dataframe supporting the interchange protocol.

    .. deprecated:: 1.40.0
        Support for the Dataframe Interchange Protocol is deprecated.

    Parameters
    ----------
    df
        Object supporting the dataframe interchange protocol, i.e. must have implemented
        the `__dataframe__` method.
    allow_copy
        Allow memory to be copied to perform the conversion. If set to False, causes
        conversions that are not zero-copy to fail.
    __dataframe__z`df` of type z4 does not support the dataframe interchange protocolr   )

isinstanceplr   r   _dfhasattrr   	TypeError_from_dataframer"   )r   r   msgs      f/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/polars/interchange/from_dataframe.pyfrom_dataframer+      s    & "bl## 		B	(	( v2'' m1"55mmmnn
J//       InterchangeDataFramec                   g }|                                  D ](}t          ||          }|                    |           )|s&t          | |          }|                    |           t          j        |d          S )Nr   F)rechunk)
get_chunks_protocol_df_chunk_to_polarsappendFconcat)r   r   chunkschunkpolars_chunks        r*   r(   r(   <   s    F $ $3EjQQQl####  $3B:NNNl###8FE****r,   c                  g }t          |                                 |                                 d          D ]\  }}t          |j                  }|t
          k    rt          ||          }n/|t          k    rt          ||          }nt          |||          }|
                    |                    |                     t          j        |          S )NT)strictr   )zipget_columnscolumn_namesr   dtyper
   _string_column_to_seriesr   _categorical_column_to_series_column_to_seriesr2   aliasr$   r   )r   r   columnscolumnnamer=   ss          r*   r1   r1   J   s     GBNN,,boo.?.?MMM & &%fl33F??(JGGGAAd]]-fLLLAA!&%JGGGAqwwt}}%%%%<   r,   rC   r   r=   r   r   c                  |                                  }| j        }t          g |d         |                                 |R d|i}t	          |d         | ||||          }t
          j                            |||          S )Ndatar   validityr   rG   rH   )get_buffersoffset_construct_data_buffersize_construct_validity_bufferr$   r   _from_buffers)rC   r=   r   buffersrK   data_buffervalidity_buffers          r*   r@   r@   [   s       ""G]F( 	 ++--)/  <F K 1
VUKJ  O 9""5{_"UUUr,   c               N   |                                  dk    rt          j        t                    S |sd}t	          |          |                                 }| j        }|d         }|d}t          |          t          g ||R d|i}|d         \  }}t          |||j
        d|          }	|	|g}
t          j                            t          |
d 	          }t          |d
         | t          |||          }|'t          j                            t          |
|	          }|S )Nr   r=   z string buffers must be convertedoffsetsz5cannot create String column without an offsets bufferr   rG   )rK   r   rI   rH   r   )rM   r$   r   r
   r   rJ   rK   RuntimeError_construct_offsets_bufferrL   bufsizerO   rN   )rC   r   r)   rP   rK   offsets_buffer_infooffsets_bufferbufferr=   rQ   data_buffersrG   rR   s                r*   r>   r>   j   sb   {{}}yv&&&& '0!#&&&  ""G]F!),"E3. 	$  1; N FOMFE(v~aJ  K  0L9""6t"LLD 1
VVT6j  O "y&& ' 
 
 Kr,   c                   | j         }|d         sd}t          |          |d         }|                                dk    rt          g           }nL|j        d         t
          j        k    rd}t          |          t          ||          }t          |          }|                                 }| j	        }t          g |d         |                                 |R d|i}	t          |d	         | ||	||          }
|	j        }t          j                            ||	|

          }|t          k    rI|s-|                                 dk    rd| d}t!          |          |                    t                    }|                    |          S )Nis_dictionaryz1non-dictionary categoricals are not yet supported
categoriesr   z'non-string categories are not supportedr   rG   r   rH   rI   zdata buffer must be cast from z
 to UInt32)describe_categoricalNotImplementedErrorrM   r   r=   r   STRINGr>   rJ   rK   rL   rN   r$   r   rO   r   r   cast)rC   r   categoricalr)   categories_colr=   r_   rP   rK   rQ   rR   
data_dtypeouts                r*   r?   r?      s   -K' 'A!#&&& .N!!R		a	 I$4	4	47!#&&&-nTTT
Z    ""G]F( 	 ++--)/  <F K 1
VUKJ  O "J
)
!
! "  C
 V 	+fkkmma//I:IIIC%c*** hhv88E??r,   r[   r   r   lengthintrK   c                  t          |          }t          |          }| j        ||f}|t          k    r~|d         dk    rr|dk    rt	          j        t                    S |sd}t          |          t          j                            t          ||           	                    t                    S t          j                            |||           S )N      r   rT   zBbyte-packed boolean buffer must be converted to bit-packed booleanowner)
r   r   ptrr   r$   r   r   _from_bufferr   rc   )r[   r=   rh   rK   r   polars_dtypebuffer_infor)   s           r*   rL   rL      s     )//L
 5\BBL:vv.K w58q==Q;;97++++ 	+VC%c***y%%e[%GGLLWUUU9!!,6!JJJr,   c               $   t          |          }t          | j        |          |z
  }| j        ||f}t          j                            |||           }|t          k    r1|sd| d}t          |          |	                    t                    }|S )Nrm   z!offsets buffer must be cast from z	 to Int64)
r   r   rX   ro   r$   r   rp   r	   r   rc   )	r[   r=   rK   r   rq   rh   rr   rE   r)   s	            r*   rW   rW      s     )//L*6>5AAFJF:vv.K
	|[GGA u 	+MlMMMC%c***FF5MMHr,   validity_buffer_infotuple[Buffer, Dtype] | Nonecolumn_dtyperG   Series | Nonec                  |j         \  }}|t          j        k    s|j        dk    rd S |t          j        k    r2| d S | d         }t          |||                                ||          S |t          j        k    r| d S | d         }t          |||          S |t          j	        k    r'|sd}	t          |	          |                                S |t          j        k    r|sd}	t          |	          t          j        |g          }
	 |                                r|
                    |          }
||
k    S # t"          $ r}d| d|}	t%          |	          |d }~ww xY wd|}	t'          |	          )Nr   r   zbitmask must be constructedz*invalid sentinel value for column of type z: zunsupported null type: )describe_nullr   NON_NULLABLE
null_countUSE_BITMASK'_construct_validity_buffer_from_bitmaskrM   USE_BYTEMASK(_construct_validity_buffer_from_bytemaskUSE_NANr   
is_not_nanUSE_SENTINELr$   r   is_temporalrc   r   r'   ra   )rt   rC   rv   rG   rK   r   	null_type
null_valuer[   r)   sentineles               r*   rN   rN      s    #0IzN///63D3I3It	n0	0	0'4%a(6Jv*
 
 
 	
 
n1	1	1'4%a(7J:
 
 
 	
 
n,	,	, 	+/C%c***   	n1	1	1 	+/C%c***9j\**	('')) 7#==668##$ 	( 	( 	(]|]]z]]CC..a'	(
 6	55!#&&&s   .D7 7
EEEr   c                   | j         ||f}t          j                            t          ||           }|dk    r|sd}t          |          | }|S )Nr   zbitmask must be inverted)ro   r$   r   rp   r   r   )r[   r   rh   rK   r   rr   rE   r)   s           r*   r}   r}   *  s[     :vv.K
	wV<<AQ 	+,C%c***BHr,   c                   |sd}t          |          | j        d| j        f}t          j                            t          ||           }|                    t                    }|dk    r| }|S )Nz)bytemask must be converted into a bitmaskr   rm   )	r   ro   rX   r$   r   rp   r   rc   r   )r[   r   r   r)   rr   rE   s         r*   r   r   >  so      '9!#&&&:q&.1K
	uk@@A	wAQBHr,   )r   r   r   r   r    r   )r   r-   r   r   r    r   )rC   r   r=   r   r   r   r    r   )rC   r   r   r   r    r   )r   )r[   r   r=   r   rh   ri   rK   ri   r   r   r    r   )
r[   r   r=   r   rK   ri   r   r   r    r   )rt   ru   rC   r   rv   r   rG   r   rK   ri   r   r   r    rw   )r[   r   r   ri   rh   ri   rK   ri   r   r   r    r   )r[   r   r   ri   r   r   r    r   )6
__future__r   typingr   polars._reexport	_reexportr$   polars.functions	functionsr3   polars._utils.deprecationr   polars._utils.variousr   polars.datatypesr   r   r	   r
   r   r   polars.exceptionsr   polars.interchange.dataframer   polars.interchange.protocolr   r   r   polars.interchange.utilsr   r   r   polarsr   r   polars._typingr   r   r   r   r   r-   r+   r(   r1   r@   r>   r?   rL   rW   rN   r}   r    r,   r*   <module>r      s   " " " " " "                         0 0 0 0 0 0 5 5 5 5 5 5 H H H H H H H H H H H H H H H H 3 3 3 3 3 3 8 8 8 8 8 8 V V V V V V V V V V           N((((((((------VVVVVVVVVVVVMMMMMM W  CG      >+ + + +! ! ! !"V V V V% % % %P+ + + +d 	K K K K K:   8 3' 3' 3' 3' 3't 	    (     r,   