o
    gh                     @   sL  d dl Z d dl mZ d dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
m  mZ d dlZd dlmZmZmZmZmZmZmZ d dlmZmZmZ ejjZejd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+dd Z,d d! Z-d"d# Z.d$d% Z/ejj0d&d'd(d)d* Z1d+d, Z2dS )-    N)	timedelta)catch_warnings)	Timestamp)	DataFrame
MultiIndexSeries_testingconcat
date_rangeread_hdf)_maybe_removeensure_clean_pathensure_clean_storez7ignore:object name:tables.exceptions.NaturalNameWarningc                 C   s  t | C}tdd# t }t|d |d|d d  |d|dd   t|d | t|d |jd|d d dd |d|dd   t|d | t|d |d	|d d  |d	|dd   t|d | t|d
 |d
|d d  |d
|dd   t|d | tddgddgddgddggd}d|d< t	j
|jd< t|d |d| t|d | ttt	jjddddt	jdtt	jjddddt	jdtt	jjddddt	jdtg dt	jddt	dd}t|d |d| t|d | t|d |jd|g dd t|d | W d    n1 s3w   Y  W d    d S W d    d S 1 sLw   Y  d S ) NTrecorddf1
   df2tableformatdf3z/df3z/df3 foozdf3 foo      r   )datatestingmixed_column)r   r   df      )highsizedtypei  i   @)l           l          @l            l            l            )u08u16u32u64indexuints)r$   r%   r&   data_columns)r   r   tmmakeTimeDataFramer   appendassert_frame_equalputr   npnanlocr   randomrandintuint8uint16uint32uint64arange)
setup_pathstorer   	uint_data r?   b/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/io/pytables/test_append.pytest_append   sh   



"


 $rA   c           	      C   s  t | }t }t }ttd}|d| |d }t|| |j	d u s+J |d| |d }t|| |j	d u sBJ d|_	|d| |d }t|| |j	|j	ks]J ||dk }|
dd}t|| ||dk|jd	k @  }|
dd
}t|| ttjdddgd}tt||d< d|d< d|jdddf< |jddgdd | }|jd|_|d| t|d | W d    d S 1 sw   Y  d S )Nd   sstsfoons<   zfoo>60F   Z   zfoo>70 and index<90r   r   AcolumnsBCbar   Tinplacer   mi)r   r-   makeStringSeriesmakeTimeSeriesr   r2   r;   r/   assert_series_equalnameselectr)   r   r5   randnlenr4   	set_indexstack	droplevel)	r<   r=   rC   rD   rF   resultexpectedrS   sr?   r?   r@   test_append_seriese   sB   
"ra   c                 C   s  t | }tttjddtjdtjdddtdtdddd	d	d
t	dd}t
|d tj|jd	dg df< |d|d d  |d|dd   t|d | | }tj|jd d df< t
|d |d|d d  |d|dd   t|d | | }tj|jd d df< t
|d |d|d d  |d|dd   t|d | | }tj|jd d df< t
|d |d|d d  |d|dd   t|d | W d    d S 1 sw   Y  d S )N   int32rE   rO   20010101  r   r   r   )rJ   A1A2rM   rN   DEr(   r      )rf   rM   rh   ri   r   rf   rg   r   ri   r   )r   r   r   r2   r5   rY   astyper   datetimer;   r   r3   r4   r/   r-   r0   copy)r<   r=   r   r   r   r   r?   r?   r@   test_append_some_nans   sH   


	



"rn   c                 C   sx  t | }ttjdtjddtdd}tj|jddd d f< t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d |d
d   t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | tdd t|d |	d|d d  |	d|dd   t
|d | tdd t|d |	d|d d  |	d|dd   t
|d |d
d   ttjdtjddddtdd}tj|jddd d f< t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | ttjdtjdddtdtddddddtdd}tj|jddd d f< t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | W d    d S 1 sw   Y  d S )Nrb   )rf   rg   r(   r   rj   r   r   T)dropnar   Fzio.hdf.dropna_tabler   df4rE   rO   )rf   rg   rM   rN   rd   re   r   r   )rf   rg   rM   rN   rh   ri   )r   r   r2   r5   rY   r;   r3   r4   r   r/   r-   r0   pd
set_optionr   rl   r<   r=   r   r?   r?   r@   test_append_all_nans   sz   












