o
    d#                     @   sp   d Z ddlZddlZddlZddlmZ ddl	m
Z
mZ ddlmZmZ ejdddZejjG dd	 d	ZdS )
z test feather-format compat     N)ArrowStringArrayStringArray)read_feather
to_featherpyarrowz1.0.1)
minversionc                   @   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dd Zdd Zejjejd d!d"d#d$ Zd%d& Z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   a/var/www/html/visualizacion-main/env/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   sh   |d u r|}t   }t||fi | t|fi |}t || W d    d S 1 s-w   Y  d S r   )r   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_error-   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sJ | | d S ) Nabcr"      r$      u1g      @g      @float64dtypeg      ?TFTTFr&   periods)freqz
US/Eastern)r9   tz20130103ns)r9   r:   )stringintuintfloatfloat_with_nullboolbool_with_nullcatdtdttzdt_with_nulldtns2013M)r:   r9   r9   z1 day
timedeltasr   	intervals)r'   	DataFramelistranger*   arangeastypenanCategoricalDatetimeIndex
date_ranger)   NaTperiod_rangetimedelta_rangeinterval_rangerG   r6   r;   zoner    r   r   r   r   r   
test_basic8   s<   

zTestFeather.test_basicc                 C   s2   t jtdddtdd }| | d S )N   r1   r$   aaacolumns)r'   rN   r*   rQ   reshaperO   copyr   r\   r   r   r   test_duplicate_columns[   s   $z"TestFeather.test_duplicate_columnsc                 C   s2   t tddd }d}| |t| d S )Nr^   r1   r$   %feather must have string column names)r'   rN   r*   rQ   rb   rc   r   r,   )r   r   r-   r   r   r   test_stringify_columnsa   s   z"TestFeather.test_stringify_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col4ri   rk   )r   ra   )r'   rN   rO   rP   r    )r   r   ra   r   r   r   test_read_columnsf   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Crq   rp   r`   )r'   rN   r    )r   r   r   r   r   r   !test_read_columns_different_orders   s   z-TestFeather.test_read_columns_different_orderc                 C   s    t dg di}| | d S )Na)rt   r"          @)r'   rN   r   r\   r   r   r   test_unsupported_othery   s   z"TestFeather.test_unsupported_otherc                 C   s4   t dtdi}| j|dd | j|dd d S )Nrp   i T)use_threadsF)r'   rN   r*   rQ   r    r\   r   r   r   test_rw_use_threads~   s   zTestFeather.test_rw_use_threadsc                 C   s   t dg di}| | d}g dt jdddtdg d	t jg d
fD ]}||_| |t	| q(g d|_d|j_
d}| |t	| g d|_t jdg|_d}| |t	| d S )Nrp   r!   zsfeather does not support serializing .* for the index; you can \.reset_index\(\) to make the index into column\(s\))r#   r$   r1   r&   r$   r8   r0   )r"   r$   r1   )rt   r"   )rt   r#   )br"   )r   r"   r#   r%   z=feather does not serialize index meta-data on a default indexry   re   )r'   rN   r    rV   rO   
MultiIndexfrom_tuplesindexr   r,   namera   )r   r   r-   r}   r   r   r   test_write_with_index   s(   


z!TestFeather.test_write_with_indexc                 C   *   t   }t |jt}t || d S r   )r   makeDataFramereset_indexround_trip_pathlibr   r   r   r   r   r   r   r   r   test_path_pathlib      zTestFeather.test_path_pathlibc                 C   r   r   )r   r   r   round_trip_localpathr   r   r   r   r   r   r   test_path_localpath   r   zTestFeather.test_path_localpathc                 C   s"   t   }| j|ddid d S )Nversionr"   )r   )r   r   r   r    r\   r   r   r   test_passthrough_keywords   s   z%TestFeather.test_passthrough_keywordskhttps://raw.githubusercontent.com/pandas-dev/pandas/main/pandas/tests/io/data/feather/feather-0_3_1.featherT)urlcheck_before_testc                 C   s$   d}t |}t |}t|| d S )Nr   )r   r   r   )r   feather_filer   r   resr   r   r   test_http_path   s
   zTestFeather.test_http_pathc                    s   t d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}|dkrZttjg dtj	d}ttjddtj
gtj	d}ntg d}tg d}t )}t|| td| t||d}W d    n1 sw   Y  W d    n1 sw   Y  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||d|dkrddlm  t fddjD t| d S )Nr   r"   r$   Int64r5   r!         ?      @Float64)r   ru   r   )TFNr7   )rt   rz   c)rt   rz   N)rt   rz   r   defghpythonrt   rz   zmode.string_storagedtype_backendTFbooleanr   )ArrowExtensionArrayc                    s$   i | ]}| j | d dqS )T)from_pandas)r+   ).0colr   r   par   r   
<dictcomp>   s    z?TestFeather.test_read_feather_dtype_backend.<locals>.<dictcomp>)r   importorskipr'   rN   r(   r*   rS   r   r+   object_NAr   r   r   r   option_contextr   pandas.arraysr   ra   r   )r   string_storager   r   string_arraystring_array_nar   r   r   r   r   test_read_feather_dtype_backend   sV   


z+TestFeather.test_read_feather_dtype_backendc              	   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'   rN   rO   rP   r   r   r   r   r   r,   r   )r   r-   r   r   r   r   r   test_invalid_dtype_backend   s   
"z&TestFeather.test_invalid_dtype_backend)__name__
__module____qualname__r   r   r    r/   r]   rd   rf   rm   rs   rv   rx   r   r   r   r   r   marknetworkr   r   r   r   r   r   r   r   r      s0    
#
6r   )__doc__r   r*   r   pandasr'   pandas._testing_testingr   pandas.core.arraysr   r   pandas.io.feather_formatr   r   r   r   r   
single_cpur   r   r   r   r   <module>   s    