o
    ҷhz                  	   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z
d dl	mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d dlmZmZ ejjZe 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he) fe) ddhfdhddhfe) dhfdfddhddhfe) dhfdfgdd  Z*d!d" Z+d#d$ Z,d%d& Z-ej(d'd(d)gd*d+ Z.d,d- Z/d.d/ Z0d0d1 Z1d2d3 Z2d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6ej(d<d)d(gd=d> Z7d?d@ Z8dAdB Z9dCdD Z:dEdF Z;dGdH Z<dIdJ Z=dKdL Z>dMdN Z?ej(dOg dPdQdR Z@dSdT ZAdUdV ZBdWdX ZCej(dYdZd[gd\d] ZDd^d_ ZEd`da ZFdbdc ZGejHdddedf ZIdgdh ZJdidj ZKdS )k    N)		DataFrameDatetimeIndexIndex
MultiIndexSeries	Timestampconcat
date_rangetimedelta_range)_maybe_removeensure_clean_storeHDFStoreread_hdftablesc              	   C   s   t | %}zt|}td1 sw   Y  W n	 ty"   Y nw W d    n1 s-w   Y  t | =}t| }t  |d< t|dksKJ t|d tksUJ W d    n1 s_w   Y  W d    d S W d    d S 1 sww   Y  d S )Nblaha   )tmensure_cleanr   
ValueErrormakeDataFramelentyper   )
setup_pathpathtbl r   V/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/io/pytables/test_store.pytest_context&   s&   

"r   c                    st   t jdfdd  fdd}|| dd}|| dd}td	 || dd}|| dd}||ks2J ||ks8J d S )
N   c                    sd   | t | dt fdddD ]}| qW d     S 1 s)w   Y   S )Nrbc                      s     j S N)read
block_sizer   chunk_num_blocksfhr   r   <lambda>;   s    z7test_no_track_times.<locals>.checksum.<locals>.<lambda>    )openiterupdatedigest)filenamehash_factoryr&   chunkr   r%   r   checksum8   s   
z%test_no_track_times.<locals>.checksumc              	      sf   |  }t ddgi}t|dd}|jd|ddd |d W d     |S 1 s*w   Y   |S )Nr   r   wmodetableT)formatdata_columnsindextrack_times)r   r   put)tmp_pathr:   r   dfhdfr2   r   r   r   create_h5_and_return_checksum?   s   


z:test_no_track_times.<locals>.create_h5_and_return_checksumF)r:   Tr   )hashlibmd5timesleep)r<   r   r@   checksum_0_tt_falsechecksum_0_tt_truechecksum_1_tt_falsechecksum_1_tt_truer   r?   r   test_no_track_times4   s   
rI   c                 C   s>   t | }t|g ksJ W d    d S 1 sw   Y  d S r"   )r   listr   storer   r   r   test_iter_empty_   s   
"rM   c              	   C   s  t | }t| |  t |d< t |d< t |d< t }d|d< d|d< |d d	k|d
< |d d	k|d< d|d< d|d< d|d< td|d< td|d< t	dddd	d	|d< t	dddd	d	|d< t
j|j|jdd dgf< | }ttjj ||d< W d    n1 sw   Y  |j|jjd |jt|v sJ |jt|v sJ |  W d    n1 sw   Y  t |  }t }|d| |d}t| t| W d    d S 1 sw   Y  d S )Nr   bcfooobj1barobj2Ar   bool1Bbool2Tbool3r   int1   int220010102
timestamp120010103
timestamp2i  	datetime1   	datetime2   r=   bah)r   reprinfor   makeTimeSeriesmakeStringSeriesr   r   dtdatetimenpnanlocr9   _consolidateassert_produces_warningpderrorsPerformanceWarning_handlecreate_grouprootr/   strappend
get_storer)r   rL   r=   sr   r   r   	test_repre   sF   



!

