o
    �¨Êh 9  ã                   @   sÔ  d dl Z d dlZd dlZd dlmZmZmZmZ d dl	m
Z
m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 d dlmZ d dlmZ ejjZej  dg d	¢¡d
d„ ƒZ!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'ej  de(dƒ¡ej  dej)j*¡ej +d¡ejj,e o‘eƒ o‘eƒ dd�dd„ ƒƒƒƒZ-ejj,eƒ  d d�d!d"„ ƒZ.ej  d#g d$¢g d%¢g d&¢g d'¢g d(¢g d)¢g d*¢ej/d+d,d-gd.ej/d+d,d-gg	¡ej  d/d0e0g¡d1d2„ ƒƒZ1d3d4„ Z2d5d6„ Z3dS )7é    N)ÚPY311Úis_ci_environmentÚis_platform_linuxÚis_platform_little_endian)ÚClosedFileErrorÚPossibleDataLossError)Ú	DataFrameÚHDFStoreÚIndexÚSeriesÚ_testingÚ
date_rangeÚread_hdf)Ú_maybe_removeÚensure_clean_storeÚtables)Úpytables)ÚTermÚmode)Úrúr+ÚaÚwc              	   C   sF  t tj d¡ d¡ttdƒtd�tdddd�d	�}d
}||  }|dv rAt	j
t|d�� t||d� W d   ƒ n1 s;w   Y  nt||d��}|jj|ksPJ ‚W d   ƒ n1 sZw   Y  ||  }|dv r•t	j
t|d�� t||d��}W d   ƒ n1 s€w   Y  W d   ƒ n1 s�w   Y  nt||d��}|jj|ks¤J ‚W d   ƒ n1 s®w   Y  ||  }|dv rãt	j
t|d�� |j|d|d� W d   ƒ n1 sÕw   Y  |j|ddd� n|j|d|d� |dv �rd}t	j
t|d�� t|d|d� W d   ƒ d S 1 �sw   Y  d S t|d|d�}t ||¡ d S )Né   ©é
   é   ÚABCD©Údtypeú
2000-01-01r   ÚB©ÚperiodsÚfreq©ÚcolumnsÚindexz[\S]* does not exist)r   r   ©Úmatch©r   Údf©Úkeyr   r   )r   zNmode w is not allowed while performing a read. Allowed modes are r, r\+ and a.)r   ÚnpÚrandomÚdefault_rngÚstandard_normalr
   ÚlistÚobjectr   ÚpytestÚraisesÚOSErrorr	   Ú_handler   Úto_hdfÚ
ValueErrorr   ÚtmÚassert_frame_equal)Ú
setup_pathÚtmp_pathr   r+   ÚmsgÚpathÚstoreÚresult© rB   ú]/var/www/html/env/lib/python3.10/site-packages/pandas/tests/io/pytables/test_file_handling.pyÚ	test_mode&   sT   ýÿ€ÿÿ€ÿ€ÿÿ
ÿ$ÿrD   c                 C   sd   t tj d¡ d¡ttdƒtd�tdddd�d	�}| | }|j	|d
dd� t
|d
ƒ}t ||¡ d S )Nr   r   r   r   r    r   r!   r"   r%   r+   r   r,   )r   r.   r/   r0   r1   r
   r2   r3   r   r8   r   r:   r;   )r=   r<   r+   r?   rA   rB   rB   rC   Útest_default_mode[   s   ý
rE   c                 C   s¼  | | }t |dd�}ttjdtjd�tddd�d�|d< d}tjt|d	�� | 	d
¡ W d   ƒ n1 s5w   Y  | 
¡  |jrCJ ‚| 	d
¡ |jsMJ ‚t|ƒdksUJ ‚| 
¡  |jr^J ‚t |dd�}ttjdtjd�tddd�d�|d< | 	d¡ |js€J ‚t|ƒdksˆJ ‚|jdks�J ‚| 
¡  |jr˜J ‚| 	d¡ |js¢J ‚t|ƒdksªJ ‚|jdks±J ‚| 
¡  |jrºJ ‚| 	d¡ |jsÄJ ‚t|ƒdksÌJ ‚|jdksÓJ ‚| 
¡  |jrÜJ ‚d S )Nr   r*   r   r   z
2020-01-01)r#   ©r'   zKRe-opening the file \[[\S]*\] with mode \[a\] will delete the current file!r(   r   r   r   é   )r	   r   r.   ÚarangeÚfloat64r   r4   r5   r   ÚopenÚcloseÚis_openÚlenÚ_mode)r=   r<   r?   r@   r>   rB   rB   rC   Útest_reopen_handleh   sN   
ÿÿÿ




