a
    PfR                  	   @   s   d dl Zd dlZd dlZd dlmZ d dlm	Z	 dd Z
dd Zdd Zejd	ejjd
g dejddddgddgddd Zejd	ejjd
g dejddddgddgddd Zdd ZdS )    N)IntervalArrayc                  C   s   t d} ddlm} ||  d}||  d}||  d}|jdksNJ ||ksZJ ||ksfJ t|t|kszJ t|t|ksJ d S )Npyarrowr   ArrowIntervalTypeleftright)pytestimportorskip(pandas.core.arrays.arrow.extension_typesr   int64closedhash)par   p1Zp2Zp3 r   k/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arrays/interval/test_interval_pyarrow.pytest_arrow_extension_type	   s    
r   c                  C   s  t d} ddlm} tjddddj}| |}t|j|sBJ |jj	|j	ksTJ |jj
|  kshJ |jd| jg dd	d
sJ |jd| jg dd	d
sJ | dd tddD }|j|sJ | j||jd
}||sJ t jtdd | j|dd
 W d    n1 s,0    Y  t jtdd( | j|||  dd
 W d    n1 st0    Y  d S )Nr   r   r         )freqr   )r            r   typer   )r   r   r   r   c                 S   s   g | ]}||d  dqS )r   r   r   r   ).0ir   r   r   
<listcomp>'       z$test_arrow_array.<locals>.<listcomp>z&Not supported to convert IntervalArray)matchfloat64)r   r	   r
   r   pdZinterval_rangearray
isinstancer   r   subtyper   storagefieldequalsrangeZraises	TypeErrorr!   )r   r   Z	intervalsresultexpectedr   r   r   test_arrow_array   s"    

$$.r-   c                  C   s  t d} ddlm} tg d}d |d< | |}t|j|sFJ |jj	|j	ksXJ |jj
|  kslJ | jg ddd}| jg d	dd}|jd
|sJ |jd|sJ dddd d ddddg}| jj|tg dd}|j|sJ d S )Nr   r   r                 ?       @      @r   )r/   Nr1   r!   r   )r0   Nr2   r   r   r/   r0   r   r1   r2   )FTF)mask)r   r	   r
   r   r   from_breaksr#   r$   r   r   r%   r!   r&   r'   r(   ZStructArrayZfrom_pandasnp)r   r   arrr+   r   r   valsr,   r   r   r   test_arrow_array_missing6   s$    

r8   z=ignore:Passing a BlockManager to DataFrame:DeprecationWarningbreaksr.   Z2017r   D)Zperiodsr   floatzdatetime64[ns])Zidsc           	      C   s   t d}ddlm} t| }d |d< td|i}||}t	|
dj|sVJ | }t	|d jtjstJ t|| |||g}| }tj||gdd}t|| |j|jg |djdg|jd	}| }t||dd  d S )
Nr   r   r   r   aT)Zignore_indexr   )schema)r   r	   r
   r   r   r4   r"   	DataFrametabler$   r'   r   	to_pandasdtypeIntervalDtypetmassert_frame_equalZconcat_tablesconcatchunked_arraycolumnr=   )	r9   r   r   r6   dfr?   r+   Ztable2r,   r   r   r   test_arrow_table_roundtripS   s&    	


rI   c                 C   sz   t d}t| }d |d< td|i}||}| }|jj	d u sLJ |
 }t|d jtjsjJ t|| d S )Nr   r   r<   )r   r	   r   r4   r"   r>   r?   Zreplace_schema_metadatar=   metadatar@   r$   rA   rB   rC   rD   )r9   r   r6   rH   r?   r+   r   r   r   +test_arrow_table_roundtrip_without_metadataw   s    	


rK   c                  C   s   t d} | ddddddg}tjtddd}||}tj	tjg d	dd
dd}t
|| || |g}t
|| d S )Nr   r   r   r   r   r   Zneither)r   )r   r   r   )rA   )r   r	   r#   r"   rB   r5   rA   Z__from_arrow__r   r4   rC   Zassert_extension_array_equalrF   )r   r6   rA   r+   r,   r   r   r   %test_from_arrow_from_raw_struct_array   s    

rL   )numpyr5   r   Zpandasr"   Zpandas._testingZ_testingrC   Zpandas.core.arraysr   r   r-   r8   markfilterwarningsZparametrizeZ
date_rangerI   rK   rL   r   r   r   r   <module>   s4   