"rz   c              	   C   s   t | i}t |d< t |d< t |d< d|v sJ d|v s#J d|vs)J d|v s/J d|v s5J d|vs;J d|vsAJ tjtjdd	 t |d
< W d    n1 sZw   Y  d
|v seJ W d    d S 1 spw   Y  d S )Nr   rN   zfoo/barrO   z/foo/barz/foo/brR   F)check_stacklevelznode()))r   r   rg   r   ro   r   NaturalNameWarningrK   r   r   r   test_contains   s$   
"r}   c              	   C   s,  t | }t |d< t |d< t }t|d |d|d d  |d|dd   |jjj	j
dks8J |jjj	j
dksBJ |jjj	j
dksLJ t|d |d| d |dj	_
d}tjt|d |d W d    n1 sww   Y  W d    d S W d    d S 1 sw   Y  d S )	Nr   rN   df1
   z0.15.2df2z/'NoneType' object has no attribute 'startswith'match)r   r   rg   r   makeTimeDataFramer   rw   ru   r   _v_attrspandas_versionrN   r~   get_nodepytestraises	Exceptionselect)r   rL   r=   msgr   r   r   test_versioning   s(   


"r   zwhere, expected/first_groupsecond_groupr~   r   third_groupdf3s1df4) /first_group/second_group/second_group/third_groupr   )r   r   c                 C   s  t g dt g dt g dt g dtg dtg dg dgtjddgddtjdd	gddd
}tddd}|d|d  |d|d  |d|d  |d|d  |d|d  |jdd|d  |jjdd|d d |jjdd|d d t	t
|j| dt	|ksJ |j| dD ]G\}}}||v sJ || \}}|t|ksJ |t|ksJ |D ]#}	d||	g}
||
}d |	v rt|||	  qt|||	  qqW d    d S 1 sw   Y  d S )!N)r   rZ   ra   )      rc   )rc         )	   r      )r   r   r   zi,i,idtype)r   r   r   )r   r      )r~   r   r   r   r   a1tb1tb2zwalk_groups.hdfr3   r4   z/first_group/df1r~   z/first_group/df2r   z/second_group/df3r   z/second_group/s1r   z/second_group/third_group/df4r   r   r   r   )objr   r   wherer   r=   )r   r   rk   arrayr   r;   rs   create_arraycreate_tabler   rJ   walksetjoingetr   assert_frame_equalassert_series_equal)r   expectedobjsrL   r   groupsleavesexpected_groupsexpected_framesleaf
frame_pathr   r   r   r   	test_walk   sB   




 
"r   c              
   C   s   t | j}t }||d< |j}t|| t|d}t|| t }||d< |j}t|| dD ]$}d| d}t	j
t|d t|| W d    n1 sSw   Y  q4dD ]
}t|d|  q[W d    d S 1 sqw   Y  d S )	Nr   r=   )dr5   r   handlecomplibz$'HDFStore' object has no attribute ''r   )r5   r   r   r   _)r   r   rg   r   r   getattrr   r=   r   r   r   AttributeError)r   rL   ry   resultr=   xr   r   r   r   test_getattr   s*   

"r   c                 C   s   t dtjdgdtjtjgdtdd}t ddgdtjgdtdd}| | }|j|dd	d
 t|d}t|| | | }|j|dd	dd t|d}t|| | | }|j|dd	dd t|d}t|| d S )Ng        g       @g      ?)col1col2abcr9   acr=   r6   r7   F)r7   dropnaT)r   rk   rl   rJ   to_hdfr   r   r   )r<   r   df_with_missingdf_without_missingr   reloadedr   r   r   test_store_dropna  s&   


r   c                 C   s   | | }t  d}|j|ddddid |  jddd}|j|dd	dd
 t t|dt	||g |d j|ddddid |d j|dd	dd
 t 