ÿ







rO   c                 C   sÊ   t  | ¡�N}tdt d¡ d¡ ttdƒtd�tdd„ t	dƒD ƒtd�d	�}t
|d
ddd�}||d< | d|¡ t  |d |¡ t  |d |¡ | ¡  W d   ƒ n1 sVw   Y  tj |¡rcJ ‚d S )Nçš™™™™™ñ?éx   ©é   r   r   r   c                 S   ó   g | ]}d |› �‘qS ©zi-rB   ©Ú.0ÚirB   rB   rC   Ú
<listcomp>¥   ó    z"test_open_args.<locals>.<listcomp>rS   r%   r   Ú	H5FD_COREr   )r   ÚdriverÚdriver_core_backing_storer+   Údf2)r:   Úensure_cleanr   r.   rH   Úreshaper
   r2   r3   Úranger	   Úappendr;   rK   Úosr?   Úexists)r<   r?   r+   r@   rB   rB   rC   Útest_open_args    s    ýÿ
ïre   c                 C   sR   t | ƒ�}ttdƒƒ|d< | ¡  |jdd� W d   ƒ d S 1 s"w   Y  d S )Né   r   T)Úfsync)r   r   ra   Úflush)r<   r@   rB   rB   rC   Ú
test_flush¸   s
   
"ýri   c                 C   sô  t dt d¡ d¡ ttdƒtd�tdd„ tdƒD ƒtd�d	�}| | }|j|d
dd� t	|d
ƒ}t
 ||¡ tj|dd��"}|jddd�D ]}|jjdksPJ ‚|jjdksXJ ‚qFW d   ƒ n1 scw   Y  | | }|j|d
dd� t	|d
ƒ}t
 ||¡ tj|dd��"}|jddd�D ]}|jjdks˜J ‚|jjd u s J ‚qŽW d   ƒ n1 s«w   Y  | | }|j|d
d� t	|d
ƒ}t
 ||¡ tj|dd��#}|jddd�D ]}|jjdksßJ ‚|jjd u sçJ ‚qÕW d   ƒ d S 1 sów   Y  d S )NrP   rQ   rR   r   r   c                 S   rT   rU   rB   rV   rB   rB   rC   rY   Ä   rZ   z2test_complibs_default_settings.<locals>.<listcomp>rS   r%   r+   é	   )r-   Ú	complevelr   r*   ú/dfÚLeaf©ÚwhereÚ	classnameÚzlib)r-   Úcomplibr   )r-   )r   r.   rH   r`   r
   r2   r3   ra   r8   r   r:   r;   r   Ú	open_fileÚ
