U
    _{f                     @   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 d dlmZmZ ejj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(dddd gd!d" Z)d#d$ Z*ej+d%d& Z,d'd( Z-d)d* Z.d+d, Z/d-d. Z0d/d0 Z1dS )1    N)	timedelta)catch_warnings)	Timestamp)	DataFrameSeries_testingconcat
date_rangeread_hdf)_maybe_removeensure_clean_storec                 C   sx  t | d}tddL 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dddddgt	jddt	dd }t|d! |d!| tj|d! |dd" t|d! |jd!|d#d$d%gd& tj|d! |dd" W 5 Q R X W 5 Q R X 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u32Zu64indexZuintsZcheck_index_typer"   r#   r$   data_columns)r   r   tmmakeTimeDataFramer   appendassert_frame_equalputr   npnanlocr   randomrandintZuint8Zuint16Zuint32Zuint64arange)
setup_pathstorer   Z	uint_data r7   c/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/io/pytables/test_append.pytest_append   sf    



"
   

r9   c           	   	   C   s  t | }t }t }ttd}|d| |d }t|| |j	d ksXt
|d| |d }t|| |j	d kst
d|_	|d| |d }t|| |j	|j	kst
||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| tj|d |dd W 5 Q R X d S )Nd   sstsfoons<   zfoo>60F   Z   zfoo>70 and index<90Tr'   r   r   AcolumnsBCbar   Zinplacer   mi)r   r*   ZmakeStringSeriesZmakeTimeSeriesr   r/   r4   r,   assert_series_equalnameAssertionErrorselectr&   r   r2   randnlenr1   	set_indexstackZ	droplevel)	r5   r6   r;   r<   r>   resultexpectedrJ   sr7   r7   r8   test_append_series_   s@    rV   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ddddg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 5 Q R X d S )N   Zint32r=   rG   20010101  r   r   r   )rB   A1A2rE   rF   DEr%   r      rZ   rE   r\   r]   r   Tr'   r[   r   r   )r   r   r   r/   r2   rO   astyper   datetimer4   r   r0   r1   r,   r*   r-   copy)r5   r6   r   r   r   r   r7   r7   r8   test_append_some_nans   sF    

	






rb   c                 C   s  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
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H t|d |	d|d d  |	d|dd   t
|d | W 5 Q R X 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
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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
j|d |dd t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d |dd W 5 Q R X W 5 Q R X d S )NrW   )rZ   r[   r%   r   r^   r   r   T)dropnar'   r   Fio.hdf.dropna_tabler   Zdf4r=   rG   )rZ   r[   rE   rF   rX   rY   r   r   )rZ   r[   rE   rF   r\   r]   )r   r   r/   r2   rO   r4   r0   r1   r   r,   r*   r-   pdoption_contextr   r`   r5   r6   r   r7   r7   r8   test_append_all_nans   sx    












ri   c              
   C   s  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 5 Q R X W 5 Q R X d S )Nr   r   rD   )Zaxes	columns=ArB   rC   )rj   zindex=df.index[0:4]r      )rD   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&   Z
_with_freqr   r,   ilocr-   rN   reindexreescapepytestraises	TypeError)r5   r6   r   rS   rT   msgr7   r7   r8   !test_append_frame_column_oriented  s$    
$rv   c              
   C   s  t | }tdD ]}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r|d= tdgt| dd|d< |d d
kr|	d}||d< |j
ddd |d| qW 5 Q R X 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 5 Q R X tdgt| dd|d< td}tjt|d |d| W 5 Q R X W 5 Q R X d S )Nr   r   ZABrC   r&   r   Zint64r    Zint16r   rH   rB   TrI   r   Zfloat64)rD   r!   Zint16_2zCcannot match existing table structure for [int16] on appending datarl         ?Zfloat_3zAcannot match existing table structure for [A,B] on appending data)r   ranger   r/   r2   rO   listr   rP   poprQ   r,   rp   rq   rr   rs   
ValueError)r5   r6   ir   aru   r7   r7   r8   )test_append_with_different_block_ordering*  s@    