$ru   c              	   C   sL  t | }t }|jd |_t|d |jd|jd d d df dgd |d|jd d dd f  t|d | |	dd}|j
dgd}t|| |	dd}|j
dg|jd	d
 d}t|| td}tjt|d |	dd W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r   rL   )axes	columns=ArJ   rK   )rw   zindex=df.index[0:4]r      )rL   r)   zOpassing a filterable condition to a non-table indexer [Filter: Not Initialized]matchzcolumns=A and index>df.index[4])r   r-   r.   r)   
_with_freqr   r/   ilocr0   rX   reindexreescapepytestraises	TypeError)r<   r=   r   r^   r_   msgr?   r?   r@   !test_append_frame_column_oriented  s,   

$"r   c              	   C   sb  t | x}tdD ]k}ttjddtdd}td|d< |d  |d 7  < tdgt| dd|d< tdgt| d	d|d	< |d d
krX|d= tdgt| dd|d< |d d
krg|	d}||d< |j
ddd |d| q	W d    n1 sw   Y  t | }ttjddtddd}tdgt| dd|d< tdgt| d	d|d	< |d| tdgt| d	d|d< td}tjt|d |d| W d    n1 sw   Y  tdgt| dd|d< td}tjt|d |d| W d    n1 sw   Y  W d    d S W d    d S 1 s*w   Y  d S )Nr   r   ABrK   r)   r   int64r"   int16r   rP   rJ   TrQ   r   float64)rL   r#   int16_2zCcannot match existing table structure for [int16] on appending datary         ?float_3zAcannot match existing table structure for [A,B] on appending data)r   ranger   r2   r5   rY   listr   rZ   popr[   r/   r~   r   r   r   
ValueError)r<   r=   ir   ar   r?   r?   r@   )test_append_with_different_block_ordering6  sN   


 $r   c              
      s.  t |  tddx  fdd}tddgddgg} d	| t d	| |d	d
d tddgddgg} d	| t||g}t d	| |d	d
d tddgddgg} jd|ddid t d| |dd
d  d| tddgddgg}d}tj	t
|d  d| W d    n1 sw   Y  t d} jd|d ddid t d|d   jd|d dddid t d|d   jd |d!dd"id# |  jd$d%d} d | t d t||g  jd&|d d!dd"id#  d&|d  t d&t|d |d g t d' t }d(|d)< tj|j|jd*d d)f< d+|d,< tj|j|jdd- d,f< d.|d/< tj|j|jd*d  d/f<  d'|  d'}t|| W d    n	1 sw   Y  W d    n	1 sw   Y  t |   fd0d}td(d+d1td2d3}t d'  jd'|d4d5id |d'd4d5  d'jd4gksJ t d'  jd'|dgd4d5id |d'd4d5  d'jdd4gksJ t d'  jd'|dgdd5id |d'dd5 |d'd6d5  d'jdgks!J t d'  jd'|d d7 d5d  jd'|d7d  d5d t d' | tg d8d4gd9}t d' td:}tj	t
|d  jd'|d;d;d<d W d    n1 sww   Y  W d    d S W d    d S 1 sw   Y  d S )=NTr   c                    "   t  | jj|j|ksJ d S Ngetattr
get_storerr   descriptionitemsizekeyrW   r!   r=   r?   r@   	check_colm  s   z+test_append_with_strings.<locals>.check_col{   	asdqwertyiY  dggnhebbsdfbdfbdf_bigvalues_block_1rj   |   asdqyiZ  dggnhefbdfbdf_big2values2   min_itemsizedf_new
abcdefqhijabcdefghijklmnopqrtsuvwxyzzTrying to store a string with len \[26\] in \[values_block_1\] column but\nthis column has a limit of \[15\]!\nConsider using min_itemsize to preset the sizes on these columnsry   rN   rC   rM   r)   rx   ss2r,   r   ss3r      )r   r   longer)rN   ss4r   rE   stringr   rO   string2   bahstring3c                    s"   t  | jj|jsJ |d S r   r   r   r   r?   r@   r     s   "rJ   rM   r   r(   rJ      values_block_0r   )rE   rE   rE   barhr   r   rK   zBmin_itemsize has the key [foo] which is not an axis or data_columnrb   )rE   foobar)r   r   r   r/   r-   r0   rX   r	   r   r   r   makeMixedDataFramer[   rV   r1   rm   reset_indexassignr   r.   r2   r3   r4   r)   r   r   r,   r~   r   )r<   r   r   r   r_   r   r   r^   r?   r   r@   test_append_with_stringsh  s   "


