o
    թZh<                     @   sX  d dl Z d dl mZ d dl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 ejjZed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g dd d! Z+d"d# Z,ej-d$d% Z.d&d' Z/d(d) Z0d*d+ Z1d,d- Z2d.d/ Z3dS )0    N	timedelta)	Timestamp)	DataFrameIndexSeries_testingconcat
date_rangeread_hdf)_maybe_removeensure_clean_storetablesz!ignore::tables.NaturalNameWarningc              
   C   s  t | F}ttjddttdtdt	ddddd	}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djddddtjdttjdjddddtjdttjdjddddtjdtg dtjdd tdd!}t
|d" |d"| tj|d" |d#d$ t
|d" |jd"|g d%d& tj|d" |d#d$ W d    d S 1 sOw   Y  d S )'N   )      ABCDdtype
2000-01-01r   Bperiodsfreqcolumnsindexdf1
   df2table)formatdf3z/df3z/df3 foozdf3 foo   r   )datatestingmixed_column)r   r&   df      )highsizei  i   @)l           l          @l            l            l            )u08u16u32Zu64r   ZuintsTZcheck_index_type)r,   r-   r.   data_columns)r   r   nprandomdefault_rngstandard_normalr   listobjectr
   r   appendtmassert_frame_equalputnanlocr   ZintegersZuint8Zuint16Zuint32Zuint64arange)
setup_pathstorer'   Z	uint_data rB   [/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/io/pytables/test_append.pytest_append   sn   



"


$rD   c           	      C   s  t | }ttdtjdd tdD d}ttjdtjdtdddd	}ttd
}|d| |d }t	|| |j
d u sDJ |d| |d }t	|| |j
d u s[J d|_
|d| |d }t	|| |j
|j
ksvJ ||dk }|dd}t	|| ||dk|jdk @  }|dd}tj	||dd 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 }|jd|_|d!| tj	|d! |dd W d    d S 1 sw   Y  d S )"Nr   c                 S      g | ]}d | qS )Zi_rB   .0irB   rB   rC   
<listcomp>k       z&test_append_series.<locals>.<listcomp>)r   r   r   r   z
2020-01-01r   r/   d   sstsfoons<   zfoo>60F   Z   zfoo>70 and index<90Tr0   r   )r)   r#   Ar   r   Cbar   r)   Zinplace)Zfuture_stackmi)r   r   ranger3   float64r?   r
   r9   r:   assert_series_equalnameselectr   r   r4   r5   r6   lenr>   	set_indexstackZ	droplevel)	r@   rA   rM   rN   rP   resultexpectedrZ   srB   rB   rC   test_append_seriesh   sF   
""rf   c                 C   s  t | }tttjdddtjddtjddddtd	dtd	dd	t
dd
}t|d tj|jddg df< |d|d d  |d|dd   tj|d |dd | }tj|d< t|d |d|d d  |d|dd   tj|d |dd | }tj|d< t|d |d|d d  |d|dd   tj|d |dd | }tj|d< t|d |d|d d  |d|dd   tj|d |dd W d    d S 1 sw   Y  d S )Nr   r   Zint32rO   rW   
2001-01-01rP   
2001-01-02)rT   A1A2r   rV   DEr/   r   r      )ri   r   rk   rl   r   Tr0   ri   rj   r   rl   r"   )r   r   r   r3   r4   r5   r6   astyper   as_unitr?   r   r=   r>   r9   r:   r;   copy)r@   rA   r'   r   r   r"   rB   rB   rC   test_append_some_nans   sL   







"rq   c                 C   s
  t | }ttjddtj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j|d |dd  d	d t	|d |j
d|d d dd
 |j
d|dd  dd
 tj|d |d	d tdd) t	|d |
d|d d  |
d|dd   t|d | W d    n1 sw   Y  tdd	% t	|d |
d|d d  |
d|dd   t|d |dd   ttjddtj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j|d |d	d t	|d |j
d|d d dd
 |j
d|dd  dd
 tj|d |d	d ttjddtjddddtddt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j|d |d	d t	|d |j
d|d d dd
 |j
d|dd  dd
 tj|d |d	d W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r   )ri   rj   r/   r   rm   r'   r   T)dropnar0   r   Fio.hdf.dropna_tabler"   Zdf4rO   rW   )ri   rj   r   rV   rg   rP   rh   )ri   rj   r   rV   rk   rl   )r   r   r3   r4   r5   r6   r?   r=   r>   r   r9   r:   r;   pdoption_contextr   ro   r@   rA   r'   rB   rB   rC   test_append_all_nans   s   








 $rx   c              	   C   sv  t | }ttjddttdtdt	ddddd	}|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   r   r   r   r   r   r   r   r   r   r   )Zaxes	columns=ArT   rU   )rz   zindex=df.index[0:4]r   r   zOpassing a filterable condition to a non-table indexer [Filter: Not Initialized]matchzcolumns=A and index>df.index[4])r   r   r3   r4   r5   r6   r   r7   r8   r
   r   Z
