o
    ôT·jøI  ã                   @   sÞ  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	Z
d dl	mZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ ejjg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„ ƒZ'dd„ Z(dd„ Z)ej &d¡d d!„ ƒZ*d"d#„ Z+ej ,d$d%ej-d&ej.d'�g¡d(d)„ ƒZ/d*d+„ Z0ej ,d,ej1ej2e3d-d.g¡d/d0„ ƒZ4d1d2„ Z5d3d4„ Z6ej ,d$d%ej-d&ej.d'�g¡d5d6„ ƒZ7dEd7d8„Z8dEd9d:„Z9d;d<„ Z:d=d>„ Z;d?d@„ Z<dAdB„ Z=dCdD„ Z>dS )Fé    N)Ú	Timestamp)Úis_platform_windows)Ú	DataFrameÚDatetimeIndexÚIndexÚSeriesÚ_testingÚbdate_rangeÚ
date_rangeÚread_hdf)Ú_maybe_removeÚensure_clean_store)Ú_test_decoratorsc                     s4  t  ¡ �Œ‰ ‡ fdd„} ttjdtjd�tddd�d�}t  || d|ƒ¡ ttdƒd	d
d„ tdƒD ƒd�}t  || d|ƒ¡ t	dt d¡ 
d¡ ttdƒƒtdd„ tdƒD ƒƒd�}t  || d|ƒ¡ t	tdƒtdƒdœƒ}|jˆ ddd� tˆ ddgd�}t  ||jdk |¡ W d   ƒ d S 1 s“w   Y  d S )Nc                    s    |j ˆ fd| i|¤Ž tˆ | ƒS )NÚkey)Úto_hdfr   )r   ÚobjÚkwargs©Úpath© úk/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/pandas/tests/io/pytables/test_round_trip.pyÚ	roundtrip!   s   
z'test_conv_read_write.<locals>.roundtripé
   ©Údtypeú
2020-01-01©Úperiods©ÚindexÚseriesÚfloat64c                 S   ó   g | ]}d |› �‘qS ©Úi_r   ©Ú.0Úir   r   r   Ú
<listcomp>*   ó    z(test_conv_read_write.<locals>.<listcomp>©r   r   Ústring_seriesçš™™™™™ñ?éx   ©é   é   ÚABCDc                 S   r"   ©zi-r   r%   r   r   r   r(   0   r)   r/   ©Úcolumnsr   Úframeé   ©ÚAÚBÚtableT©r   Úappendzindex>2)Úwhereé   )ÚtmÚensure_cleanr   ÚnpÚaranger!   r
   Úassert_series_equalÚranger   Úreshaper   ÚlistÚassert_frame_equalr   r   r   )r   ÚoÚdfÚresultr   r   r   Útest_conv_read_write   s&   
ÿ 
ý"çrK   c                 C   sp   dgd }t d|i|d�}t| ƒ�}|jd|dgd� | d¡}t ||¡ W d   ƒ d S 1 s1w   Y  d S )NÚ2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   Úar   rI   )Údata_columns)r   r   r<   Úselectr?   rG   )Ú
setup_pathÚdatarI   ÚstorerJ   r   r   r   Útest_long_strings;   s   


"ürS   c                 C   s¬   | | }t tdƒƒ}|jd d… j|dddd� |jdd … j|dddd� t t|dƒ|¡ |jd d… j|dddd� |jdd … j|dddd� t t|dƒ|¡ d S )Né   r   rI   Tr:   ©r   r<   ÚformatF©r   rD   Úilocr   r?   rG   r   ©Útmp_pathrP   r   rI   r   r   r   Útest_apiG   s   r[   c                 C   s¨   | | }t tdƒƒ}|jd d… j|ddd� |jdd … j|dddd� t t|dƒ|¡ |jd d… j|dddd� |jdd … j|ddd� t t|dƒ|¡ d S )	NrT   r   rI   Tr;   r:   rU   FrW   rY   r   r   r   Útest_api_appendW   s   r\   c                 C   s*  | | }t tdƒƒ}|j|dddd� t t|dƒ|¡ |j|dddd� t t|dƒ|¡ |j|ddd� t t|dƒ|¡ |j|dd� t t|dƒ|¡ t|ƒ�·}t tdƒƒ}t|dƒ |jd|j	d d	… d
dd� |jd|j	d	d … d
dd� t | 
d¡|¡ t|dƒ |jd|j	d d	… ddd� |jd|j	d	d … d
dd� t | 
d¡|¡ t|dƒ |jd|j	d d	… ddd� |jd|j	d	d … d
dd� t | 
d¡|¡ t|dƒ |jd|j	d d	… ddd� |jd|j	d	d … d
d d� t | 
d¡|¡ W d   ƒ d S 1 �sw   Y  d S )NrT   rI   FÚfixedrU   Úfr;   )r   r   Tr:   )r<   rV   )r   rD   r   r?   rG   r   r   r   r<   rX   rO   )rZ   rP   r   rI   rR   r   r   r   Ú
test_api_2e   s:   




