U
    f/eM                  
   @   s   d dl Z d dlm  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edd Zee jd	ejd
dddfejd
ddddfgdd Zedd Zedd Zedd Zedd ZdS )    N)PeriodDtype)PeriodArrayperiod_arraypyarrowz0.17.0)min_versionc                  C   sv   ddl m}  | d}| d}| d}|jdks2t||ks>t||krJtt|t|ks^tt|t|krrtd S )Nr   ArrowPeriodTypeDM)pandas.core.arrays._arrow_utilsr   freqAssertionErrorhash)r   p1p2Zp3 r   P/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/arrays/period/test_arrow_compat.pytest_arrow_extension_type   s    r   z
data, freqZ2017   )periodsr	   A)r   r   zA-DECc              	   C   s   dd l }ddlm} t| |d}||}t|j|s:t|jj|ksJt|j|j	dd}|j
|sjt|j|| d}||std}tjt|d |j|dd W 5 Q R X tjtd	d |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   r   array
isinstancer   r   r   Zasi8storageequalsr   pytestZraises	TypeError)datar   par   r   resultexpectedmsgr   r   r   test_arrow_array    s    	
r(   c                  C   s   dd l } ddlm} tdddgdd}tj|d< | |}t|j|sJt	|jj
dksZt	| jdd dgdd	}|j|s~t	d S )
Nr   r         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_missingA   s    

r.   c                  C   s   dd l } ddlm} tdddgdd}tj|d< td|i}| |}t|	dj
|s^t| }t|d jtszt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+   r,   	DataFrametabler   fieldr   r   	to_pandasdtyper   tmassert_frame_equalZconcat_tablesconcat)r$   r   r-   dfr1   r%   Ztable2r&   r   r   r   test_arrow_table_roundtripQ   s    

r9   c                  C   s   dd l } ddlm} tg dd}td|i}| |}t|dj	|sNt
| j| 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   r+   r0   r1   r   r2   r   r   Zchunked_arraycolumnr:   r3   r4   r   r5   r6   )r$   r   r-   r8   r1   r%   r   r   r    test_arrow_load_from_zero_chunksg   s    
 r<   c                  C   s   dd l } tdddgdd}tj|d< td|i}| |}| }|jjd ksTt	|
 }t|d jtspt	t|| d S )Nr   r)   r*   r   Hr   r/   )r   r   r+   r,   r0   r1   Zreplace_schema_metadatar:   metadatar   r3   r   r4   r   r5   r6   )r$   r-   r8   r1   r%   r   r   r   +test_arrow_table_roundtrip_without_metadata{   s    

r?   )r!   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandas.core.dtypes.dtypesr   Zpandasr+   Zpandas._testingZ_testingr5   Zpandas.core.arraysr   r   Z
skip_if_noZpyarrow_skipr   markZparametrizeZ
date_ranger(   r.   r9   r<   r?   r   r   r   r   <module>   s0   



