a
    nÝEbI  ã                   @   s²  d Z ddlZddlZddlZddlmZ ddlZddlZddlZddlZddl	m
Z
 ddlZddlZddlmZmZmZ ddlZddlZddlZddlmZm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" ddl#m$Z% ddl&m  m'Z( dd	l)m*Z*m+Z+ ej, d
¡Z-ej.dd�dd„ ƒZ/dtdd„Z0dd„ Z1dd„ Z2dd„ Z3dd„ Z4dd„ Z5dd„ Z6dd„ Z7dd „ Z8ej9 :e;¡Z<ej9 =e<d!d"¡Z>e ej9 =e>d#d$¡¡Z?ej.e?d%�d&d"„ ƒZ@d'd(„ ZAd)d*„ ZBd+d,„ ZCej, Dd-ejEeBd.d/�ejEejFd0d/�ejEejejFejGd1�d2d/�ejEejejFd3d1�d4d/�ejEejejFd5d1�d6d/�g¡ej, d7¡d8d9„ ƒƒZHd:d;„ ZId<d=„ ZJd>d?„ ZKej.d@dA„ ƒZLG dBdC„ dCƒZMG dDdE„ dEƒZNej, DdFdGgdHe g dI¢ƒfdJejO Pg dI¢g dK¢g¡fg¡dLdM„ ƒZQdNdO„ ZRej, DdPg dQ¢¡dRdS„ ƒZSe TdT¡dUdV„ ƒZUG dWdX„ dXejVƒZWdYdZ„ ZXd[d\„ ZYd]d^„ ZZd_d`„ Z[ej, Ddadbdcdae dddede¡dfg¡dgdh„ ƒZ\didj„ Z]dkdl„ Z^ej_dmdn„ ƒZ`ej, DdoejaejGg¡dpdq„ ƒZbdrds„ ZcdS )ua<  
manage legacy pickle tests

How to add pickle tests:

1. Install pandas version intended to output the pickle.

2. Execute "generate_legacy_storage_files.py" to create the pickle.
$ python generate_legacy_storage_files.py <output_dir> pickle

