o
    Û­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   sv   t j||d��* t ¡ �}t||ƒ W d   ƒ n1 sw   Y  W d   ƒ d S W d   ƒ d S 1 s4w   Y  d S )N©Úmatch)ÚpytestÚraisesÚtmÚensure_cleanr   )ÚselfÚdfÚexcÚerr_msgÚpath© r   úY/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/io/test_feather.pyÚcheck_error_on_write   s   
ÿÿ"ÿz TestFeather.check_error_on_writec              	   C   sr   t  t¡�* t  ¡ �}t||ƒ W d   ƒ n1 sw   Y  W d   ƒ d S W d   ƒ d S 1 s2w   Y  d S ©N)r   Ú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   sl   |d u r|  ¡ }t ¡ � }t||fi |¤Ž t|fi |¤Ž}t ||¡ W d   ƒ d S 1 s/w   Y  d S r   )Úcopyr   r   r   r   Úassert_frame_equal)r   r   ÚexpectedÚwrite_kwargsÚ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"   Ú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      @Úfloat64©Údtypeg      ð?©TFTTFr&   )Úperiods)Úfreqz
US/Eastern)r8   ÚtzÚ20130103Úns)r8   r9   )ÚstringÚintÚuintÚfloatÚfloat_with_nullÚboolÚbool_with_nullÚcatÚdtÚdttzÚdt_with_nullÚdtnsÚ2013ÚM)r9   r8   r8   z1 dayÚ
timedeltasr   Ú	intervals)r"   rC   )r   )r'   Ú	DataFrameÚlistÚranger*   ÚarangeÚastypeÚnanÚCategoricalÚDatetimeIndexÚ
date_ranger)   ÚNaTÚperiod_rangeÚtimedelta_rangeÚinterval_rangerF   r6   r:   Ú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é   r1   r$   Úaaa©Úcolumns)r'   rM   r*   rP   ÚreshaperN   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 )
Nr0   r"   r1   Úxyzé   )Úcol1Úcol2Úcol3Úcol4rg   ri   )r   ra   )r'   rM   rN   rO   r    )r   r   ra   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ÚCro   rn   r`   )r'   rM   r    r\   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)rr   r"   ç       @)r'   rM   r   rc   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 )Nrn   i † T)Úuse_threadsF)r'   rM   r*   rP   r    rc   r   r   r   Útest_rw_use_threadsƒ   s   zTestFeather.test_rw_use_threadsc                 C   ó`   t jdt d¡ d¡ t  tdƒ¡t  dd„ tdƒD ƒ¡d� ¡ }t	 
|jt¡}t	 ||¡ d S )	Nçš™™™™™ñ?éx   ©é   r1   ÚABCDc                 S   ó   g | ]}d |› �‘qS ©zi-r   ©Ú.0Úir   r   r   Ú
<listcomp>Œ   ó    z1TestFeather.test_path_pathlib.<locals>.<listcomp>r{   ©ra   Úindex)r'   rM   r*   rP   rb   ÚIndexrN   rO   Úreset_indexr   Úround_trip_pathlibr   r   r   ©r   r   r   r   r   r   Útest_path_pathlibˆ   ó   ýüzTestFeather.test_path_pathlibc                 C   rw   )	Nrx   ry   rz   r|   c                 S   r}   r~   r   r   r   r   r   r‚   •   rƒ   z3TestFeather.test_path_localpath.<locals>.<listcomp>r{   r„   )r'   rM   r*   rP   rb   r†   rN   rO   r‡   r   Úround_trip_localpathr   r   r   r‰   r   r   r   Útest_path_localpath‘   r‹   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 )Nrx   ry   rz   r|   c                 S   r}   r~   r   r   r   r   r   r‚   ž   rƒ   z9TestFeather.test_passthrough_keywords.<locals>.<listcomp>r{   r„   Úversionr"   )r   )
r'   rM   r*   rP   rb   r†   rN   rO   r‡   r    rc   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 s!w   Y  t ||¡ d S )NÚrb)Úcontent)r   ÚopenÚserve_contentÚreadÚurlr   r   )r   Úfeather_fileÚ
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 ¡ �)}t||ƒ t  d|¡� t	||d�}W d   ƒ n1 sWw   Y  W d   ƒ n1 sfw   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$   ÚInt64r5   r!   ç      ø?ç      @ÚFloat64)rœ   rs   r�   )TFNr7   )rr   ÚbÚc)rr   rŸ   N)rr   rŸ   r    ÚdÚer˜   ÚgÚhzmode.string_storage©Údtype_backendr   TFÚbooleanr   )ÚArrowExtensionArrayc                    s$   i | ]}|ˆ ˆj ˆ| d d�ƒ“qS )T)Úfrom_pandas)r+   )r€   Úcol©r¨   r   Úpar   r   Ú
<dictcomp>Ü   s    ÿÿz?TestFeather.test_read_feather_dtype_backend.<locals>.<dictcomp>©Úna_value)r'   rM   r(   r*   rR   r   r   r   Úoption_contextr   r
   ÚimportorskipÚ
ArrowDtypeÚlarge_stringr=   ÚStringDtypeÚNAÚpandas.arraysr¨   ra   rQ   r   )r   Ústring_storager¦   Úusing_infer_stringr   r   r   Ústring_dtyper   r«   r   Útest_read_feather_dtype_backend¬   s^   øÿ

ÿ€þ

øÿþÿÿz+TestFeather.test_read_feather_dtype_backendc                 C   s2   t jdg d¢it jg d¢dd�d�}|  |¡ d S )Nrr   r!   )r$   r1   é   Útest)Úname)r…   )r'   rM   r†   r    rc   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¡�3}| |¡ tjt	|d�� t
|dd� W d   ƒ n1 s1w   Y  W d   ƒ d S W d   ƒ d S 1 sIw   Y  d S )	NzPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.r>   r"   r1   ztmp.featherr   Únumpyr¥   )r'   rM   rN   rO   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 s(w   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	rV|sVt
n|d
�d�}t ||¡ d S )Nztest_string_inference.prr   rl   rm   )Údataúfuture.infer_stringTr®   ©rÁ   r6   r5   )rÁ   r6   ra   )r'   rM   r   r°   r   r´   r*   rR   r†   r   Úobjectr   r   )r   Útmp_pathr¸   r   r   r   r6   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¡� t|ƒ}tj	dg d¢itj
tjd�d	�}W d   ƒ n1 sHw   Y  t ||¡ d S )
Nr   )Úfeatherzstring_view.parquetrr   )NrŸ   r    rÂ   Tr®   rÃ   )r   rÈ   Útabler+   Ústring_viewÚwrite_featherr'   r°   r   rM   r´   r*   rR   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/   r]   rd   rk   rq   rt   rv   rŠ   r�   r�   r
   ÚmarkÚnetworkÚ
single_cpurš   rº   r¾   rÀ   rÆ   Úskipifr   rÌ   r   r   r   r   r      s.    &		<r   )Ú__doc__r¿   r*   r
   Úpandas.compat.pyarrowr   r   Úpandasr'   Úpandas._testingÚ_testingr   Úpandas.io.feather_formatr   r   rÐ   ÚfilterwarningsÚ
pytestmarkr±   r¬   rÒ   r   r   r   r   r   Ú<module>   s    ÿ