r~   c                    s  t |  tdd  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 5 Q R X 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 5 Q R X W 5 Q R X t |  td(d+d0td1d2}t d'  jd'|d3d4id |d'd3d4  d'jd3gks^tt d'  jd'|dgd3d4id |d'd3d4  d'jdd3gkstt d'  jd'|dgdd4id |d'dd4 |d'd5d4  d'jdgkstt d'  jd'|d d6 d4d  jd'|d6d  d4d t d' | td(d(d(d7d7d7gd3gd8}t d' td9}tj	t
|d  jd'|d:d:d;d W 5 Q R X W 5 Q R X d S )<NTr   c                    s"   t  | jj|j|kstd S Ngetattr
get_storerr   descriptionitemsizerM   keyrL   r   r6   r7   r8   	check_col\  s    z+test_append_with_strings.<locals>.check_col{   Z	asdqwertyiY  ZdggnhebbsdfbdfbZdf_bigvalues_block_1r^   |   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 columnsrl   rF   r;   rE   r&   rk   Zss2r)   r   Zss3r      )r   r   Zlonger)rF   Zss4r   r=   stringr   rG   string2   ZbahZstring3rB   rE   r   r%   rB      Zvalues_block_0r   ZbarhrC   zBmin_itemsize has the key [foo] which is not an axis or data_columnrW   )r=   Zfoobar)r   r   r   r,   r*   r-   rN   r   rr   rs   r{   ZmakeMixedDataFramerQ   rK   r.   ra   Zreset_indexZassignr   r+   r/   r0   r1   r&   rx   r   r)   rM   rp   rq   )r5   r   r   r   rT   r   ru   rS   r7   r   r8   test_append_with_stringsX  s    "

 




r   c              
   C   s|   t | j}tddddddddgi}|jd	|d d
 ddid |jd	|d
d  ddid t|d	| W 5 Q R X d S )Nxr}   bcdef r   r   r   )r   r   r,   r*   r-   rN   rh   r7   r7   r8   test_append_with_empty_string  s
    
r   c           	   	      sN  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kst j	j
jjjjjdkst 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 5 Q R X t |  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 5 Q R X t | j 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 5 Q R X t | H | }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|d"dddg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 5 Q R X t | 
 | }d|d< tj|j|jd
d df< d|j|jd$d+ df< d*|d< td,|d-< tj|j|jd.d d"dd-gf< t d/  jd/|dd0ddd-gd  d/d}||jdk }t||  d/d1d2d3g}||jdk|jdk@ |jdk@  }tj||d'd( W 5 Q R X t |  tjd4 td5d%d6}t tj!d%d.|d"dd0gd7}d|d< tj|j|jd
d df< d|j|jd$d+ df< |dd0g " |dd0g< d*|d<  jd/|dd0ddgd  d/d}||jdk }t||  d/d1d2d8g}||jdk|jdk@ |jdk@  }t|| W 5 Q R X d S )9Nrw   r   rE   r   r   r(   TB>0zB>0 and index>df.index[3]rk   r%   r=   r   r   rG   r   r   zstring='foo'c                    s"   t  | jj|j|kstd S r   r   r   r   r7   r8   r     s    z0test_append_with_data_columns.<locals>.check_col   r   r   Z	foobarbahr   Z
foobarbah1Zstring_block1Z
foobarbah2Zstring_block2(   r   )r   r   r   r   rB   g         r   z.string='foo' and string2='foo' and A>0 and B<0F)Z
check_freqzstring='foo' and string2='cool'cool	   Z20010102r`   rH   df_dcrF   zB > 0zC > 0zstring == fooi  z1/1/2000)Zperiods)r&   rD   zstring == "foo")#r   r*   r+   rn   rD   Zget_locr   r,   r-   Z_handlerootr   r   colsr&   Z
is_indexedrM   rE   rN   ro   ra   r/   r0   r1   r   r   rB   r   rF   r2   seedr	   r   rO   abs)	r5   r   rS   rT   r   r   slr   r&   r7   r   r8   test_append_with_data_columns  s    









 
  ""r   c              	   C   s   |}d |j _t|V}|d| |d}t|| |jdddgd}|jddgd}t|| W 5 Q R X | d }|j|ddd t	|dddgd}|jddgd}t|| d S )	NrJ   rB   rE   rC   ztest.hdfr   r   r   )
rD   rL   r   r,   rN   r*   r-   ro   Zto_hdfr
   )Ztmp_pathr5   Z multiindex_dataframe_random_datar   r6   rS   rT   pathr7   r7   r8   test_append_hierarchicalh  s    

r   c              	   C   sl   t | Z}t }|jd|dd |d}t|| |jd|dd |d}t|| W 5 Q R X d S )Nr   r   	chunksizer   r   )Zexpectedrows)r   r*   makeDataFramer,   rN   r-   )r5   r6   r   rS   r7   r7   r8   test_append_misc}  s    


r   r   r   r   i  c              	   C   s   t  }d|d< d|d< |d d|d< |d dk|d< td|d	< td
|d< t| dd,}|jd||d |d}t || W 5 Q R X d S )Nr=   r   rw   Zfloat322Zfloat32r   bool20130101Ztime1Z20130102Ztime2w)modeobjr   )r*   r   r_   r   r   r,   rN   r-   )r5   r   r   r6   rS   r7   r7   r8   test_append_misc_chunksize  s    
r   c              
   C   s   t | }ttdd}|d| tjtdd |d W 5 Q R X ttj	
ddtdd}|d| t|d| |d| t|d| ttdd}|d| t|d| W 5 Q R X d S )	NABCrC   r   z 'No object named df in the file'rl   r   rH   r   )r   r   ry   r,   rr   rs   KeyErrorrN   r/   r2   Zrandr*   r-   r.   )r5   r6   Zdf_emptyr   r7   r7   r8   test_append_misc_empty_frame  s    
r   c              
   C   sX  t | D}t }dggt| |d< |jd tjks<tt	d}t
jt|d |d| W 5 Q R X dggt| |d< dggt| |d< t
jt|d |d| W 5 Q R X t }ttdd	d
|jd}|t}tj|dd< ||d< |jd tjkstd}t
jt|d |d| W 5 Q R X d}t
jt|d |dtd W 5 Q R X t	d}t
jt|d |dttd W 5 Q R X t }|d| d|d< t	d}t
jt|d |d| W 5 Q R X t|d td|d< |d| d|d< t	d}t
jt|d |d| W 5 Q R X W 5 Q R X d S )Nr}   invalidziCannot serialize the column [invalid]
because its data contents are not [string] but [mixed] object dtyperl   r   Zinvalid2Zinvalid3rY   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'>]r=   zinvalid combination of [non_index_axes] on appending data [(1, ['A', 'B', 'C', 'D', 'foo'])] vs current table [(1, ['A', 'B', 'C', 'D'])]r   rG   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   rP   Zdtypesr/   Zobject_rM   rp   rq   rr   rs   rt   r,   r   r`   r&   r_   objectr0   r4   r{   r   r   )r5   r6   r   ru   rU   r7   r7   r8   test_append_raise  s^    
 
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 5 Q R X d S )Nr   c                 S   s    g | ]}t d t|dd qS )r   r   )daysseconds)r   r   ).0r|   r7   r7   r8   
<listcomp>  s    z.test_append_with_timedelta.<locals>.<listcomp>r   r   rB   rE   rF   rH   r   r   Tr(   zC<100000)wherezC<pd.Timedelta('-3D')zC<'-3D'zC<'-500000s')Zsubsetr   z	C<'-3.5D'r   rk   r   )r   r   rx   r/   r0   r1   r   r   r,   rN   r*   r-   rn   rc   r.   )r5   r   r6   rS   r7   r7   r8   test_append_with_timedelta  s<    



