o
    ŀgR                  	   @   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s'J ||ks-J ||ks3J t|t|ks=J t|t|ksGJ d S )Npyarrowr   ArrowIntervalTypeleftright)pytestimportorskip(pandas.core.arrays.arrow.extension_typesr   int64closedhash)par   p1p2p3 r   f/var/www/html/myenv/lib/python3.10/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|s!J |jj	|j	ks*J |jj
|  ks4J |jd| jg dd	d
sFJ |jd| jg dd	d
sXJ | dd tddD }|j|smJ | j||jd
}||s|J t jtdd | j|dd
 W d    n1 sw   Y  t jtdd | j|||  dd
 W d    d S 1 sw   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>'   s    z$test_arrow_array.<locals>.<listcomp>z&Not supported to convert IntervalArray)matchfloat64)r   r	   r
   r   pdinterval_rangearray
isinstancer   r   subtyper   storagefieldequalsrangeraises	TypeErrorr"   )r   r   	intervalsresultexpectedr   r   r   test_arrow_array   s&   

$$"r1   c                  C   s  t d} ddlm} tg d}d |d< | |}t|j|s#J |jj	|j	ks,J |jj
|  ks6J | jg ddd}| jg d	dd}|jd
|sSJ |jd|s^J dddd d ddddg}| jj|tg dd}|j|sJ d S )Nr   r   r                 ?       @      @r   )r3   Nr5   r"   r   )r4   Nr6   r   r   r3   r4   r   r5   r6   )FTF)mask)r   r	   r
   r   r   from_breaksr%   r&   r   r   r'   r"   r(   r)   r*   StructArrayfrom_pandasnp)r   r   arrr/   r   r   valsr0   r   r   r   test_arrow_array_missing6   s$   

r>   z=ignore:Passing a BlockManager to DataFrame:DeprecationWarningbreaksr2   2017r   D)periodsr   floatzdatetime64[ns])idsc           	      C   s   t d}ddlm} t| }d |d< td|i}||}t	|
dj|s+J | }t	|d jtjs:J 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)ignore_indexr   )schema)r   r	   r
   r   r   r8   r#   	DataFrametabler&   r)   r   	to_pandasdtypeIntervalDtypetmassert_frame_equalconcat_tablesconcatchunked_arraycolumnrG   )	r?   r   r   r<   dfrI   r/   table2r0   r   r   r   test_arrow_table_roundtripS   s&   
	

rU   c                 C   sz   t d}t| }d |d< td|i}||}| }|jj	d u s&J |
 }t|d jtjs5J t|| d S )Nr   r   rE   )r   r	   r   r8   r#   rH   rI   replace_schema_metadatarG   metadatarJ   r&   rK   rL   rM   rN   )r?   r   r<   rS   rI   r/   r   r   r   +test_arrow_table_roundtrip_without_metadataw   s   
	

rX   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   neither)r   )r   r   r   )rK   )r   r	   r%   r#   rL   r;   rK   __from_arrow__r   r8   rM   assert_extension_array_equalrQ   )r   r<   rK   r/   r0   r   r   r   %test_from_arrow_from_raw_struct_array   s   

r\   )numpyr;   r   pandasr#   pandas._testing_testingrM   pandas.core.arraysr   r   r1   r>   markfilterwarningsparametrize
date_rangerU   rX   r\   r   r   r   r   <module>   s6    