zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
U
­ý°dÝHã@s2dZddlmZddlZddlZddlZddlmZddlZddlZddlZddl    Z    ddl
m Z ddl Z ddl Z ddlZddlZddlmZddlZddlZddlZddlmZmZddlmZdd    lmZddlmmZ ddl!Z"dd
l!m#Z#m$Z$m%Z%ddl&m'Z(ddl)mm*Z+dd l,m-Z-m.Z.ej/d d dd„ƒZ0dd„Z1e    j2 3e    j2 4e5¡dd¡Z6e e    j2 3e6dd¡¡Z7ej/e7ddd„ƒZ8ej9 :ddde;dƒe<dƒe  =d¡eddddgƒe<dƒ >dd¡e<dƒ >dd¡ddd…e ?d ¡j@d!d"d#e ?d ¡j@d!d$d#e ?d ¡j@d!d"d#dd…ddd…fg ¡d%d&„ƒZAd'd(„ZBd)d*„ZCd+d,„ZDej9 :d-ejEeCd.d/ejEe"jFd0d/ejEeje"jFe jGd1d2d/ejEeje"jFd3d1d4d/ejEeje"jFd5d1d6d/g¡ej9 :d7e"jFeCg¡d8d9„ƒƒZHd:d;„ZId<d=„ZJej/d>d?„ƒZKGd@dA„dAƒZLGdBdC„dCƒZMej9 :dDdEgdFe#dGdHdIgƒfdJe"jN OdGdHdIgdKdd"gg¡fg¡dLdM„ƒZPdNdO„ZQej9 :dPdQdRdSg¡dTdU„ƒZRe  SdV¡dWdX„ƒZTGdYdZ„dZejUƒZVd[d\„ZWd]d^„ZXd_d`„ZYdadb„ZZej9 :dcdddedce dfdgdg¡dhg¡didj„ƒZ[dkdl„Z\dmdn„Z]e j^dodp„ƒZ_ej9 :dqe j`e jGg¡drds„ƒZadtdu„ZbdS)va<
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.
é)ÚarrayN)Úpartial)ÚPath)Úcatch_warnings)Ú get_lzma_fileÚis_platform_little_endian)Úimport_optional_dependency)Úflatten_buffer)ÚIndexÚSeriesÚ period_range)ÚDayÚMonthEndÚmodule)Zscopec
Cs0ddlm}tƒ|ƒW5QR£SQRXdS)Nr©Úcreate_pickle_data)Z-pandas.tests.io.generate_legacy_storage_filesrrr©rúRd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/io/test_pickle.pyÚcurrent_pickle_data8s rcCs†t|tƒrt ||¡dS| d¡r2t ||¡nP|dkrb|tjkrT|tjks`t‚q‚||ks‚t‚n t    td|›dtj
ƒ}|||ƒdS)NZsp_Ú    timestampZassert_Z_equal) Ú
isinstancer
ÚtmÚassert_index_equalÚ
startswithZ assert_equalÚpdZNaTÚAssertionErrorÚgetattrZassert_almost_equal)ÚresultÚexpectedÚtypZ
comparatorrrrÚcompare_elementDs
 
 
r ÚdataÚ legacy_pickleÚ*z*.pickle)ÚparamscCs
||jƒS©N)Úparam)ÚrequestÚdatapathrrrr"Yss123s123456ÚIéééÚB)r,r+é )r,éÚC)ÚorderÚFcCs„t|ƒ}t|ƒ d¡}||ks"t‚t|ttfƒr>||ks€t‚nBt|tƒr€|jdksVt‚|jdksdt‚|j    snt‚|j
|j fks€t‚dS)NÚAr*r-) r    Ú
memoryviewÚtobytesrrÚbytesÚ    bytearrayÚndimÚformatÚ
contiguousÚshapeÚnbytes)r!rrrrrÚtest_flatten_buffercs 
 
r=c    Csøtƒst d¡t |¡}| ¡D]Î\}}| ¡D]º\}}|||}|dkr2|dkr2t ||¡|jj    |jj    ks~t
‚|jj    j rŒt
‚t |dk|dk¡|jj    }|t dƒt dƒksÀt
‚|tj dd}t|tj ƒsàt
‚|tj dddksöt
‚|tj dd    }t|tj ƒst
‚|tj ddd
ksðt
‚q4|d kr |d kr t ||¡t|j    tƒsdt
‚|j    tƒksvt
‚|jd ks†t
‚t | d¡| d¡¡q4|dkrÂ|dkrÂt ||¡q4|dkrä|dkrät ||¡q4t|||ƒq4q"dS)Nz"known failure on non-little endianZseriesÚtsrr*r+)Úhours)Údaysr?)Ú nanoseconds)r@rAÚindexZperiodÚM)Zdt_tzÚcatÚframe)Z dt_mixed_tzsZ
cat_onecolZ cat_and_float)rÚpytestÚskiprÚ read_pickleÚitemsrÚassert_series_equalrBÚfreqrÚ    normalizer Z    TimedeltarrrZfreqstrÚshiftÚassert_frame_equalr )    r"r!rÚdvÚdtrrrKÚresrrrÚ test_pickles€s<
 
   rRc    Cs*t|dƒ}tj||ddW5QRXdS©NÚwbéÿÿÿÿ©Úprotocol©ÚopenÚpickleÚdump©ÚobjÚpathÚfhrrrÚpython_pickler®s r`c