r   c              
   C   s4  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 5 Q R X tjt|d |j	d d d|dd W 5 Q R X d}tjt|d |	d|d W 5 Q R X |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 5 Q R X d S )N{}_2rC   rG   r=   r   Zaxisz=append_to_multiple requires a selector that is in passed dictrl   rB   rE   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   rr   rs   r{   append_to_multipleselect_as_multiplerB   rE   r-   )r5   r   r   r   r6   ru   rS   rT   r7   r7   r8   test_append_to_multiple.  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
| d}|jddgd d|dd	d
 |ddg}| }t j||d	d t |dj|dj W 5 Q R X d S )Nr   rC   r   rB   rE   r   r   r   Tr   rc   r   r'   )r*   r+   r   r   r/   r0   rn   rD   get_indexerr   r   r   r   rc   r-   Zassert_index_equalrN   r&   )r5   r   r   r   r6   rS   rT   r7   r7   r8   test_append_to_multiple_dropnaO  s    
   r   c                 C   s   t  }t  jdjd}tj|jd|jddgf< t	||gdd}t
| }tddl |jddgd d	|d
dd d}tjt|d |d
dg W 5 Q R X |d
j|djrtW 5 Q R X W 5 Q R X d S )Nr   rC   r   rB   rE   r   re   T)df1adf2ar   Fr   z,all tables must have exactly the same nrows!rl   r   )r*   r+   r   r   r/   r0   rn   rD   r   r   r   rf   rg   r   rr   rs   r{   r   rN   r&   equalsrM   )r5   r   r   r   r6   ru   r7   r7   r8   $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| Z}|jd
gddgddgd|jd	g dddddd |dddg}tj	||dd W 5 Q R X d S )Nr      X   c                 S   s   g | ]}d qS )r}   r7   r   _r7   r7   r8   r   |  s     z8test_append_to_multiple_min_itemsize.<locals>.<listcomp>rW   c                 S   s   g | ]}d qS )Zabcder7   r   r7   r7   r8   r   }  s     )IXNumBigNumStrLongStrr   r   r   r   r   r   )r&   numsstrsr&   r   r:   r   )r   r   r   r   r   r   Tr'   )
r   r/   r4   rx   rn   r   r   r   r*   r-   )r5   r   rT   r6   rS   r7   r7   r8   $test_append_to_multiple_min_itemsizeu  s*    

	



r   )2r`   r   rp   warningsr   numpyr/   rr   Zpandas._libs.tslibsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasrf   r   r   r   r*   r   r	   r
   Zpandas.tests.io.pytables.commonr   r   markZ
single_cpuZ
pytestmarkr9   rV   rb   ri   rv   r~   r   r   r   r   r   Zparametrizer   r   Z&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r7   r7   r7   r8   <module>   sB    B-.S.t	 

K0!