a
    PŖf  ć                
   @   s*  d dl Zd dlZd dlZd dlmZ ej 	d”Z
e d”Zd dlmZ dd ejD Zedd ejD 7 Zeejg d¢d	d
g7 Zejedd eD ddd Zdd Zdd Zdd Zdd Zdd Zdd Zejdd Zdd Zej de d ”e e d!”e d"”g”g”d#d$ Z d%d& Z!dS )'é    Nz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningZpyarrow)Śpyarrow_array_to_numpy_and_maskc                 C   s   g | ]}t jg d ¢|dqS ))é   é   é   N©Śdtype©ŚpdŚarray©Ś.0r   © r   śe/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arrays/masked/test_arrow_compat.pyŚ
<listcomp>   ó    r   c                 C   s   g | ]}t jg d ¢|dqS ))g¹?gÉ?g333333Ó?Nr   r   r   r   r   r   r      r   )TFTNŚbooleanr   c                 C   s   g | ]}|j jqS r   )r   Śname)r   Śar   r   r   r      r   )ŚparamsZidsc                 C   s   | j S )zi
    Fixture returning parametrized array from given dtype, including integer,
    float and boolean
    )Śparam)Śrequestr   r   r   Śdata   s    r   c                 C   s>   t  | ”}t j| jtd dt  | jj”d}| |”s:J d S )N)Zna_value©Śtype)Śpar
   Zto_numpyŚobjectŚfrom_numpy_dtyper   Śnumpy_dtypeŚequals)r   ŚarrŚexpectedr   r   r   Śtest_arrow_array   s    
žr!   c                 C   s`   t  d| i”}t |”}| d”jt| jjks4J | 	” }|d j| jksPJ t
 ||” d S )Nr   )r	   Ś	DataFramer   ŚtableŚfieldr   Śstrr   r   Ś	to_pandasŚtmŚassert_frame_equal©r   Śdfr#   Śresultr   r   r   Śtest_arrow_roundtrip&   s    
r,   c            
      C   sĘ   dd } t jg d¢t  ” d}t jg d¢t  ” d}t jg d¢t  ” d}t j |||gg d¢”}|j| d}tj	g d¢d	d
}tj	g d¢dd
}tj	g d¢dd
}t 
|||d”}	t ||	” d S )Nc                 S   s,   t j | ”rt ” S t j | ”r(t ” S d S )N)r   ŚtypesZ
is_booleanr	   ZBooleanDtypeŚ
is_integerZ
Int64Dtype)Z
arrow_typer   r   r   Śtypes_mapper1   s    z<test_dataframe_from_arrow_types_mapper.<locals>.types_mapper)TNFr   )r   Nr   )é’’’’r   é   )ŚboolsŚintsŚ
small_ints)r/   r   r   ZInt64)r   r
   Śbool_Śint64Zint8ZRecordBatchZfrom_arraysr&   r	   ZSeriesr"   r'   r(   )
r/   Zbools_arrayZ
ints_arrayZsmall_ints_arrayZrecord_batchr+   r2   r3   r4   r    r   r   r   Ś&test_dataframe_from_arrow_types_mapper0   s    ’r7   c                 C   s   t  d| dd i”}t |”}| d”jt| jjks<J tjtj	g | d”jdg|j
d}| ” }|d j| jks|J t ||” d S )Nr   r   r   )Śschema)r	   r"   r   r#   r$   r   r%   r   r   Śchunked_arrayr8   r&   r'   r(   r)   r   r   r   Ś test_arrow_load_from_zero_chunksE   s    
’r:   c                  C   sB   t  ” } |  tjg d¢dd”}t jg d¢dd}t ||” d S )N)r   r   r   é   Nr6   r   ZUInt32r   )r	   ZUInt32DtypeŚ__from_arrow__r   r
   r'   Zassert_extension_array_equal)r   r+   r    r   r   r   Śtest_arrow_from_arrow_uintS   s    r=   c                 C   s   t  d| i”}t |”}| dd ” ” }|jdd  jdd}t 	||” | 
| d ”}t |”}| dd ” ” }|jdd  jdd}t 	||” d S )Nr   r   T)Zdropr   )r	   r"   r   r#   Śslicer&   ZilocZreset_indexr'   r(   Zfillna)r   r*   r#   r+   r    Zdf2r   r   r   Śtest_arrow_sliced^   s    

r?   c                 C   sR   t  | ”}t |”}tjg d¢|d}t jg d¢|d}t  g d¢”}||||fS )zt
    Fixture returning actual and expected dtype, pandas and numpy arrays and
    mask from a given numpy dtype
    )r   r   r   Nr   )r   r   r   r   )TTTF)Śnpr   r   r   r
   )Zany_real_numpy_dtypeŚnp_dtypeZpa_typeŚpa_arrayŚnp_expectedŚmask_expectedr   r   r   Śnp_dtype_to_arrayso   s    

rE   c                 C   s¼  | \}}}}t ||\}}t |dd |” t ||” | ” d }| ” d }| ” d  ” }	t |	d ”}
tjj|j	t
|||
g|jd}| ”  t ||\}}t |dd |” t ||” d|j	jd  }t ||	 ”}t d”}tjj|j	t
|||g|jd d}| ”  t ||\}}t |dd |” t ||” tjg |d	}tjg tjd	}tjj|j	d||g|jd}| ”  t ||\}}t |dd |” t ||” dS )
a&  
    Test conversion from pyarrow array to numpy array.

    Modifies the pyarrow buffer to contain padding and offset, which are
    considered valid buffers by pyarrow.

    Also tests empty pyarrow arrays with non empty buffers.
    See https://github.com/pandas-dev/pandas/issues/40896
    Nr   r   r   ó    )r   ŚlengthŚbuffersŚoffseté   ó   r   )r   r'   Zassert_numpy_array_equalrH   Z
to_pybytesr   Z	py_bufferZArrayZfrom_buffersr   ŚlenrI   ŚvalidateZ	bit_widthr@   r
   r5   )rE   rA   rB   rC   rD   r   ŚmaskZmask_bufferZdata_bufferZdata_buffer_bytesZdata_buffer_trailZpa_array_trailrI   Zdata_buffer_offsetZmask_buffer_offsetZpa_array_offsetZnp_expected_emptyZmask_expected_emptyr   r   r   Ś$test_pyarrow_array_to_numpy_and_mask   sV    
ü
üürO   r   é
   r;   é   c                 C   s0   | j  |”}| ”  ” sJ t|dks,J d S )NrP   )r   r<   ZisnaŚallrL   )r   r   Śresr   r   r   Śtest_from_arrow_nullĄ   s    rT   c                 C   sN   t  | ” d”}tjtd d | j |” W d    n1 s@0    Y  d S )NŚstring)Śmatch)r   r
   ŚcastŚpytestZraisesŚ	TypeErrorr   r<   )r   r   r   r   r   Śtest_from_arrow_type_errorÉ   s    rZ   )"Śnumpyr@   rX   Zpandasr	   Zpandas._testingZ_testingr'   ŚmarkŚfilterwarningsZ
pytestmarkZimportorskipr   Z%pandas.core.arrays.arrow._arrow_utilsr   ZALL_INT_EA_DTYPESZarraysZFLOAT_EA_DTYPESr
   Zfixturer   r!   r,   r7   r:   r=   r?   rE   rO   ZparametrizeZnullsr9   rT   rZ   r   r   r   r   Ś<module>   s6   ’

	

?$’
