a
    Pf/0                     @   sZ  d dl Z d dlZd dlZd dlmZ d dlZd dlmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZ ejj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ddgej#de
dd e$dD e
ej%de&de
e%dedddej'dddgd d! Z(d"d# Z)d$d% Z*ej#dddgd&d' Z+dS )(    N)	Timestamp)	DataFrameHDFStoreIndex
MultiIndexSeries_testingconcat
date_range)_maybe_removeensure_clean_store)_test_decoratorsc                 C   s   t dddgi}t| | X}|jd|dd |jd|dd |djdksRJ |djdksfJ W d    n1 sz0    Y  d S )	NA      afixedformatbtable)r   r   put
get_storerZformat_type)tmp_path
setup_pathdfstore r   Z/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/pytables/test_put.pytest_format_type   s    r   c                 C   sF   d}t jt|d  t| | dd W d    n1 s80    Y  d S )Nz-format is not a defined argument for HDFStorematchr   r   )pytestraises
ValueErrorr   )r   r   msgr   r   r    test_format_kwarg_in_constructor&   s    r&   c              
   C   sB  t |^}tdtdd ttdtdtdd tdD tdd	}t	
d
dt t|d |d| |djrJ d}tjt|d |d| W d    n1 s0    Y  W d    n1 s0    Y  t	
d
d` t|d |d| |djsJ t|d |d| |djs:J W d    n1 sP0    Y  W d    n1 sp0    Y  | | }tdtdd ttdtdtdd tdD tdd	}t	
d
d |j|dd t|"}|djrJ W d    n1 s0    Y  tjt|d  |j|ddd W d    n1 sP0    Y  W d    n1 sp0    Y  t	
d
d |j|dd t|"}|djsJ W d    n1 s0    Y  |j|ddd t|"}|djsJ W d    n1 s0    Y  W d    n1 s40    Y  d S )Ng?x   )      ABCDZdtypec                 S   s   g | ]}d | qS zi-r   .0ir   r   r   
<listcomp>5       z+test_api_default_format.<locals>.<listcomp>r(   columnsindexzio.hdf.default_formatr   r   Can only append to Tablesr    df2r   c                 S   s   g | ]}d | qS r,   r   r-   r   r   r   r0   N   r1   )keyT)r7   appenddf3Zdf4)r   r   nparangereshaper   listobjectrangepdZoption_contextr   r   r   Zis_tabler"   r#   r$   r8   to_hdfr   )r   r   r   r   r%   pathr   r   r   test_api_default_format/   sN    
H

R
2P
2
rC   c              	   C   s  t | }ttjdtjdtdddd}ttjd	dt
tdtdtd	d
ddd}||d< |d d |d< |d d |d< |d d |d< |d d |d< |jd|d d dd d}tjt|d( |jd|dd  dd W d    n1 s0    Y  t|d tjt|d( |jd|dd  dd W d    n1 sP0    Y  tjt|d( |jd|dd  dd W d    n1 s0    Y  |jd|d d ddd t|d d |d  W d    n1 s0    Y  d S )N
   r+   
2020-01-01periodsr4   r   )   r)   r*   
2000-01-01rI   BrG   freqr2   r   r   zfoo/bar/bahfooz/foocr   r   r5   r    T)r8   fF)r   r8   )r   r   r:   r;   Zfloat64r
   r   randomdefault_rngstandard_normalr   r=   r>   r   r"   r#   r$   r   tmassert_frame_equal)r   r   tsr   r%   r   r   r   test_puta   s2    6
88rW   c                 C   s   t | }tdd tdD }ttd|d}t||d}||d< t|d | ||d< t	|d | tdgd	d tdD  }ttd
|d}t||d}||d< t|d | ||d< t	|d | W d    n1 s0    Y  d S )Nc                 S   s   g | ]}d | qS zI am a very long string index: r   r-   r   r   r   r0      r1   z)test_put_string_index.<locals>.<listcomp>rI   rH   )r   rK   r   r   Z$abcdefghijklmnopqrstuvwxyz1234567890c                 S   s   g | ]}d | qS rX   r   r-   r   r   r   r0      r1      )
r   r   r?   r   r:   r;   r   rT   assert_series_equalrU   )r   r   r4   sr   r   r   r   test_put_string_index   s&    
r\   c              	   C   s   t | }ttjddttdtdt	ddddd	}|j
d
|ddd t|d
 | d}tjt|d" |j
d|ddd W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   rD   r)   r*   r+   rJ   rD   rK   rL   r2   rO   r   zlibr   Zcomplib0Compression not supported on Fixed format storesr    r   r   )r   r   r:   rQ   rR   rS   r   r=   r>   r
   r   rT   rU   r"   r#   r$   )r   r   r   r%   r   r   r   test_put_compression   s    
ra   c              	   C   s   t tjddttdtdtddddd	}t	| v}d
}t
jt|d" |jd|ddd W d    n1 sv0    Y  |jd|ddd t|d | W d    n1 s0    Y  d S )Nr   r]   r*   r+   rJ   rD   rK   rL   r2   r`   r    r   r   Zbloscr_   rO   r   )r   r:   rQ   rR   rS   r   r=   r>   r
   r   r"   r#   r$   r   rT   rU   )r   r   r   r%   r   r   r   test_put_compression_blosc   s    