t|dt	|d |d g d S )NCss3r6   r9   rc   )r7   min_itemsizelonger)r   T)rw   r7   rV   ss4)r   makeMixedDataFrame	set_indexr   copyreset_indexassignr   r   r   r   )r<   r   r   r=   r   r   r   r   test_to_hdf_with_min_itemsize2  s   &r   r7   fixedr6   c                 C   sN   dg}t |t|d}| | }|j|d|dd t|ddd}t|| d S )Nu   foor   r6   surrogatepass)r7   rq   )rq   )r   r   r   r   r   r   )r<   r7   r   dataserr   r   r   r   r   test_to_hdf_errorsC  s   r   c              	      sX  t |   fdd}t }d|d< d|d<  jd|ddgd |dd	jd
u s+J |ddjd
u s5J |ddjd
u s?J  jd|dgddgd |dd	jdu sUJ |ddjd
u s_J |ddjdu siJ t d  d| 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 )Nc                       t  | jj|S r"   r   rx   r6   colstcolumnrL   r   r   colR     z$test_create_table_index.<locals>.colrP   stringrR   string2r'   r8   r9   Tf2)r9   r8   Fz1cannot create table index on a Fixed format storer   )r   r   r   rw   
is_indexedr   r;   r   r   	TypeErrorcreate_table_indexr   r   r=   r   r   r   r   test_create_table_indexO  s,   