_with_freqr   r9   ilocr:   r;   r_   reindexreescapepytestraises	TypeError)r@   rA   r'   rc   rd   msgrB   rB   rC   !test_append_frame_column_oriented  s4   

$"r   c              	   C   sj  t | z}tdD ]m}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rZ|d= tdgt	| dd	|d< |d dkri|
d}||d< |jddd |d| q	W d    n1 sw   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   )r   r   ZABrU   r   r#   Zint64r   Zint16r   rX   rT   TrY   r'   r\   )r   r   Zint16_2zCcannot match existing table structure for [int16] on appending datar{         ?Zfloat_3zAcannot match existing table structure for [A,B] on appending data)r   r[   r   r3   r4   r5   r6   r7   r   r`   popra   r9   r   r   r   r   
ValueError)r@   rA   rH   r'   ar   rB   rB   rC   )test_append_with_different_block_ordering>  sZ   


 $r   c              	      sD  t |   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g dg dt
g dtdtdddd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tjd/d0t
td1tdtd2d3d!d4d5}d6|d7< tj|j|jd8d# d7f< d9|d:< tj|j|jd#d; d:f< d<|d=< tj|j|jd8d  d=f<  d.|  d.}t|| W d    n	1 sw   Y  t |  td6d9d>td3d?}t d.  jd.|d@dAid |d.d@dA  d.jd@gksJ t d.  jd.|d!gd@dAid& |d.d@dA  d.jd!d@gksJ t d.  jd.|d!gddAid& |d.d!dA |d.dBdA  d.jd!gks,J t d.  jd.|d d dAd  jd.|dd  dAd t d. | tg dCd@gdD}t d. t dE}tjt	|d  jd.|dFdFdGd W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )HNc                    "   t  | jj|j|ksJ d S Ngetattr
get_storerr    descriptionitemsizekeyr^   r+   rA   rB   rC   	check_colu     "z+test_append_with_strings.<locals>.check_col{   Z	asdqwertyiY  ZdggnhebbsdfbdfbZdf_bigvalues_block_1rm   |   ZasdqyiZ  ZdggnhefbdfbZdf_big2values2   min_itemsizedf_newZ
abcdefqhijZ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 columnsr{   )        r   g       @g      @g      @)r   r   r   r   r   )Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5r   20130101r)   rK   )rT   r   rV   rk   rV   rM   r   r   r   Zss2Tr2   r   Zss3r       )r!   r   Zlonger)rV   Zss4r'   r   ry   r   r   r   r   r   rO   stringr#   rW   string2   ZbahZstring3rT   r   r/   rT      Zvalues_block_0)rO   rO   rO   barhr   r   rU   zBmin_itemsize has the key [foo] which is not an axis or data_columnr   )rO   Zfoobar)!r   r   r9   r:   r;   r_   r	   r   r   r   r   r8   r
   ra   r]   r<   rp   Zreset_indexZassignr   r3   r4   r5   r6   r7   r=   r>   r   r[   r   r2   r   r   )r@   r   r'   r   rd   r   r   rc   rB   r   rC   test_append_with_stringsr  s   
"


T




 "$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   r9   r:   r;   r_   rw   rB   rB   rC   test_append_with_empty_string  s   
"r   c           	   	      s  t |  ttjddttdtdt	ddddd	}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 sZJ  jjjjjjjdu sgJ  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 sBw   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 sw   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/d0  dd1}||jdk|jd2k@  }t|| W d    n	1 s=w   Y  t |  | }d|d< tj|j|jdd df< d|j|jd+d3 df< d2|d < t!d4"d5|d6< tj|j|jd7d g d8f< t d9  jd9|g d:d  d9d}||jdk }t||  d9g d;}||jdk|j#dk@ |jdk@  }tj||d/d0 W d    n	1 sw   Y  t |  t	d<d,d=}ttjdd>|g d?d@}d|d< tj|j|jdd df< d|j|jd+d3 df< |ddAg $ |ddAg< d2|d <  jd9|g dBd  d9d}||jdk }t||  d9g dC}||jdk|j#dk@ |jdk@  }t|| W d    d S 1 sgw   Y  d S )DNr   ry   r   r   r   r   r   r   r   r   r   r'   r1   TB>0zB>0 and index>df.index[3]r   r/   rO   r   r#   rW   r)   r   zstring='foo'c                    r   r   r   r   r   rB   rC   r     r   z0test_append_with_data_columns.<locals>.check_col   r   r   Z	foobarbahr   Z
foobarbah1Zstring_block1Z
foobarbah2Zstring_block2(   r   )r   r   r   r   rT   g         r   )rT   r   r   r   z.string='foo' and string2='foo' and A>0 and B<0F)Z
check_freqzstring='foo' and string2='cool'cool	   Z20010102rP   datetimerX   )rT   r   r   df_dc)r   rV   r   r   r   )B > 0C > 0zstring == fooz1/1/2000rK   )r   rX   )rT   r   rV   )r   r   rV   )r   rV   r   r   )r   r   zstring == "foo")%r   r   r3   r4   r5   r6   r   r7   r8   r
   r}   r   Zget_locr   r9   r:   r;   Z_handlerootr'   r    colsr   Z
