o
    ò©Zhñ#  ã                
   @   s  d dl Z d dlZd dlmZ d dlZd dlZ	d dl
m  mZ d dlZe dd„ ¡Ze ejedd¡dd„ ƒZej de	 ¡ d	fe	 ¡ d
fe	 ¡ dfg¡ej de	 ¡ d	fe	 ¡ d
fe	 ¡ dfe	 ¡ dfg¡ej de	 ¡ d
ejfe	 ¡ dejfe	 ¡ dejfg¡ej dg d¢¡ej dg d¢¡ej dddg¡dd„ ƒƒƒƒƒƒZdd„ Z dd„ Z!ej dddg¡dd„ ƒZ"ej dddg¡dd„ ƒZ#ej dddg¡ej d d!gg d"¢¡d#d$„ ƒƒZ$ej dddg¡ej d d!gg d"¢¡d%d&„ ƒƒZ%ejj&ej d'e	 ¡ e	 ¡ e	 ¡ g¡ej d(e	 ¡ e	 ¡ e	 ¡ e	 ¡ g¡ej d)e	 ¡ ejfe	 ¡ ejfe	 ¡ ejfg¡ej dddg¡d*d+„ ƒƒƒƒƒZ'ej d(e	 ¡ e	 ¡ e	 ¡ e	 ¡ g¡ej dddg¡d,d-„ ƒƒZ(ej d.e	 ¡ d	d/fe	 ¡ d
d0fe	 ¡ dd1fe	 ¡ dd2fg¡d3d4„ ƒZ)dS )5é    Nc                   C   s$   t jt jB t jB t jB t jB t jB S ©N)ÚpastZsigned_integer_typesZunsigned_integer_typesZfloating_typesZ	bool_typeZstring_typeZlarge_string_type© r   r   úf/var/www/html/lang_env/lib/python3.10/site-packages/pyarrow/tests/interchange/test_interchange_spec.pyÚ<lambda>   s   ÿþýüûr   é   ©Úsizec                 C   sp   t j| gdgd}| ¡ }| d¡j}|| jksJ ‚t|tƒs!J ‚| d¡ ¡ dks,J ‚| d¡jdks6J ‚d S )NÚa©Únamesr   r   )	ÚpaÚtableÚ__dataframe__Ú
get_columnÚ
null_countÚ
isinstanceÚintr	   Úoffset)Úarrr   Údfr   r   r   r   Útest_dtypes*   s   r   zuint, uint_bwé   é   é    zint, int_bwé@   zfloat, float_bw, np_floatÚunit)ÚsÚmsÚusÚnsÚtz)Ú zAmerica/New_Yorkz+07:30z-04:30Ú	use_batchFTc
                 C   sb  ddl m }
 g d¢}|
dddƒ|
dddƒ|
dddƒg}t tj|| d	tj||d	tjtj||d
|d	g d¢g d¢tj|tj||dd	dœ¡}|	rQ| ¡ d }| ¡ }dddddddœ}| ¡ D ](\}}| 	|¡}|j
dksrJ ‚| ¡ dkszJ ‚|jdksJ ‚|jd |ksŠJ ‚qb| 	d¡jd |ks—J ‚| 	d¡jd |ks£J ‚| 	d¡jd |ks¯J ‚d S )Nr   )Údatetime©é   é   r   i×  é   é   é   é   ©Útype©Údtype)TFT)r
   r"   Úc)r!   )r
   Úbr0   ÚdÚeÚfr&   r'   é   é   é   r   r
   r1   r0   )r$   r   r   ÚarrayÚnpÚ	timestampÚ
to_batchesr   ÚitemsÚget_column_by_namer   r	   r   r/   )ÚuintZuint_bwr   Zint_bwÚfloatZfloat_bwÚnp_floatr   r!   r#   Údtr   Zdt_arrr   r   ÚcolumnsÚcolumnÚkindÚcolr   r   r   Útest_mixed_dtypes6   s2   "úÿ

rF   c                  C   sF   t  dg d¢i¡} |  ¡ }| d¡}|jdksJ ‚t|jtƒs!J ‚d S )Nr
   )g      ð?Ng       @r&   )r   r   r   r=   r   r   r   ©r   r   rE   r   r   r   Útest_na_floatu   s
   
rH   c                  C   s^   t  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   r   r=   ÚpytestZraisesÚ	TypeErrorÚdescribe_categoricalrG   r   r   r   Útest_noncategorical}   s   
"ÿrM   c                 C   st   dd l }g d¢}| d| |¡ ¡ i¡}| r| ¡ d }| ¡  d¡}|j}t|d t	ƒs/J ‚t|d t	ƒs8J ‚d S )Nr   )	ÚMonÚTuerN   ÚWedrN   ÚThuÚFriÚSatNÚweekdayZ
is_orderedZis_dictionary)
Úpyarrowr   r8   Zdictionary_encoder;   r   r=   rL   r   Úbool)r#   r   r   r   rE   Zcategoricalr   r   r   Útest_categorical…   s   ÿrW   c                 C   sè   t  g d¢g d¢g¡}t  g d¢g d¢g¡}t j||gddgd}| r+| ¡  ¡ d }| ¡ }| ¡ d	ks7J ‚| ¡ d
ks?J ‚| rJ| ¡ dksIJ ‚n| ¡ d	ksRJ ‚t	| 
¡ ƒddgks^J ‚t	| d¡ 
¡ ƒt	| d¡ 
¡ ƒksrJ ‚d S )N)r'   r'   é   )rX   é   éd   )ZFlamingoZParrotZCow)ZHorsezBrittle starsZ	CentipedeZn_legsÚanimalsr   r   r'   é   r&   )r&   )r[   )r   Úchunked_arrayr   Úcombine_chunksr;   r   Znum_columnsÚnum_rowsÚ
num_chunksÚlistZcolumn_namesZselect_columnsZselect_columns_by_name)r#   Únr
   r   r   r   r   r   Útest_dataframe•   s"   