"r   c              	      s  t |   fdd}t }d|d< d|d<  jd|dgd |dd	jd
u s*J |ddjd
u s4J d}tjt|d |ddj W d    n1 sNw   Y  d}tjt|d  jddgd W d    n1 sow   Y  W d    d S W d    d S 1 sw   Y  d S )Nc                    r   r"   r   r   r   r   r   r   q  r   z:test_create_table_index_data_columns_argument.<locals>.colrP   r   rR   r   r'   r   r9   Tz('Cols' object has no attribute 'string2'r   zcolumn string2 is not a data_column.
In order to read column string2 you must reload the dataframe 
into HDFStore and include string2 with the data_columns argument.columns)	r   r   r   rw   r   r   r   r   r   r   r   r   r   -test_create_table_index_data_columns_argumentl  s(   
"r   c                 C   s   t jtdddtdgddgd}tdg di|d	}t| (}|jd
|dd |jd
dd}|jdgd d f }t	
|| W d    d S 1 sJw   Y  d S )Nz
2000-01-01r   periodsdateid)namesr   )g?g333333?g?gffffff?g      ?r   r=   Tr   zid == 1r   r   )r   from_arraysr	   ranger   r   rw   r   ilocr   r   )r   idxr=   rL   actualr   r   r   r   test_mi_data_columns  s   
"r   c                 C   s  t  }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	| }|
d| t |d| W d    d S 1 s}w   Y  d S )NrP   rQ   rR   rS   rT   r   rU   rV   rW   TrX   r   rY   rZ   r[   r\   nsr]   r^   r_   r`   rb   ra   rc   	df1_mixed)r   r   r   as_unitrk   rl   rm   r9   rn   r   rw   r   r   r   r=   rL   r   r   r   test_table_mixed_dtypes  s$   
"r  c           	      C   s   d}dt dddtdg}tjj||d}t ddd	}t|d|d
}t|j	|
td }t| +}|d| |d}t|| |d| |d}t|| W d    d S 1 sdw   Y  d S )NzSun Mon Tue Wed Thuz
2012-05-01i  r   r   z
2014-05-01)holidaysweekmaskr      )r   freqzMon Tue Wed Thu Fri Sat Sunr   r6   )ri   rj   rk   
datetime64rp   offsetsCustomBusinessDayr	   r   weekdaymapsplitr   r;   r   r   r   rw   )	r   weekmask_egyptr  
bday_egyptmydtdtsry   rL   r   r   r   r   test_calendar_roundtrip_issue  s&   


"r  c              	   C   sT  t | }t }t }||d< ||d< t|d t|dks"J t||d  t|d t|dks7J tjt	dd |
d W d    n1 sNw   Y  ||d< ||d< t|d	 t|d t|dksmJ ||d< ||d< t|d t|dksJ ||d< ||d< |d= |d= t|dksJ W d    d S 1 sw   Y  d S )
Nr   rN   r   r   z1'No object named a_nonexistent_store in the file'r   a_nonexistent_storezb/foorP   )r   r   rg   r   r   r   r   r   r   KeyErrorremove)r   rL   tsr=   r   r   r   test_remove  s<   





"r  c                 C   s   t | O}ttjddtdddd}|jd|dd	 ||jt	d
k }|
dd}t|| |
dd}t|| |
dd}t|| W d    d S 1 sVw   Y  d S )NrZ   )   rZ   20130101r  r   r   r=   r6   r   20130105z!index>datetime.datetime(2013,1,5)zindex>datetime(2013,1,5))r   r   rk   randomdefault_rngstandard_normalr	   r;   r9   r   r   r   r   )r   rL   r=   r   r   r   r   r   test_same_name_scoping  s   

"r  c                 C   sZ   t  }d|j_t| }||d< |d }t || W d    d S 1 s&w   Y  d S )NrP   frame)r   r   r9   namer   r   )r   r=   rL   reconsr   r   r   test_store_index_name     
"r"  table_formatc              	   C   s   t ttdddtdddgdd}t ttdddtdddgdd}ttddd||d	}| | }|j	|d
|d t
|d
}tj||dd t|jjtks[J t|jjtkseJ d S )Ni  r   rZ   u   colsג)r   i  u   rowsאr   r   r9   r=   r   T)check_names)r   rp   to_datetimeri   r   r   rk   arangereshaper   r   r   r   r   r9   r   rv   r   )r<   r$  r   r   idx1r=   r   r   r   r   r   test_store_index_name_numpy_str  s     
r+  c                 C   sZ   t  }|d }t| }||d< |d }t || W d    d S 1 s&w   Y  d S )NrT   series)r   r   r   r   )r   r=   r,  rL   r!  r   r   r   test_store_series_name*  r#  r-  c                 C   sZ   t | }t |d< t }||d< t|d | W d    d S 1 s&w   Y  d S )Nr   )r   r   r   rg   r   )r   rL   r  r   r   r   test_overwrite_node4  s   
"r.  c              	   C   s  t  }t| }t|d |d| |d}|jtt	|j
k s(J t|d ttdtdd}|d| |ddg}|jtdk sQJ |jd|d}|jddd d f }t || |dd	d
g}|jtdd k sJ |jd|d}|jddd d f }t || t|tsJ t|d t|d t  }t  jdjd}|jd|ddgd |d| |dddg}|d|}|d|}	t||	gdd}t||gdd}||jdk|jdk@  }t j||dd W d    n	1 sw   Y  t| Y}ttjddtdddd}|d| |dd}|t|jdk j
}
|j|
 }|jd|
d}t || |jd|
d}t || d}t j!t"|d  |jdtjt	|d!d"d W d    n	1 s|w   Y  t j!t"|d  |jdtt	|d d W d    n	1 sw   Y  t j!t"|d  |jdtt	|dd# W d    n	1 sw   Y  t j!t"|d  |jdtt	|dd$d% W d    n	1 sw   Y  tdd&d}|jdd'd}||j
#| }t || ttjdd(}|d| |jdg d)d}|jg d) }t || d*gd$ }
d|
d+< |jd|
d}|j|
 }t || |jddd$d,}|dd$ }t || W d    d S 1 sow   Y  d S )-Nr=   r   rT   rV   zindex<3ra   r   r   rZ   zindex>=3zindex<=4r   r~   r   z{}_2r   rT   rV   r   zA>0zB>0r   )axisF)
check_freq)  rZ   20000101r2  r   r   r9   zLwhere must be passed as a string, PyTablesExpr, or list-like of PyTablesExprr   float64r   )r   startr   )r   r5  stopi  zindex in selectionr   rZ   )r   ra   r   Tr5  r6  )$r   r   r   r   rw   select_as_coordinatesvaluesrk   r(  r   r9   allr   r   r   rm   r   
isinstancer   renamer7   r   rT   rV   r  r  r  r	   select_columnr   monthr   r   r   r   isin)r   r=   rL   rO   r   r   r~   r   
df1_result
df2_resultr   r   	selectionr   r   r   test_coordinates=  s   





.



$rE  c                 C   s   t | ^}ttjddtjddd}|d| |jddddd}|jdd	d
gf }t	|| |jddddd}t
|dksJJ |jddd
gf }t	|| W d    d S 1 sew   Y  d S )NrZ   r  r/  r=   zcolumns=['A']r   r   r9  r   rT   r  (   )r   r   rk   r  r  rw   r   rm   r   r   r   r   rL   r=   r   r   r   r   r   test_start_stop_table  s   
"rH  c                 C   s   t | ;}tddgddgd}|jdgd d|dd |jddgdd	dd
}|jd	gddgf }t|| W d    d S 1 sBw   Y  d S )Nr   rZ   )rP   rR   rP   )selectorr   rI  )rI  r   r   )rI  r5  r6  rR   )r   r   append_to_multipleselect_as_multiplerm   r   r   rG  r   r   r   test_start_stop_multiple  s   
"rL  c                 C   s  t | }ttjddtjdddtdddd}|d| |jddd	d
}|jdd	d d f }t	
|| |jdd	dd
}|jd	dd d f }t	
|| |jdddd
}|jddd d f }t	
|| |j}|d| |jddd	d
}|jdd	 }t	|| |jdd	dd
}|jd	d }t	|| t	 }tj|jdd	ddf< tj|jdddf< W d    d S 1 sw   Y  d S )NrZ   r  r/  r  r   r   r=   r   r   r9  r   r  rF  ry   ra   r   r   r8  )r   r   rk   r  r  r	   r;   r   r   r   r   rT   r   r   rl   )r   rL   r=   r   r   ry   r   r   r   test_start_stop_fixed  s:   

"rM  c              
   C   s   t tjdd}dd |jD |_dd |jD |_t| H}|jd|dd d	}|	d|g}t
||jd d |jd d
 f  d}|	d|g}t
||jd d |jd d
d f  W d    d S 1 slw   Y  d S )NrZ   )2   d   c                 S      g | ]}|d qS 3dr   .0rO   r   r   r   
<listcomp>      z-test_select_filter_corner.<locals>.<listcomp>c                 S   rP  rQ  r   rS  r   r   r   rU    rV  r  r6   r   zcolumns=df.columns[:75]K   zcolumns=df.columns[:75:2])r   rk   r  r  r  r9   r   r   r;   r   r   r   rm   )r   r=   rL   critr   r   r   r   test_select_filter_corner  s   
$("rY  c                     0   t   t  fdddd } t  |  d S )Nc                         | dS Nr=   r   pr=   r   r   r)         z#test_path_pathlib.<locals>.<lambda>c                 S   
   t | dS r\  r   r^  r   r   r   r)        
 r   r   round_trip_pathlibr   r   r   r`  r   test_path_pathlib  s
   rh  zstart, stop))r   rZ   )r   rZ   )NNc                 C   s|   t tg dtg dd}t|!}|d| |jd| |d}t|| | | W d    d S 1 s7w   Y  d S )N)i2i2i2)abcdri  r   rN   test_datasetr9  )r   r   r   rw   r   r   r   )r5  r6  r   r=   rL   r   r   r   r    test_contiguous_mixed_data_table  s   


