o
    $j                     @   s   d Z ddlZddlZddlZddlZejdd 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
    Nc                  C   s   ddd} | S )NFc                 S   s   t | }|r|dS |S )Ncategory)pdZ	DataFrameZastype)dctis_categoricaldf r   o/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/interchange/test_spec_conformance.pymaker   s   
zdf_from_dict.<locals>.maker)Fr   )r	   r   r   r   df_from_dict   s   
r
   	test_dataZfoobarZbazZquxabg      ?      @      @gffffff"@g      %@g'@)            )AB)Zstr_dataZ
float_dataZint_data)Z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   r
   columnsr   dfXZcolumn_sizecolumnr   r   r   r   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   r.   defr   r         r   r.   r   @   )	r   itemsr   r   r    r!   r"   r#   dtype)r
   r   r%   r$   r&   kindcolXr   r   r   test_mixed_dtypes-   s&   

r9   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%   r8   r   r   r   test_na_floatJ   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   pytestZraises	TypeErrordescribe_categoricalr<   r   r   r   test_noncategoricalR   s   
"rB   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TuerD   WedrD   ThuFriSatSunT)r   Z
is_orderedZis_dictionary)r   r   rA   r    bool)r
   r   r8   Zcategoricalr   r   r   test_categoricalZ   s   
rL   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   )rM   rO   )r   Znum_columnsnum_rows
num_chunksr   Zcolumn_namesZselect_columnsZselect_columns_by_name)r
   r   r%   r   r   r   test_dataframef   s   rR   r"   n_chunks))r+   r   )   r   )rT   r)   c                 C   sX   |dt t| i}| }t ||}t||ksJ tdd |D | ks*J d S )NrM   c                 s       | ]}|  V  qd S N)rP   .0chunkr   r   r   	<genexpr>{       z%test_df_get_chunks.<locals>.<genexpr>)r   ranger   
get_chunksr   sumr"   rS   r
   r   r%   chunksr   r   r   test_df_get_chunksu   s
   ra   c                 C   s^   |dt t| i}| }t |d|}t||ks J tdd |D | ks-J d S )NrM   r   c                 s   rU   rV   )r"   rW   r   r   r   rZ      r[   z)test_column_get_chunks.<locals>.<genexpr>)r   r\   r   
get_columnr]   r   r^   r_   r   r   r   test_column_get_chunks~   s
   rc   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   Zget_columnsr"   rQ   rb   r6   r<   r   r   r   test_get_columns   s   rd   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   )          r4   rg   zBuffer at index z	 mismatch)r   rb   Zget_buffersbufsizeptrZ__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r
   Zarrr   r%   r8   ZbufXZdataBufZ	dataDtypeZdevice_Zbitwidthctypeidxtruthvalr   r   r   test_buffer   s0   
	ry   )__doc__rl   r:   r?   Zpandasr   Zfixturer
   markZparametrizer'   r9   r=   rB   rL   rR   ra   rc   rd   ry   r   r   r   r   <module>   s6    

	

