o
    �¨ÊhÙ  ã                   @   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)ÚpdÚ	DataFrameÚastype)ÚdctÚis_categoricalÚdf© r	   ú`/var/www/html/env/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_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   r   Úcolumnsr   ÚdfXÚcolumn_sizeÚcolumnr(   r	   r	   r
   Útest_only_one_dtype   s   
ûr1   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   r8   ÚdÚeÚfr   r   é   é   r   r8   r   é@   )	r%   Úitemsr'   r(   r)   r*   r+   r,   Údtype)r   r   r.   r-   r0   ÚkindÚcolXr	   r	   r
   Útest_mixed_dtypes-   s&   úÿ

rC   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.   rB   r	   r	   r
   Útest_na_floatJ   s
   
rG   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   r2   z.*categorical.*)Úmatch)r%   r'   ÚpytestÚraisesÚ	TypeErrorÚdescribe_categoricalrF   r	   r	   r
   Útest_noncategoricalR   s   
"ÿrM   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ÚTuerO   ÚWedrO   ÚThuÚFriÚSatÚSunT)r   Ú
is_orderedÚis_dictionary)r%   r'   rL   r)   Úbool)r   r   rB   Úcategoricalr	   r	   r
   Útest_categoricalZ   s   
þrZ   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   )r[   r]   )r%   Únum_columnsÚnum_rowsÚ
num_chunksr#   Úcolumn_namesÚselect_columnsÚselect_columns_by_name)r   r   r.   r	   r	   r
   Útest_dataframef   s   ÿÿrd   r+   Ún_chunks))r5   r   )é   r   )rf   r3   c                 C   sX   |dt t| ƒƒiƒ}| ¡ }t | |¡ƒ}t|ƒ|ksJ ‚tdd„ |D ƒƒ| ks*J ‚d S )Nr[   c                 s   ó   � | ]}|  ¡ V  qd S ©N)r_   ©Ú.0Úchunkr	   r	   r
   Ú	<genexpr>{   ó   € z%test_df_get_chunks.<locals>.<genexpr>)r#   Úranger%   Ú
get_chunksr&   Úsum©r+   re   r   r   r.   Úchunksr	   r	   r
   Útest_df_get_chunksu   s
   rs   c                 C   s^   |dt t| ƒƒiƒ}| ¡ }t | d¡ |¡ƒ}t|ƒ|ks J ‚tdd„ |D ƒƒ| ks-J ‚d S )Nr[   r   c                 s   rg   rh   )r+   ri   r	   r	   r
   rl   „   rm   z)test_column_get_chunks.<locals>.<genexpr>)r#   rn   r%   Ú
get_columnro   r&   rp   rq   r	   r	   r
   Útest_column_get_chunks~   s
   ru   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+   r`   rt   r@   rF   r	   r	   r
   Útest_get_columns‡   s   rw   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   )é   é   é    r>   rz   zBuffer at index z	 mismatch)r%   rt   Úget_buffersÚbufsizeÚptrÚ__dlpack_device__ÚctypesÚc_int8Úc_int16Úc_int32Úc_int64Ú	enumerateÚfrom_addressÚvalue)r   Úarrr   r.   rB   ÚbufXÚdataBufÚ	dataDtypeÚdeviceÚ_ÚbitwidthÚctypeÚidxÚtruthÚvalr	   r	   r
   Útest_buffer“   s0   
üûõ	r”   )Ú__doc__r�   rD   rI   Úpandasr   Úfixturer   ÚmarkÚparametrizer1   rC   rG   rM   rZ   rd   rs   ru   rw   r”   r	   r	   r	   r
   Ú<module>   s6    
ýù
	

