From 22193f49a3aa05ebee3403f64ef5d50fbc057ca8 Mon Sep 17 00:00:00 2001 From: jreback Date: Mon, 9 Sep 2013 18:48:56 -0400 Subject: [PATCH] BUG: pickle failing on FrozenList, when using MultiIndex (GH4788) INT: add __reduce__ to FrozenList for pickle support INT: add 32-bit 2.7/3.2 pickles INT: add AMD64 0.12.0 pickle TST: add round-trip test for current version INT: remove 0.13 testing --- pandas/core/base.py | 3 ++ pandas/core/index.py | 2 +- pandas/io/api.py | 2 +- pandas/io/pickle.py | 3 +- .../0.11.0/0.11.0_x86_64_linux_3.3.0.pickle | Bin 6876 -> 8978 bytes .../0.12.0/0.12.0_AMD64_windows_2.7.3.pickle | Bin 0 -> 8692 bytes .../0.12.0/0.12.0_i686_linux_2.7.3.pickle | Bin 6772 -> 0 bytes .../0.12.0/0.12.0_x86_64_linux_2.7.3.pickle | Bin 5071 -> 8768 bytes .../0.12.0/x86_64_linux_2.7.3.pickle | Bin 4289 -> 0 bytes ...2.0-300-g6ffed43_x86_64_linux_2.7.3.pickle | Bin 5930 -> 0 bytes pandas/io/tests/generate_legacy_pickles.py | 13 +++-- pandas/io/tests/test_pickle.py | 48 +++++++++++++----- setup.py | 1 - 13 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_AMD64_windows_2.7.3.pickle delete mode 100644 pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_i686_linux_2.7.3.pickle delete mode 100644 pandas/io/tests/data/legacy_pickle/0.12.0/x86_64_linux_2.7.3.pickle delete mode 100644 pandas/io/tests/data/legacy_pickle/0.13.0/0.12.0-300-g6ffed43_x86_64_linux_2.7.3.pickle diff --git a/pandas/core/base.py b/pandas/core/base.py index a57af06f24cc9..a2f7f04053b9f 100644 --- a/pandas/core/base.py +++ b/pandas/core/base.py @@ -108,6 +108,9 @@ def __mul__(self, other): __imul__ = __mul__ + def __reduce__(self): + return self.__class__, (list(self),) + def __hash__(self): return hash(tuple(self)) diff --git a/pandas/core/index.py b/pandas/core/index.py index 2b5f761026924..b561d7637c0c3 100644 --- a/pandas/core/index.py +++ b/pandas/core/index.py @@ -2109,7 +2109,7 @@ def __contains__(self, key): def __reduce__(self): """Necessary for making this object picklable""" object_state = list(np.ndarray.__reduce__(self)) - subclass_state = (self.levels, self.labels, self.sortorder, self.names) + subclass_state = (list(self.levels), list(self.labels), self.sortorder, list(self.names)) object_state[2] = (object_state[2], subclass_state) return tuple(object_state) diff --git a/pandas/io/api.py b/pandas/io/api.py index 2c8f8d1c893e2..94deb51ab4b18 100644 --- a/pandas/io/api.py +++ b/pandas/io/api.py @@ -10,4 +10,4 @@ from pandas.io.html import read_html from pandas.io.sql import read_sql from pandas.io.stata import read_stata -from pandas.io.pickle import read_pickle +from pandas.io.pickle import read_pickle, to_pickle diff --git a/pandas/io/pickle.py b/pandas/io/pickle.py index af1b333312309..97633873e7b40 100644 --- a/pandas/io/pickle.py +++ b/pandas/io/pickle.py @@ -39,8 +39,7 @@ def try_read(path, encoding=None): # the param try: with open(path,'rb') as fh: - with open(path,'rb') as fh: - return pc.load(fh, encoding=encoding, compat=False) + return pc.load(fh, encoding=encoding, compat=False) except: with open(path,'rb') as fh: return pc.load(fh, encoding=encoding, compat=True) diff --git a/pandas/io/tests/data/legacy_pickle/0.11.0/0.11.0_x86_64_linux_3.3.0.pickle b/pandas/io/tests/data/legacy_pickle/0.11.0/0.11.0_x86_64_linux_3.3.0.pickle index 6b471d55b1642c12cfaf77ba2484b3322744c0dd..e057576b6894b010a78308041957610d51e609a8 100644 GIT binary patch literal 8978 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 literal 6876 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 R0UqxRDjppw=+xEa{};6}dNu$6 diff --git a/pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_AMD64_windows_2.7.3.pickle b/pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_AMD64_windows_2.7.3.pickle new file mode 100644 index 0000000000000000000000000000000000000000..1001c0f470122c429a4b253ce6792dc3b86e1f4b GIT binary patch literal 8692 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_i686_linux_2.7.3.pickle b/pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_i686_linux_2.7.3.pickle deleted file mode 100644 index 17061f6b7dc0f387569ec06759db40624461e508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6772 zcmcIp2Y3|K7T!%IOAUe`AOg0fMTMw{D4{4~B;tj^8sko~VG`2L*&8XcV%v#PL2TF+ zv10FCu{W$(uww5WTd=QMQRT0y1$}F#ItZkTIP+rgRg4)I!T@_=F&5x9Eyu7|Hp}DbKM<}bjAy!urOBCot zoU7uA0?$xnGA!t-+W1s48=>stP>OP_uuZv5)JaiZv^ZQGNm0ZfBT}K~H^d{<*~*wU zhPo7oio;FRRZ+KSah4SxN8L+GO7{N?e;yQvlGGz=Wz;1oA7=1RQ%{$+(A3Lrwx)+d zPki=f&Z|8`q23GXE#ZpJSyu?(cF}q3g)<69PIwJ`(5i<|7hXPn);i&D-~VF7TJYY9 zMaKv)&g%8d+Md)~)0QP0yIEgZnTYEI9GxGbK0}YEzDe3DYUP&s3hGxbL6i_g1S;Y+ zIu@b+m~E&y)IEad%#eF|k5 z&NQ55INNZJ;atO=4Cfi90!=%Wq-bZCcCj0+9KSSZRFX!c)M~5d#Ve?ABj5Z!kr`eU zMQB%XY&UUicSU2wvFsG>A&wnbNMn7+_Ea>^b8I2))!wo3n)bGvOKE&`ikT8hsx^f* zRd!@1vXaoT+J*=fodO4zJpb$kC*_wQ0TUEWv@$E}>uJ)IBJ+A&(_|;h@xr~2%xYgn zQ_QUPbA~rt(O{g-#gL|I+8?ngcIg1S#HDF2mDmn4?RYL9D8{ENI>;DTn>4=hU_qN^ zXqp+!(-Kp&6di0#9kNMN9p#!1)pQu-ET7^?6y6jxMfN^f@i423i~D7|#pd=I`GZ#*gTxs&0RMO3A!I`C|cj9R0p){I*B z&pfNw)Bw-OB^J*TE@|7!&Yz%3HJ50JaUxz2EOM_Egmj67^mOrWsiHH)zq}Nk z=~Omb`voEOxufdnQRM4;8SZO1YIs-?ou%pQXiz@q$XLr1ohxH?PtkdjzInclQ0U)E zU&I*fY`BZzu7vjfO5RhrHkwi&fG+KtR}`0y4b0-uvf_+mc%74U8-n#5aTjG z$dQRP_2qNS`EXfrcO=0($RjwWy#t(9NWd?bAY7s7N(n+nimvhwjY7KGU%A&PT4`49 zwg0tpufxjqrXfDj^_p(55nIpfjbipDMK>F>w>T@&R}Ko2BL;v;HtW?GT42J?l(pAz`t8G4{BN^MdK~Nhh(gW6+L2#=23|k zZYz)Z@p@d*6Xv$^1^n^qWix~eONXxz9-ROA;tk-2 z70I`SSB>sD{8w){iMUPZgQrZBe+!#`cx25&9NU_%52H@1s_D0G!Lm-%P*Xy?(Mb=nqYQV$y#pmi@;V z=CH`QO`HK%oC%aSb5oop3T%*LBtor!e}9AIY*^5o1GHVv1zF)q+)2!~I>vd@#`qDi z;?6*S=G;XT;-rktUD49q4H&q}-K7KG>;YDs4>WJ~6otGg+aqs*mgZhSyNP>)6mKaV z{LO^>hzu)zJ4YaReZT($;T;fXv@ zhHDd-ZKREP4FW4343v3gqz;tZ3mri(l2e9HDf#&U~DCBJ^ z9SJQD#S_iLfQZj2$;4-*$gou4X?6mNCDg~xqWGWcV;5M^JPL?7j0RcZ$y_LA z+r(j4X=D7|z>0SV%J|_Fj}b+>KK4LM^H^Xy275{eyg3f6crT!Nb8k_|n_l$BqouhB z2>&O56i<{6#{Wqo!^&h&vky?LB9#@^bR0C#Orma*GoQ{`7nqZpG17P=;hOykANh} z!q+pGLU#E`pyo25|4sPs9!z|cXFdijad4!t4Jpaxz^JpP*=apRxB|}<$ALIYxKh|$ zIe9i3E;~Sb%AyuOwN|z*Hy*CSQ_a<)OIR7TRXhh`l52ogCdX%UEhHzaI!IcbG!fr= zu;K=w#22fWL?KCIc~;5^AuH34F>8p`0@7T-jnWiwCOMO=Olq9RN6RCDcqz{X;l=v8 zIM0J6l*=d_&9Vz)Q<xkbO;#?Q2N%;51X|cN4>^MjG1i$}@pi({wh?`J4bSbnY zbS_wNlV}k-)ceVzkkB>DvrX0eDNvx^PX)Pr8c^z8zN>jL8e((_Sn=sVF`Av?rK0#J z-`IQx-q3s|5JQ~>a`|kajhvhVmP?)7R(Tm3GUT~n#pj7iRzz{O%jb&`;Uw}6>UkFTZa~Fvb*uNO8_!3~+{-vVYlvBZY(6{^J<#?j`GGN;N3NZrvmxC2w z0ZiM!QdIax#QeWpzF}!E-2BFlTJo-N^P@uwdV^n|dDlYW9X}~v-8-MJ!W){e2Bz&_ zBSv6S@R@^$f`6 z)xfrKr4}qRdSwSC(YEwUq1Z53mir&55Tt3{Sj>$ z_b0I8pGE6O_ZLyfxGnOmb=(bTV%%RrF8>C!omxcqcSu2W{}35A{{$=k3z&|sd{6&_ zD{#vqKhz!VU%_uE*vG=KtT_WH(an@`T9;FnG%=%Wu;Lt`@iJEw;$+Q-r%ij}xp1D9A)UPQ+2#{0{2D3mnZU8kWu*kK$vuYkjn#rNKLh*6#3a2 z%^*JmMaD?mfE5n{n*0=JH1S|j;sjaVuE^6T$i|rn75V*w-#i0u&5W<_D3hCeKd=-0 zN*35b#)n|0nzsc?#mJ~6O9G`0gfti^#A|> diff --git a/pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_x86_64_linux_2.7.3.pickle b/pandas/io/tests/data/legacy_pickle/0.12.0/0.12.0_x86_64_linux_2.7.3.pickle index 470d3e89c433d80e23224ec31b446c0d98fab6ef..3049e9479158173effed407441fb6b50274a87cc 100644 GIT binary patch literal 8768 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 IdhKfBe;~v6lmGw# diff --git a/pandas/io/tests/data/legacy_pickle/0.12.0/x86_64_linux_2.7.3.pickle b/pandas/io/tests/data/legacy_pickle/0.12.0/x86_64_linux_2.7.3.pickle deleted file mode 100644 index e8c1e52078f7c37931d0fe497dfda559bfc9dbb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4289 zcmb_fTWl0n7~X3yQ*Omp5U@f887^H*DTs*DmP#orOQ9URz*=W^r_9P;dUnoATUZO~ zZmr728=|6C;)`!4Ci-GxjERZzU}B=E4;UXbMjtdJYJJlGKXYbhW?`X5r|Et>Ip_T6 z|G)n`|M~Z*FHgNP2`18UZJ5G~UnYUL!ZaF)rE{sFkx(p?)k3LUk|mUERvD27vRW*Y zHdr?BOVVle0E_j zi5W zH|U%^@utJxoEjM~s>Gj2Gg_~gh~xa4to5eZ`gTFt+!AHinUv|kQo>@XK@R&bXG!ql z;g8n@k58aqU_f9{V3ojXfi(ha1+qw?sOCtOnP1wNr`LmCQi)+LPUn?{Va}2IxfCQi zzZAm_7(=jtG3>NrSioaA;?DGDh#^WB$~|It5QUwVWI~np0MiCjQbQ75)Vro_ecRgB z_EyIuMIu1`jl@5g$)q|mlB-y#l)jQTBsiGND2z6{oVwX2e9$6%X+_bLI57SDZL{#R!^9eaQ)6zwm;D#N zbEMW78W5_wB~O>@5P_9zV@SywTFBB9f3s92msGU^_pdGJODD)S;jw^95zG;hGzgq8 zP!_ndgUK$Tti&y57jzKHutz-C63TQ>mL%-e37jEtrodSOd8#W^V5Gf0MdICZnR9nKc1OEq&fVo0MvZXiHoKhbz$p@U4lY9HGkxdGRf{@ITr9A; zgFD@InbV!PC8z@PiA(U_D095aF$GD-tA;zj#pQfAPWwNY?Y_*(yV0~rJ8WL=;8w@5 z=|AYP$K~8MoKnS^ZAA-80>TlOfs8HfhK7+oaE%KJEOy-s5R{CwdAo)p_Y6;s;+8TmAs7i!VHaI5qE^ z1AhYcyq$Uv@$^Pta0>8;^QZd}+oP+_P1RR!le%(7BCQz)Z7Yl2jX-f6c!3%exVC-v*D4yk8s$|RixRV-R`4}&7%OC>1D)4jx>)eg{mfgqdB z`;Z`zCbD_I9HkG)#IGt@x=-JSUq2I_V96B zD2~7rLN%h4EP;3mu2dKKWK1<=sdRsoXQk4+)sb4`YqIBF9){_qJCS2Yr7+NzA z?I|AG(^2}2JGA4D#V1^g^<@y+Nmpp6N}+*@OQD%UtE}Ryk6TS6svSam))m@w4)30K zd559pNDzJ>Yf1V-p1x>zHoS810jUp%C3+gN`VuGLOq9OtCg2sv7O%o@uU@95I_X*S zOBa1jX$69Bhwa!9o ey@gg6ZrKq8Pr3+x(-HkSSwE|bc#&Qs7y1VvOdUJ` diff --git a/pandas/io/tests/data/legacy_pickle/0.13.0/0.12.0-300-g6ffed43_x86_64_linux_2.7.3.pickle b/pandas/io/tests/data/legacy_pickle/0.13.0/0.12.0-300-g6ffed43_x86_64_linux_2.7.3.pickle deleted file mode 100644 index 93e1f3e6c960734cba813c1597ed34b242c2b225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5930 zcmd5=dw3jG72ni2n1&Z1!rE8mpww6khPzhn}Qb=#{wOwbkv$;$6k+U;P zlhQGuZeqYf6)d2rwIa$xL{ad8Rzwh}ilR_n7EwVcDtvsO8u&-gxpQZBW}CD@>8I1L z{dK-MbM~Cy{hf2qor^;j1XUKv7Sj3<;7y&%!fDOaA>3am=Ld(Q{l$_V&6jg#Rx6dX zVI^78`-=s`ES39B1tR@}S|P0&QPa>%S>1>VN6K3CU}p1rFS%8qJ{G93U~23V$It#3UgDovz*1SLVBo9x#~d|N<7|B( zaNqM!)IZW12+Y}9WQ6G%;p+)+zwVk>2t(1uU5_H3yXWpJ2zRaDxS#N)XAYdQ5Ak$k zLKGpvBJ@Di9|!AzAkB<%;#+)qSNnhO1s)^nz&z$}b0 z5DQ=`vsrlamb3v!Su9wH1aF;m2ugzL-!Cc-UDQk5pJKCmo}HUvTv>m-IHMkLltY>?O}u}PvCuZ*V3tlnN}Lcnex5kthx3`mB)#y;RV0hSHZU4CM6gT(N)iI<24$=p_Y? z!uzjLdbBUOYwZ^7%4u-q4*?0 z@ixB@*C53Sc$?be{Cq6vBxM@8Y)aXHLNH7%Kd8XldzZE^Z(p{gV~OWd;&D{QJ6K(& zScC;VozjnPrZ7g8AFqw2Sh%3&byyfLr+5n|7EiWdk;>EcTHS{Vzy)Cwi)~ zu;dV)oO~U+oqG}YQXa*)IYrDOnOspbp(-G-XoH|jr1!t(dnOB?5TJCEzsHXS$I66}Xg|&mN)4rU=oQmyfw+Iq%5ASk_ zDzheIFew|xSr+uFyxl1iV^Av@derF^;?C(9XJckD3*JjT)+ncNbAWZM*?z-u7ngN# zP6F2ZNx&uu>&DD+m6$LcWkSq@0cnQ2ZzsPu>CJ<#>{mOxMk4Ef^HaMY8pUNxCL32H5H1byq3#u)!~A1Rxd}W&Dg?w}5qN1m!xQXrm= zSe5YFQYd;vOocRw&IdgvKAnTD^OA3!4Y|&larQr4HqL1ZrB3aWcT>tVq`*zSiKC>; ztPz`drbM$y*@6oXYT@FMVz)G$_q8+0RDmtHR$G%0lgp6@-_7>Ymr&(;c zZ@#g`X2v-c$j2=BxXLdW=iX|l_^Uxrz$o(JDTgu2q(N*ND@mW#YxlOYq3N% zr!uQ1pY@o04oi3vlj}StpT`oP#N-PelP_WmuuXJqcbixfokHzaw2L(-(|Sh3&l<_i zc=(1du}F#zps<@A?LP6$0$+A#fpW@Vp?nsux8N(RuA~pZ4Zc*rN)ezaDb=s33Aj;Z zbt$a`H}RY3KU?8ueluUd7qB`g55X<`7G&$|Xj3fca4V}bw-n(U{8sM%)pZjORoRkZ z!fkjGH}FRE{IfPd&Z!J`^R^5U*n zceLS%v#R~_rwPaJnID~l_}GR!w-GLQF1B}0OO2BsxlU-s_u%I72!Bm4N_jslRU`M=DCYAU-zxo97}HWucI)x9{M zKjKU4QBQRHe9_^=lj7|nwZ}wik0;;>e`-&9UVh5=GGBqI{mz%#emAx0Zx|CJcFKoq z%JS30)4tSx?}_diUv!jOnMLqJte%5ESn$W{s3ztn@jzKmj}`b6uI;mefaenMXFmbY zdw${t{A|~2>iI4>VE?BZUX<&+f