U
    NZf                  
   @   s   d dl Z d dlmZ d dlmZ d dlZd dlmZ	 d dl
mZmZ e jdddZdd	 Ze jje d
de jdejddddfejdddddfgdd Zdd Zdd Zdd Zdd ZdS )    N)pa_version_under10p0)PeriodDtype)PeriodArrayperiod_arrayZpyarrowz1.0.1)Z
minversionc                  C   sv   ddl m}  | d}| d}| d}|jdks2t||ks>t||ksJtt|t|ks^tt|t|ksrtd S )Nr   ArrowPeriodTypeDM)(pandas.core.arrays.arrow.extension_typesr   freqAssertionErrorhash)r   p1p2Zp3 r   P/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/arrays/period/test_arrow_compat.pytest_arrow_extension_type   s    r   zWrong behavior with pyarrow 10)reasonz
data, freqZ2017   )periodsr   A)r   r   zA-DECc              	   C   s   ddl m} t| |d}t|}t|j|s2t|jj|ksBttj|j	dd}|j
|sbttj|t d}||std}tjt|d tj|dd W 5 Q R X tjtd	d tj||d
d W 5 Q R X d S )Nr   r   r   int64typez5Not supported to convert PeriodArray to 'double' type)matchZfloat64zdifferent 'freq'T)r
   r   r   paarray
isinstancer   r   r   Zasi8storageequalsr   pytestZraises	TypeError)datar   r   r   resultexpectedmsgr   r   r   test_arrow_array   s    	
r(   c                  C   sz   ddl m}  tdddgdd}tj|d< t|}t|j| sBt	|jj
dksRt	tjdd dgdd	}|j|svt	d S )
Nr   r         r   r   r   r   r   )r
   r   r   pdNaTr   r   r   r   r   r   r    r!   )r   arrr%   r&   r   r   r   test_arrow_array_missing>   s    

r.   c                  C   s   ddl m}  tdddgdd}tj|d< td|i}t|}t|	dj
| sVt| }t|d jtsrtt|| t||g}| }tj||gd	d
}t|| d S )Nr   r   r)   r*   r   r   r   aT)Zignore_index)r
   r   r   r+   r,   	DataFramer   tabler   fieldr   r   	to_pandasdtyper   tmassert_frame_equalZconcat_tablesconcat)r   r-   dfr1   r%   Ztable2r&   r   r   r   test_arrow_table_roundtripK   s    

r9   c                  C   s   ddl m}  tg dd}td|i}t|}t|dj	| sFt
tjtjg |dj	dg|jd}| }t|d jtst
t|| d S )Nr   r   r   r   r/   r   )schema)r
   r   r   r+   r0   r   r1   r   r2   r   r   Zchunked_arraycolumnr:   r3   r4   r   r5   r6   )r   r-   r8   r1   r%   r   r   r    test_arrow_load_from_zero_chunks^   s    
 r<   c                  C   sx   t dddgdd} tj| d< td| i}t|}| }|jjd ksLt	|
 }t|d jtsht	t|| d S )Nr)   r*   r   Hr   r/   )r   r+   r,   r0   r   r1   Zreplace_schema_metadatar:   metadatar   r3   r   r4   r   r5   r6   )r-   r8   r1   r%   r   r   r   +test_arrow_table_roundtrip_without_metadatap   s    

r?   )r"   Zpandas.compat.pyarrowr   Zpandas.core.dtypes.dtypesr   Zpandasr+   Zpandas._testingZ_testingr5   Zpandas.core.arraysr   r   Zimportorskipr   r   markZxfailZparametrizeZ
date_ranger(   r.   r9   r<   r?   r   r   r   r   <module>   s&   