walk_nodesÚfiltersrk   rr   )r=   r<   r+   ÚtmpfilerA   Úh5fileÚnoderB   rB   rC   Útest_complibs_default_settings¿   sF   ý
þÿ
þÿ
þ"ÿry   c                 C   s  t dt d¡ d¡ ttdƒtd�tdd„ tdƒD ƒtd�d	�}| | }t|ƒ}|j	d
|ddd� | 	d|¡ | 
¡  tj|dd��=}|jddd�D ]}|jjdksTJ ‚|jjd u s\J ‚qJ|jddd�D ]}|jjdksnJ ‚|jjdksvJ ‚qdW d   ƒ d S 1 s‚w   Y  d S )NrP   rQ   rR   r   r   c                 S   rT   rU   rB   rV   rB   rB   rC   rY   ï   rZ   z;test_complibs_default_settings_override.<locals>.<listcomp>rS   r%   Údfcrj   Úblosc)rk   rr   r+   r   r*   rl   rm   rn   r   z/dfc)r   r.   rH   r`   r
   r2   r3   ra   r	   rb   rK   r   rs   rt   ru   rk   rr   )r=   r<   r+   rv   r@   rw   rx   rB   rB   rC   Ú'test_complibs_default_settings_overrideê   s&   ýþ"ür|   Úlvlr   Úlibz!ignore:object name is not a validzSegfaulting in a CI environment©Úreasonc           
      C   sT  t rtƒ r|dkr|dkr| tjjd|› d�d�¡ tt d¡t	dƒt 
d¡ tj¡d	�}t d
¡s8t d¡ t d¡sBt d¡ | |› d|› d� }|› d|› �}|j||||d� t||ƒ}t ||¡ tj|dd��2}|jd| dd�D ]}	|	jj|ks‚J ‚|dkr�|	jjd u sŽJ ‚qx|	jj|ks—J ‚qxW d   ƒ d S 1 s£w   Y  d S )NÚblosc2r   z
Fails for z on Linux and PY > 3.11r   rR   r   rS   r%   Úlzozlzo not availableÚbzip2zbzip2 not availableÚ_z.h5)r-   rr   rk   r   r*   ú/rm   rn   )r   r   Úapplymarkerr4   ÚmarkÚxfailr   r.   Úonesr2   rH   ÚastypeÚstr_r   Úwhich_lib_versionÚskipr8   r   r:   r;   rs   rt   ru   rk   rr   )
r=   r}   r~   Úrequestr+   rv   ÚgnamerA   Úh5tablerx   rB   rB   rC   Útest_complibs   s0   ÿÿ




û"ÿr‘   z$reason platform is not little endianc                 C   s´   t | ƒ�L}tdddœtdƒd�}tj|jd< tj|jd< t|dƒ |jd|d	d
� t 	|d |¡ |j
dgd�}| dtdd	d
�¡}t 	||¡ W d   ƒ d S 1 sSw   Y  d S )NÚfooÚbar)ÚAr!   rf   rF   )r   r”   )é   r!   r+   Úascii)Úencodingr”   )r&   z	columns=A)r   r   ra   r.   ÚnanÚlocr   rb   r:   r;   ÚreindexÚselectr   )r<   r@   r+   ÚexpectedrA   rB   rB   rC   Útest_encoding,  s   

"ör�   Úval)ó   EÉ, 17ó    ó   aó   bó   c)rŸ   r¡   r¢   r£   )s   EE, 17r    r¡   r¢   r£   )rŸ   ó   øür¡   r¢   r£   )r    r¡   r¢   r£   )r¤   r¡   r¢   r£   )ó   Aøür    r¡   r¢   r£   r    r¢   r£   r¥   r   Úcategoryc           
         s˜   d‰ d}d}‡ fdd„|D ƒ}t ||d�}| | }|j||dˆ |d� t||ƒ}|d	kr=||jjv r:|j |g¡}	n
|}	n| |tj¡}	t	 
|	|¡ d S )
Nzlatin-1Ú Údatac                    s$   g | ]}t |tƒr| ˆ ¡n|‘qS rB   )Ú
isinstanceÚbytesÚdecode)rW   Úx©ÚencrB   rC   rY   Q  s   $ z'test_latin_encoding.<locals>.<listcomp>r   Útable)r-   Úformatr—   Únan_repr¦   )r   r8   r   ÚcatÚ
categoriesÚremove_categoriesÚreplacer.   r˜   r:   Úassert_series_equal)
r=   r<   r   rž   r±   r-   Úserr@   ÚretrÚs_nanrB   r­   rC   Útest_latin_encoding=  s   
rº   c                 C   s¾  | | }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	|ƒ}d| 
¡ vs9J ‚|js>J ‚| ¡  d| 
¡ v sJJ ‚|jrOJ ‚| | }tjr|t	|ƒ}d}tjt|d�� t	|ƒ W d   ƒ n1 srw   Y  | ¡  nÏt	|ƒ}t	|ƒ}d| 
¡ vsŒJ ‚d| 
¡ vs”J ‚|js™J ‚|jsžJ ‚| ¡  d| 
¡ v sªJ ‚|jr¯J ‚d| 
¡ vs·J ‚|js¼J ‚| ¡  d| 
¡ v sÈJ ‚d| 
¡ v sÐJ ‚|jrÕJ ‚|jrÚJ ‚t	|dd�}| d
|¡ t	|ƒ}| d|¡ | ¡  d| 
¡ v süJ ‚|j�rJ ‚| ¡  d| 
¡ v �sJ ‚|j�rJ ‚t	|dd�}| d
|¡ t	|ƒ}| ¡  d| 
¡ v �s2J ‚|j�r8J ‚| ¡  d| 
¡ v �sEJ ‚|j�rKJ ‚| | }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	|ƒ}| ¡  d}tjt|d�� | ¡  W d   ƒ n	1 �s™w   Y  tjt|d�� d
|v  W d   ƒ n	1 �sµw   Y  tjt|d�� t|ƒ W d   ƒ n	1 �sÑw   Y  tjt|d�� |d
  W d   ƒ n	1 �síw   Y  tjt|d�� | d
¡ W d   ƒ n	1 �s
w   Y  tjt|d�� | d
¡ W d   ƒ n	1 �s'w   Y  tjt|d�� | d|¡ W d   ƒ n	1 �sEw   Y  tjt|d�� | d|¡ W d   ƒ n	1 �scw   Y  tjt|d�� | d¡ W d   ƒ n	1 �s€w   Y  tjt|d�� | d¡ W d   ƒ n	1 �s�w   Y  tjt|d�� | d
¡ W d   ƒ n	1 �sºw   Y  d}tjt|d�� |j W d   ƒ d S 1 �sØw   Y  d S )NrP   rQ   rR   r   r   c                 S   rT   rU   rB   rV   rB   rB   rC   rY   m  rZ   z,test_multiple_open_close.<locals>.<listcomp>rS   r%   r+   r   r¯   )r-   r   r°   ÚCLOSEDzTThe file [\S]* is already opened\.  Please close it before reopening in write mode\.r(   r*   r^   c                 S   rT   rU   rB   rV   rB   rB   rC   rY   ¾  rZ   z[\S]* file is not open!Údf3z''HDFStore' object has no attribute 'df')r   r.   rH   r`   r
   r2   r3   ra   r8   r	   ÚinforL   rK   r   Ú!_table_file_open_policy_is_strictr4   r5   r9   rb   r   ÚkeysrM   r›   ÚgetÚputÚ
