o
    d                      @   sd  d dl m Z  d dlZd dlZd dlZd dlmZ d dlm  m	Z
 d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ ejedd d	d
ejedd dd
dZd\ZZdd Zedd Zedd Zedd Zedd Z edd Z!dddddej"giZ#ej$%dddgdd Z&d d! Z'd"d# Z(d$d% Z)ej$%d&d dd'e*d(d)gfd*de*d(d)gfd+dd)gfd d+d'e*d(gfd d*d'gfd*d*e*d(gfgd,d- Z+ej$%deee ee!gd.d/ Z,d0d1 Z-ej$%dg d2g d3d4g d5g d3d4e.g d6e.g d5e.g d3d7gd8d9 Z/d:d; Z0d<d= Z1d>d? Z2d@dA Z3e
4dBdCdD Z5dS )E    )datetimeN)iNaT)PandasColumn)ColumnNullType	DtypeKind)from_dataframetestdata   T)orderedF)r
   	unordered)d      c                    s    fddt tD S )Nc                    s>   i | ]}d t |td  t d   fddttD qS )col      c                    s   g | ]}  qS  r   ).0_make_oner   g/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/interchange/test_impl.py
<listcomp>   s    z)_make_data.<locals>.<dictcomp>.<listcomp>)intNCOLSrangeNROWS)r   ir   r   r   
<dictcomp>   s    0z_make_data.<locals>.<dictcomp>)r   r   r   r   r   r   
_make_data   s   
r   c                   C      t ddS )Nir   randomrandintr   r   r   r   <lambda>"       r#   c                   C   r   )Nr   r   r    r   r   r   r   r#   #   r$   c                   C   s   t ddgS )NTF)r!   choicer   r   r   r   r#   $   s    c                   C   s   t   S N)r!   r   r   r   r   r#   %   s    c                   C   s&   t tddtddtdddS )Nil  i4  r         )yearmonthday)r   r!   r"   r   r   r   r   r#   '   s
    


separator datazabC|DeF,Hikz234,3245.67zgSaf,qWer|Grez
asd3,4sad|data)r
   T)r   Fc                 C   s   t dt| d  i}| d}|jd tjksJ |jdks#J |j	t