3. Move the created pickle to "data/legacy_pickle/<version>" directory.
é    N)Úpartial)ÚPath)Úcatch_warningsÚfilterwarningsÚsimplefilter)Úget_lzma_fileÚis_platform_little_endian)Úimport_optional_dependency)ÚIndexÚSeriesÚperiod_range)ÚDayÚMonthEndz1ignore:Timestamp.freq is deprecated:FutureWarningÚmodule)Úscopec                  C   sJ   ddl m}  tƒ �$ tddtd� | ƒ W  d   ƒ S 1 s<0    Y  d S )Nr   ©Úcreate_pickle_dataÚignorez The 'freq' argument in Timestamp)Úcategory)Z-pandas.tests.io.generate_legacy_storage_filesr   r   r   ÚFutureWarningr   © r   ú[/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/io/test_pickle.pyÚcurrent_pickle_data<   s    ÿr   c                 C   sš   t |tƒrt || ¡ d S | d¡r6tj}|| |ƒ n`|dkrv|tju rX| tju stJ ‚q–| |ksdJ ‚| j|jks–J ‚n t	td|› d�tj
ƒ}|| |ƒ d S )NZsp_Ú	timestampZassert_Z_equal)Ú
isinstancer
   ÚtmÚassert_index_equalÚ
startswithZassert_equalÚpdZNaTÚfreqÚgetattrZassert_almost_equal)ÚresultÚexpectedÚtypÚversionÚ
comparatorr   r   r   Úcompare_elementL   s    


r&   c           
      C   sr   t  |¡} tƒ }|  ¡ D ]T\}}| ¡ D ]B\}}| | | }d|› d|› �}	| |	|d ¡}	|	||||ƒ q(q| S )NZcompare_Ú_r&   )r   Úread_pickleÚglobalsÚitemsÚget)
ÚdataZvfr$   Úmr#   ÚdvÚdtr!   r"   r%   r   r   r   Úcompare_   s    
r0   c                 C   sÒ   t  | |¡ | jj|jjks J ‚| jjjr.J ‚t  | dk|dk¡ | jj}|tdƒ tdƒksbJ ‚|tjdd� }t|tjƒs‚J ‚|tjddd�ks˜J ‚|tjdd� }t|tjƒs¸J ‚|tjddd�ksÎJ ‚d S )Nr   é   é   )Úhours)Údaysr3   )Únanoseconds)r4   r5   )	r   Úassert_series_equalÚindexr   Ú	normalizer   r   Z	Timedeltar   )r!   r"   r#   r$   r   Úresr   r   r   Úcompare_series_tsq   s    r:   c                 C   s   t  | |¡ d S ©N©r   r6   ©r!   r"   r#   r$   r   r   r   Úcompare_series_dt_tz…   s    r>   c                 C   s   t  | |¡ d S r;   r<   r=   r   r   r   Úcompare_series_cat‰   s    r?   c                 C   s   t  | |¡ d S r;   ©r   Úassert_frame_equalr=   r   r   r   Úcompare_frame_dt_mixed_tzs�   s    rB   c                 C   s   t  | |¡ d S r;   r@   r=   r   r   r   Úcompare_frame_cat_onecol‘   s    rC   c                 C   s   t | |||ƒ d S r;   )rC   r=   r   r   r   Úcompare_frame_cat_and_float•   s    rD   c                 C   sV   t  | |¡ t| jtƒsJ ‚| jtƒ ks,J ‚| jdks:J ‚t  |  d¡| d¡¡ d S )NÚMr2   )r   r   r   r   r   ZfreqstrÚshiftr=   r   r   r   Úcompare_index_period™   s
    rG   r,   Úlegacy_pickleÚ*z*.pickle)Úparamsc                 C   s
   || j ƒS r;   )Úparam)ÚrequestÚdatapathr   r   r   rH   ¦   s    c                 C   sf   t ƒ st d¡ tj tj |¡¡}tdd��$ tdƒ t	| ||ƒ W d   ƒ n1 sX0    Y  d S )Nz"known failure on non-little endianT)Úrecordr   )
r   ÚpytestÚskipÚosÚpathÚbasenameÚdirnamer   r   r0   )r   rH   r$   r   r   r   Útest_pickles®   s    
rU   c                 C   s>   t |dƒ� }tj| |dd� W d   ƒ n1 s00    Y  d S ©NÚwbéÿÿÿÿ©Úprotocol©ÚopenÚpickleÚdump©ÚobjrR   Úfhr   r   r   Úpython_pickler¸   s    rb   c                 C   sB   t | dƒ�$}| d¡ t |¡W  d   ƒ S 1 s40    Y  d S )NÚrbr   )r\   Úseekr]   Úload)rR   ra   r   r   r   Úpython_unpickler½   s    
rf   Úpickle_writerÚpython)ÚidZpandas_proto_defaultrY   Zpandas_proto_highesté   Zpandas_proto_4é   Zpandas_proto_5z5ignore:The 'freq' argument in Timestamp:FutureWarningc                 C   s*  | }|  ¡ D �]\}}|  ¡ D �]\}}tjtfD ]î}t ¡ �Ð}|||ƒ t |¡}	t|	||ƒ t|ƒ}	t|	||ƒ t	|dd��$}
|||ƒ |
 
d¡ W d   ƒ n1 sª0    Y  t	|dd��$}
t |
¡}	|
 
d¡ W d   ƒ n1 sê0    Y  t|	||ƒ W d   ƒ q21 �s0    Y  q2qqd S )NrW   )Úmoder   rc   )r*   r   Ú	to_picklerb   r   Úensure_cleanr(   r&   rf   r\   rd   )r   rg   r,   r#   r.   r/   r"   ÚwriterrR   r!   Úhandler   r   r   Útest_round_trip_currentÃ   s"    



(
(rq   c                  C   s(   t  ¡ } t  | jtj¡}t  | |¡ d S r;   )r   ÚmakeDataFrameÚround_trip_pathlibrm   r   r(   rA   ©Údfr!   r   r   r   Útest_pickle_path_pathlibï   s    rv   c                  C   s(   t  ¡ } t  | jtj¡}t  | |¡ d S r;   )r   rr   Zround_trip_localpathrm   r   r(   rA   rt   r   r   r   Útest_pickle_path_localpathõ   s    rw   c                 C   sœ   t  t¡�2 tdtƒ tj| ddddƒdd� W d  ƒ n1 sB0    Y  t  t¡�2 tdtƒ tj| dddd	ƒdd� W d  ƒ n1 sŽ0    Y  dS )
ap  

    Generated with

    >>> df = pd.DataFrame({"A": [1, 2, 3, 4], "B": [0, 0, 1, 1]}).to_sparse()
    >>> df.to_pickle("pandas/tests/io/data/pickle/sparseframe-0.20.3.pickle.gz",
    ...              compression="gzip")

    >>> s = df['B']
    >>> s.to_pickle("pandas/tests/io/data/pickle/sparseseries-0.20.3.pickle.gz",
    ...             compression="gzip")
    r   Úior,   r]   zsparseseries-0.20.3.pickle.gzÚgzip©ÚcompressionNzsparseframe-0.20.3.pickle.gz)r   Zassert_produces_warningr   r   ÚDeprecationWarningr   r(   )rM   r   r   r   Útest_legacy_sparse_warningû   s    
þ$
þr}   c                   C   s   dt  d¡› d�S )NÚ__é
   z	__.pickle)r   Zrandsr   r   r   r   Úget_random_path  s    r€   c                   @   sb   e Zd Zdd„ ej ¡ D ƒZdd„ Zdd„ Ze	j
 dg d¢¡d	d
„ ƒZdd„ Zdd„ Zdd„ ZdS )ÚTestCompressionc                 C   s   i | ]\}}||“qS r   r   )Ú.0r{   Úextr   r   r   Ú
<dictcomp>#  s   zTestCompression.<dictcomp>c              	   C   sD  |d u rt  ||¡ d S |dkr.t |d¡}n¨|dkrDt |d¡}n’|dkr”tj|dtjd��$}| 	|t
j |¡¡ W d   ƒ qÖ1 sˆ0    Y  nB|dkrªtƒ |dƒ}n,|dkrÄtdƒ |d	¡}nd
|› �}t|ƒ‚|dk�r@t|dƒ�D}|� | 	| ¡ ¡ W d   ƒ n1 �s0    Y  W d   ƒ n1 �s60    Y  d S )Nry   ÚwÚbz2Úziprz   ÚxzZzstdZ	zstandardrW   zUnrecognized compression type: rc   )ÚshutilÚcopyfilery   r\   r†   ÚBZ2FileÚzipfileÚZipFileÚZIP_DEFLATEDÚwriterQ   rR   rS   r   r	   Ú
ValueErrorÚread)ÚselfZsrc_pathÚ	dest_pathr{   ÚfÚmsgra   r   r   r   Úcompress_file'  s&    4

zTestCompression.compress_filec                 C   s  |}|d }|d }t  |¡�Ð}t  |¡�¦}t  ¡ }|j||d� t j||d��H}	t|dƒ�}
|
 |	 ¡ ¡ W d   ƒ n1 s€0    Y  W d   ƒ n1 sž0    Y  tj	|d d�}t  
||¡ W d   ƒ n1 sÖ0    Y  W d   ƒ n1 sô0    Y  d S )Nú.compressedú.rawrz   rW   )r   rn   rr   rm   Údecompress_filer\   r�   r‘   r   r(   rA   )r’   r{   r€   ÚbaseÚpath1Úpath2Úp1Úp2ru   r”   ra   Údf2r   r   r   Útest_write_explicit?  s    Jz#TestCompression.test_write_explicitr{   )Ú ÚNoneÚbadZ7zc              	   C   sr   t jtdd��P t |¡�&}t ¡ }|j||d� W d   ƒ n1 sF0    Y  W d   ƒ n1 sd0    Y  d S )NzUnrecognized compression type)Úmatchrz   )rO   Zraisesr�   r   rn   rr   rm   )r’   r{   r€   rR   ru   r   r   r   Útest_write_explicit_badT  s    z'TestCompression.test_write_explicit_badc                 C   s  |}|| }|d }| j  | ¡ ¡}t |¡�Ì}t |¡�¢}t ¡ }	|	 |¡ tj||d��H}
t|dƒ�}| 	|
 
¡ ¡ W d   ƒ n1 sŒ0    Y  W d   ƒ n1 sª0    Y  tj|d d�}t |	|¡ W d   ƒ n1 sâ0    Y  W d   ƒ n1 �s0    Y  d S )Nr˜   rz   rW   )Ú_extension_to_compressionr+   Úlowerr   rn   rr   rm   r™   r\   r�   r‘   r   r(   rA   )r’   Úcompression_extr€   rš   r›   rœ   r{   r�   rž   ru   r”   ra   rŸ   r   r   r   Útest_write_infer[  s    
Jz TestCompression.test_write_inferc           
   	   C   s¬   |}|d }|d }t  |¡�z}t  |¡�P}t  ¡ }|j|d d� | j|||d� tj||d�}	t  ||	¡ W d   ƒ n1 s€0    Y  W d   ƒ n1 sž0    Y  d S )Nr˜   r—   rz   )r   rn   rr   rm   r–   r   r(   rA   )
r’   r{   r€   rš   r›   rœ   r�   rž   ru   rŸ   r   r   r   Útest_read_explicitq  s    z"TestCompression.test_read_explicitc              	   C   s¸   |}|d }|| }| j  | ¡ ¡}t |¡�v}t |¡�L}t ¡ }	|	j|d d� | j|||d� t 	|¡}
t 
|	|
¡ W d   ƒ n1 sŒ0    Y  W d   ƒ n1 sª0    Y  d S )Nr˜   rz   )r¦   r+   r§   r   rn   rr   rm   r–   r   r(   rA   )r’   r¨   r€   rš   r›   rœ   r{   r�   rž   ru   rŸ   r   r   r   Útest_read_infer„  s    
zTestCompression.test_read_inferN)Ú__name__Ú
__module__Ú__qualname__ÚicomZ_compression_to_extensionr*   r¦   r–   r    rO   ÚmarkÚparametrizer¥   r©   rª   r«   r   r   r   r   r�   !  s   ÿ
r�   c                   @   s&   e Zd Zej dg d¢¡dd„ ƒZdS )ÚTestProtocolrZ   )rX   r   r1   r2   c                 C   sZ   t  |¡�<}t  ¡ }|j||d� t |¡}t  ||¡ W d   ƒ n1 sL0    Y  d S )NrY   ©r   rn   rr   rm   r   r(   rA   )r’   rZ   r€   rR   ru   rŸ   r   r   r   Ú	test_readŸ  s
    
zTestProtocol.test_readN)r¬   r­   r®   rO   r°   r±   r´   r   r   r   r   r²   ž  s   r²   Úpickle_fileÚexcolsztest_py27.pkl)ÚaÚbÚcztest_mi_py27.pkl)ÚAÚBÚCc                 C   s*   | ddd|ƒ}t  |¡}t |j|¡ d S )Nrx   r,   r]   )r   r(   r   r   Úcolumns)rM   rµ   r¶   rR   ru   r   r   r   Útest_unicode_decode_error¨  s    
r¾   c               	   C   s¨   t  ¡ �Œ} t  ¡ }t| dƒ�}| |¡ W d   ƒ n1 s<0    Y  t| dƒ�}t |¡}W d   ƒ n1 sp0    Y  t  ||¡ W d   ƒ n1 sš0    Y  d S )NrW   rc   )r   rn   rr   r\   rm   r   r(   rA   )rR   ru   ra   r!   r   r   r   Útest_pickle_buffer_roundtripÁ  s    
((r¿   Úmockurl)zhttp://url.comzftp://test.comzhttp://gzip.comc                    s„   dd„ }G dd„ dƒ‰ t  ¡ �R‰‡ ‡fdd„}t  ¡ }||ˆƒ |  d|¡ t |¡}t  ||¡ W d   ƒ n1 sv0    Y  d S )Nc                 S   s>   t |dƒ� }tj| |dd� W d   ƒ n1 s00    Y  d S rV   r[   r_   r   r   r   rb   Ô  s    z3test_pickle_generalurl_read.<locals>.python_picklerc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )z5test_pickle_generalurl_read.<locals>.MockReadResponsec                 S   s.   t |dƒ| _d|v r ddi| _n
dd i| _d S )Nrc   ry   zContent-Encoding)r\   ÚfileÚheaders)r’   rR   r   r   r   Ú__init__Ù  s    z>test_pickle_generalurl_read.<locals>.MockReadResponse.__init__c                 S   s   | S r;   r   ©r’   r   r   r   Ú	__enter__à  s    z?test_pickle_generalurl_read.<locals>.MockReadResponse.__enter__c                 W   s   |   ¡  d S r;   )Úclose)r’   Úargsr   r   r   Ú__exit__ã  s    z>test_pickle_generalurl_read.<locals>.MockReadResponse.__exit__c                 S   s
   | j  ¡ S r;   )rÁ   r‘   rÄ   r   r   r   r‘   æ  s    z:test_pickle_generalurl_read.<locals>.MockReadResponse.readc                 S   s
   | j  ¡ S r;   )rÁ   rÆ   rÄ   r   r   r   rÆ   é  s    z;test_pickle_generalurl_read.<locals>.MockReadResponse.closeN)r¬   r­   r®   rÃ   rÅ   rÈ   r‘   rÆ   r   r   r   r   ÚMockReadResponseØ  s
   rÉ   c                     s   ˆ ˆƒS r;   r   )rÇ   Úkwargs©rÉ   rR   r   r   Úmock_urlopen_readî  s    z6test_pickle_generalurl_read.<locals>.mock_urlopen_readzurllib.request.urlopen)r   rn   rr   Úsetattrr   r(   rA   )ZmonkeypatchrÀ   rb   rÌ   ru   r!   r   rË   r   Útest_pickle_generalurl_readÐ  s    


rÎ   Zfsspecc                  C   sX   t  ¡ �< d} t  ¡ }| | ¡ t | ¡}t  ||¡ W d   ƒ n1 sJ0    Y  d S )Nzmemory://afiler³   )rÀ   ru   r!   r   r   r   Útest_pickle_fsspec_roundtripø  s    


rÏ   c                   @   s   e Zd Zdd„ ZdS )ÚMyTzc                 C   s   d S r;   r   rÄ   r   r   r   rÃ     s    zMyTz.__init__N)r¬   r­   r®   rÃ   r   r   r   r   rÐ     s   rÐ   c                  C   sD   t td�tƒ f} t | ¡}t |d | d ¡ t|d tƒs@J ‚d S )N)Zdtyper   r1   )r   ÚobjectrÐ   r   Úround_trip_pickler6   r   )r"   r!   r   r   r   Útest_read_pickle_with_subclass  s    
rÓ   c                 C   sª   t  ¡ }t  ¡ �*}|j|| d� t|ƒ ¡ }W d  ƒ n1 s@0    Y  t ¡ }|j|| d� | d¡ | 	¡ |ks‚| dv s‚J ‚t
j|| d�}| d¡ t  ||¡ dS )ze
    Read/write from binary file-objects w/wo compression.

    GH 26237, GH 29054, and GH 29570
    rz   Nr   )ry   r‡   )r   rr   rn   rm   r   Ú
read_bytesrx   ÚBytesIOrd   Úgetvaluer   r(   rA   )r{   ru   rR   Ú	referenceÚbufferZread_dfr   r   r   Ú%test_pickle_binary_object_compression  s    
*

rÙ   c                 C   s8   | }|}dd„ }||ƒ ||j ƒ ||ƒ ||j ƒ d S )Nc                 S   s   t  | ¡}t  | |¡ d S r;   )r   rÒ   rA   )ÚframeÚ	unpickledr   r   r   Ú_test_roundtrip2  s    
zDtest_pickle_dataframe_with_multilevel_index.<locals>._test_roundtrip)ÚT)Z/multiindex_year_month_day_dataframe_random_dataZ multiindex_dataframe_random_dataZymdrÚ   rÜ   r   r   r   Ú+test_pickle_dataframe_with_multilevel_index+  s    
rÞ   c                  C   sB   t dddd�} ttj t| ƒ¡| ƒ}t |¡}|jj	dks>J ‚d S )Nz1/1/2011z1/1/2012rE   )r   )
r   r   ÚnpÚrandomZrandnÚlenr   rÒ   r7   r   )ZprngÚtsZnew_tsr   r   r   Ú"test_pickle_timeseries_periodindex<  s    
rã   Únamei	  g     Hˆ@iÑ  é   )r1   r2   c                 C   s$   t  t j| d�¡}|j| ks J ‚d S )N)rä   )r   rÒ   ZmakeTimeSeriesrä   )rä   rÛ   r   r   r   Útest_pickle_preserve_nameD  s    ræ   c                 C   s   t  | ¡}t  || ¡ d S r;   ©r   rÒ   r6   )Zdatetime_seriesZunp_tsr   r   r   Útest_pickle_datetimesM  s    
rè   c                 C   s   t  | ¡}t  || ¡ d S r;   rç   )Zstring_seriesZ
unp_seriesr   r   r   Útest_pickle_stringsR  s    
ré   c                  C   sf   t tdƒƒ d¡jdg } t | ¡}|jjd jdks:J ‚|jjd j	dksPJ ‚t 
|dg | ¡ d S )NÚabcr   r   r1   )r1   T)r   ÚlistZastypeZilocr   rÒ   Z_mgrÚblocksÚndimÚshaper6   )Zserr9   r   r   r   Ú test_pickle_preserves_block_ndimW  s
    
rï   rZ   c                 C   s@   t  tdƒ¡}t t|j| |d�tt j|d�¡}t ||¡ d S )Ni † )rZ   r{   rz   )	r   Ú	DataFrameÚranger   rs   r   rm   r(   rA   )rZ   r{   ru   r!   r   r   r   Ú%test_pickle_big_dataframe_compressiond  s    þrò   c                  C   s\   t j tdd¡} t| dƒ�}t |¡}W d   ƒ n1 s:0    Y  t ¡ }t	 
||¡ d S )Nz1.2.4zempty_frame_v1_2_4-GH#42345.pklrc   )rQ   rR   ÚjoinÚlegacy_dirnamer\   r]   re   r   rð   r   rA   )rR   Úfdru   r"   r   r   r   Ú#test_pickle_frame_v124_unpickle_130o  s
    (rö   )N)dÚ__doc__r†   ÚdatetimeÚ	functoolsr   Úglobry   rx   rQ   Úpathlibr   r]   r‰   Úwarningsr   r   r   rŒ   Únumpyrß   rO   Zpandas.compatr   r   Zpandas.compat._optionalr	   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r
   r   r   Zpandas._testingZ_testingr   Zpandas.io.commonÚcommonr¯   Zpandas.tseries.offsetsr   r   r°   Z
pytestmarkZfixturer   r&   r0   r:   r>   r?   rB   rC   rD   rG   rR   rT   Ú__file__Úhereró   rô   ÚfilesrH   rU   rb   rf   r±   rK   rm   ÚHIGHEST_PROTOCOLrq   rv   rw   r}   r€   r�   r²   Z
MultiIndexZfrom_arraysr¾   r¿   rÎ   Z
skip_if_norÏ   ÚtzinforÐ   rÓ   rÙ   rÞ   rã   ræ   rè   ré   Zskip_array_manager_invalid_testrï   ÚDEFAULT_PROTOCOLrò   rö   r   r   r   r   Ú<module>   sÊ   ÿ





þþøþ
!
}
þþþ

ÿ
%
		ÿ