0rb   c              	   C   sp  t tjddttdtdtddddd	}d
|d< d|d< |d dk|d< |d dk|d< d|d< d|d< d|d< t	d
d|d< t	d
d|d< t	d
d|d< t	d
d|d< tj|j|jdd dgf< | }t| l}t|d  ttjj |d | W d    n1 s,0    Y  |d }t|| W d    n1 sb0    Y  d S )!Nr   r]   r*   r+   rJ   rD   rK   rL   r2   rN   Zobj1barobj2r   r   Zbool1Zbool2TZbool3r   Zint1Zint2Z20010102nsZ
timestamp1Z20010103Z
timestamp2Z	datetime1Z	datetime2      r   )r   r:   rQ   rR   rS   r   r=   r>   r
   r   Zas_unitnanlocr4   Z_consolidater   r   rT   Zassert_produces_warningr@   errorsZPerformanceWarningr   getrU   )r   r   r   expectedr   r   r   test_put_mixed_type   s0    

,
rm   r   r   r   r4   c                 C   s   g | ]}t |qS r   )strr-   r   r   r   r0      r1   r0   rD   r+   rE   rF   c                 C   sv   t | Z}ttjddtd|d}t|d |jd||d t	
||d  W d    n1 sh0    Y  d S )Nr   )rD   r   ZABr2   r   r   )r   r   r:   rQ   rR   rS   r=   r   r   rT   rU   )r   r   r4   r   r   r   r   r   test_store_index_types   s    

ro   c              	   C   s.  t jg dddgd}ttddd|d}||j }t	| }|
d	| tj|d	 |d
d
d |j
d|dd tj|d |d
d
d td}tjt|d$ |j
d|ddgd W d    n1 s0    Y  td}tjt|d" |j
d|dd
d W d    n1 s 0    Y  W d    n1 s@0    Y  t	| @}|d| |d| t|d t||f W d    n1 s0    Y  ttdddttdddd}||j }t	| 6}|j
d|dd tj|d |d
d
d W d    n1 s 0    Y  d S )N))r   r   )r   r   )rK   r   )rK   r   firstsecondnames   rf   r)   )r3   r   T)Zcheck_index_typeZcheck_column_typeZdf1r   r   z<cannot use a multi-index on axis [1] with data_columns ['A']r    r6   r   )r   Zdata_columnsz;cannot use a multi-index on axis [1] with data_columns Truer9   r*   rN   )name)r   from_tuplesr   r:   r;   r<   Zset_axisr4   Zto_numpyr   r   rT   rU   reescaper"   r#   r$   r8   r	   r   r=   )r   r4   r   rl   r   r%   r   r   r   test_column_multiindex   s>    

2
R
8&
ry   c              	   C   s8  t | }ddd}t|d ttdddg| d}|d| t|d| t|d ttdddg|g dd}|d| t|d| t|d	 t	td
|g dd}|d	| t	td
|g dd}t
|d	| t|d ttdddg|g dd}d}tjt|d |d| W d    n1 s\0    Y  t|d ttdddg|g dd}tjt|d |d| W d    n1 s0    Y  t|d ttdddg|g dd}|d| t|d| W d    n1 s*0    Y  d S )Nc                 S   s*   t dd}tj|tdtdg| d}|S )Nz
2013-12-01z
2013-12-02r   rf   rr   )r
   r   Zfrom_productr?   )rs   Zdtimir   r   r   
make_index.  s    
z)test_store_multiindex.<locals>.make_indexr   )rt   r   r   r   r2   )dateNNserrt   rH   )r|   Zlevel_1Zlevel_2)r|   r   tzBduplicate names/columns in the multi-index when storing as a tabler    )r|   r|   r|   )r|   r[   r~   )N)r   r   r   r:   Zzerosr8   rT   rU   selectr   rZ   r"   r#   r$   )r   r   r{   r   r}   Zxpr%   r   r   r   test_store_multiindex)  sX    






,

,

r   c                 C   s\   t tjddtjddddd}| | }|j|dd	|d
 t|d}t	
|| d S )Nr   )   r   Z20220101Mr   )rM   rG   rH   r   w)r7   moder   )r   r:   rQ   rR   rS   r@   period_rangerA   Zread_hdfrT   rU   )r   r   r   r   rB   rl   r   r   r   test_store_periodindexj  s    r   ),rw   numpyr:   r"   Zpandas._libs.tslibsr   Zpandasr@   r   r   r   r   r   r   rT   r	   r
   Zpandas.tests.io.pytables.commonr   r   Zpandas.utilr   tdmarkZ
single_cpuZ
pytestmarkr   r&   rC   rW   r\   ra   Zskip_if_windowsrb   rm   Zparametrizer?   r;   floatr   ro   ry   r   r   r   r   r   r   <module>   s@   (

	2%


.A