a
    é´«jâ'  ã                   @   sx   d Z ddlZddlZddlmZmZ ddlZddl	m
Z ddlmZmZ ej d¡Ze d¡ZejjG dd„ dƒƒZdS )	z test feather-format compat é    N)Úpa_version_under18p0Úpa_version_under19p0)Úread_featherÚ
to_featherz=ignore:Passing a BlockManager to DataFrame:DeprecationWarningÚpyarrowc                   @   sÊ   e Zd Zdd„ Zdd„ Zdi fdd„Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejjejjdd„ ƒƒZdd„ Zd d!„ Zd"d#„ Zd$d%„ Zejjed&d'�d(d)„ ƒZdS )*ÚTestFeatherc              	   C   sd   t j||d��B t ¡ �}t||ƒ W d   ƒ n1 s80    Y  W d   ƒ n1 sV0    Y  d S )N©Úmatch)ÚpytestÚraisesÚtmÚensure_cleanr   )ÚselfÚdfÚexcÚerr_msgÚpath© r   ú[/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/io/test_feather.pyÚcheck_error_on_write   s    
z TestFeather.check_error_on_writec              	   C   s`   t  t¡�B t  ¡ �}t||ƒ W d   ƒ n1 s40    Y  W d   ƒ n1 sR0    Y  d S ©N)r   Zexternal_error_raisedÚ	Exceptionr   r   )r   r   r   r   r   r   Úcheck_external_error_on_write!   s    
z)TestFeather.check_external_error_on_writeNc                 K   sj   |d u r|  ¡ }t ¡ �>}t||fi |¤Ž t|fi |¤Ž}t ||¡ W d   ƒ n1 s\0    Y  d S r   )Úcopyr   r   r   r   Úassert_frame_equal)r   r   ÚexpectedÚwrite_kwargsZread_kwargsr   Úresultr   r   r   Úcheck_round_trip)   s    
zTestFeather.check_round_tripc                 C   sD   d}t  g d¢¡ddt  d¡t g d¢¡fD ]}|  |t|¡ q,d S )Nz'feather only support IO with DataFrames©é   é   é   r    ZfooÚ20130101)ÚpdÚSeriesÚ	TimestampÚnpÚarrayr   Ú
ValueError)r   ÚmsgÚobjr   r   r   Ú
test_error4   s    ûzTestFeather.test_errorc                 C   s<  t  tdƒttddƒƒt dd¡ d¡tjddd	d
�dtjdgg d¢dtjdgt  tdƒ¡t j	tt j
ddd�ƒd d�t j	tt j
dddd�ƒd d�t  d¡t jt  d¡gt j	tt j
dddd�ƒd d�dœ¡}t jdddd�|d< t jddd�|d< t  ddd¡|d< |jjjjdk�sJ ‚| ¡ }d |jd < | j||d!� d S )"NÚabcr    é   r"   é   Úu1g      @g      @Zfloat64©Údtypeg      ð?©TFTTFr#   )Úperiods)Úfreqz
US/Eastern)r4   ÚtzZ20130103Úns)r4   r5   )ÚstringÚintZuintÚfloatZfloat_with_nullÚboolÚbool_with_nullÚcatÚdtÚdttzZdt_with_nullZdtnsZ2013ÚM)r5   r4   r4   z1 dayZ
timedeltasr   Z	intervals)r    r<   )r   )r$   Ú	DataFrameÚlistÚranger'   ÚarangeÚastypeÚnanZCategoricalZDatetimeIndexZ
date_ranger&   ZNaTZperiod_rangeZtimedelta_rangeZinterval_ranger?   r2   r6   Úzoner   Úlocr   ©r   r   r   r   r   r   Ú
test_basic?   s@    

ÿþýÿëÿ
zTestFeather.test_basicc                 C   s2   t jt d¡ dd¡tdƒd� ¡ }|  |¡ d S )Né   r.   r"   Zaaa©Úcolumns)r$   rA   r'   rD   ÚreshaperB   r   r   ©r   r   r   r   r   Útest_duplicate_columnse   s    $z"TestFeather.test_duplicate_columnsc              	   C   sP   t  tdƒttddƒƒtdƒttddƒƒdœ¡}ddg}| j||| |d	� d S )
Nr-   r    r.   Zxyzé   )Úcol1Zcol2Úcol3Zcol4rR   rS   )r   rM   )r$   rA   rB   rC   r   )r   r   rM   r   r   r   Útest_read_columnsk   s    üÿzTestFeather.test_read_columnsc                 C   sB   t  ddgddgddgdœ¡}|dd	g }| j||dd	gd
� d S )Nr    r!   ÚxÚyTF)ÚAÚBÚCrX   rW   rL   )r$   rA   r   rI   r   r   r   Ú!test_read_columns_different_orderx   s    z-TestFeather.test_read_columns_different_orderc                 C   s    t  dg d¢i¡}|  |¡ d S )NÚa)r[   r    ç       @)r$   rA   r   rO   r   r   r   Útest_unsupported_other~   s    z"TestFeather.test_unsupported_otherc                 C   s4   t  dt d¡i¡}| j|dd� | j|dd� d S )NrW   i † T)Zuse_threadsF)r$   rA   r'   rD   r   rO   r   r   r   Útest_rw_use_threadsƒ   s    zTestFeather.test_rw_use_threadsc                 C   s`   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d� ¡ }t	 
|jt¡}t	 ||¡ d S )	Nçš™™™™™ñ?éx   ©é   r.   ÚABCDc                 S   s   g | ]}d |› �‘qS ©zi-r   ©Ú.0Úir   r   r   Ú
<listcomp>Œ   ó    z1TestFeather.test_path_pathlib.<locals>.<listcomp>rb   ©rM   Úindex)r$   rA   r'   rD   rN   ÚIndexrB   rC   Úreset_indexr   Zround_trip_pathlibr   r   r   ©r   r   r   r   r   r   Útest_path_pathlibˆ   s    ý
zTestFeather.test_path_pathlibc                 C   s`   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d� ¡ }t	 
|jt¡}t	 ||¡ d S )	Nr_   r`   ra   rc   c                 S   s   g | ]}d |› �‘qS rd   r   re   r   r   r   rh   •   ri   z3TestFeather.test_path_localpath.<locals>.<listcomp>rb   rj   )r$   rA   r'   rD   rN   rl   rB   rC   rm   r   Zround_trip_localpathr   r   r   rn   r   r   r   Útest_path_localpath‘   s    ý
zTestFeather.test_path_localpathc                 C   sX   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d� ¡ }| j	|d	d
id� d S )Nr_   r`   ra   rc   c                 S   s   g | ]}d |› �‘qS rd   r   re   r   r   r   rh   ž   ri   z9TestFeather.test_passthrough_keywords.<locals>.<listcomp>rb   rj   Úversionr    )r   )
r$   rA   r'   rD   rN   rl   rB   rC   rm   r   rO   r   r   r   Útest_passthrough_keywordsš   s    ý
z%TestFeather.test_passthrough_keywordsc                 C   s\   t |ƒ}t|dƒ�*}|j| ¡ d� t |jƒ}W d   ƒ n1 sB0    Y  t ||¡ d S )NÚrb)Úcontent)r   ÚopenZserve_contentÚreadÚurlr   r   )r   Zfeather_fileZ
httpserverr   ÚfÚresr   r   r   Útest_http_path¢   s
    (zTestFeather.test_http_pathc                    s  t  t jdtjdgdd�t jg d¢dd�t jdtjdgdd�t jg d	¢dd�g d
¢g d¢g d¢g d¢dœ¡}t ¡ �R}t||ƒ t  d|¡� t	||d�}W d   ƒ n1 s®0    Y  W d   ƒ n1 sÌ0    Y  |dk�rt
 d¡‰|rþt  ˆ ¡ ¡}nt  ˆ ¡ ¡}n
t  |¡}t  t jdtjdgdd�t jg d¢dd�t jdtjdgdd�t jg d	¢dd�t jddt jgdd�t jg d¢dd�t jg d¢|d�t jg d¢|d�dœ¡‰|dk�räddlm‰  t  ‡ ‡‡fdd„ˆjD ƒ¡‰|�rˆj t j|tjd�¡ˆ_t |ˆ¡ d S )Nr    r"   ZInt64r1   r   ç      ø?ç      @ZFloat64)r{   r\   r|   )TFNr3   )r[   ÚbÚc)r[   r}   N)r[   r}   r~   ÚdÚerx   ÚgÚhzmode.string_storage©Údtype_backendr   TFÚbooleanr   )ÚArrowExtensionArrayc                    s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T)Zfrom_pandas)r(   )rf   Úcol©r†   r   Úpar   r   Ú
<dictcomp>Ü   s   ÿz?TestFeather.test_read_feather_dtype_backend.<locals>.<dictcomp>©Zna_value)r$   rA   r%   r'   rF   r   r   r   Úoption_contextr   r
   ÚimportorskipZ
ArrowDtypeZlarge_stringr8   ÚStringDtypeZNAZpandas.arraysr†   rM   rE   r   )r   Zstring_storager„   Úusing_infer_stringr   r   r   Zstring_dtyper   rˆ   r   Útest_read_feather_dtype_backend¬   sX    øÿ

H


øÿ
þÿÿz+TestFeather.test_read_feather_dtype_backendc                 C   s2   t jdg d¢it jg d¢dd�d�}|  |¡ d S )Nr[   r   )r"   r.   é   Útest)Úname)rk   )r$   rA   rl   r   rO   r   r   r   Útest_int_columns_and_indexè   s    $z&TestFeather.test_int_columns_and_indexc              	   C   sŽ   d}t  dttddƒƒi¡}t d¡�T}| |¡ tjt	|d�� t
|dd� W d   ƒ n1 sb0    Y  W d   ƒ n1 s€0    Y  d S )	NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r9   r    r.   ztmp.featherr   Únumpyrƒ   )r$   rA   rB   rC   r   r   r   r
   r   r)   r   )r   r*   r   r   r   r   r   Útest_invalid_dtype_backendì   s    ÿ
z&TestFeather.test_invalid_dtype_backendc                 C   sÈ   |d }t jdddgid�}| |¡ t  dd¡� t|ƒ}W d   ƒ n1 sP0    Y  t jtjd�}t jdddgit jtjd�d	�}t jdddgi|t jdgt	r¬|s¬t
n|d
�d�}t ||¡ d S )Nztest_string_inference.pr[   rU   rV   )Údataúfuture.infer_stringTr‹   ©r—   r2   r1   )r—   r2   rM   )r$   rA   r   rŒ   r   rŽ   r'   rF   rl   r   Úobjectr   r   )r   Útmp_pathr�   r   r   r   r2   r   r   r   r   Útest_string_inference÷   s,    
&ÿ
ÿÿüý
z!TestFeather.test_string_inferenceznot supported before 18.0)Úreasonc                 C   sª   dd l }ddl m} |d }| d| g d¢| ¡ ¡i¡}| ||¡ t dd¡�8 t|ƒ}tj	dg d¢itj
tjd�d	�}W d   ƒ n1 s�0    Y  t ||¡ d S )
Nr   )Úfeatherzstring_view.parquetr[   )Nr}   r~   r˜   Tr‹   r™   )r   rž   Útabler(   Zstring_viewZwrite_featherr$   rŒ   r   rA   rŽ   r'   rF   r   r   )r   r›   r‰   rž   r   rŸ   r   r   r   r   r   Ú&test_string_inference_string_view_type  s    ÿ$z2TestFeather.test_string_inference_string_view_type)Ú__name__Ú
__module__Ú__qualname__r   r   r   r,   rJ   rP   rT   rZ   r]   r^   ro   rp   rr   r
   ÚmarkÚnetworkÚ
single_cpurz   r�   r”   r–   rœ   Zskipifr   r    r   r   r   r   r      s,   &		<r   )Ú__doc__r•   r'   r
   Zpandas.compat.pyarrowr   r   Zpandasr$   Zpandas._testingZ_testingr   Zpandas.io.feather_formatr   r   r¤   ÚfilterwarningsZ
pytestmarkr�   r‰   r¦   r   r   r   r   r   Ú<module>   s   ÿ
