o
    hh$                     @   s0  d dl Z d dlZd dlmZ d dlZzd dlZW n e	y#   dZY nw d dl
Zd dlm  mZ edd Zejjeejedddd Zejj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
dfe ddfe dd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 dfe dfe d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/d0 Z)ejd1e d	d2fe d
d3fe dd4fe dd5fgd6d7 Z*dS )8    Nc                   C   s$   t jt jB t jB t jB t jB t jB S N)pastsigned_integer_typesunsigned_integer_typesfloating_types	bool_typestring_typelarge_string_type r
   r
   c/var/www/vscode/kcb/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_strfloat16float32float64unit)smsusnstz) zAmerica/New_Yorkz+07:30z-04:30	use_batchFTc
                 C   sh  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|t|d
|d	g dg dtj|tj||dd	d}|	rT| d }| }ddddddd}|	 D ](\}}|
|}|jdksuJ | dks}J |jdksJ |jd |ksJ qe|
djd |ksJ |
djd |ksJ |
djd |ksJ d S )Nr   )datetime      r   i              typedtype)TFT)r   r+   c)r*   )r   br9   defr/   r0            r   r   r:   r9   )r-   r   r   arraynpr8   	timestamp
to_batchesr   itemsget_column_by_namer   r   r   )uintuint_bwr   int_bwfloatfloat_bwnp_float_strr%   r*   r,   dtr   dt_arrr   r   columnscolumnkindcolr
   r
   r   test_mixed_dtypes:   s2   "

rS   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   rF   r   r   r   r   r   rR   r
   r
   r   test_na_floatz   s
   
rU   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   rF   pytestraises	TypeErrordescribe_categoricalrT   r
   r
   r   test_noncategorical   s   
"r[   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Tuer\   Wedr\   ThuFriSatNweekday
is_orderedis_dictionary)
pyarrowr   rA   dictionary_encoderD   r   rF   rZ   r   bool)r,   r   r   r   rR   categoricalr
   r
   r   test_categorical   s   ri   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)r0   r0      )rj      d   )FlamingoParrotCow)HorsezBrittle stars	Centipeden_legsanimalsr   r   r0      r/   )r/   )rs   )r   chunked_arrayr   combine_chunksrD   r   num_columnsnum_rows
num_chunkslistcolumn_namesselect_columnsselect_columns_by_name)r,   nr   r   r   r
   r
   r   test_dataframe   s"   
r   r   n_chunks))
   r   )   r   )r   rk   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   )rx   .0chunkr
   r
   r   	<genexpr>       z%test_df_get_chunks.<locals>.<genexpr>)	r   r   rz   rangerD   r   
get_chunkslensumr,   r   r   r   r   chunksr
   r
   r   test_df_get_chunks   s   r   c                 C   sp   t dtt|i}| r| d }| }t|d|}t||ks)J t	dd |D |ks6J d S )Nr   r   c                 s   r   r   r   r   r
   r
   r   r      r   z)test_column_get_chunks.<locals>.<genexpr>)
r   r   rz   r   rD   r   r   r   r   r   r   r
   r
   r   test_column_get_chunks   s   r   rG   r   zfloat, np_float_strc           
      C   s   g dddgg}t jg dt |d}ttj|| dtj||dtj||dd}|r6|  d }| }|	 D ]}	|	
 dksHJ |	 d	ksPJ q>|djd d	ks]J |d	jd dksiJ |d
jd d
ksuJ d S )Nr.   rj   rk   )r/   r0   r   rj   rk   r7   r5   )r   r:   r9   r   r/   r0   )rB   rA   r8   r   r   ru   rv   rD   r   get_columnsr   ry   r   )
rG   r   rJ   rL   r,   r   	arr_floatr   r   rR   r
   r
   r   test_get_columns   s"   r   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   r5   r   datar/   )r   r   r    r!   r   zBuffer at index z	 mismatch)r   r   rA   rD   r   r   get_buffersbufsizeptr__dlpack_device__ctypesc_int8c_int16c_int32c_int64	enumeratefrom_addressvalue)r   r,   r   r   r   rR   bufdataBuf	dataDtypedevice_bitwidthctypeidxtruthvalr
   r
   r   test_buffer   s4   
	r   z indices_type, bitwidth, f_stringr9   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   r:   Nr;   r   r      r/   r0   )r   
dictionarystringrA   r   r   r   r8   )indices_typer   f_stringr6   r   r   r   rR   r
   r
   r   test_categorical_dtype  s   	
r   )+r   
hypothesishhypothesis.strategies
strategiesstrW   numpyrB   ImportErrorre   r   pyarrow.tests.strategiestestsr   deferred	all_typesmarkgivenarraysr   parametrizeuint8uint16uint32int8int16int32int64r"   r#   r$   rS   rU   r[   ri   r   r   r   pandasr   r   r   r
   r
   r
   r   <module>   s   






%






!