o
    &zh6                     @   st  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g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"dd Z#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| | -}|jd|dd |jd|dd |djdks)J |djdks3J W d    d S 1 s>w   Y  d S )	NA      afixedformatbtable)r   r   put
get_storerformat_type)tmp_path
setup_pathdfstore r   \/var/www/html/kangema/venv/lib/python3.10/site-packages/pandas/tests/io/pytables/test_put.pytest_format_type   s   "r    c                 C   sH   d}t jt|d t| | dd W d    d S 1 sw   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   s6  t |}tdtdd ttdtdd tdD d}t	d	d
: t
|d |d| |djr;J d}tjt|d |d| W d    n1 sUw   Y  W d    n1 sdw   Y  t	d	d. t
|d |d| |djsJ t
|d |d| |djsJ W d    n1 sw   Y  W d    n1 sw   Y  | | }tdtdd ttdtdd tdD d}t	d	d
K |j|dd t|}|djrJ W d    n1 sw   Y  tjt|d |j|ddd W d    n	1 sw   Y  W d    n	1 s)w   Y  t	d	d\ |j|dd t|}|djsJJ W d    n	1 sUw   Y  |j|ddd t|}|djspJ W d    n1 s{w   Y  W d    d S W d    d S 1 sw   Y  d S )Ng?x   )      ABCDc                 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   r,   r-   r   r.   r   r   r   r1   N   r2   )keyT)r8   appenddf3df4)r   r   nparangereshaper   listrangepdoption_contextr   r   r   is_tabler#   r$   r%   r9   to_hdfr   )r   r   r   r   r&   pathr   r   r   test_api_default_format/   sl   


	





 $rF   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	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 s|w   Y  t|d tjt|d |jd|dd  dd W d    n1 sw   Y  tjt|d |jd|dd  dd W d    n1 sw   Y  |jd|d d ddd t|d d |d  W d    d S 1 sw   Y  d S )N
   dtype
2020-01-01periodsr5   r   )   r*   r+   
2000-01-01rN   BrL   freqr3   r   r   zfoo/bar/bahfooz/foocr   r   r6   r!   T)r9   fF)r   r9   )r   r   r<   r=   float64r
   r   randomdefault_rngstandard_normalr   r?   r   r#   r$   r%   r   tmassert_frame_equal)r   r   tsr   r&   r   r   r   test_puta   s:   


"r]   c                 C   s   t | r}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    d S 1 syw   Y  d S )Nc                 S   r,   zI am a very long string index: r   r.   r   r   r   r1      r2   z)test_put_string_index.<locals>.<listcomp>rN   rM   )r   rP   r   r   $abcdefghijklmnopqrstuvwxyz1234567890c                 S   r,   r^   r   r.   r   r   r   r1      r2      )
r   r   r@   r   r<   r=   r   rZ   assert_series_equalr[   )r   r   r5   sr   r   r   r   test_put_string_index   s(   
"rc   c              	   C   s   t | [}ttjddt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 sJw   Y  W d    d S W d    d S 1 sbw   Y  d S )Nr   rG   r*   r+   rO   rG   rP   rQ   r3   rT   r   zlibr   complib0Compression not supported on Fixed format storesr!   r   r   )r   r   r<   rW   rX   rY   r   r?   r
   r   rZ   r[   r#   r$   r%   )r   r   r   r&   r   r   r   test_put_compression   s   

"ri   c              	   C   s   t tjddttdtddddd}t| <}d	}t	j
t|d
 |jd|ddd W d    n1 s9w   Y  |jd|ddd t|d | W d    d S 1 sZw   Y  d S )Nr   rd   r+   rO   rG   rP   rQ   r3   rh   r!   r   r   bloscrf   rT   r   )r   r<   rW   rX   rY   r   r?   r
   r   r#   r$   r%   r   rZ   r[   )r   r   r   r&   r   r   r   test_put_compression_blosc   s   

"rk   c                 C   sp   t dtddg }t| }|d| | }|d}t|| W d    d S 1 s1w   Y  d S )N   20010102nsser)	r   r   as_unitr   r   copygetrZ   ra   )r   ro   r   expectedresultr   r   r   test_put_datetime_ser   s   