is_indexedr   r_   r~   rp   r=   r>   r   r   rT   r   ro   rV   abs)	r@   r'   rc   rd   r   r   slr   r   rB   r   rC   test_append_with_data_columns  s   



,








 

"
"$r   c                 C   s   |}d |j _t|0}|d| |d}t|| |jdddgd}|jddgd}t|| W d    n1 s=w   Y  | d }|j|ddd t	|dddgd}|jddgd}t|| d S )	NrZ   rT   r   rU   ztest.hdfr'   r    )r   r!   )
r   r^   r   r9   r_   r:   r;   r~   Zto_hdfr   )Ztmp_pathr@   Z multiindex_dataframe_random_datar'   rA   rc   rd   pathrB   rB   rC   test_append_hierarchical  s   


r   c                 C   s   t | O}tdtdd ttdtdtdd tdD tdd	}|j	d
|dd |
d
}t|| |j	d|dd |
d}t|| W d    d S 1 sVw   Y  d S )N皙?x   r   r   r   r   c                 S   rE   zi-rB   rF   rB   rB   rC   rI     rJ   z$test_append_misc.<locals>.<listcomp>r   r   r'   r#   	chunksizer   r   )Zexpectedrows)r   r   r3   r?   reshaper   r7   r8   r[   r9   r_   r:   r;   )r@   rA   r'   rc   rB   rB   rC   test_append_misc  s   