jdfks-J | dks5J |j}|d | d ksBJ |d du sJJ t|d tsSJ t|d jt g d	 t|t|  d S )
NAr   r   
is_orderedis_dictionaryT
categories)adest)pd	DataFrametest_data_categorical__dataframe__get_column_by_namedtyper   CATEGORICAL
null_countdescribe_nullr   USE_SENTINEL
num_chunksdescribe_categorical
isinstancer   tmassert_series_equal_colSeriesassert_frame_equalr   )r-   dfr   desc_catr   r   r   test_categorical_dtype9   s   rL   c                  C   sl   t dd} g d}| d| | i}| }t|}tj|g dd}t	d|i}t
|| d S )Npyarrow11.0.0)	MonTuerO   WedrO   ThuFriSatSunweekday)rO   rP   rQ   rR   rS   rT   rU   )r2   )pytestimportorskiptablearraydictionary_encoder;   r   r8   Categoricalr9   rE   rI   )paarrrY   exchange_dfresultrV   expectedr   r   r   test_categorical_pyarrowM   s   rb   c                  C   sj   t dd} d g}| d| |d i}| }tjj	|}t
dttjgi}t|| d S )NrM   rN   r^   float64)rW   rX   rY   rZ   r[   r;   r8   apiinterchanger   r9   r\   npnanrE   rI   r]   r^   rY   r_   r`   ra   r   r   r   test_empty_categorical_pyarrow\   s   ri   c                  C   sv   t dd} ddg}| d| |di}| }t|}tdddgi}t	|| | j
| j||s9J d S )NrM   rN   rO   rP   rV   large_string)rW   rX   rY   rZ   r;   r   r8   r9   rE   rI   Tableequalsre   rh   r   r   r   test_large_string_pyarrowh   s   rm   )offsetlengthexpected_valuesffffff
@rg    @r   r   c           	      C   sr   t dd}g d}|d|i| |}| }t|}td|i}t	|| |j
|j||s7J d S )NrM   rN   )rq   Nrr   r^   )rW   rX   rY   slicer;   r   r8   r9   rE   rI   rk   rl   re   )	rn   ro   rp   r]   r^   rY   r_   r`   ra   r   r   r   test_bitmasks_pyarroww   s   rt   c                    s   t  }| }| tksJ | tksJ t| t 	 ks'J d}t
 fdd|D }t||}t||}t|| t|jd tsRJ t|jd ts\J d S )N)r   r   c                 3   s     | ]}t   | V  qd S r&   )listkeys)r   idxr-   r   r   	<genexpr>   s    z!test_dataframe.<locals>.<genexpr>_INTERCHANGE_PROTOCOL_BUFFERS)r8   r9   r;   num_columnsr   num_rowsr   ru   column_namesrv   tupler   select_columnsselect_columns_by_namerE   rI   rD   attrs)r-   rJ   df2indicesnamesr`   ra   r   rx   r   test_dataframe   s   
r   c                     s   t tg dtg dtg dd   } tjd fdd jD }| D ]\}} j	j
tt |dd	 }d  j||f< q1  } | d
j|d
 ks]J | dj|d ksiJ | dj|d ksuJ d S )N)r   r         r   )      ?      @      @g      @r   )TFTTTxyz*   c                    s    i | ]}|j d t dqS )r   )lowhigh)r"   len)r   r   rJ   rngr   r   r      s     z,test_missing_from_masked.<locals>.<dictcomp>F)sizereplacer   r   r   )r8   r9   rf   rZ   r;   r!   RandomStatecolumnsitemsindexr%   aranger   locr<   r?   )r   	dict_nullr   	num_nullsnull_idxr   r   r   test_missing_from_masked   s$   r   )r   r   r   )ffffff"@      %@皙'@)r   r   )r   r   r   )TTFr   c                 C   s6   t | }| }|jD ]}||jdksJ qd S )Nr   )r8   r9   r;   r   r<   r?   )r-   rJ   r   col_namer   r   r   test_mixed_data   s
   

r   c                  C   s\   t tg dtg dtg dd} |  }| jD ]}||jdks+J qd S )N)TNFNT)Nr   Nr   r   )r   r   Nr   Nr   r   )r8   r9   rf   rZ   r;   r   r<   r?   )rJ   r   r   r   r   r   test_mixed_missing   s   
r   c                  C   s   t d dg } td| i}| d}| dksJ |jdks$J |jd tj	ks.J |j
tjdfks8J |dd  }| d}| dksMJ |jdksTJ |jd tj	ks^J |j
tjdfkshJ d S )Nr,    r.      r   r      )string_datar8   r9   r;   r<   r   r?   r=   r   STRINGr@   r   USE_BYTEMASK)test_str_datarJ   r   	df_slicedr   r   r   test_string   s   r   c                  C   sZ   t dg di} |  d}tjtdd |j W d    d S 1 s&w   Y  d S )Nr.   )r3   
   g      ?r   znot supported yet)match)r8   r9   r;   r<   rW   raisesNotImplementedErrorr=   rJ   r   r   r   r   test_nonstring_object   s
   "r   c                  C   s   t dt dt jgi} |  d}| dksJ |jdks#J |jd t	j
ks-J |jtjtfks7J t| t|   d S )Nr.   z
2022-01-01r   r   r   )r8   r9   	TimestampNaTr;   r<   r   r?   r=   r   DATETIMEr@   r   rA   r   rE   rI   r   r   r   r   r   test_datetime   s   r   z1.23c                  C   s^   t dt g di} |  d}t| d d }tjg ddd}t	
|| d S )Nr.   )r3   br3   r-   r   )r   r   r   int8)r=   )r8   r9   r\   r;   r<   rf   from_dlpackget_buffersrZ   rE   assert_numpy_array_equal)rJ   r   r`   ra   r   r   r    test_categorical_to_numpy_dlpack  s
   r   )6r   r!   numpyrf   rW   pandas._libs.tslibsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr8   pandas._testing_testingrE   pandas.core.interchange.columnr   *pandas.core.interchange.dataframe_protocolr   r   &pandas.core.interchange.from_dataframer   r\   ru   r:   r   r   r   int_data	uint_data	bool_data
float_datadatetime_dataNaNr   markparametrizerL   rb   ri   rm   floatrt   r   r   rZ   r   r   r   r   r   skip_if_np_ltr   r   r   r   r   <module>   s    	