$ér_   c                 C   s–  | | }t dt d¡ d¡ ttdƒƒtdd„ tdƒD ƒƒd�}d	}tjt	|d
�� |j
|dddd� W d   ƒ n1 s=w   Y  tjt	|d
�� |j
|dddd� W d   ƒ n1 s]w   Y  d}tjt|d
�� |j
|dddd� W d   ƒ n1 sw   Y  tjt|d
�� |j
|dddd� W d   ƒ n1 sŸw   Y  d}d|› d�}tjt|d
�� t|dƒ W d   ƒ d S 1 sÄw   Y  d S )Nr,   r-   r.   r1   c                 S   r"   r2   r   r%   r   r   r   r(   •   r)   z$test_api_invalid.<locals>.<listcomp>r/   r3   zCan only append to Tables©ÚmatchrI   Tr^   rU   r]   z)invalid HDFStore format specified \[foo\]ÚfooFÚ zFile z does not exist)r   rA   rB   rE   r   rF   rD   ÚpytestÚraisesÚ
ValueErrorr   Ú	TypeErrorÚFileNotFoundErrorr   )rZ   rP   r   rI   Úmsgr   r   r   Útest_api_invalid�   s2   
ýÿÿÿÿ"ÿrj   c              	   C   sÖ   t | ƒ�]}ttjdtjd�tddd�d�|d< | d¡}|d }t ||¡ | d¡}|d }t ||¡ t	j
tdd	�� | d
¡ W d   ƒ n1 sLw   Y  W d   ƒ d S W d   ƒ d S 1 sdw   Y  d S )Nr   r   r   r   r   rM   z/az'No object named b in the file'r`   Úb)r   r   rA   rB   r!   r
   Úgetr?   rC   rd   re   ÚKeyError)rP   rR   ÚleftÚrightr   r   r   Útest_get°   s    

ÿ

ÿô"ôrp   c                 C   s(   t tj d¡ d¡ƒ}t|tj| ƒ d S )Nr>   )é2   éd   )r   rA   ÚrandomÚdefault_rngÚstandard_normalÚ_check_roundtripr?   rG   )rP   rI   r   r   r   Útest_put_integerÁ   s   rw   c           	      C   s  t | ƒ�ü}tdg d¢idd�}| d|¡ t |j|d j¡ tdg d¢idd�}| d|¡ t |j|d j¡ t d¡}tj	t
|d	�� | d|¡ W d   ƒ n1 sVw   Y  ttjd
gdgdggdd�dgd�}| d|¡ t |j|d j¡ |jjd dks‡J ‚tdd„ dD ƒƒ}d|d< d|d< |d  d¡|d< |d dk|d< tdƒ|d< tdƒ|d< | d|¡ | d¡j ¡ }d d!„ |jD ƒ|_|rÐd"nd#}tddd$d
d%d
dd
d&d
d'd
d(d
|d
d)di	d*d+�}| ¡ }| ¡ }t ||¡ W d   ƒ d S 1 �sw   Y  d S ),NrM   ©é   r>   é   Úf8r   Údf_f8Úi8Údf_i8zdCannot serialize the column [a] because its data contents are not [float] but [integer] object dtyper`   ry   r>   rz   Úf4r8   ©r4   Údf_f4r   Úfloat32c                 S   s(   i | ]}|t tj d ¡ d¡|d�“qS )r>   r6   r   )r   rA   rs   rt   Úintegers)r&   Úcr   r   r   Ú
<dictcomp>ã   s    ÿÿz6test_table_values_dtypes_roundtrip.<locals>.<dictcomp>)r‚   r!   Úint32Úint64Úint16Úint8rb   Ústringç      ð?Úfloat322ÚboolÚ20130101Útime1Ú20130102Útime2Údf_mixed_dtypes1c                 S   s   g | ]}t |ƒ‘qS r   )Ústrr%   r   r   r   r(   ñ   ó    z6test_table_values_dtypes_roundtrip.<locals>.<listcomp>r“   Úobjectr!   r†   rˆ   r‰   r‡   zdatetime64[ns]Úcount)Úname)r   r   r<   r?   rC   ÚdtypesÚreÚescaperd   re   rf   rA   ÚarrayrX   Úastyper   rO   Úvalue_countsr   r   Ú
sort_index)	rP   Úusing_infer_stringrR   Údf1Údf2ri   rJ   Ú	str_dtypeÚexpectedr   r   r   Ú"test_table_values_dtypes_roundtripÇ   sb   
ÿÿ$þÿ÷ô$År¤   z(ignore::pandas.errors.PerformanceWarningc                 C   s°   t tdƒddd„ tdƒD ƒd�}t|tj| d� t tjdtjd�tddd	�d
�}t|tj| d� t |j	t
|j	ƒƒ}t|tj| d� t |jt
t |j	¡ƒƒ}t|tj| dd� d S )Nr   r!   c                 S   r"   r#   r   r%   r   r   r   r(     r)   ztest_series.<locals>.<listcomp>r*   r   r   r   r   r   F)r   Úcheck_index_type)r   rD   rv   r?   rC   rA   rB   r!   r
   r   r   ÚvaluesÚasarray)rP   ÚsÚtsÚts2Úts3r   r   r   Útest_series  s    ÿ