ÿÿrc   r	   Ún_chunks))é
   r   )é   r   )rf   rY   c                 C   sj   t  dtt|ƒƒi¡}| r| ¡ d }| ¡ }t| |¡ƒ}t|ƒ|ks&J ‚tdd„ |D ƒƒ|ks3J ‚d S )NÚxr   c                 s   ó    | ]}|  ¡ V  qd S r   )r_   ©Ú.0Úchunkr   r   r   Ú	<genexpr>´   ó   € z%test_df_get_chunks.<locals>.<genexpr>)	r   r   ra   Úranger;   r   Ú
get_chunksÚlenÚsum©r#   r	   rd   r   r   Úchunksr   r   r   Útest_df_get_chunks«   s   rt   c                 C   sp   t  dtt|ƒƒi¡}| r| ¡ d }| ¡ }t| d¡ |¡ƒ}t|ƒ|ks)J ‚t	dd„ |D ƒƒ|ks6J ‚d S )Nrg   r   c                 s   rh   r   r   ri   r   r   r   rl   À   rm   z)test_column_get_chunks.<locals>.<genexpr>)
r   r   ra   rn   r;   r   r   ro   rp   rq   rr   r   r   r   Útest_column_get_chunks·   s   ru   r>   r   zfloat, np_floatc           
      C   sè   g d¢ddgg}t jg d¢|d}t tj|| dtj||dtj||ddœ¡}|r3| ¡  ¡ d }| ¡ }| ¡ D ]}	|	 	¡ dksEJ ‚|	 
¡ d	ksMJ ‚q;| d¡jd d	ksZJ ‚| d	¡jd dksfJ ‚| d
¡jd d
ksrJ ‚d S )Nr%   rX   rY   )r&   r'   r   rX   rY   r.   r,   )r
   r1   r0   r   r&   r'   )r9   r8   r   r   r]   r^   r;   r   Zget_columnsr	   r`   r   r/   )
r>   r   r?   r@   r#   r   Z	arr_floatr   r   rE   r   r   r   Útest_get_columnsÃ   s"   ýÿrv   c                 C   s  g d¢}t  dt j|| di¡}|r| ¡ d }| ¡ }| d¡}| ¡ }|d \}}|jdks2J ‚|jdks9J ‚| 	¡ \}	}
|d dksGJ ‚|	dkr~|d }t
jt
jt
jt
jdœ| }t|ƒD ]\}}| |j||d   ¡j}||ks}J d	|› d
ƒ‚q`d S d S )N)r   r&   éÿÿÿÿr
   r,   r   Údatar&   )r   r   r   r   r   zBuffer at index z	 mismatch)r   r   r8   r;   r   r   Zget_buffersÚbufsizeZptrZ__dlpack_device__ÚctypesZc_int8Zc_int16Zc_int32Zc_int64Ú	enumerateZfrom_addressÚvalue)r   r#   r   r   r   rE   ÚbufZdataBufZ	dataDtypeZdeviceÚ_ÚbitwidthÚctypeÚidxÚtruthÚvalr   r   r   Útest_bufferê   s4   
üûõ	r„   z indices_type, bitwidth, f_stringr0   r   ÚiÚlc                 C   sz   t  | t  ¡ ¡}t  g d¢|¡}t  d|i¡}| ¡ }| d¡}|jd dks)J ‚|jd |ks2J ‚|jd |ks;J ‚d S )N)r
   r1   Nr2   r
   r   é   r&   r'   )r   Ú
dictionaryÚstringr8   r   r   r   r/   )Zindices_typer   Zf_stringr-   r   r   r   rE   r   r   r   Útest_categorical_dtype  s   	
rŠ   )*rz   Z
hypothesisÚhZhypothesis.strategiesZ
strategiesÚstÚnumpyr9   rU   r   Zpyarrow.tests.strategiesZtestsr   rJ   ÚdeferredZ	all_typesÚgivenZarraysr   ÚmarkZparametrizeZuint8Zuint16Zuint32Zint8Zint16Zint32Zint64Zfloat16Zfloat32Zfloat64rF   rH   rM   rW   rc   rt   ru   Zpandasrv   r„   rŠ   r   r   r   r   Ú<module>   s    ÿ



ýþ



üÿýÿ%



ÿÿýÿÿ!üÿ