"ru   c              	   C   sv  t tjddt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| <}t|d |rd ntjj}t| |d| W d    n1 sw   Y  |d}t|| W d    d S 1 sw   Y  d S ) Nr   rd   r+   rO   rG   rP   rQ   r3   rS   obj1barobj2r   r   bool1bool2Tbool3r   int1int2rm   rn   
timestamp120010103
timestamp2	datetime1	datetime2rl      r   )r   r<   rW   rX   rY   r   r?   r
   r   rp   nanlocr5   _consolidater   r   rA   errorsPerformanceWarningrZ   assert_produces_warningr   rr   r[   )r   using_infer_stringr   r   warningrs   r   r   r   test_put_mixed_type   s6   



"r   c                 C   s   t j| }tdt jdt jdg|di}t| .}t|d |d| |jt	j
u r,dnd}||}|d}t|| W d    d S 1 sIw   Y  d S )Nr   xyrH   r   strstring)rA   StringDtyper   arrayNAr   r   r   na_valuer<   r   astyperr   rZ   r[   )r   string_dtype_argumentsrI   r   r   expected_dtypers   rt   r   r   r   test_put_str_frame   s   




"r   c                 C   s   t j| }tdt jdg|d}t| .}t|d |d| |jtj	u r'dnd}|
|}|d}t|| W d    d S 1 sDw   Y  d S )Nr   r   rH   r   ro   r   r   )rA   r   r   r   r   r   r   r   r<   r   r   rr   rZ   ra   )r   r   rI   ro   r   r   rs   rt   r   r   r   test_put_str_series   s   




"r   r   r   r   r5   c                 C   s   g | ]}t |qS r   )r   r.   r   r   r   r1     s    r1   rG   rH   rJ   rK   c                 C   sx   t | .}ttjddtd|d}t|d |jd||d t	
||d  W d    d S 1 s5w   Y  d S )Nr   )rG   r   ABr3   r   r   )r   r   r<   rW   rX   rY   r?   r   r   rZ   r[   )r   r   r5   r   r   r   r   r   test_store_index_types  s   

"r   c              	   C   s~  t jg dddgd}ttddd|d}||j }t	| }|rOd	}t
jt|d
 |d| W d    n1 sAw   Y  	 W d    d S |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 sw   Y  td}t
jt|d
 |jd|ddd W d    n1 sw   Y  W d    n1 sw   Y  t	|  }|d| |d| t|d t||f W d    n1 sw   Y  ttdddttdddd}||j }t	| }|jd|dd tj|d |ddd W d    d S 1 s8w   Y  d S )N))r   r   )r   r   )rP   r   )rP   r   firstsecondnames   rl   r*   )r4   z=Saving a MultiIndex with an extension dtype is not supported.r!   r   T)check_index_typecheck_column_typedf1r   r   z<cannot use a multi-index on axis [1] with data_columns ['A']r7   r   )r   data_columnsz;cannot use a multi-index on axis [1] with data_columns Truer:   r+   rS   )name)r   from_tuplesr   r<   r=   r>   set_axisr5   to_numpyr   r#   r$   NotImplementedErrorr   rZ   r[   reescaper%   r9   r	   r   r?   )r   r   r5   r   rs   r   r&   r   r   r   test_column_multiindex"  sX   



&
$r   c              	   C   s6  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 sw   Y  t|d ttdddg|g dd}tjt|d |d| W d    n1 sw   Y  t|d ttdddg|g dd}|d| t|d| W d    d S 1 sw   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   rl   r   )r
   r   from_productr@   )r   dtimir   r   r   
make_index[  s   
z)test_store_multiindex.<locals>.make_indexr   )r   r   r   r   r3   )dateNNro   r   rM   )r   level_1level_2)r   r   tzBduplicate names/columns in the multi-index when storing as a tabler!   )r   r   r   )r   rb   r   )N)r   r   r   r<   zerosr9   rZ   r[   selectr   ra   r#   r$   r%   )r   r   r   r   ro   xpr&   r   r   r   test_store_multiindexV  s^   










$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   20220101Mr   )rR   rL   rM   r   w)r8   moder   )r   r<   rW   rX   rY   rA   period_rangerD   read_hdfrZ   r[   )r   r   r   r   rE   rs   r   r   r   test_store_periodindex  s   r   )/r   numpyr<   r#   pandas._libs.tslibsr   pandasrA   r   r   r   r   r   r   rZ   r	   r
   pandas.tests.io.pytables.commonr   r   pandas.utilr   tdmark
single_cpu
pytestmarkr    r'   rF   r]   rc   ri   skip_if_windowsrk   ru   r   r   r   parametrizer@   r=   floatr   r   r   r   r   r   r   r   r   <module>   sH    (


	2%



4A