ÿr¬   c                 C   s@   t j d¡ d¡}tt j d¡ d¡|d�}t|tj| d� d S )Nr>   r   r   r   )rA   rs   rt   ru   r   rv   r?   rC   )rP   r   r¨   r   r   r   Útest_float_index  s   r­   c                 C   s|   t  d¡}g d¢}t j d¡ d¡ d¡}t|||d�}t t	j
j¡� t|tj| d� W d   ƒ d S 1 s7w   Y  d S )Nr   ))g        r‹   )ç       @ç      @)g      @g      @r>   r/   )rz   r   )r   r4   r   )rA   rB   rs   rt   ru   rE   r   r?   Úassert_produces_warningÚpdÚerrorsÚPerformanceWarningrv   rG   )rP   ÚcolÚidxrQ   ÚDFr   r   r   Útest_tuple_index   s   
"ÿr·   c                 C   s°  t j d¡ d¡}dd„ }t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|dd	gƒ}t||| d� t|d
dgƒ}t||| d� t|d
dgƒ}t||| d� t	ddgdd�}t||d�}t||| d� |j
 d¡|_
t||| d� d S )Nr>   c                 S   s   t j| |dd�S )NT)r¥   )r?   rC   )ÚlhsÚrhsr   r   r   Ú<lambda>/  s    z"test_index_types.<locals>.<lambda>r   Úyr   rM   g®Gáz®ó?rk   ry   g{®Gázø?r6   z
2012-01-01z
2012-01-02úM8[ns]r   r   r¨   )rA   rs   rt   ru   r   rv   ÚdatetimeÚtodayÚdater   r   Úas_unit)rP   r¦   ÚfuncÚserÚdtir   r   r   Útest_index_types+  s:   rÄ   c                 C   sh   t ddƒ}ttj d¡ t|ƒ¡|d�}zt|tj	| d� W d S  t
y3   tƒ r2| tj d¡¡ ‚ w )Nz1/1/1940z1/1/1960r>   r   r   z'known failure on some windows platforms)r	   r   rA   rs   rt   ru   Úlenrv   r?   rC   ÚOverflowErrorr   Úapplymarkerrd   ÚmarkÚxfail)rP   ÚrequestÚdrr©   r   r   r   Útest_timeseries_preepochZ  s   

