o
    5c                     @   s  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&ej$%deee ee!gd d! Z'd"d# Z(ej$%dg d$g d%d&g d'g d%d&e)g d(e)g d'e)g d%d)gd*d+ Z*d,d- Z+d.d/ Z,d0d1 Z-d2d3 Z.e
/d4d5d6 Z0dS )7    )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   X/var/www/html/gps/gps/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                    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   rM   column_namesrN   tupler   select_columnsselect_columns_by_namerE   rI   rD   attrs)r-   rJ   df2indicesnamesresultexpectedr   rP   r   test_dataframeM   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   q   s     z,test_missing_from_masked.<locals>.<dictcomp>F)sizereplacerf   rg   rh   )r8   r9   nparrayr;   r!   RandomStatecolumnsitemsindexr%   arangerl   locr<   r?   )rZ   	dict_nullr   	num_nullsnull_idxr   rm   r   test_missing_from_maskede   s$   r|   )rb   rc   rd   )ffffff"@      %@皙'@)rf   rg   )r   r   r   )TTFre   c                 C   s6   t | }| }|jD ]}||jdksJ qd S )Nr   )r8   r9   r;   rt   r<   r?   )r-   rJ   rZ   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   Nre   r   )r8   r9   rq   rr   r;   rt   r<   r?   )rJ   rZ   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<   ro   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<   pytest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<   ro   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   Categoricalr;   r<   rq   from_dlpackget_buffersrr   rE   assert_numpy_array_equal)rJ   r   r]   r^   r   r   r    test_categorical_to_numpy_dlpack   s
   r   )1r   r!   numpyrq   r   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   rM   r:   r   r   r   int_data	uint_data	bool_data
float_datadatetime_dataNaNr   markparametrizerL   r_   r|   rr   r   r   r   r   r   skip_if_np_ltr   r   r   r   r   <module>   sn    	


