o
    5c                     @   s   d Z ddlZddlZddlZejjdddgddgdg d	g d
dg dg ddgg dddd Zdd Zdd Zdd Z	dd Z
dd Zejddgg ddd Zejddgg dd d! Zd"d# Zd$d% ZdS )&ze
A verbatim copy (vendored) of the spec tests.
Taken from https://github.com/data-apis/dataframe-api
    N	test_datafoobarbazquxabg      ?      @      @gffffff"@g      %@g'@)            )AB)str_data
float_dataint_data)idsc                 C   s   t |  }|| }| }t| |d  }|D ]*}||j}|dks&J t|ts-J || |ks8J ||j	dksBJ qd S )Nr   )
listkeys__dataframe__lenget_column_by_name
null_count
isinstanceintsizeoffset)r   df_from_dictcolumnsdfdfXcolumn_sizecolumnr    r(   d/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/interchange/test_spec_conformance.pytest_only_one_dtype   s   
r*   c                 C   s   | g dg dg dg dg dg dd}|  }ddd	dd
dd}| D ]0\}}||}|jdks8J t|jts@J | dksHJ |jdksOJ |jd |ksXJ q(|djd dkseJ d S )Nr   r   r   )r   r      r
   )	   
      )TFT)r    c)r   r	   r1   defr   r         r   r1   r   @   )	r   itemsr   r   r   r   r    r!   dtype)r"   r$   r%   r#   r'   kindcolXr(   r(   r)   test_mixed_dtypes"   s&   

r<   c                 C   sH   | ddt jdgi}| }|d}|jdksJ t|jts"J d S )Nr   g      ?g       @r   )mathnanr   r   r   r   r   r"   r$   r%   r;   r(   r(   r)   test_na_float?   s
   
r@   c                 C   s\   | dg di}|  }|d}tjtdd |j W d    d S 1 s'w   Y  d S )Nr   r+   z.*categorical.*)match)r   r   pytestraises	TypeErrordescribe_categoricalr?   r(   r(   r)   test_noncategoricalG   s   
"rF   c                 C   sP   | dg didd}|  d}|j}t|d tsJ t|d ts&J d S )Nweekday)	MonTuerH   WedrH   ThuFriSatSunT)is_categorical
is_orderedis_dictionary)r   r   rE   r   bool)r"   r$   r;   categoricalr(   r(   r)   test_categoricalO   s   
rT   c                 C   s   | g dg dg dd}|  }| dksJ | dks"J | dks*J t| g dks6J t|d t|d ksJJ d S )	N)TTF)r   r   r   r   )xyzr   r   )r   r   )rU   rW   )r   num_columnsnum_rows
num_chunksr   column_namesselect_columnsselect_columns_by_name)r"   r$   r%   r(   r(   r)   test_dataframe[   s   r^   r    n_chunks))r.   r   )   r   )r`   r,   c                 C   sX   |dt t| i}| }t ||}t||ksJ tdd |D | ks*J d S )NrU   c                 s       | ]}|  V  qd S N)rY   .0chunkr(   r(   r)   	<genexpr>p       z%test_df_get_chunks.<locals>.<genexpr>)r   ranger   
get_chunksr   sumr    r_   r"   r$   r%   chunksr(   r(   r)   test_df_get_chunksj   s
   rm   c                 C   s^   |dt t| i}| }t |d|}t||ks J tdd |D | ks-J d S )NrU   r   c                 s   ra   rb   )r    rc   r(   r(   r)   rf   y   rg   z)test_column_get_chunks.<locals>.<genexpr>)r   rh   r   
get_columnri   r   rj   rk   r(   r(   r)   test_column_get_chunkss   s
   ro   c                 C   s   | ddgddgd}|  }| D ]}| dksJ | dks%J q|djd dks2J |djd dks>J d S )Nr   r   r   r   r   r   )r   get_columnsr    rZ   rn   r9   r?   r(   r(   r)   test_get_columns|   s   rq   c                 C   s   g d}| d|i}|  }|d}| }|d \}}|jdks$J |jdks+J | \}}	|d dks9J |dkrp|d }
tjtjtj	tj
d|
 }t|D ]\}}||j||
d   j}||ksoJ d| d	qRd S d S )
N)r   r   r   r   datar   )          r7   rt   zBuffer at index z	 mismatch)r   rn   get_buffersbufsizeptr__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r"   arrr$   r%   r;   bufXdataBuf	dataDtypedevice_bitwidthctypeidxtruthvalr(   r(   r)   test_buffer   s0   
	r   )__doc__r{   r=   rB   markparametrizer*   r<   r@   rF   rT   r^   rm   ro   rq   r   r(   r(   r(   r)   <module>   s0    
	

