U
    ct                  	   @   s   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
 e jdddZdd Z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)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rJtt|t|ks^tt|t|krrt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-g7fro6k3/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 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+   dfr/   r#   Ztable2r$   r   r   r   test_arrow_table_roundtripH   s    

r7   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)   r.   r   r/   r   r0   r   r   Zchunked_arraycolumnr8   r1   r2   r   r3   r4   )r   r+   r6   r/   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*   r.   r   r/   Zreplace_schema_metadatar8   metadatar   r1   r   r2   r   r3   r4   )r+   r6   r/   r#   r   r   r   +test_arrow_table_roundtrip_without_metadatam   s    

r=   )r    Zpandas.core.dtypes.dtypesr   Zpandasr)   Zpandas._testingZ_testingr3   Zpandas.core.arraysr   r   Zimportorskipr   r   markZparametrizeZ
date_ranger&   r,   r7   r:   r=   r   r   r   r   <module>   s"   
