U
    âÇ-ePG  ã                   @   s*  d dl m Z d dlZd dlZd dlmZ d dlZd dl	m
Z d dlmZmZmZ d dlmZ zd dlZW n ek
r|   Y nX ej dddd	d
g¡ej dddddg¡dd„ ƒƒZej ddgddgdfdddgdfddddgd fg¡dd„ ƒZ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g¡d%d&„ ƒƒƒƒZ#ejjd'd(„ ƒZ$ejjd)d*„ ƒZ%ejjd+d,„ ƒZ&ejjd-d.„ ƒZ'ejjej dddd	d
g¡d/d0„ ƒƒZ(ejjej d1ej!ej"g¡d2d3„ ƒƒZ)ejjd4d5„ ƒZ*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d	d
g¡ej ddddg¡ej d6d7d8d9d:g¡d;d<„ ƒƒƒƒƒƒZ,ej d6d=d8d>d:g¡d?d@„ ƒZ-ejj.dAdB„ ƒZ/dCdD„ Z0ejjdEdF„ ƒZ1ejjdGdH„ ƒZ2dS )Ié    ©ÚdatetimeN)ÚVersion)Ú_PyArrowColumnÚColumnNullTypeÚ	DtypeKind)Ú_from_dataframeÚunitÚsÚmsÚusÚnsÚtzÚ zAmerica/New_Yorkz+07:30z-04:30c              	   C   s¢   t dddƒt dddƒd g}t dtj|tj| |ddi¡}| ¡  d¡}| ¡ dksZt‚|j	d	ksht‚|j
d
ksvt‚|jd	 tjksŠt‚|jtjd	fksžt‚d S )Né×  é   é   é   ÚA©r   ©Útypeé   r   é   )ÚdtÚpaÚtableÚarrayÚ	timestampÚ__dataframe__Zget_column_by_nameÚsizeÚAssertionErrorÚoffsetÚ
null_countÚdtyper   ZDATETIMEZdescribe_nullr   ZUSE_BITMASK)r	   r   Údt_arrr   Úcol© r'   új/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/tests/interchange/test_conversion.pyÚtest_datetime'   s    "r)   Ú	test_dataÚkindZfooÚbaré   g      ø?g      @g      @é   r   r   é   c                 C   s®   t  | ¡}t|ƒ}|j|ks t‚| ¡ t| ƒks4t‚|jd |ksFt‚| ¡ dksVt‚|j	dksdt‚| 
¡ d d ksxt‚tt| ¡ ƒƒdkst‚| ¡ D ]}||ks˜t‚q˜d S )Nr   r   Zvalidity)r   r   r   Ú_colr!   r    Úlenr$   Ú
num_chunksr#   Zget_buffersÚlistZ
get_chunks)r*   r+   ÚarrZ
arr_columnÚchunkr'   r'   r(   Útest_array_to_pyarrowcolumn5   s    	
r6   c                  C   sŠ   t  ddddg¡} |  dd¡}t j| gdgd}t j|gdgd}| ¡  d¡}|jdks^t‚t| ¡ ƒ}| 	|¡sxt‚| 	|¡r†t‚d S )	Nr   r.   r   r/   r4   ©ÚnamesÚ
arr_slicedr   )
r   r   Úslicer   r   Ú
get_columnr"   r!   r   Úequals)r4   r9   r   Ztable_slicedr&   Úresultr'   r'   r(   Útest_offset_of_sliced_arrayM   s    r>   ÚuintÚintzfloat, np_floatc              	   C   sø   t tjƒt dƒk rt d¡ dddg}t tj|| dtj||dtjtj||d|ddd	dgd
œ¡}ddl	m
} ||ƒ}t 
|¡}| |¡s”t‚| ¡ }	| ¡ }
|	 ¡ |
 ¡ ks¸t‚|	 ¡ |
 ¡ ksÌt‚|	 ¡ |
 ¡ ksàt‚|	 ¡ |
 ¡ ksôt‚d S )Nú1.5.0ú&__dataframe__ added to pandas in 1.5.0r   r.   r   r   ©r$   TF)ÚaÚbÚcÚdr   ©Úfrom_dataframe)r   ÚpdÚ__version__ÚpytestÚskipr   r   r   ÚnpÚpandas.api.interchangerI   Úpir<   r!   r   Únum_columnsÚnum_rowsr2   Úcolumn_names)r?   r@   ÚfloatÚnp_floatr4   r   Úpandas_from_dataframeÚ	pandas_dfr=   Útable_protocolÚresult_protocolr'   r'   r(   Útest_pandas_roundtripf   s(    

üÿ
rZ   c                  C   s  t tjƒt dƒk rt d¡ dddg} t dt | ¡i¡}ddlm	} ||ƒ}t
 	|¡}|d  ¡ |d  ¡ kstt‚tj |d j¡sŠt‚tj |d j¡s t‚| ¡ }| ¡ }| ¡ | ¡ ksÄt‚| ¡ | ¡ ksØt‚| ¡ | ¡ ksìt‚| ¡ | ¡ kst‚d S )Nú1.6úColumn.size() bug in pandasrD   r   rF   r   rH   )r   rJ   rK   rL   rM   r   r   r   rO   rI   rP   Ú	to_pylistr!   ÚtypesÚ	is_stringr   Úis_large_stringr   rQ   rR   r2   rS   ©r4   r   rV   rW   r=   rX   rY   r'   r'   r(   Útest_pandas_roundtrip_string‘   s     


rb   c               	   C   sD  t tjƒt dƒk rt d¡ dddg} t dtj| t ¡ di¡}dd	l	m
} t tjƒt d
ƒkr"||ƒ}t 
|¡}|d  ¡ |d  ¡ kst‚tj |d j¡s¦t‚tj |d j¡s¼t‚| ¡ }| ¡ }| ¡ | ¡ ksàt‚| ¡ | ¡ ksôt‚| ¡ | ¡ ks
t‚| ¡ | ¡ ks@t‚nt t¡ ||ƒ W 5 Q R X d S )Nr[   r\   rD   r   rF   Úa_larger   r   rH   z2.0.1)r   rJ   rK   rL   rM   r   r   r   Úlarge_stringrO   rI   rP   r]   r!   r^   r`   r   r   rQ   rR   r2   rS   Úraisesra   r'   r'   r(   Ú"test_pandas_roundtrip_large_string®   s&    


rf   c               	   C   s4  t tjƒt dƒk rt d¡ dddd g} t t | ¡tj| t ¡ ddœ¡}dd	l	m
} t tjƒt d
ƒkr||ƒ}t 
|¡}|d  ¡ |d  ¡ ksšt‚tj |d j¡s°t‚tj |d j¡sÆt‚|d  ¡ |d  ¡ ksât‚tj |d j¡søt‚tj |d j¡s0t‚nt t¡ ||ƒ W 5 Q R X d S )Nr[   r\   rD   r   rF   r   )rD   rc   r   rH   ú2.0.2rc   )r   rJ   rK   rL   rM   r   r   r   rd   rO   rI   rP   r]   r!   r^   r_   r   r`   re   ÚNotImplementedError)r4   r   rV   rW   r=   r'   r'   r(   Ú)test_pandas_roundtrip_string_with_missingÓ   s$    
ÿ
ri   c               	   C   sT  t tjƒt dƒk rt d¡ ddddddddd g	} t d	t | ¡ ¡ i¡}d
dl	m
} ||ƒ}t 
|¡}|d	  ¡ |d	  ¡ ks„t‚tj |d	 j¡sšt‚tj |d	 j¡s°t‚tj |d	  d
¡jj¡sÎt‚tj |d	  d
¡jj¡sìt‚tj |d	  d
¡jj¡st‚tj |d	  d
¡jj¡s,t‚| ¡ }| ¡ }| ¡ | ¡ ksRt‚| ¡ | ¡ ksht‚| ¡ | ¡ ks~t‚| ¡ | ¡ ks”t‚| d
¡}| d
¡}|jd
 tj ks¾t‚|jd
 |jd
 ksØt‚| !¡ | !¡ ksît‚|j"|j"ks t‚|j#}	|j#}