ÿûrÌ   ÚcompressionFT)Úmarksc                 C   sF  t dt d¡ d¡ ttdƒƒtdd„ tdƒD ƒƒd�}tj|jd	< tj|jd
< t	|t
j|| d� t|t
j|| d� t tj d¡ d¡ttdƒƒtdddd�d�}t|t
j|| d� t|ƒ�$}tj d¡ t|ƒ¡|d< ||d< |d }|j ¡ s{J ‚W d   ƒ n1 s…w   Y  |d d… }tg ƒ|_t|d d… t
j|d� d S )Nr,   r-   r.   r1   c                 S   r"   r2   r   r%   r   r   r   r(   n  r)   ztest_frame.<locals>.<listcomp>r/   r3   )r   r   )r6   rz   ©r   rÍ   r>   )r   r0   z
2000-01-01r   r9   )r   Úfreqrb   rI   r   r   )r   rA   rB   rE   r   rF   rD   ÚnanrX   Ú_check_roundtrip_tabler?   rG   rv   rs   rt   ru   r
   r   rÅ   Ú_mgrÚis_consolidatedr   )rÍ   rP   rI   ÚtdfrR   Úreconsr¡   r   r   r   Ú
test_frameg  s<   
ý
ÿ
ÿ
ý
ÿ
û
r×   c                 C   sŒ   t td�}t dtd�}tƒ }tg d¢d�}tg d¢d�}t|tj| d� t|tj| d� t|tj| d� t|tj| d� t|tj| d� d S )	Nr   Úmyseries)r—   r   ©rM   rk   r„   r   )ÚdÚer^   r€   r   )r   r•   r   rv   r?   rC   rG   )rP   Ús0Ús1Údf0r    r¡   r   r   r   Útest_empty_series_frame“  s   
rß   r   zm8[ns]r¼   c                 C   s   t | d�}t|tj|d� d S )Nr   r   )r   rv   r?   rC   )r   rP   r¨   r   r   r   Útest_empty_series¡  s   
rà   c                 C   sJ   dd„ t ddƒD ƒ}ttj d¡ t|ƒdf¡|d�}t|tj	| d� d S )	Nc                 S   s   g | ]}|  ¡ ‘qS r   )r¿   )r&   Úxr   r   r   r(   ¨  r”   z,test_can_serialize_dates.<locals>.<listcomp>z1/1/2000z	1/30/2000r>   r0   r   r   )
r	   r   rA   rs   rt   ru   rÅ   rv   r?   rG   )rP   Úrngr5   r   r   r   Útest_can_serialize_dates§  s
   ÿrã   c                 C   sÐ   |}|r(d}t jt|d�� t|tj| d� W d   ƒ d S 1 s!w   Y  d S t|tj| d� t|jtj| d� t|d tj| d� t| ƒ�}||d< |d }t ||¡ W d   ƒ d S 1 saw   Y  d S )Nz=Saving a MultiIndex with an extension dtype is not supported.r`   r   r8   r5   )	rd   re   ÚNotImplementedErrorrv   r?   rG   ÚTrC   r   )rP   rŸ   Ú multiindex_dataframe_random_datar5   ri   rR   rÖ   r   r   r   Útest_store_hierarchical°  s"   
ÿþ
"ýrç   c                 C   sÒ   dd„ }|ƒ }|ƒ }t |tj|d� t |tj|d� t|ƒ� }||d< t |d |¡ ||d< t |d |¡ W d   ƒ n1 sAw   Y  t |d tj|| d� t |d tj|| d� t |d tj|| d� d S )	Nc                  S   s€   t dt d¡ d¡ ttdƒƒtdd„ tdƒD ƒƒd�} d	| d
< d| d< | d dk| d< | d dk| d< d| d< d| d< |  ¡ S )Nr,   r-   r.   r1   c                 S   r"   r2   r   r%   r   r   r   r(   Î  r)   z7test_store_mixed.<locals>._make_one.<locals>.<listcomp>r/   r3   rb   Úobj1ÚbarÚobj2r8   r   Úbool1r9   Úbool2ry   Úint1r>   Úint2)r   rA   rB   rE   r   rF   rD   Ú_consolidate)rI   r   r   r   Ú	_make_oneÊ  s   
ýz#test_store_mixed.<locals>._make_oner   r   rè   rÏ   rë   rí   )rv   r?   rG   r   rC   )rÍ   rP   rð   r    r¡   rR   r   r   r   Útest_store_mixedÆ  s:   
üüü
ürñ   c                 K   sj   i }|rd|d< t |dfi |¤Ž�}| |d< |d }||| fi |¤Ž W d   ƒ d S 1 s.w   Y  d S )NÚbloscÚcomplibÚwr   )r   )r   Ú
comparatorr   rÍ   r   ÚoptionsrR   Ú	retrievedr   r   r   rv   ù  s   "ýrv   c                 C   sj   i }|rd|d< t |dfi |¤Ž�}|jd| dd� |d }||| ƒ W d   ƒ d S 1 s.w   Y  d S )Nrò   ró   rô   r   r:   )rV   )r   Úput)r   rõ   r   rÍ   rö   rR   r÷   r   r   r   rÒ     s   "ürÒ   c                 C   s8   ddg}t tj d¡ t|ƒ¡|ƒ}t|tj| d� d S )Nu   Ïƒu   ÏƒÏƒr>   r   )	r   rA   rs   rt   ru   rÅ   rv   r?   rC   )rP   Úunicode_valuesr¨   r   r   r   Útest_unicode_index  s   þrú   c                 C   sÎ   d}t d|giƒ}t| ƒ�}|jd|ddd� | d¡}t ||¡ W d   ƒ n1 s,w   Y  t d|gddgd	œƒ}t| ƒ�}|jd|ddd� | d¡}t ||¡ W d   ƒ d S 1 s`w   Y  d S )
Nu   Î”r8   rI   r:   zutf-8)rV   ÚencodingrM   rk   r7   )r   r   rø   rl   r?   rG   )rP   ÚcharrI   rR   rJ   r   r   r   Útest_unicode_longer_encoded  s   