"rm  c                     8   t    fdd} dd }t | |}t  | d S )Nc                    :   t | } |d W d    d S 1 sw   Y  d S r\  r   r   r   rL   r`  r   r   writer(     
"z*test_path_pathlib_hdfstore.<locals>.writerc                 S   6   t | }t|dW  d    S 1 sw   Y  d S r\  r   rq  r   r   r   reader,     
$z*test_path_pathlib_hdfstore.<locals>.readerre  rr  ru  r   r   r`  r   test_path_pathlib_hdfstore%  
   rx  c                     rZ  )Nc                    r[  r\  r]  r^  r`  r   r   r)   7  ra  z,test_pickle_path_localpath.<locals>.<lambda>c                 S   rb  r\  rc  r^  r   r   r   r)   7  rd  re  rg  r   r`  r   test_pickle_path_localpath4  s
   rz  c                     rn  )Nc                    ro  r\  rp  rq  r`  r   r   rr  ?  rs  z,test_path_localpath_hdfstore.<locals>.writerc                 S   rt  r\  r   rq  r   r   r   ru  C  rv  z,test_path_localpath_hdfstore.<locals>.reader)r   r   round_trip_localpathr   rw  r   r`  r   test_path_localpath_hdfstore<  ry  r|  propindexesTFc                 C   s  t  }t  }t|}|jd|dgd W d    n1 s!w   Y  t z}t|f}t|j	|j
d | dJ}| }t|t| ksMJ | D ]-}||jr~||}	||}
|
j|	jkskJ | r~|
jD ]}|jr}|	|j
 js}J qpqQW d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr=   rT   r   )keysr}  )r   r   r   r   rw   tempfileNamedTemporaryFile
contextlibclosingr   r   r~  r   rx   is_tablenrowsaxesr   )r}  r=   r   stnew_frL   tstorer~  knew_torig_tr   r   r   r   	test_copyK  s@   






"r  c                 C   s   t ddgddggd}| | }d}tjt|d |j|ddd W d    n1 s+w   Y  |j|dd	d t|d}t|| ||sJJ ||sQJ d S )
Nr   r   )r   r   z/Columns index has to be unique for fixed formatr   r=   r   r   r6   )	r   r   r   r   r   r   r   r   equals)r<   r   r=   r   r   otherr   r   r   test_duplicate_column_namei  s   
r  c                 C   sp   t tjdjdd}tddddd|_t| }||d	< t	|d	 | W d    d S 1 s1w   Y  d S )
NrZ   )r   r   )size0sr   1sexample)r5  r   r  r   r=   )
r   rk   r  r  normalr
   r9   r   r   r   r  r   r   r   !test_preserve_timedeltaindex_typey  s   
"r  c                 C   s   t tjddtdtdd}d|j_|jddd	}|jj|j	
  }| | }|j|d
dd|dd td}t|}t|d
|d ||ksJJ d S )NrZ   )r   r   abcdABCDE)r9   r   lettersET)r~  rw   r=   r   F)r5   rw   r8   r9   BCDr   )r   rk   r  r  rJ   r9   r   r   r   r   tolistr   r   )r<   r   r=   r8   r   	cols2loadcols2load_originalr   r   r    test_columns_multiindex_modified  s*   r  z3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc           	   	   C   s  t jt jt jt jt jg}t jt jg}|D ]7}tt	j
dd|dd}| | }d}tjt|d |j|dddd	 W d    n1 sFw   Y  q|D ]2}tt	j
dd|dd}| | }|j|dddd	 t|dd
|jd  dd}t|sJ qNd S )NrZ   r7  r   z-cannot have non-object label DataIndexableColr   r=   r6   T)r7   r8   z	index = [r   ]r   )r   makeIntIndexmakeFloatIndexmakeDateIndexmakeTimedeltaIndexmakePeriodIndexmakeStringIndexmakeCategoricalIndexr   rk   r  r  r  r   r   r   r   r   r9   r   )	r<   r   types_should_failtypes_should_runr9   r=   r   r   r   r   r   r   $test_to_hdf_with_object_column_names  s8   r  c                 C   sp   t g dg dd}t| }|d| |d jj|d d jjks&J W d    d S 1 s1w   Y  d S )N)r   rZ   ra   r   )r   rc   r   r   rk  r=   r   )r   r   r;   r;  stridesr  r   r   r   test_hdfstore_strides  s
   
""r  c                 C   sT   t dggdgtdgddd}| }| | }||d t|d}t|| d S )Nr   TFboolr   r%  r   )r   r   r   r   r   r   r   )r<   r   r=   r   r   r   r   r   r   test_store_bool_index  s   
r  )Lr  rj   ri   rA   r  rC   numpyrk   r   pandasrp   r   r   r   r   r   r   r   r	   r
   pandas._testing_testingr   pandas.tests.io.pytables.commonr   r   pandas.io.pytablesr   r   mark
single_cpu
pytestmarkimportorskipr   r   rI   rM   rz   r}   r   parametrizer   r   r   r   r   r   r   r   r   r  r  r  r  r"  r+  r-  r.  rE  rH  rL  rM  rY  rh  rm  rx  rz  r|  r  r  r  r  filterwarningsr  r  r  r   r   r   r   <module>   s    ,
++



(
'


	n*	




"