
    4iP                    &   S r SSKJr  SSKrSSKrSSKrSSKJr  SSKrSSKrSSK	r	SSK
Jr  SSKrSSKrSSKrSSKJr  SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKrSS	KJrJrJrJr  SSK J!r"  SS
K#J$r$  SSK%J&r&  SSK'Js  J(r)  SSK*J+r+J,r,  S r-S r.S r/S r0S:S jr1\Rd                  Rg                  S\Rh                  " \/SS9\Rh                  " \Rj                  SS9\Rh                  " \R                  " \Rj                  \Rl                  S9SS9\Rh                  " \R                  " \Rj                  SS9SS9\Rh                  " \R                  " \Rj                  SS9SS9/5      \Rd                  Rg                  S\Rj                  \//5      \Rd                  Rg                  S\1" \$" 5       5      5      S 5       5       5       r7S r8\Rr                  S  5       r: " S! S"5      r; " S# S$5      r<S% r=S& r> " S' S(\R~                  5      r@S) rAS* rBS+ rCS, rD\Rd                  Rg                  S-S.S/S-\R                  " S0S1S15      S2/5      S3 5       rES4 rFS5 rGS6 rH\Rd                  Rg                  S7\R                  \Rl                  /5      S8 5       rJS9 rKg);a<  
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.
    )annotationsN)partial)Path)Any)is_platform_little_endian)import_optional_dependency)	DataFrameIndexSeriesperiod_range)create_pickle_data)Version)DayMonthEndc                z   [        U[        5      (       a  [        R                  " X5        g UR	                  S5      (       a  [        R
                  " X5        g US:X  a1  U[        R                  L a  U [        R                  L d   eg X:X  d   eg [        [        SU S3[        R                  5      nU" X5        g )Nsp_	timestampassert__equal)

isinstancer
   tmassert_index_equal
startswithassert_equalpdNaTgetattrassert_almost_equal)resultexpectedtyp
comparators       ]/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/tests/io/test_pickle.pycompare_elementr$   :   s    (E""
f/
~~e
)		rvvRVV###%%%R73%v!68N8NO
6$    c                   [         R                  " S5        [        5       (       d  [         R                  " S5        [	        5       n[        [        5      R                  R                  S5       GHu  n[        UR                  R                  5      nU " U5      n[        R                  " U5      nUR                  5        GH  u  pVUR                  5        GH  u  pxX   U   n	US:X  a&  US;   a   U[        S5      :  a  U	R                  S 5      n	U[        S5      :  Ga  US;   GaK  U	R                  R!                  S	5      U	l        US
;   a>  U	S   R!                  ["        5      U	S'   U	S   R$                  R'                  S5      U	S'   GOUS;   aW  U	S   R!                  [        R(                  " U	S   R*                  R,                  R!                  ["        5      5      5      U	S'   GOUS:X  a(  US:X  a"  U	R.                  R'                  S5      U	l        GOUS:X  aT  U	R.                  R1                  U	R.                  R2                   V
s/ s H  n
U
R!                  S	5      PM     sn
5      U	l        GO+US;   a  US:X  a!  U	R.                  R'                  S5      U	l        OUS;   a  U	R$                  R'                  S5      n	OUS:X  aM  U	R!                  [        R(                  " U	R*                  R,                  R!                  ["        5      5      5      n	OUS:X  a$  U	R.                  R!                  ["        5      U	l        O^US:X  a  US;   a  U	R'                  S5      n	O@US:X  a:  U	R1                  U	R2                   V
s/ s H  oR!                  S	5      PM     sn
5      n	US:X  a%  U	R!                  [        R4                  " S5      5      n	US;   ak  U[        S5      :  a  SnO'[        S5      Us=::  a  [        S5      :  a  O  OSnOSnU	R                   H"  nX   R$                  R'                  U5      X'   M$     US:X  a+  US :X  a%  S!U;   a  U	R!                  [6        R8                  5      n	US":X  Gam  US:X  Gaf  [:        R<                  " X5        UR.                  R>                  U	R.                  R>                  :X  d   eUR.                  R>                  R@                  (       a   e[:        R<                  " US#:  U	S#:  5        UR.                  R>                  nU[C        S$5      -   [C        S%5      :X  d   eU[        RD                  " S$S&9-   n[G        U[        RD                  5      (       d   eU[        RD                  " S$S$S'9:X  d   eU[        RD                  " S$S(9-   n[G        U[        RD                  5      (       d   eU[        RD                  " S$S$S)9:X  d   eGM  US:X  a  US*:X  a  [:        RH                  " X5        [G        UR>                  [J        5      (       d   eUR>                  [K        5       :X  d   eURL                  S+:X  d   e[:        RH                  " URO                  S%5      U	RO                  S%5      5        GM  US":X  a  US,;   a  [:        R<                  " X5        GM  US-:X  a  US.;   a  [:        RP                  " X5        GM  [S        XU5        GM     GM"     GMx     g s  sn
f s  sn
f )/Npytzz"known failure on non-little endianzdata/legacy_pickle/*/*.p*kl*r   )tzbothz1.3.0z
3.0.0.dev0)framesp_frameobject)mixed	mixed_dupCDns)
cat_onecolcat_and_floatAr+   floatmi)series	sp_seriests)dtdt_tzcatdupindex)date	timedeltastringpython)dt_mixed_tzsdt_mixed2_tzsz2.1susintwindowsr7   r         )hours)daysrK   )nanoseconds)rL   rM   periodM)r;   r<   r*   )rC   r2   r3   )*pytestimportorskipr   skipr   r   __file__parentglobr   namer   read_pickleitems
tz_convertcolumnsastyper,   r:   as_unitCategoricalDtyper<   
categoriesr>   
set_levelslevelsStringDtypenpint32r   assert_series_equalfreq	normalizer   	Timedeltar   r   r   freqstrshiftassert_frame_equalr$   )datapathcurrent_datalegacy_picklelegacy_versiondatar!   dvr:   r   r    levelexpected_unitcolre   ress                  r#   test_picklesru   P   s   
$&&89%'L h..334RS !5!5!:!:; /~~m,zz|GC hhj
',R0 ;&n,&)99  (2248H!GL$99 33+3+;+;+B+B8+L(!77,4SM,@,@,HHSM,4SM,<,<,D,DT,JHSM#BB,4SM,@,@ " 3 3$,SM$5$5$@$@$G$G$O!"-HSM
 !J.2=-5^^-C-CD-IHN4Z-5^^-F-F 2:1F1F!"1F %*LL$:1F!".HN  77:-5^^-C-CD-IHN?2'/{{':':4'@H5['/ " 3 3$,LL$;$;$B$B6$J!"(H
  5[-5^^-B-B6-JHNB2G,G#+#3#3D#9#+#6#6AIQ\\(3Q$ X~#+??2>>(3K#L::%6(, >QGL<QQ(+(,'//(0(8(8(@(@(O  0'>bEki=6P'rxx8H(?rTz**6<!<<,,0C0CCCC%||00::::**6A:x!|D "<<,,D#a&=CF222A!66C%c2<<8888",,AQ"????!!<<C%c2<<8888",,A1"EEEEG^h))&;%fkk8<<<<!;;(*444!>>S000))&,,q/8>>!;LMH_/?)?**6<G^ / )
 ))&;#Fc:U ) $ TL!", Rs   [):[.c                z    [        US5       n[        R                  " XSS9  S S S 5        g ! , (       d  f       g = f)Nwbprotocol)openpickledump)objpathfhs      r#   python_picklerr      s(    	dD	RCb) 
		s   ,
:c                    [        U S5       nUR                  S5        [        R                  " U5      sS S S 5        $ ! , (       d  f       g = f)Nrbr   )r{   seekr|   load)r   r   s     r#   python_unpicklerr      s0    	dD	R

{{2 
		s	   '>
Ac                    U R                  5        VVVs/ s H   u  pUR                  5         H  nX4PM     M"     snnn$ s  snnnf )zFlatten create_pickle_data)rX   values)ro   r!   examplesexamples       r#   flattenr      sG     "ZZ\)MC(G 
( 	)  s   'Apickle_writerrB   )idpandas_proto_defaultry   pandas_proto_highest   pandas_proto_4   pandas_proto_5writerztyp, expectedc                   UnU" X5        [         R                  " U5      n[        XaU 5        [        U5      n[        XaU 5        [	        USS9 nU" X5        UR                  S5        S S S 5        [	        USS9 n[         R                  " U5      nUR                  S5        S S S 5        [        XaU 5        g ! , (       d  f       NU= f! , (       d  f       N,= f)Nrw   moder   r   )r   rW   r$   r   r{   r   )r!   r    r   r   	temp_filer   r   handles           r#   test_round_trip_currentr      s    & D(! ^^D!FFc*d#FFc* 
d	&xA 
 
d	&'A 
 Fc* 
	 
	s   B7:(C7
C
Cc                x   [        S[        R                  " S5      R                  S5      -  [	        [        S5      [        S9[	        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S9n[        R                  " UR                  [        R                  U 5      n[        R                  " X#5        g s  snf )	N皙?x      r   ABCDdtyper   i-rZ   r>   )r	   rb   arangereshaper
   listr,   ranger   round_trip_pathlib	to_pickler   rW   rj   )r   idfr   s       r#   test_pickle_path_pathlibr     s    	biin$$W--d6l&1uRy1y!r!Xy1@
B
 ""2<<KF"% 2s   B7c                 4    S[         R                  " 5        S3$ )N__z	__.pickle)uuiduuid4 r%   r#   get_random_pathr     s    

~Y''r%   c                      \ rS rSr\R
                  rS rS r\	R                  R                  S/ SQ5      S 5       rS rS rS	 rS
rg)TestCompressioni  c                B   Uc  [         R                  " X5        g US:X  a  [        R                  " US5      nGOKUS:X  a  [        R
                  " US5      nGO,US:X  a]  [        R                  " US[        R                  S9 nUR                  U[        R                  R                  U5      5        S S S 5        OUS:X  at  [        US5       n[        R                  " USS9 nUR                  U[        R                  R                  U5      5      nUR                  Xu5        S S S 5        S S S 5        OOUS	:X  a  S
S KnUR#                  US5      nO2US:X  a  [%        S5      R                  US5      nOSU 3n	['        U	5      eUS;  a@  [        US5       nW   UR                  UR)                  5       5        S S S 5        S S S 5        g g ! , (       d  f       NU= f! , (       d  f       N= f! , (       d  f       Nw= f! , (       d  f       NK= f! , (       d  f       g = f)Ngzipwbz2zipcompressiontarr   r   xzr   zstd	zstandardrw   zUnrecognized compression type: )r   r   )shutilcopyfiler   r{   r   BZ2FilezipfileZipFileZIP_DEFLATEDwriteosr   basenametarfile
gettarinfoaddfilelzmaLZMAFiler   
ValueErrorread)
selfsrc_path	dest_pathr   fr   r   tarinfor   msgs
             r#   compress_fileTestCompression.compress_file  s   OOH0& 		)S)AE!Is+AE!CW=Q=QRVW"''"2"28"<= SRE!h%\\)#6#!nnXrww7G7G7QRGKK, 7 &% D i-AF"*;7<<YMA3K=ACS/!n,h%GGBGGI&  &% -# SR 76 &%  Q &%sU   0GG.$AG%G.H G?:H
G
G+	'G..
G<?
H		H
Hc                   UR                   UR                   S3-  nUR                   UR                   S3-  n[        S[        R                  " S5      R                  S5      -  [        [        S5      [        S9[        [        S5       Vs/ s H  nS	U 3PM
     sn[        S9S
9nUR                  XAS9  [        R                  " XAS9 n[        US5       n	U	R                  UR                  5       5        S S S 5        S S S 5        [         R"                  " US S9n
[        R$                  " Xz5        g s  snf ! , (       d  f       NG= f! , (       d  f       NP= f)N.compressed.rawr   r   r   r   r   r   r   r   r   rw   )rT   stemr	   rb   r   r   r
   r   r,   r   r   r   decompress_filer{   r   r   r   rW   rj   )r   r   r   r   p1p2r   r   r   r   df2s              r#   test_write_explicit#TestCompression.test_write_explicit?  s   9>>"2+ >>9>>"2$ 77"))C.((11$v,f55959a2aS95VD
 	R1 <b$2"   =
 nnRT2
b& 6   =<s*   D4E
 D98E
9
E	E


Er   ) Nonebad7zc                t   [        S[        R                  " S5      R                  S5      -  [	        [        S5      [        S9[	        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S9nUn[        R                  " [        S	S
9   UR                  XaS9  S S S 5        g s  snf ! , (       d  f       g = f)Nr   r   r   r   r   r   r   r   zUnrecognized compression type)matchr   )r	   rb   r   r   r
   r   r,   r   rP   raisesr   r   )r   r   r   r   r   r   r   s          r#   test_write_explicit_bad'TestCompression.test_write_explicit_badU  s    "))C.((11$v,f55959a2aS95VD

 ]]:-LMLLL7 NM 6 NMs   B$B))
B7c                   UR                   UR                   U 3-  nUR                   UR                   S3-  nU R                  R                  UR	                  5       5      n[        S[        R                  " S5      R                  S5      -  [        [        S5      [        S9[        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S	9nUR                  U5        [        R                  " XFS
9 n	[!        US5       n
U
R#                  U	R%                  5       5        S S S 5        S S S 5        [&        R(                  " US S
9n[        R*                  " X5        g s  snf ! , (       d  f       NG= f! , (       d  f       NP= f)Nr   r   r   r   r   r   r   r   r   r   rw   )rT   r   _extension_to_compressiongetlowerr	   rb   r   r   r
   r   r,   r   r   r   r   r{   r   r   r   rW   rj   )r   compression_extr   r   r   r   r   r   r   r   r   r   s               r#   test_write_infer TestCompression.test_write_infer`  s/   9>>"2?2C DD9>>"2$ 7744889N9N9PQ"))C.((11$v,f55959a2aS95VD
 	R <b$2"   =
 nnRT2
b& 6   =<s*   7E 7E6 E%$E6%
E3	/E66
Fc                   UR                   UR                   S3-  nUR                   UR                   S3-  n[        S[        R                  " S5      R                  S5      -  [        [        S5      [        S9[        [        S5       Vs/ s H  nS	U 3PM
     sn[        S9S
9nUR                  US S9  U R                  XEUS9  [        R                  " XQS9n[        R                  " Xx5        g s  snf )Nr   r   r   r   r   r   r   r   r   r   r   )rT   r   r	   rb   r   r   r
   r   r,   r   r   r   r   rW   r   rj   )	r   r   r   r   r   r   r   r   r   s	            r#   test_read_explicit"TestCompression.test_read_explicitw  s    9>>"2$ 779>>"2+ >>"))C.((11$v,f55959a2aS95VD
 	RT* 	2{; nnR9
b& 6s   C3c                H   UR                   UR                   S3-  nUR                   UR                   U 3-  nU R                  R                  UR	                  5       5      n[        S[        R                  " S5      R                  S5      -  [        [        S5      [        S9[        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S	9nUR                  US S
9  U R                  XEUS
9  [        R                   " U5      n	["        R$                  " X5        g s  snf )Nr   r   r   r   r   r   r   r   r   r   )rT   r   r   r   r   r	   rb   r   r   r
   r   r,   r   r   r   r   rW   r   rj   )
r   r   r   r   r   r   r   r   r   r   s
             r#   test_read_inferTestCompression.test_read_infer  s    9>>"2$ 779>>"2?2C DD44889N9N9PQ"))C.((11$v,f55959a2aS95VD
 	RT* 	2{; nnR 
b& 6s   7Dr   N)__name__
__module____qualname____firstlineno__icomextension_to_compressionr   r   r   rP   markparametrizer   r   r   r   __static_attributes__r   r%   r#   r   r     sO     $ = ='@', [[],EF8 G8'.'&'r%   r   c                  \    \ rS rSr\R
                  R                  S/ SQ5      S 5       rSrg)TestProtocoli  rz   )rx   r   rI   rJ   c                f   Un[        S[        R                  " S5      R                  S5      -  [	        [        S5      [        S9[	        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S9nUR                  XAS	9  [        R                  " U5      n[        R                  " Xg5        g s  snf )
Nr   r   r   r   r   r   r   r   ry   )r	   rb   r   r   r
   r   r,   r   r   r   rW   r   rj   )r   rz   r   r   r   r   r   r   s           r#   	test_readTestProtocol.test_read  s    "))C.((11$v,f55959a2aS95VD

 	T-nnT"
b&	 6s   B.r   N)	r   r   r   r   rP   r   r   r  r  r   r%   r#   r  r    s%    [[Z7	' 8	'r%   r  c                   U n[        S[        R                  " S5      R                  S5      -  [	        [        S5      [        S9[	        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S9n[        US	5       nUR                  U5        S S S 5        [        US
5       n[        R                  " U5      nS S S 5        [        R                  " UW5        g s  snf ! , (       d  f       NV= f! , (       d  f       N<= f)Nr   r   r   r   r   r   r   r   rw   r   )r	   rb   r   r   r
   r   r,   r   r{   r   r   rW   r   rj   )r   r   r   r   r   r   s         r#   test_pickle_buffer_roundtripr    s    D	biin$$W--d6l&1uRy1y!r!Xy1@
B
 
dD	R
R 
	dD	R# 
"f% 2				s   C>C $C1 
C.1
C?c                   [         R                  " S5        Sn[        S[        R                  " S5      R                  S5      -  [        [        S5      [        S9[        [        S5       Vs/ s H  nS	U 3PM
     sn[        S9S
9nUR                  U5        [        R                  " U5      n[        R                  " X45        g s  snf )Nfsspeczmemory://mockfiler   r   r   r   r   r   r   r   )rP   rQ   r	   rb   r   r   r
   r   r,   r   r   r   rW   r   rj   )r   mockurlr   r   r   s        r#   test_pickle_fsspec_roundtripr    s    
!!G	biin$$W--d6l&1uRy1y!r!Xy1@
B
 LL^^G$F"%	 2s   -Cc                      \ rS rSrSS jrSrg)MyTzi  c                    g Nr   )r   s    r#   __init__MyTz.__init__  s    r%   r   N)returnr   )r   r   r   r   r  r  r   r%   r#   r  r    s    r%   r  c                    [        [        S9[        5       4n[        R                  " X5      n[        R
                  " US   US   5        [        US   [        5      (       d   eg )Nr   r   rI   )r   r,   r  r   round_trip_picklerd   r   )r   r    r   s      r#   test_read_pickle_with_subclassr    sR    F#TV+H!!(6F6!9hqk2fQi&&&&r%   c                F   [        S[        R                  " S5      R                  S5      -  [	        [        S5      [        S9[	        [        S5       Vs/ s H  nSU 3PM
     sn[        S9S9nUnUR                  X@S	9  UR                  5       n[        R                  " 5       nUR                  X`S	9  UR                  S
5        UR                  5       U:X  d  U S;   d   e[        R                  " X`S	9nUR                  S
5        [         R"                  " X75        gs  snf )zY
Read/write from binary file-objects w/wo compression.

GH 26237, GH 29054, and GH 29570
r   r   r   r   r   r   r   r   r   r   )r   r   r   N)r	   rb   r   r   r
   r   r,   r   r   
read_bytesioBytesIOr   getvaluer   rW   r   rj   )r   r   r   r   r   	referencebufferread_dfs           r#   %test_pickle_binary_object_compressionr    s     
biin$$W--d6l&1uRy1y!r!Xy1@
B DLLL/!I ZZ\FLLL1
KKN ??	)[<R-RRR nnV=G
KKN"&' 2s   Dc                ~    U nUnS nU" XB5        U" UR                   U5        U" X25        U" UR                   U5        g )Nc                \    [         R                  " X5      n[         R                  " X5        g r  )r   r  rj   )r*   r   	unpickleds      r#   _test_roundtripDtest_pickle_dataframe_with_multilevel_index.<locals>._test_roundtrip  s     ((:	
e/r%   )T)/multiindex_year_month_day_dataframe_random_data multiindex_dataframe_random_datar   ymdr*   r#  s         r#   +test_pickle_dataframe_with_multilevel_indexr)    sA    
 :C,E0 E%EGGY'C#CEE9%r%   c                    [        SSSS9n[        [        R                  R	                  S5      R                  [        U5      5      U5      n[        R                  " X 5      nUR                  R                  S:X  d   eg )Nz1/1/2011z1/1/2012rO   )re   rJ   )r   r   rb   randomdefault_rngstandard_normallenr   r  r>   rh   )r   prngr9   new_tss       r#   "test_pickle_timeseries_periodindexr1    sb    
JS9D			%%a(88TCT	JB!!"0F<<3&&&r%   rV   i	  g     H@i     )rI   rJ   c           	         [         R                  " [        [        R                  " S[        R
                  S9U S9U5      nUR                  U :X  d   eg )N
   r   )rV   )r   r  r   rb   r   float64rV   )rV   r   r"  s      r#   test_pickle_preserve_namer6    sC     $$ryy2::.T:II >>T!!!r%   c                \    [         R                  " X5      n[         R                  " X 5        g r  r   r  rd   )datetime_seriesr   unp_tss      r#   test_pickle_datetimesr;    s     !!/=F63r%   c                \    [         R                  " X5      n[         R                  " X 5        g r  r8  )string_seriesr   
unp_seriess      r#   test_pickle_stringsr?  $  s     %%m?J:5r%   c                l   [        [        S5      5      R                  S5      R                  S/   n[        R
                  " X5      nUR                  R                  S   R                  S:X  d   eUR                  R                  S   R                  S:X  d   e[        R                  " US/   U5        g )Nabccategoryr   rI   )rI   T)r   r   r[   ilocr   r  _mgrblocksndimshaperd   )r   serrt   s      r#    test_pickle_preserves_block_ndimrI  )  s    
e

$
$Z
0
5
5qc
:C


s
.C88??1""a'''88??1##t+++ 3v;,r%   rz   c                    [        [        S5      5      n[        R                  " [	        UR
                  XS9[	        [        R                  US9U5      n[        R                  " X45        g )Ni )rz   r   r   )	r	   r   r   r   r   r   r   rW   rj   )rz   r   r   r   r   s        r#   %test_pickle_big_dataframe_compressionrK  5  sQ     
5=	!B""xIK8F
 "%r%   c                   U " [        [        5      R                  SSSS5      n[        US5       n[        R
                  " U5      nS S S 5        [        / / S9n[        R                  " WU5        g ! , (       d  f       N0= f)Nro   rm   z1.2.4zempty_frame_v1_2_4-GH#42345.pklr   )r>   rZ   )	r   rS   rT   r{   r|   r   r	   r   rj   )rk   r   fdr   r    s        r#   #test_pickle_frame_v124_unpickle_130rN  A  sl    X)D 
dD	R[[_ 
 r2.H"h'	 
	s   A11
A?)ro   dictr  zlist[tuple[str, Any]])L__doc__
__future__r   r   datetime	functoolsr   r   r  r   pathlibr   r|   r   r   typingr   r   r   numpyrb   rP   pandas.compatr   pandas.compat._optionalr   pandasr   r	   r
   r   r   pandas._testing_testingr   -pandas.tests.io.generate_legacy_storage_filesr   pandas.util.versionr   pandas.io.commoncommonr   pandas.tseries.offsetsr   r   r$   ru   r   r   r   r   r   paramr   HIGHEST_PROTOCOLr   r   fixturer   r   r  r  r  tzinfor  r  r  r)  r1  r6  r;  r?  rI  DEFAULT_PROTOCOLrK  rN  r   r%   r#   <module>rf     st   # 
     	 	          3 >    L '  %,y;x*
 ^1R\\&<=bllV5L5LM%	
 	Y&&r||a@EUVbllQ7	
  BLL.#AB'2D2F*GH+ I C!$+,& ( (@' @'P' '&&8?? 
''>&$' 
S%!2!24R!@&I""4
6
	- f&=&=v?V?V%WX& Y&(r%   