M




 &$r   c                 C   s   t | 6}tdg di}|jd|d d ddid |jd|dd  ddid t|d| W d    d S 1 s=w   Y  d S )Nx)r   bcdef r   r   r   )r   r   r/   r-   r0   rX   rt   r?   r?   r@   test_append_with_empty_string  s   
"r   c           	   	      s  t | Ή t }d|jd|jdf< t d  jd|d d dgd  d|dd   t d |  j	j
jjjjjdu sEJ  j	j
jjjjjdu sRJ  dd}||jdk }t||  dd	}|j|jd
d  d}||jdk }t|| | }d|d< tj|j|jdd
 df< d|j|jdd df< t d  jd|dgd  dd}||jdk }t||  fdd}W d    n1 sw   Y  t | K t d  jd|dgddid |ddd t d  jd|dgdd |ddd t d  jd|dgddid |ddd W d    n	1 s-w   Y  t | : d|d< d|d< d|d< t d  jd|ddgdddd d |ddd |ddd |dd!d W d    n	1 stw   Y  t |  | }d|jd|jd"f< d#|jd|jdf< d|d< |jd}tj|jdd
|f< d|jdd|f< d|d< |jd}tj|jdd|f< d|jd$d%|f< t d  jd|g d&d  dd'}||jdk|jdk@ |jdk@ |jdk @  }tj||d(d)  dd*}||jdk|jd+k@  }t|| W d    n	1 s(w   Y  t |  | }d|d< tj|j|jd
d df< d|j|jd$d, df< d+|d< td-|d.< |jdd/}tj|j|jd0d g d1f< t d2  jd2|g d3d  d2d}||jdk }t||  d2g d4}||jdk|jdk@ |jdk@  }tj||d(d) W d    n	1 sw   Y  t |  tjd5 td6d%d7}t tj!d%d0|g d8d9}d|d< tj|j|jd
d df< d|j|jd$d, df< |jd d dd:gf " |jd d dd:gf< d+|d<  jd2|g d;d  d2d}||jdk }t||  d2g d<}||jdk|jdk@ |jdk@  }t|| W d    d S 1 scw   Y  d S )=Nr   r   rM   r   r   r+   TB>0zB>0 and index>df.index[3]rx   r(   rE   r   r   rO   r   r   zstring='foo'c                    r   r   r   r   r   r?   r@   r     s   "z0test_append_with_data_columns.<locals>.check_col   r   r   	foobarbahr   
foobarbah1string_block1
foobarbah2string_block2(   r   )r   r   r   r   rJ   g         r   )rJ   rM   r   r   z.string='foo' and string2='foo' and A>0 and B<0F)
check_freqzstring='foo' and string2='cool'cool	   20010102rl   )rl   rP   )rJ   rM   rl   df_dc)rM   rN   r   r   rl   )B > 0C > 0zstring == fooi  z1/1/2000)periodsrJ   rM   rN   r)   rL   rN   )rM   rN   r   r   )r   r   zstring == "foo")#r   r-   r.   r|   rL   get_locr   r/   r0   _handlerootr   r   colsr)   
is_indexedrM   rX   r}   rm   r2   r3   r4   r   r   rJ   r   _convertrN   r5   seedr
   r   rY   abs)	r<   r   r^   r_   r   r   slr   r)   r?   r   r@   test_append_with_data_columns  s   