"r   r   )r   r   i  c                 C   s   t dtdd ttdtdtdd tdD tdd	}d
|d< d|d< |d d|d< |d dk|d< t	d
d|d< t	d
d|d< t| dd}|jd||d |d}t|| W d    d S 1 spw   Y  d S )Nr   r   r   r   r   c                 S   rE   r   rB   rF   rB   rB   rC   rI     rJ   z.test_append_misc_chunksize.<locals>.<listcomp>r   r   rO   r   r   Zfloat322Zfloat32r   boolr   rP   Ztime1Z20130102Ztime2w)modeobjr   )r   r3   r?   r   r   r7   r8   r[   rn   r   ro   r   r9   r_   r:   r;   )r@   r   r'   rA   rc   rB   rB   rC   test_append_misc_chunksize  s    
"r   c              	   C   s  t | u}ttdd}|d| tjtdd |d W d    n1 s)w   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 s|w   Y  d S )	NABCrU   r'   z 'No object named df in the file'r{   r   )r   rX   r   )r   r   r7   r9   r   r   KeyErrorr_   r3   r4   r5   r:   r;   r<   )r@   rA   Zdf_emptyr'   rB   rB   rC   test_append_misc_empty_frame  s   
"r   c              	   C   s  t | }tdtdd ttdtdtdd tdD tdd	}d
ggt	| |d< |j
d tjks:J td}tjt|d |d| W d    n1 sWw   Y  d
ggt	| |d< d
ggt	| |d< tjt|d |d| W d    n1 sw   Y  tdtdd ttdtdtdd tdD tdd	}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 sw   Y  td}tjt|d |dttd W d    n	1 s8w   Y  tdtdd ttdtdtdd tdD tdd	}|d| d|d< td}tjt|d |d| W d    n	1 sw   Y  t|d td|d< |d| d |d< td!}tjt|d |d| W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )"Nr   r   r   r   r   c                 S   rE   r   rB   rF   rB   rB   rC   rI     rJ   z%test_append_raise.<locals>.<listcomp>r   r   r   invalidziCannot serialize the column [invalid]
because its data contents are not [string] but [mixed] object dtyper{   r'   Zinvalid2Zinvalid3c                 S   rE   r   rB   rF   rB   rB   rC   rI     rJ   i  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'>]c                 S   rE   r   rB   rF   rB   rB   rC   rI     rJ   rO   zinvalid combination of [non_index_axes] on appending data [(1, ['A', 'B', 'C', 'D', 'foo'])] vs current table [(1, ['A', 'B', 'C', 'D'])]r   rW   a  invalid 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[s],kind->datetime64[s],shape->None])r   r   r3   r?   r   r   r7   r8   r[   r`   ZdtypesZobject_r   r   r   r   r   r9   r   r   r   rn   r=   r   r   r   )r@   rA   r'   r   re   rB   rB   rC   test_append_raise  s   

 R$r   c                    s  t dd t  f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   rP   c                    s   g | ]
} t |d d qS )r   )dayssecondsr   rF   rN   rB   rC   rI   C  s    z.test_append_with_timedelta.<locals>.<listcomp>r   r   rT   r   rV   rX   r)   r'   Tr1   zC<100000)wherezC<pd.Timedelta('-3D')zC<'-3D'zC<'-500000s')Zsubsetr   z	C<'-3.5D'r#   r   r   )r   ro   r   r[   r3   r=   r>   r   r   r9   r_   r:   r;   r}   rr   r<   )r@   r'   rA   rc   rB   r   rC   test_append_with_timedelta;  s<   




"r   c              	   C   s  t tjddttdtdtddddd	}|	 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 sTw   Y  tjt|d |jd d d|dd W d    n1 svw   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 )Nr   ry   r   r   r   r   r   r   r   {}_2rU   rW   rO   r#   Zaxisz=append_to_multiple requires a selector that is in passed dictr{   rT   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   r3   r4   r5   r6   r   r7   r8   r
   rp   renamer!   r	   r   r   r   r   append_to_multipleselect_as_multiplerT   r   r:   r;   )r@   r   r   r'   rA   r   rc   rd   rB   rB   rC   test_append_to_multiplej  s<   
"r   c                 C   s&  t tjddttdtdtddddd	}t tjddttdtdtddddd	j	d
j
d}tj|jd|jddgf< t||gdd}t| 8}|jddgd d|ddd |ddg}| }tj||dd t|dj|dj W d    d S 1 sw   Y  d S )Nr   ry   r   r   r   r   r   r   r   r   rU   r#   rT   r   r   r   Tr   rr   r   r0   )r   r3   r4   r5   r6   r   r7   r8   r
   r   r!   r=   r}   r   get_indexerr	   r   r   r   rr   r:   r;   Zassert_index_equalr_   r   )r@   r   r   r'   rA   rc   rd   rB   rB   rC   test_append_to_multiple_dropna  s.   
"r   c              
   C   sT  t tjddttdtdtddddd	}|	 j
d
jd}tj|jd|jddgf< t||gdd}t| d}tddE |jddgd d|ddd d}tjt|d |ddg W d    n1 smw   Y  |dj|djrJ W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   ry   r   r   r   r   r   r   r   r   rU   r#   rT   r   rt   T)df1adf2ar   Fr   z,all tables must have exactly the same nrows!r{   r   )r   r3   r4   r5   r6   r   r7   r8   r
   rp   r   r!   r=   r}   r   r   r	   r   ru   rv   r   r   r   r   r   r_   r   equals)r@   r   r   r'   rA   r   rB   rB   rC   $test_append_to_multiple_dropna_false  s(    Pr   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| 2}|jd
gddgddgd|jd	g dddddd |g d}tj	||dd W d    d S 1 sew   Y  d S )Nr#      X   c                 S      g | ]}d qS )r   rB   rG   _rB   rB   rC   rI         z8test_append_to_multiple_min_itemsize.<locals>.<listcomp>r   c                 S   r   )ZabcderB   r   rB   rB   rC   rI     r   )IXNumBigNumStrLongStrr   r   r   r   r   r   )r   numsstrsr   r   rL   r   )r   r   r   r   Tr0   )
r   r3   r?   r[   r}   r   r   r   r:   r;   )r@   r'   rd   rA   rc   rB   rB   rC   $test_append_to_multiple_min_itemsize  s,   

	



"r   )4r   r   r   numpyr3   r   Zpandas._libs.tslibsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasru   r   r   r   r   r:   r	   r
   r   Zpandas.tests.io.pytables.commonr   r   markZ
single_cpuZ
pytestmarkZimportorskipr   filterwarningsrD   rf   rq   rx   r   r   r   r   r   r   r   Zparametrizer   r   Z&skip_array_manager_not_yet_implementedr   r   r   r   r   r   rB   rB   rB   rC   <module>   sF    $	


H/0V!4{	 

W/%