o
    �¨ÊhR  ã                	   @   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   úd/var/www/html/env/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 s•w   Y  t jtdd�� | j|||  ¡ dƒd
� W d   ƒ d S 1 s¹w   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 |¡s�J ‚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    ÿýÿý