Cs6t|dƒ"}| d¡t |¡W5QR£SQRXdS)NÚrbr)rYÚseekrZÚload)r^r_rrrÚpython_unpickler³s 
rdÚ pickle_writerÚpython)ÚidZpandas_proto_defaultrVZpandas_proto_highestr/Zpandas_proto_4éZpandas_proto_5Úwriterc CsØ|}| ¡D]Æ\}}| ¡D]´\}}t ¡ž}|||ƒt |¡}    t|    ||ƒt|ƒ}    t|    ||ƒt|dd}
|||ƒ|
 d¡W5QRXt|dd}
t |
¡}    |
 d¡W5QRXt|    ||ƒW5QRXqq dS)NrT©Úmoderra)    rIrÚ ensure_cleanrrHr rdrYrb) rrerir!rrOrPrr^rÚhandlerrrÚtest_round_trip_current¹s 
 
 
 
 
rncCs(t ¡}t |jtj¡}t ||¡dSr%)rÚ makeDataFrameÚround_trip_pathlibÚ    to_picklerrHrN©ÚdfrrrrÚtest_pickle_path_pathlibãsrtcCs(t ¡}t |jtj¡}t ||¡dSr%)rroZround_trip_localpathrqrrHrNrrrrrÚtest_pickle_path_localpathésrucCsdt ¡›dS)NÚ__z    __.pickle)ÚuuidÚuuid4rrrrÚget_random_pathôsryc@sXeZdZejZdd„Zdd„Zej     
ddddd    g¡d
d „ƒZ d d „Z dd„Z dd„ZdS)ÚTestCompressionc    
Cs`|dkrt ||¡dS|dkr.t |d¡}nð|dkrDt |d¡}nÚ|dkr€tj|dtjd}|     |t
j   |¡¡W5QRXnž|dkrÚt|dƒ@}t j|dd&}| |t
j   |¡¡}| ||¡W5QRXW5QRXnD|d    krðtƒ|dƒ}n.|d
kr td ƒ |d ¡}nd |›}t|ƒ‚|dkr\t|dƒ$}||     | ¡¡W5QRXW5QRXdS)NÚgzipÚwÚbz2Úzip©Ú compressionÚtarrarjÚxzZzstdZ    zstandardrTzUnrecognized compression type: )r~r)ÚshutilÚcopyfiler{rYr}ÚBZ2FileÚzipfileÚZipFileÚ ZIP_DEFLATEDÚwriteÚosr^ÚbasenameÚtarfileÚ
gettarinfoÚaddfilerrÚ
ValueErrorÚread)    ÚselfZsrc_pathÚ    dest_pathr€Úfr_rÚtarinfoÚmsgrrrÚ compress_fileüs2   "
 
 
 zTestCompression.compress_filec Cs²|}|d}|d}t |¡Š}t |¡t}t ¡}|j||dtj||d*}    t|dƒ}
|
 |     ¡¡W5QRXW5QRXtj    |dd} t 
|| ¡W5QRXW5QRXdS)Nú .compressedú.rawrrT) rrlrorqÚdecompress_filerYr‰rrrHrN) r‘r€ryÚbaseÚpath1Úpath2Úp1Úp2rsr“r_Údf2rrrÚtest_write_explicits "z#TestCompression.test_write_explicitr€ÚÚNoneÚbadZ7zc
CsJtjtdd2t |¡}t ¡}|j||dW5QRXW5QRXdS)NzUnrecognized compression type)Úmatchr)rFZraisesrrrlrorq)r‘r€ryr^rsrrrÚtest_write_explicit_bad/s z'TestCompression.test_write_explicit_badc Cs¾|}||}|d}|j | ¡¡}t |¡†}t |¡p}t ¡}    |     |¡tj||d*}
t|dƒ} |      |
 
¡¡W5QRXW5QRXt j |dd} t  |    | ¡W5QRXW5QRXdS)Nr˜rrT)Ú_extension_to_compressionÚgetÚlowerrrlrorqr™rYr‰rrrHrN) r‘Úcompression_extryršr›rœr€rržrsr“r_rŸrrrÚtest_write_infer6s
 "z TestCompression.test_write_inferc
 
Cs„|}|d}|d}t |¡\}t |¡F}t ¡}|j|dd|j|||dtj||d}    t ||    ¡W5QRXW5QRXdS)Nr˜r—r)rrlrorqr–rrHrN)
r‘r€ryršr›rœrržrsrŸrrrÚtest_read_explicitLsz"TestCompression.test_read_explicitc
Cs|}|d}||}|j | ¡¡}t |¡X}t |¡B}t ¡}    |    j|dd|j|||dt     |¡}
t 
|    |
¡W5QRXW5QRXdS)Nr˜r) r¦r§r¨rrlrorqr–rrHrN) r‘r©ryršr›rœr€rržrsrŸrrrÚtest_read_infer^s
zTestCompression.test_read_inferN)Ú__name__Ú
__module__Ú __qualname__ÚicomZextension_to_compressionr¦r–r rFÚmarkÚ parametrizer¥rªr«r¬rrrrrzùs
rzc@s*eZdZej dddddg¡dd„ƒZdS)    Ú TestProtocolrWrUrr*r+c    CsFt |¡2}t ¡}|j||dt |¡}t ||¡W5QRXdS)NrV©rrlrorqrrHrN)r‘rWryr^rsrŸrrrÚ    test_readxs
 
zTestProtocol.test_readN)r­r®r¯rFr±r²rµrrrrr³wsr³Ú pickle_fileÚexcolsz test_py27.pklÚaÚbÚcztest_mi_py27.pklr3cCs*|ddd|ƒ}t |¡}t |j|¡dS)NÚior!rZ)rrHrrÚcolumns)r(r¶r·r^rsrrrÚtest_unicode_decode_errors 
r½c
Cslt ¡Z}t ¡}t|dƒ}| |¡W5QRXt|dƒ}t |¡}W5QRXt ||¡W5QRXdS)NrTra)rrlrorYrqrrHrN)r^rsr_rrrrÚtest_pickle_buffer_roundtripšs
  r¾Úmockurlzhttp://url.comzftp://test.comzhttp://gzip.comc    spdd„}Gdd„dƒ‰t ¡H‰‡‡fdd„}t ¡}||ˆƒ| d|¡t |¡}t ||¡W5QRXdS)Nc    Ss*t|dƒ}tj||ddW5QRXdSrSrXr\rrrr`­s z3test_pickle_generalurl_read.<locals>.python_picklerc@s:eZdZddœdd„Zdd„Zdd„Zd    d