(








 

"
,"$r   c                 C   s*  t g dg dgg dg dgddgd}ttjdd	|g d
d}t| 0}|d| |d}t	|| |jdddgd}|j
ddgd}t	|| W d    n1 sZw   Y  td(}|j|ddd t|dddgd}|j
ddgd}t	|| W d    d S 1 sw   Y  d S )N)rE   rO   bazqux)onetwothree)
r   r   r   r   r   r   r   rP   rP   rP   )
r   r   r   r   r   r   r   r   r   r   rE   rO   )levelscodesnamesr   rP   r   r   rS   rJ   rM   rK   ztest.hdfr   r   r   )r   r   r2   r5   rY   r   r/   rX   r-   r0   r}   r   to_hdfr   )r<   r)   r   r=   r^   r_   pathr?   r?   r@   test_append_hierarchical  s(   



"r   c              	      s  t  2}t }|jd|dd |d}t|| |jd|dd |d}t|| W d    n1 s9w   Y   fdd}t }d	|d
< d|d< |d d|d< |d dk|d< td|d< td|d< ||tj t  s}tt	dd}|d| t
jtdd |d W d    n1 sw   Y  ttjddt	dd}|d| t|d| |d| t|d| tt	dd}|d| t|d| W d    d S 1 sw   Y  d S )Nr   r   	chunksizer   r   )expectedrowsc              	      s^   dD ]*}t  dd}|jd| |d |d}|||  W d    n1 s'w   Y  qd S )N)r   r   i  w)modeobjr   )r   r/   rX   )r   
comparatorr   r=   r^   r<   r?   r@   check  s   
ztest_append_misc.<locals>.checkrE   r   r   float322float32r   bool20130101time120130102time2ABCrK   z 'No object named df in the file'ry   rP   r   )r   r-   makeDataFramer/   rX   r0   rk   r   r   r   r   r   KeyErrorr2   r5   randr1   )r<   r=   r   r^   r   df_emptyr?   r   r@   test_append_misc  sB   



"r  c              	   C   s  t | w}t }dggt| |d< |jd tjksJ td}t	j
t|d |d| W d    n1 s;w   Y  dggt| |d< dggt| |d< t	j
t|d |d| W d    n1 slw   Y  t }ttdd	d
|jd}|t}tj|dd< ||d< |jd tjksJ d}t	j
t|d |d| W d    n1 sw   Y  d}t	j
t|d |dtd W d    n1 sw   Y  td}t	j
t|d |dttd W d    n1 sw   Y  t }|d| d|d< td}t	j
t|d |d| W d    n	1 s/w   Y  t|d td|d< |d| d|d< td}t	j
t|d |d| W d    n1 sgw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   invalidziCannot serialize the column [invalid]
because its data contents are not [string] but [mixed] object dtypery   r   invalid2invalid3re   r   r   r(   r   r   z>too many timezones in this block, create separate data columnsz(value must be None, Series, or DataFramer   z]cannot properly create the storer for: [group->df,value-><class 'pandas.core.series.Series'>]rE   zinvalid combination of [non_index_axes] on appending data [(1, ['A', 'B', 'C', 'D', 'foo'])] vs current table [(1, ['A', 'B', 'C', 'D'])]r   rO   zinvalid combination of [values_axes] on appending data [name->values_block_1,cname->values_block_1,dtype->bytes24,kind->string,shape->(1, 30)] vs current table [name->values_block_1,cname->values_block_1,dtype->datetime64,kind->datetime64,shape->None])r   r-   r  rZ   dtypesr2   object_r~   r   r   r   r   r/   r   rl   r)   rk   objectr3   r;   r   r   r   )r<   r=   r   r   r`   r?   r?   r@   test_append_raise  sr   

 G$r  c                 C   s  t tddd tdD d}|d |d  |d< tj|jd	d
df< t| }t|d |jd|dd |	d}t
|| |j	ddd}t
|| |j	ddd}t
||jd	d   |	dd}t
||jd	d   |	dd}|jdgd}t
||jdd   |	dd}|jdd  }t
||jdd   t|d |d| |	d}t
|| W d    d S 1 sw   Y  d S )Nr   c                 S   s    g | ]}t d t|dd qS )r   r   )daysseconds)r   r   ).0r   r?   r?   r@   
<listcomp>%  s    z.test_append_with_timedelta.<locals>.<listcomp>r   r   rJ   rM   rN   rP   r   r   Tr+   zC<100000)wherezC<pd.Timedelta('-3D')zC<'-3D'zC<'-500000s')subsetr   z	C<'-3.5D'r   rx   r   )r   r   r   r2   r3   r4   r   r   r/   rX   r-   r0   r|   ro   r1   )r<   r   r=   r^   r?   r?   r@   test_append_with_timedelta  s>   




"r  c              	   C   s  t  }t  jdjd}d|d< t||gdd}t| }d}tjt|d |j	d	d
gd d|dd W d    n1 s?w   Y  tjt|d |j	d d d|dd W d    n1 saw   Y  d}tjt|d |	d|d W d    n1 sw   Y  |j	d	d
gd d|dd |j
ddgddgdd}||jdk|jdk@  }t || W d    d S 1 sw   Y  d S )N{}_2rK   rO   rE   r   axisz=append_to_multiple requires a selector that is in passed dictry   rJ   rM   r   r   r   )selectorzQappend_to_multiple must have a dictionary specified as the way to split the valuer   r   zA>0r   )r  r  r   )r-   r.   renamer   r	   r   r   r   r   append_to_multipleselect_as_multiplerJ   rM   r0   )r<   r   r   r   r=   r   r^   r_   r?   r?   r@   test_append_to_multipleO  s4   
"r  c                 C   s   t  }t  jdjd}tj|jd|jddgf< t	||gdd}t
| 6}|jddgd d|dd	d
 |ddg}| }t || t |dj|dj W d    d S 1 s`w   Y  d S )Nr  rK   r   rJ   rM   r  r  r   Tr  ro   r   )r-   r.   r  r   r2   r3   r|   rL   get_indexerr	   r   r  r  ro   r0   assert_index_equalrX   r)   )r<   r   r   r   r=   r^   r_   r?   r?   r@   test_append_to_multiple_dropnaq  s   