|	d |
d ks"t‚|	d |
d ks8t‚t$|
d j%tj&ƒsPt‚d S )Nrg   z;Bitmasks not supported in pandas interchange implementationÚMonÚTueÚWedÚThuÚFriÚSatÚweekdayr   rH   Ú
is_orderedÚis_dictionaryÚ
categories)'r   rJ   rK   rL   rM   r   r   r   Údictionary_encoderO   rI   rP   r]   r!   r^   rr   r   r_   r5   Ú
dictionaryr`   Zis_int32ÚindicesZis_int8r   rQ   rR   r2   rS   r;   r$   r   ÚCATEGORICALr    r"   Údescribe_categoricalÚ
isinstancer0   ÚArray)r4   r   rV   rW   r=   rX   rY   Ú	col_tableÚ
col_resultÚdesc_cat_tableÚdesc_cat_resultr'   r'   r(   Ú!test_pandas_roundtrip_categoricaló   sB    
ÿ
  

r   c           
      C   s4  t tjƒt dƒk rt d¡ ddlm} |dddƒ|dddƒ|ddd	ƒg}t d
tj|t 	| ¡di¡}t tjƒt dƒk ršt d
tj|t 	d¡di¡}n|}ddl
m} ||ƒ}t |¡}| |¡sÊt‚| ¡ }| ¡ }	| ¡ |	 ¡ ksît‚| ¡ |	 ¡ kst‚| ¡ |	 ¡ kst‚| ¡ |	 ¡ ks0t‚d S )NrA   rB   r   r   r   r   r   r   é   rD   r   r[   r   rH   )r   rJ   rK   rL   rM   r   r   r   r   r   rO   rI   rP   r<   r!   r   rQ   rR   r2   rS   )
r	   r   r%   r   ÚexpectedrV   rW   r=   Zexpected_protocolrY   r'   r'   r(   Útest_pandas_roundtrip_datetime#  s$    
" 
r‚   rU   c                 C   s¢   t tjƒt dƒk rt d¡ tjdtjdg| d}d tdddƒtddd	ƒg}t 	||d
œ¡}t
 t
j|ddt
j|t
 d¡dd
œ¡}t |¡}| |¡sžt‚d S )NrA   rB   r   r.   rC   r   r   r   r€   )rD   r   T)Úfrom_pandasr   r   )r   rJ   rK   rL   rM   rN   r   Únanr   Ú	DataFramer   r   r   rP   rI   r<   r!   )rU   Únp_arrayZdatetime_arrayÚdfr   r=   r'   r'   r(   Ú#test_pandas_to_pyarrow_with_missingG  s    
þþ
rˆ   c               	   C   sf   t tjƒt dƒk rt d¡ tjdtjdgtjd} t 	d| i¡}t 
t¡ t |¡ W 5 Q R X d S )NrA   rB   r   r.   rC   rD   )r   rJ   rK   rL   rM   rN   r   r„   Úfloat16r…   re   rh   rP   rI   )r†   r‡   r'   r'   r(   Ú+test_pandas_to_pyarrow_float16_with_missing^  s    
rŠ   zoffset, length)r   r   )r   r.   )r   r.   )r.   r   c                 C   s(  ddl m } ddd g}	|dddƒd |dddƒg}
t tj|	| d	tj|	|d	tjtj|	|d
|dddddgddd gdd dgtj|
tj||dd	dœ¡}| ||¡}t| ¡ ƒ}| 	|¡sÀt
‚| ¡ }| ¡ }| ¡ | ¡ ksät
‚| ¡ | ¡ ksøt
‚| ¡ | ¡ kst
‚| ¡ | ¡ ks$t
‚d S )Nr   r   r   r.   r   r   r   r€   r   rC   T)r   rƒ   FrD   rF   r   )rD   rE   rF   rG   ÚeÚfÚg)r   r   r   r   rN   r   r:   r   r   r<   r!   rQ   rR   r2   rS   )r?   r@   rT   rU   r	   r   r"   Úlengthr   r4   r%   r   r=   rX   rY   r'   r'   r(   Útest_pyarrow_roundtripm  s2    
 ÿøÿr   )r   é
   )r   r   c              	   C   sp  dddddddd dg	}t  dt  |¡ ¡ i¡}| | |¡}t| ¡ ƒ}| |¡sTt‚| ¡ }| ¡ }| 	¡ | 	¡ ksxt‚| 
¡ | 
¡ ksŒt‚| ¡ | ¡ ks t‚| ¡ | ¡ ks´t‚| d¡}| d¡}|jd tjksÜt‚|jd |jd ksôt‚| ¡ | ¡ ks
t‚|j|jkst‚|j}	|j}
|	d	 |
d	 ks>t‚|	d
 |
d
 ksTt‚t|
d jt jƒslt‚d S )Nrj   rk   rl   rm   rn   ÚSunrp   r   rq   rr   rs   )r   r   r   rt   r:   r   r   r<   r!   rQ   rR   r2   rS   r;   r$   r   rw   r    r"   rx   ry   r0   rz   )r"   rŽ   r4   r   r=   rX   rY   r{   r|   r}   r~   r'   r'   r(   Ú"test_pyarrow_roundtrip_categoricalž  s0    ÿ

r’   c                  C   s    t jdgd dd} tj| t ¡ d}tj|gdgd}t| ¡ ƒ}| ¡  d¡}| ¡ dksbt	‚tj
 |d j¡sxt	‚tj
 |d j¡sŽt	‚| |¡sœt	‚d S )	Ns   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxi  0 ÚobjectrC   r   rd   r7   r   )rN   r   r   rd   r   r   r   r;   r    r!   r^   r`   r   r<   )Údatar4   r   r=   r&   r'   r'   r(   Ú#test_pyarrow_roundtrip_large_stringÁ  s    r•   c               	   C   s<   t  dddddgi¡} t t¡ | jdd W 5 Q R X d S )NrD   r   r.   r   r/   T)Znan_as_null)r   r   rL   re   ÚRuntimeErrorr   )r   r'   r'   r(   Útest_nan_as_nullÒ  s    r—   c               	   C   s    t tjƒt dƒk rt d¡ t ddddgi¡} t t¡ tj	| dd W 5 Q R X t d	d t
d
ddƒt
d
ddƒgi¡} t t¡ tj	| dd W 5 Q R X d S )NrA   rB   rD   r   g      ð?g       @F©Z
allow_copyr   r   r   r   r€   )r   rJ   rK   rL   rM   r…   re   r–   rP   rI   r   ©r‡   r'   r'   r(   Útest_allow_copy_falseØ  s    
 ÿrš   c               	   C   s  t tjƒt dƒk rt d¡ t dd ddgi¡} t t¡ tj	| dd W 5 Q R X t ddddgi¡} t t¡ tj	| dd W 5 Q R X t dddd gi¡} |  
d	¡} t t¡ tj	| dd W 5 Q R X t dddd
gi¡} |  
d	¡} t t¡ tj	| dd W 5 Q R X d S )NrA   rB   rD   FTr˜   rp   rE   ÚcategoryrF   )r   rJ   rK   rL   rM   r…   re   r–   rP   rI   Zastyper™   r'   r'   r(   Ú&test_allow_copy_false_bool_categoricalë  s     


rœ   )3r   r   ÚnumpyrN   Zpyarrowr   Zpyarrow.vendored.versionr   rL   Zpyarrow.interchangeZinterchangerP   Zpyarrow.interchange.columnr   r   r   Z"pyarrow.interchange.from_dataframer   ZpandasrJ   ÚImportErrorÚmarkZparametrizer)   r6   r>   Zuint8Zuint16Zuint32Zint8Zint16Zint32Zint64Zfloat32Zfloat64rZ   rb   rf   ri   r   r‚   rˆ   rŠ   r‰   r   r’   Zlarge_memoryr•   r—   rš   rœ   r'   r'   r'   r(   Ú<module>   s¬   
ýþ
 ÿ ÿýÿ

$

/" 
ÿ
 ÿ ÿýÿ!
"