„Zd d „ZdS) z5test_pickle_generalurl_read.<locals>.MockReadResponseN©ÚreturncSs.t|dƒ|_d|kr ddi|_n
ddi|_dS)Nrar{zContent-Encodingr¡)rYÚfileÚheaders)r‘r^rrrÚ__init__²s  z>test_pickle_generalurl_read.<locals>.MockReadResponse.__init__cSs|Sr%r©r‘rrrÚ    __enter__¹sz?test_pickle_generalurl_read.<locals>.MockReadResponse.__enter__cWs | ¡dSr%)Úclose)r‘ÚargsrrrÚ__exit__¼sz>test_pickle_generalurl_read.<locals>.MockReadResponse.__exit__cSs
|j ¡Sr%)rÂrrÅrrrr¿sz:test_pickle_generalurl_read.<locals>.MockReadResponse.readcSs
|j ¡Sr%)rÂrÇrÅrrrrÇÂsz;test_pickle_generalurl_read.<locals>.MockReadResponse.close)r­r®r¯rÄrÆrÉrrÇrrrrÚMockReadResponse±s
rÊcsˆˆƒSr%r)rÈÚkwargs©rÊr^rrÚmock_urlopen_readÇsz6test_pickle_generalurl_read.<locals>.mock_urlopen_readzurllib.request.urlopen)rrlroÚsetattrrrHrN)Z monkeypatchr¿r`rÍrsrrrÌrÚtest_pickle_generalurl_read©s
 
 
rÏZfsspecc    CsDt ¡2d}t ¡}| |¡t |¡}t ||¡W5QRXdS)Nzmemory://afiler´)r¿rsrrrrÚtest_pickle_fsspec_roundtripÑs 
 
 
rÐc@seZdZddœdd„ZdS)ÚMyTzNrÀcCsdSr%rrÅrrrrÄÜsz MyTz.__init__)r­r®r¯rÄrrrrrÑÛsrÑcCsDttdtƒf}t |¡}t |d|d¡t|dtƒs@t‚dS)N)Zdtyperr*)r ÚobjectrÑrÚround_trip_picklerJrr)rrrrrÚtest_read_pickle_with_subclassàs
rÔc    Cs–t ¡}t ¡ }|j||dt|ƒ ¡}W5QRXt ¡}|j||d| d¡|     ¡|ksn|dksnt
‚t j ||d}| d¡t  ||¡dS)ze
    Read/write from binary file-objects w/wo compression.
 
    GH 26237, GH 29054, and GH 29570
    rr)r{r~rN)rrorlrqrÚ
read_bytesr»ÚBytesIOrbÚgetvaluerrrHrN)r€rsr^Ú    referenceÚbufferZread_dfrrrÚ%test_pickle_binary_object_compressionés
 
 
rÚcCs8|}|}dd„}||ƒ||jƒ||ƒ||jƒdS)NcSst |¡}t ||¡dSr%)rrÓrN)rEÚ    unpickledrrrÚ_test_roundtrip s
zDtest_pickle_dataframe_with_multilevel_index.<locals>._test_roundtrip)ÚT)Z/multiindex_year_month_day_dataframe_random_dataZ multiindex_dataframe_random_dataZymdrErÜrrrÚ+test_pickle_dataframe_with_multilevel_indexs
rÞcCsBtdddd}ttj t|ƒ¡|ƒ}t |¡}|jj    dks>t
‚dS)Nz1/1/2011z1/1/2012rC)rK) r r ÚnpÚrandomZrandnÚlenrrÓrBrKr)Zprngr>Znew_tsrrrÚ"test_pickle_timeseries_periodindexs
râÚnamei    gHˆ@iÑé )r*r+cCs$t tj|d¡}|j|ks t‚dS)N)rã)rrÓZmakeTimeSeriesrãr)rãrÛrrrÚtest_pickle_preserve_namesråcCst |¡}t ||¡dSr%©rrÓrJ)Zdatetime_seriesZunp_tsrrrÚtest_pickle_datetimes%s
rçcCst |¡}t ||¡dSr%ræ)Z string_seriesZ
unp_seriesrrrÚtest_pickle_strings*s
rècCsfttdƒƒ d¡jdg}t |¡}|jjdjdks:t    ‚|jjdj
dksPt    ‚t  |dg|¡dS)NÚabcÚcategoryrr*)r*T) r ÚlistZastypeZilocrrÓZ_mgrÚblocksr8rr;rJ)ZserrQrrrÚ test_pickle_preserves_block_ndim/s
 
rírWcCs@t tdƒ¡}t t|j||dttj|d¡}t ||¡dS)Ni †)rWr€r)    rÚ    DataFrameÚrangerrprrqrHrN)rWr€rsrrrrÚ%test_pickle_big_dataframe_compression<s  þrðc    CsNtj tdd¡}t|dƒ}t |¡}W5QRXtjggd}t     
||¡dS)Nz1.2.4zempty_frame_v1_2_4-GH#42345.pklra)rBr¼) rŠr^ÚjoinÚlegacy_dirnamerYrZrcrrîrrN)r^ÚfdrsrrrrÚ#test_pickle_frame_v124_unpickle_130Gs
 rô)cÚ__doc__rr}ÚdatetimeÚ    functoolsrÚglobr{r»rŠÚpathlibrrZrƒrŒrwÚwarningsrr†ÚnumpyrßrFZ pandas.compatrrZpandas.compat._optionalrZpandas.compat.compressorsr    Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasrr
r r Zpandas._testingZ_testingrZpandas.io.commonÚcommonr°Zpandas.tseries.offsetsr rZfixturerr r^rñÚdirnameÚ__file__ròÚfilesr"r±r²r7r4Ú PickleBufferÚcastZarangeZreshaper=rRr`rdr&rqÚHIGHEST_PROTOCOLrnrtruryrzr³Z
MultiIndexZ from_arraysr½r¾rÏZ
skip_if_norÐÚtzinforÑrÔrÚrÞrârårçrèZskip_array_manager_invalid_testríÚDEFAULT_PROTOCOLrðrôrrrrÚ<module>sÜ       
 
 
 
    $õþ
. þþøþ  
~
þþþ
 
ÿ
%
        ÿ