get_storerÚremoveÚAttributeErrorr+   )r=   r<   r?   r+   r@   Ústore1r>   Ústore2rB   rB   rC   Útest_multiple_open_closee  sÐ   ý

ÿ
ÿ






ý
ÿ
ÿ
ÿ
ÿÿÿÿÿÿÿÿ$ÿrÇ   c               	   C   s~   t  d¡�0} t| ƒ�}t |¡t| ƒksJ ‚W d   ƒ n1 s w   Y  W d   ƒ d S W d   ƒ d S 1 s8w   Y  d S )Nzfoo.h5)r:   r_   r	   rc   ÚfspathÚstr)r?   r@   rB   rB   rC   Útest_fspathì  s   
ÿÿ"ÿrÊ   )4rc   Únumpyr.   r4   Úpandas.compatr   r   r   r   Úpandas.errorsr   r   Úpandasr   r	   r
   r   r   r:   r   r   Úpandas.tests.io.pytables.commonr   r   r   Ú	pandas.ior   Úpandas.io.pytablesr   r‡   Ú
single_cpuÚ
pytestmarkÚparametrizerD   rE   rO   re   ri   ry   r|   ra   ru   Úall_complibsÚfilterwarningsÚskipifr‘   r�   r˜   r3   rº   rÇ   rÊ   rB   rB   rB   rC   Ú<module>   s`    $	
48+
þ#ÿ
÷þ 