ý

"ýrý   c                 C   sb   t g d¢g d¢g d¢dœƒ}ttjdtjd�tddd�d�}|jd d	… |d
< t|tj	| d� d S )Nrx   )r‹   r®   r¯   rÙ   r   r   r   r   r   rz   rÚ   r   )
r   r   rA   rB   r!   r
   r   rv   r?   rG   )rP   rI   r©   r   r   r   Útest_store_datetime_mixed*  s   ÿrþ   c                 C   sd   t ddgddgdœƒ}| | }|j|ddd� t|dƒ}t ||¡ | |¡s)J ‚| |¡s0J ‚d S )	Nry   r>   rá   r»   )r9   r8   rI   r:   ©r   rV   )r   r   r   r?   rG   Úequals)rZ   rP   rI   r   Úotherr   r   r   Útest_round_trip_equals3  s   
r  c                 C   s–   t  d¡ | | }t dd¡�2 tdtdƒttdƒƒd� dd	g¡}| ¡ }|j	|d
dd� t
|d
ƒ}t ||¡ W d   ƒ d S 1 sDw   Y  d S )NÚpyarrowzfuture.infer_stringTry   r1   r   r3   r8   r9   rI   r:   rÿ   )rd   Úimportorskipr±   Úoption_contextr   rF   rD   Ú	set_indexÚcopyr   r   r?   rG   )rZ   rP   r   rI   r£   rJ   r   r   r   Útest_infer_string_columns?  s   
ÿ
"ør  )F)?r½   r™   ÚnumpyrA   rd   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandasr±   r   r   r   r   r   r?   r	   r
   r   Úpandas.tests.io.pytables.commonr   r   Úpandas.utilr   ÚtdrÈ   Ú
single_cpuÚ
pytestmarkrK   rS   r[   r\   r_   rj   rp   rw   r¤   Úfilterwarningsr¬   r­   r·   rÄ   rÌ   ÚparametrizeÚparamÚskip_if_windowsr×   rß   r‡   r!   r•   rà   rã   rç   rñ   rv   rÒ   rú   rý   rþ   r  r  r   r   r   r   Ú<module>   s^    (

*!
?


.ÿ
)
	ÿ

0

	