"r#  Fz8append_to_multiple_dropna_false is not raising as failed)runreasonc              	   C   s   t  }t  jdjd}tj|jd|jddgf< t	||gdd}t
| F}|jddgd d|dd	d
 d}tjt|d |ddg W d    n1 sQw   Y  |dj|djreJ W d    d S 1 spw   Y  d S )Nr  rK   r   rJ   rM   r  )df1adf2ar&  Fr   z;Cannot select as multiple after appending with dropna=Falsery   r'  )r-   r.   r  r   r2   r3   r|   rL   r!  r	   r   r  r   r   r   r  rX   r)   equals)r<   r   r   r   r=   r   r?   r?   r@   $test_append_to_multiple_dropna_false  s   
 "r)  c              	   C   s   t tddtddtddd dd tdD dd tdD d}|jd	g }t| 0}|jd
gddgddgd|jd	g dddddd |g d}t	|| W d    d S 1 scw   Y  d S )Nr      X   c                 S      g | ]}d qS )r   r?   r  _r?   r?   r@   r        z8test_append_to_multiple_min_itemsize.<locals>.<listcomp>rb   c                 S   r,  )abcder?   r-  r?   r?   r@   r    r/  )IXNumBigNumStrLongStrr   r1  r2  r3  r4  r5  )r)   numsstrsr)   r   rB   r   )r4  r5  r2  r   )
r   r2   r;   r   r|   r   r  r  r-   r0   )r<   r   r_   r=   r^   r?   r?   r@   $test_append_to_multiple_min_itemsize  s,   

	



"r8  )3rl   r   r~   warningsr   numpyr2   r   pandas._libs.tslibsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasrr   r   r   r   r   r-   r	   r
   r   pandas.tests.io.pytables.commonr   r   r   marksingle
pytestmarkfilterwarningsrA   ra   rn   ru   r   r   r   r   r   r   r  &skip_array_manager_not_yet_implementedr  r  r  r#  xfailr)  r8  r?   r?   r?   r@   <module>   sF    $	

E//U2y 6
M1"
