From 58b1a5336ae69dd4d37be176980eba62c2fc190b Mon Sep 17 00:00:00 2001 From: davidovitch Date: Sat, 13 Dec 2014 00:00:06 +0100 Subject: [PATCH 1/4] TST: added test data for reading ods spreadsheets, add missing Excel files, more consistant naming of files --- pandas/io/tests/data/test1.ods | Bin 0 -> 45404 bytes pandas/io/tests/data/{test.xls => test1.xls} | Bin .../io/tests/data/{test.xlsm => test1.xlsm} | Bin .../io/tests/data/{test.xlsx => test1.xlsx} | Bin pandas/io/tests/data/test2.ods | Bin 0 -> 13165 bytes pandas/io/tests/data/test2.xlsm | Bin 0 -> 8086 bytes pandas/io/tests/data/test2.xlsx | Bin 28216 -> 8067 bytes pandas/io/tests/data/test3.ods | Bin 0 -> 12608 bytes pandas/io/tests/data/test3.xlsm | Bin 0 -> 8063 bytes pandas/io/tests/data/test3.xlsx | Bin 0 -> 8045 bytes pandas/io/tests/data/test4.ods | Bin 0 -> 8433 bytes pandas/io/tests/data/test4.xls | Bin 0 -> 25600 bytes pandas/io/tests/data/test4.xlsm | Bin 0 -> 8022 bytes pandas/io/tests/data/test4.xlsx | Bin 0 -> 28216 bytes pandas/io/tests/data/test_converters.ods | Bin 0 -> 19407 bytes pandas/io/tests/data/test_converters.xlsm | Bin 0 -> 8467 bytes pandas/io/tests/data/test_datetime.ods | Bin 0 -> 31995 bytes pandas/io/tests/data/test_multisheet.ods | Bin 0 -> 10818 bytes pandas/io/tests/data/test_multisheet.xls | Bin 0 -> 29696 bytes pandas/io/tests/data/test_multisheet.xlsm | Bin 0 -> 10852 bytes pandas/io/tests/data/test_types.ods | Bin 0 -> 20547 bytes pandas/io/tests/data/test_types.xlsm | Bin 0 -> 8733 bytes pandas/io/tests/data/test_types_datetime.ods | Bin 0 -> 13960 bytes pandas/io/tests/data/times_1900.xlsm | Bin 0 -> 8282 bytes pandas/io/tests/data/times_1900.xlsx | Bin 0 -> 8266 bytes pandas/io/tests/data/times_1904.xlsm | Bin 0 -> 8260 bytes pandas/io/tests/data/times_1904.xlsx | Bin 0 -> 8244 bytes 27 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pandas/io/tests/data/test1.ods rename pandas/io/tests/data/{test.xls => test1.xls} (100%) rename pandas/io/tests/data/{test.xlsm => test1.xlsm} (100%) rename pandas/io/tests/data/{test.xlsx => test1.xlsx} (100%) create mode 100644 pandas/io/tests/data/test2.ods create mode 100644 pandas/io/tests/data/test2.xlsm create mode 100644 pandas/io/tests/data/test3.ods create mode 100644 pandas/io/tests/data/test3.xlsm create mode 100644 pandas/io/tests/data/test3.xlsx create mode 100644 pandas/io/tests/data/test4.ods create mode 100644 pandas/io/tests/data/test4.xls create mode 100644 pandas/io/tests/data/test4.xlsm create mode 100644 pandas/io/tests/data/test4.xlsx create mode 100644 pandas/io/tests/data/test_converters.ods create mode 100644 pandas/io/tests/data/test_converters.xlsm create mode 100644 pandas/io/tests/data/test_datetime.ods create mode 100644 pandas/io/tests/data/test_multisheet.ods create mode 100644 pandas/io/tests/data/test_multisheet.xls create mode 100644 pandas/io/tests/data/test_multisheet.xlsm create mode 100644 pandas/io/tests/data/test_types.ods create mode 100644 pandas/io/tests/data/test_types.xlsm create mode 100644 pandas/io/tests/data/test_types_datetime.ods create mode 100644 pandas/io/tests/data/times_1900.xlsm create mode 100644 pandas/io/tests/data/times_1900.xlsx create mode 100644 pandas/io/tests/data/times_1904.xlsm create mode 100644 pandas/io/tests/data/times_1904.xlsx diff --git a/pandas/io/tests/data/test1.ods b/pandas/io/tests/data/test1.ods new file mode 100644 index 0000000000000000000000000000000000000000..d07a979deb576ffec1feb19b3cbf4f62ba99335a GIT binary patch literal 45404 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 lVs2D#trA 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 N{#+pVGhPBc`agY=73Kf{ literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test.xls b/pandas/io/tests/data/test1.xls similarity index 100% rename from pandas/io/tests/data/test.xls rename to pandas/io/tests/data/test1.xls diff --git a/pandas/io/tests/data/test.xlsm b/pandas/io/tests/data/test1.xlsm similarity index 100% rename from pandas/io/tests/data/test.xlsm rename to pandas/io/tests/data/test1.xlsm diff --git a/pandas/io/tests/data/test.xlsx b/pandas/io/tests/data/test1.xlsx similarity index 100% rename from pandas/io/tests/data/test.xlsx rename to pandas/io/tests/data/test1.xlsx diff --git a/pandas/io/tests/data/test2.ods b/pandas/io/tests/data/test2.ods new file mode 100644 index 0000000000000000000000000000000000000000..35bfff5220245b6f7fe97bbc929d0578695cb1d2 GIT binary patch literal 13165 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test2.xlsx b/pandas/io/tests/data/test2.xlsx index 441db5e55e666571a94e9966fe2b184bf702faab..94dd951e0bb84dd566dc9aa58c89067771f49a8d 100644 GIT binary patch delta 5630 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 literal 28216 zcmeEucU)81w(tp|w@8sHO}dCE(xe5XixeAGK%`6WK>|UMA_yob2uM*tP(cJ~(mN_5 zRjQN(6%m0%+7UwXoj7x++?n5-d*|Nw*ZU5V?6b?-YpuOk+iRn_F`Swcpatjw01yGx z43o9IU;xlb4FDVfJ(aDFuTPMRPmsgeFh7?-yF(~%FX0E&R8si>71aO#KmUh0PB}upc<3+1i=bIU*PKeu$*Ok+J`5%-Oxuoe4dGtGu4w zX%pR_y;xv(o{RHyi>6;GyLYxmdSVJE-QvQl?^rbO_V}xsC@-a^#=8e=1P>Q@C5n4G zt%u%odUuu0N(GU=znV#3cbkP}>w!%IEx6$x)FI<0I)1muG}=TGVV-y=d15}cCRFV9 z+sd8k7jGXsw}+Pa;v;`>XjM=cvTG(Npg0KO^GW<7ikCyol@ z@|!d17H&N})Vf&vOep1$+Ljo#$N`Y|X0z*#f8i~SX?*_F{csMkmx8{zGx>|$(EcKm z;eh$?gf!yK*<2P#NT(qgWP*g$A;85eQ0@@r^ZyIy|6z&z4e6z+CKTa}*)n|JmK8By zC49|1$7j#!Q2H47$z_j=?BtgrB25~xdOC&d=dKoM%rC6=WpB71)(9`&Q~jJOU60{L zY0!x&{Z`N2syaF@4x5;!=VEh)Y)bDo-fhQRKKcEWS9Qw4C*xB2Ca;iwf-c6iPFVGc z^Aimh4u5oVuQQl%)Ipz14^=0QL|uCDs^)~&_+$PH8-ojZPRpd zxyhAw516y(-$TD0BQzAe9BJ)`PusJ8*bJ9l9DEfmlKmF-NkObKVMLw%GSZ-mX!byQ zO(pOCg3zHLwT1d)>F+)sY$1(<$;Th1=SF&$ z&l<$4dZ?8TpogKn<`ezX5f6?(Y2a+s^xvvl8|U zE|~HUl^p9Gc~#P<9V(^l@?C0p2>#`$Sw$`5(9BG<`@_3w@f-`ZYb7tI`Y#%;?ap&f9Oxk3`j zfHJnR>S61vOG&p5zqc4V&qUnlJvMpa1N`XTGo$fTE%Yg?y|um}O~JKpp1$U3Rh3exbs3XpYx$iA2{iTKxg%9#$N~ za5SDHfre*RxpJfK{kzlGdotNBdhguwxEpTHBmJr4QL6S?numKP?TL5%>~@}}F+LV6 zV(9Y!{`y;+$m}@jqEEP!*WK;CJe?Qqp3yzIlC_0Mjbpu60bmS*1&coK`rbXF+mWVl zXIb0(axE-ALtH{E`dQv%vr0x5by%i-;A%{x(*4%3be%)b7R=`NwbJBjwSXzHX|D%R zl`l`SqXqAnUC1eD0*vv~7FXvFos$s86A>f)zza~S$qwbD|BdM7vV{WH}c-d?ti+gq!e zYsp&N?sUZOh}~P)=6eCfamzD=PXW4aT~G7XGf}Mv^Lym28{c30&hckUU&mJ6^AuWg z0`$xI)6xgJI|jHop9u=^@No;ID2wyS+KlZKPv~kW{qwQ2r`U}4@2?9gqKjX4hxduO zK73GHi_<^fycLG;+vHW-Xl)m{6*Eyq6?3*&VxX`6d(hod?F!T-bOya_<4wnEB0g7iFNr4FFfATM0ChL=rrwra;c~QLH*cN<9dvENp5>n z&u#|y95bC;XU@$ocYl2hxRl(0nGamSJ8)rMT+6dUWK8q_8GVNl@t$mS05Bs!arl31 z?I3p-Zx^{ApGPR6JvZFru= zD@kCfHV_lj)jof-&RpNdO=Is8t|>%I-)gHa3!QzDpnOjE z;#DopTiJEIx+jXVWn|>9IUbZ-yDf(I>D0TiS3QC7+I&uQfdBcOcPCsT#Jd$3%&$6` zhr1~}5Ydh(lOKP5CzMBB;>4FLH?QYfnCxSS77#qEc-+(_n;|IP`e;;GEV0Ba`CJrF zI-|Wpbi#Kgi<+lT=lV{@KccA=fAREt?+5uS*tW-+XKv7S6~6N+^LHs8@C8ox&8y~^ zHk^@N=LJ}G@FSC_N3EB9&f30s%l?vdZ*2PMh>Rk)!%&NoTVTPvOYitIWi1}TCi1F} z5%pb~YMQ>xvAo1B1%fu74b%3acv@!y^s;iN`*L3wzj>#7z~Q)2*mB6xWg6$s2^Kjt ze2)JPv!;%=66ZuwF%Lmk_H{K6a_#{Wz~XE*Nd3s;gucqPgFf>pVX0A$Ig_i#zF*Cy z7Gl@W8^&IJ_?Wjb?_x=OX0v5~OT-3I`tkO_B#RQ`(euZg?K!jbAfb7dpo0#45*`9m(u8x z%bE;Na&EjqA59RLJG4;R6_XK_efcSS$F7n5rr9A0m-m|8am_ELRQ!)mWfl%7t`!E= z`5JT{2~5H2VviWbAKw;03U|&=N1PC_5A~3$`yd*#a%QA`#Mmg0^`34P!*u?UPM0rh zyvLXQo`)lbU$)!qTiD98dO82eq}33_%8m%J1%nSel!^! zXMeVrdp5(ZjHkY8=H_@)%|uualk$w{Yb!Go-WTG1Gq&wi3SZmv(~riPp5E6vL?8L( zL@dL;_f{7~qp2;0%=d2Wzt`T}#OE&Vl=(=|_;vupg5J@u@5%_zwk$WRtj8AiOdS)m zXh6Hijjj7dzLy%|dD8vqWVTt=!@UR9CMNHklm<5?(#}<%GVZrfe3<$0^Bar0QfZ}y zfc!>37Fs4HN4Mw;Na};-9Tg5{EDHi}UYf7@INgrx(#4iDocdH9EY_}bQRf45#&~Jg z_(y4lg}jjdPcOfZAGCrGy;W*2?7|VPQ$L( zeZQfYJby;*w99hw6Fg57kBfVa=2|B{G;|YGCR(41=}n}enZNCSpm4HHzVe7dd8K)U zZol)gL)lnRrQHp9u50DJy`KCx_ml7L-E&E~%2{Fm{R4Cj3J+d9PqCK#z@eur$0v9n zmK`6#jHNTJM(P~EwzqRuMMh02_SJ-a+#D?(zP(z-{5IJsU0-D>eLF;=T!l$_xA0k; z`kgoM*~S|Fg}18-Pr<~1qI=!sqn7IdfHJ+Oj=+^YheB!e>rZFFxDVh4Vus>l?O;pI zivl-g{dAbhub}HLDv_B2O31Z}ZozjeW25sYi=D)z4oV(izxGwzR(>Khw(?TVy49V7 zXPo69J3l>HHUSSXv~t*L4W5pMb80`%_DQXVMXTjtRst=wqbp_#ZZGvMI(H3uc+RcP z)Qw-HEjC>i4>tC~=sO|z8)UcdV87U#rdr3)^?v@+4;wpz}aL~f&y?q?m<0=9;V zx|>1Q+XtkOad%tqBJ4i;oJmTlOh z#C=JV1|MSWcc~dyQd?<6uRm&*_jQitG1B=kOpJ_G|@m4uzm2GnSt{grG1lmmjV{VVX(e z)Zsm`t1%?H`#btZ|Z<$yO0O9``19Hw3Jc)1Jl2u3t>iFEA*# zPf93m;|oX^xwLws-nvZsmMN&;P*aFZiHnoFtvmM=+pT6jbV`5wYy{C^ut`?^)fps=)Z_h)I$2)5i&5+`SiVZ_+Ct@0kI$fE;bd?A!kDU!N!3;kTp9 zNlmcz?!K2hYU27f*kXS0^j>4tPY#`WlXvyrDKWI_p37Ggj#itCdPDI4>K7izoq6QU zwAwrGxp~)}MORq1Qfb0u94-ICmmcwRd-V@!-Pf)yUZC&sl%6K4Jq8^@MrkhU2GW{3`!hv_g!ft}KRc}bX2YE*{gsv-BuIkE7 zr3KB3@8;S^x4q3|D_p6DEw5Y|Cfu4}wqzPzq!kVh$!!`>HdQ!Hm}<Jh-SxlHi}7 znm)aulc#YqKGlBy{D#VOzbugQ_ zR_x{Wb@CjLE37l`TJ^2jgg3B~O7{JD)xccdkd>@@R!G-*Pi;(?N61L4f&?`cb$IsT8K(o+~y(TNw-x+ zX~jxJkjRHyYCJ-pt5Zi+&TJnUs?Z!vQFM6j8GAC!LaH=BEyqgAEl99v?QW$y({|&5 z@fV?-BNeYT)yfTS2gK>GqwC zBa;#C`ZY#&$-Z(vnuHCcB0>Xq6pEnK8ayct%2&mC29YcBm+z^rA@P z%cGtl)ZvLn4HiL?;wMDkScJSic9{(~F!M>>$@ZiXF8VHqpFF+pDgzG-yg0hmBYp$% zvP+n{iJTa7ocV0r4AgqhS)I~BWtVAut9-0xuMCPkq=?Vpk`!A<4}*Sn1m9p|l{~RwcZC$+@1HBfO>oyzQk~hS zB|?d+pNL!jD(j@iR|Ci8$BpTg+sIejn| z9&7ccB0SD{Vo~!o`8R5b5h_z25nxR-VV|%m08oA@$B53pPUZo=eu0oOl?=?jtg5^+X&N5KzRUO=n#?*U~+T{^wTysKS`OM(wFl6`)70Xr?Zq{**|apeeZvI zV{�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 diff --git a/pandas/io/tests/data/test3.ods b/pandas/io/tests/data/test3.ods new file mode 100644 index 0000000000000000000000000000000000000000..4e072a231bccfc58ba88503aa4f7511bfc2b3c4e GIT binary patch literal 12608 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 hRh$tKGS zzPs!C`wQN^^Ld^-@tpISd(Zd8{T>Zv6jWjWIsg*@0MG+W_A;#ukpO^rQ~-bofQhUp z>*(NS?%-ymL7hRqGY+_0&esUwD7>jhkE9b^;O|aamv{D&`6^KOg`IpT3J_vBR zw+W|2w^*!yp>stIvIGHGP#v&BZ8Xk0c6 zgRG3W^|GXb=%Ev{01exyI+Ah$hcW-2`=C6Pp@S|u*cJ0C5mnDJrCD=UT)deY8G}97 zNHhx)E5m7hc5IK~>P{P`{MH{e$Dafb}SKnFdOf7tFy|CYG# z&PTXj@ZMp{R-nKQIskBcivrO2n_Jdv^D&+vu%?3WI&6en8o8L;x$^S-xc}>p|HD4` zm!+2_sH%7K;e_r#ybkL>n}Wp?$S8YCKWw4b3V5!#h+iL*$3zKhXQd+0q6kJ&2y6|w z9$bJ)#C+|i|MnSN7DY%b&e-5t9-4aT?2f^~;*#>fxoouu=rMIV_3gESk~f=2YaB=E zyW$+>fn~-ApAO}!3C4JyP~0IZpb90q_c}(72rd8HqfAp(xrdLS75gTP&okWv1e|l@W!TZ) z#>X6}V_#sQ7YsOArsQZgcsi}ji{cpSy+6|DaVCWK8HMPyle0LI5Y>msZeJYDapZUe z1=D1=oCd0ZMnt&tb-Q#I8!ye3s7W%RpDT-4bp4!-nLI47kU{RGX(AMCGs@>KVB`9c zdJut`p}Mu_moFagltb$p8|l*6E#S9JvJ2nP-$1=-$B)VHC`#aZ1I9Ne={e6k<-cJb zy}!0l^&YkD%)7*aQsO!+WKVE~=e};y-d}Z-xf*0|UpV3#I@z~a z8|a%_Mp*ivkdXwUZr(+}VH^R2AkjY}>?LeW7J=W0K1*L!<-V0ZM zWVhO$rE3ybW~U(G<}F4+KFQFoH0974){tb_R(SLt_NFeDZ3g>y;+)y|wJ4wN=OL>a zE^QnI(5oPiuJm=r%9eIEC1THj#}D!4A6UKvv!2^`H;gnVW2tvDMIa9zz0q9M)s!00 zgL|@dVa5enQ^`LfjgU8B$A`G$&phy5JHWWQ9efh!Z$PdUw%C~p(d{VQv>JMH4mTM% z+e^8Mtb^cQi`k``=#s4#DoJ)}1zTR}yi75tDq3ZTB&C`aoW4+2yoGx5+(jl6;4>3D z53G4v*__pu>g3YywVSebP3LZ`M*iWBx6k^U%UukebB?@mKbn<`sxz9koTG<$rmhp<;GN5sNNjNjaNsX8%h?2VoTSto`1qh@@^*f<91 zn(11c*uFx2LfXmj8Z})slj&F<{F>Dn+@$7^tLjtTG*|Y?@wTz)(Em9dMt*<&{sYX?i$ zAAt!xB8}C>M-Z~wxP_!lN$8LR0YZ_yQ#<&wZM>WsiMuIw>gP zHT6z93C>}BUq3!Z<4v=85D-@)R7_CpJYH&}k&-jFFhGY&rDTZwQD}r_JPU7+d(%b& z6q155sL2*B0JKg!{MewNLND-&zOt+y+X8;Bzjf5uNZ6{qoLDS>N)p(sdusH{#Y90J zo+cuylvs)%M}*%N<7Q=UZ_fMMo&U#Lc67#~C`E|dNH6c>xO!gOTG;U(qWjueF6^+- zZ|AQS*PF-Hq`f2`XyK>VNHERONJ}xqYCYAMMT4zyANcB8wSlKp%y*7Rpe?bb1w?`37yi_hQ1I}2g6>a z*d{A!!~zxdS*7`3wFlVUP; zyIrED9uhsCA=?@~XcAT}pwo?%M&6Wh$WlZku77<1%4zD^ka#q{tK~;}QUCGB*Q>!oet8pH-nb~0Qb6W`Rf^`%7^hBR3m~(u%~;UV zQLA)b3MH>bJZ|Yuf~?9@24T2v^j?)40B|S&VSEoTiaaYDXyzQwCiXC*R=E(!w1mSP zE$dnUA=mnPV00tlULXN&;G6JKHtcv&DWoWgM_XXVGQSu0Y-);*_l^JU(HzkRyta=O zKPyY(d~0pBI}zi)MMHF~INR&5)JA?+b8n0ScdifD(n;gms=hSE-kyf32V7jZiW9Kt zd97Zg#s&Ibo?kq9b8`b@#D1Tci$X2Q#J@hO?YFb|jDJ|wyVEQdeg}W7FXmUQ0?5>xl!%gL5^~CF?Xy38Iqwekax&hPswc=&d zM+|yi#qLyh^T`|z558u48TA0&je0sexXnWrkVIvpE?jA~)?K zEv9fk0d?-`_tCE}BzZPbjSB?mu0qrLn8Y5>t4B27s!i6Gxam%cvsbt2iWlYk5$)Y) zTe$~TuQ2tpoW`CN{~l1ZymxEZF48)*Q8^!?5gbZd>R#^=C&B|`eKFx*o$ZxcIwc-< z1g4S7n}-y)!fiN3qE-Z!*~s2mM{3csntx_w$o-Bv@+`tgn{u3eOjW%}(3A>tQ=(%Z zamc=4bITWZHY>VN4Jmc;OpCx!$hE3GFZGzU567VfM;goyzMr2_n{x10l=}9am8q^% zh0q;4qPGT^d*I15IXoI7Kh%}WKEf+oAN_d{BxMf*J-shh_0^`OEj1IhqY&$nM2hnu z9$LzHa;MnLLq`{uDM0`U(GU(B11v#bL`{8^N4fqT0QK}&h@H5mh_%e)1JH= zR-Yx~OAFrXZMGpUcy5?il9+ykS|K_=P}H3*Vxc1AhJ(^77cA#oIxR)8r0c>RpWGNj zg$lzF$Wl3YxM@72n_pC`r*W>rS*EUiHiI#gWrw%A6xZ7~ij-L-LXiJzxmXD!_D&c| zw$1toe-P0~ay;n5vxE;`Q%cKTLNz!K%#>%VWNUt9>BOANdH1UW9A%g1ji9I-ECl1R z&a+$hse3J2%462KI+H50+GbOAQCsPpM--*G;S^;8TaX2GLn{N@x9;)9(;UtZru;*o z*^fBU1&bAXw*|O_#2tm+W`2Q69m`d9I+juxpZ07+0yaJG+L{MFt>D!DT&hlcIdjLu z38Nb`0; z008&*gzV;RXZ~9z&ezg&Oy?sGcvE-#>>`uGsy_jS7B8J5#dqvUVo4 zh;An(COFm^CbrHEc6k1JwLMgGDD-X{9NJ4#V4NH=SEAjzVNr-gR+VN$}beN zQgp3?skG3;-AUw`x9>r;4$4=T$_o>sOdVreb2!&mSjFA?+QKlMm}_;`bT``J&(Qb}7D)L$B`J z2F2ZfuwA{36NPuG>?cJv9w2>5MRO5gd0xAWj+7`Um2E#1^5v_@3#8h+`bq?sc%t{` z44g+FWfOu*tvMIFFDyfOk60mxkY3A5-fP7cJce%4i&0OGv`ey`l|8O#(u`suiSGL% zL-@z1h2g&6@BM25g!PNssyPp0q!R`W7m*ofRw*@6<_-L33GSb{FYnEKxmtsPCTkNpy_@2gdCdl1J}YZL&0>_2$@aZYiy zGB9@iwDN)rigO4C|KlzfD>x>F#Ar6cg4l$4)$kCpvY~e?FYU^9P3mdt) z!h2AbTNrlo9E|eCa^1gAt1)i6it#*qeCmC_%V-DtP93Gq&2b-WN?}wcsUi`bdh!}4 zXj!<@NSpQKiVs=t0V=7DWUpwl45|<`nZElDmH*bb9y$AIFlHjgT!HL#xN24)0mP<{ zRA$SltD|iO%cB^NL|>ndCOR4%NOnpLNz>--)Y&=<+fvHO#2mND`ywVSR$JmnM&&a{ zG4cKB`$QY_qBZg*8#wh}*O_U<{PhH>H0odK zmko61o{Zhygm?BhdNpI*i+)K##1X;Ua*PMf1!-*CB^KXlPJASs+((q>K9OOZa13Wt zioEr&c{{1!Qh*Fan{c)}Qlhd3%j4(pydSweD1PM?@8#GQzH8L~A=rFT5${0fQo5xB z=S1<7kYxZc(~?*r!=hluOe%^$*P!-g1^DB&_qUW<8vcrbonttw_02CWpV)Y)s)De* zHzHaA5u}Ehqp60AqmwJIsiTYe?{xgXTn1w6q7#giyZMMeETgr{4)~@Q*2>E)1jXJH zBghOq;AZjEt5#GZoY`GS_s}a>>Fis}xEc~mUHg<-7R*hiXRS>~_<;@Zp}u&sSxSA# z+bafn`xRl?G!|AJMpPjjE7{vla7 zK`an#yU2IbIsH6QbhHY!57iaNv!jYUd^4QbPfGYr;T{syv{)MILXsH1;#i5oxLb+R zD&R6WxJ$XbMdmq7a!rS~msyT(y3p`Qe9QFw8nvBgkLIexxS-j)Q9%4th6t%kR2(ynj-U7Z-%-r{PoVu4%~9SPQ30 zR#chbQ#3PEEhr+*QMfZp#TBjGo;D0Cm?8!ZluQVa&c2`V#rD7;pcgY-GyQnk=Dr-muK z?B&jkdc(_}Esw7;w7iD*n3!qe%17>oTfOI;^-HP6$@rG+90uJTr1dn?3C-6pDD%{) zBBJw6qP-ukdV<72-od3K%Jo#1m?R_5AzNEi**^7deO!5NQZLGxyFIwIKNG8^L((AjmkiDo_F_^isA$JYlL-Wiz;gok;+O&UUM+wSN zQg~-~tx2$5H*DpbXr8x-R8qUX{2=i5`}qL;dWh>bspylM4b-T;_8R*So(~C`8$q`G zy0Q6($^Mvs(dN`p{=0&|w_yGd{4u8@{NgVSnV$v!PD}q)@I8V>`Tt4kpY{CARsN}I zAJM!0iMjk)_-6*{PhkjR!+ym_{jA|<+UHLVj5xm}fqqu-bItvyf(^p|{DuEk;6IE0 zT>ktinhN^w(*IEm{jBBhsq{}B0KiL90N@{q^=I+Fhrz#!6C;?g|BC+}6g8C55Y`0% Qun@23h}=Cx_2bk30jZ|Q(f|Me literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test4.ods b/pandas/io/tests/data/test4.ods new file mode 100644 index 0000000000000000000000000000000000000000..71a12f04674e9b26fcd879054f2e1842f146e511 GIT binary patch literal 8433 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test4.xls b/pandas/io/tests/data/test4.xls new file mode 100644 index 0000000000000000000000000000000000000000..0e6f4331e2547d9a68e395c0317badcba0f48287 GIT binary patch literal 25600 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test4.xlsm b/pandas/io/tests/data/test4.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..52328c7b28be9a536316e718745ebbf5baeaaa0d GIT binary patch literal 8022 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�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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test_converters.ods b/pandas/io/tests/data/test_converters.ods new file mode 100644 index 0000000000000000000000000000000000000000..3ebb8423daa89a9f810fc8ed781deb602bc05ef0 GIT binary patch literal 19407 zcmaI71AJt`+a?-LY)@=EnV6GIII-2SZQHh;%*3|MiEZ09ZqNL`Z|~mSyL*0pl1`^i zovM1D=Xud}h$z%&d$Y-E58YY;7&g4D=k$ zY^)ibtqmD$^c>6_7;J2ftPO1poUDwj9T^;K?Tz#d9ZZdk9OeE$eXf$Q_Z9&={Ci>p z`&2S@veLKKGqZGHbo}qP47S!LVRABJ2(VvaflUx3#6=WkByH_yiQ~+KW@}( zgZDA9{mhW2=+Hp|yP_N*ty_k#eH2942c3(@NfH;!T$ zuGYj@wY(N(x?u!~M zGF3cSDJtDpiW&h>XbWl(h|;iJ{ZTz3Zy_@Dvdk?xtZn;~mYn*YEnoY52LDkZD~d3& zNLWa@3TlfKQEdoOVPadadOFs}t0`m(8X+MOd;6_-2n=*yGtAJyZDq8P;7xpaEcsYp zJOZIY&>Mcc9gzfzpKot(LgYe`CH2kq^>g#j^bWbE;BWIK=kDaS)+9*3!jyyIL{f<0e+mKQ;lmhjr-R0Ee@R*X{i<>Sa%Bk(K z-5b>1-M!La5i!q7fol7U`u0OspyPeZF2@`EG*D&o&xGUcogX)5qU+~G)Fcu)m&Xf& z_dB~-R*;8%YI}RT!{J27RWDpIw}yJe2*?RIto!GCLjtAj_2c8@=;+P$wR%$X=zO1v z(pawQ>z&n1X+Tv*rL5zn7l172i4!B4g}|EOPcpq`n=`$s=*R8PB%d|%KL0l=)NhA9 z0Z=~A`zf7Xul~{Y_b2lXhm$s&jTQCHQ^QAVT3JF9W0CMSfUdK#J7$}xjh52{GqfQi zX6v}9zKw7kHk0Q;oh(fO&pRq6qOCF6qRH$okQZjTS42caPmi7u;vbOUzOOg?e~P5j z(w~W(j;2sTy7)ovyqsmCn^LgE*>R=Hg~gwA-%oxypv~HsByZmjA`-GNZU>}rH+m*! zqikJ5#k#nDJZm(V!?>3gLi9^q)u^*s4Bn5$o1}AKb9p|sA`sGL@i@I7R1jQTkc$R= zwmr=jEFGiE$|m0F{r+&jnOwedv{QV!eApnyQMEQXCN()+u3TkizOr8U z?s2iN{@~LJy2hUi$jN-$F}fTuF~ka-t2`v!x;(xZ911S5mnRU+&L$Adz(hw66l*ku ztuq;mUc|vW`DV3TW7Nlv+sJuD$A}bZw$wZ_Ng2H%&bZR%z|(A}+tt~mU?ZEsJwKM3 zbNZI=b5E4JL?%i`O(v(tVd_LE)NLz&{F7bSO7}51hKoY@O?bUCx zIlLEdkfox#Q{mkp6cn^P5i?wgm3?+l`Es|G161RRH`2qM4f`21j*v!vbtX3*7sB>8^UFP3Z}TZzwH=^buPC!DT3~z za~NpUT~Rol1ZqpQwAhZ+eo`>Nm0`fMa+Io?4Bp{{#NdCLPbRa6S(LfCsTN-7vk0z( z(Won!!{0bMGBx`WD8{DTGQHb9GECkPa#e^OGE_QVx6S_6Zp}8HnjR1xK(C;sX7~|+ zQra$CgqK{OI7JWTx3;!+vECMg!}=vK29HZYOKT^8HYxdQj{yS9`RAE#N{UV+(=Q4| z35^wi6{Q%xR_D!9TEzJ2q8bwi18K_5)wOOGjdP|*0IWRk&p(8q*9KIla$t~KSN-$z zPBVog+)~H1UN6TH!W|YNY2!a);fkR^e%JSxFYt~M6ddh;vX zO)zO>PR0aZgt^mB7zs5WGKr#LKo)i5lU0o5G9KQFo5kuMa&hZ)I4tXU1rhRvFabZm zyttDtqkzMruvEL(IcbPcG}s;IK17vKsFwjKX_1+JtpR5!ZUc!VngO{5y~ROCFEq$< zmJ&BTy0s$d;&C$;8OuO3c#(1Qpc_W!vt9ClJ0Y(Gfb(9s{Fdgr+2^OEG}$}7hEqno zC4KJozwVyu{s9)JqoV^l9}tXq)L}Z%O4wze%4W3^M2KW!VjKvu2oGP8knMbHooqLd z-vWm@4mrSXx#9e0lp1%TJUl9@VzqD_uEFA$R>#;So+tA)Phc}tKv_gYL|xtOpN6sp@H$Ul`@~9g(%cTZ;#eQSwx&-!(+;UTLu%9Cm^-s zNk%XT%|E~0P6|D9cl6|%;7^K5p@oNs3mt-PKQ7w2!oNhHlYmZa<(`CediEF^>rVWF zp^fl`b#%_BW0ceK%QgRYgnD$k*0+gtXo@ zr9rn(AYh|-e0NiTZ`knlbEH(dQH*#IPJH5XLQZGWl?|tYy0#s`J8#%?xZUUO z$)iqQcISz|{Lo6Y@bd;r*z*5WBrmgsL`_213R)<$`FI7+E_Fltr9DT<+x=F0z9$0B zDQSj;t$95ji7>HYjhed#O5X(Youh`-uoe2_5|P3ZEuVAJ-1$MQ9*qo6?Z zhiK1G$_}5VJ`dHmHvMU#pf0c1hc=f>e>-+OPd{3!F7E_PJ`YE}*V&P5J^)ynY!)|U z;xdpwTVN`Vj*d!7=!fjM3N~c2-iKMSE8`1QvVvs@J3;~eZ2dTvO`N5oM5rRL(#^hQ zoYI=AeL`C^0}eLrA1~F@yBZ=Qy+Yy5Y7!37qj8o3eimSEUbp*)1wW!Tu8*_R*)9BY zKDC=pmXeeNOm6eZ%iiu|E=@Ap>Miz{`&RHYNP#m-DOj| z)sedS<>|@udO130;v+r9`*r}!!{74t@v_V56f^X4v5FAe+r!;mL#plwKMM*G$L?hh z$Iu9(K`|+qGa!=$nS(Z*EtfEu=1$#2ebid-DX$RB$Y}*a6PG$SL6~YY!?}(F4_++&}(YF>>r+GYC$sCC#P;=$H(onOts3KuX@*f zDi(~uzna>L55La|sQ6SnTzE)15dJ>S()Q-Hw|%)&*W@5im;P}i9jZ=SfGUpDl5>1~ z42-|Jb$BO6`CYHNkwOxk10MnIwq1bfM4p&UOw?zTjz) zau|`o2nv0*$GJKcR!#!=TMEfo6HL{_BS9GlPM*v?ecV@$b#s-3uOj0^LtS6FLDcdG=G%_4xNt9b1)L;>QK#k z+-+*uZjF~Bb+3%g=8szsv*QV`s7Gp)-hSS$4KY8s=xmNZSW zD6X^cO)|gSj>VD~EuET?aLm~`b9WnM!9A3$hd4Lc`i$rtd3>B3;!Dg2IZLb0_EUzF z#*q4)euiUy`wsbz$_#QUn~uA!KJ|v&rdQBju~+9?*LMUDl5Sh3)Fl!Nt_ZpPrljKH z*+9)W6&`H|as6~frf$K~ADXqr;BEBTDH@z|qs&q#45?g3rIS#anG~S_Nyl-eSXppWthxQ8MM55okzJ#`ws{@l@V-Gcz+&Q>r6!Q!R?(xMqgYnb`8G(!d}}!R;8y z2c6}Y*XawDtl&5_W4A@7fitgGz#hA(b05H zJAL4xp|LVoqIf!2!YXia?jVo@2lo&hL*r52uWLF}2y;ZP>$;XN3OBmK`^j+Gz#`T= zRom?G>dRoSdw7uhB41IE4!aO|&V#BFy6u2chg>~K2t#^_QU6jP76S}|B7cxVxAWQc zUaB$(%vQ**MM|75R{EyhyRYQVYPY+h?19>wPUQ;O+E(i-(YX!81si%PlhfhBsCEMM z{c!mm?>=PtxpUrZ_h+8Dohhlu#mco3X|{X<0K)1Ws+{{aOxSDd>yP-HuGf3pPCQ*^ z$X{dKY1v7;<|YU1Z(j%_rKYO$vNj@d5N-B6%sxrF0!w|l|Jec2>z@5e$~W$0p&}z~m5@=LRQffa8i*C;#;*S5f|alw zMj+6bF=?1$`G%j#)bYHNEEdXJtk=1bpRW3lwl{pA_D@+@Sl-`CJJxJ$!@^(@Vc9Yw zCmYRRTA`c&EH0+(xb=L(MvxBsEw|Wuk2)EKj&11{528e3ah|76Hj%k_it5*m_9wz? zA2?UHLO`sw+!~)fD-D9RLffjBKG(%Sm5CrA3JD1v>97IvCE|)3gT@c?M<1rXe?}w0 zb*W|clCvsx0{p?=RBF^Fk%drl3viE~52SVhdnrl>o?%&nF>CXRJ+uO!93QX$B#bb{8}!VDvkb{@QOy|MlHoj5rr{e>RtHk&+W?Y;9Y5d> z@dhmLh>D&`iM+kPceL{o@=1p5HfLtyZT02z$GM;WR&5X@lx^DC*}1!OY>q}lM&8=r zA4nbN?$~|{yL37GT$AP*98bqb-Re_|p$ymD&cWXmU(nKmAQ2)H=t?c)gs)(fBRJUc zFG---7$0_eL{zJDPl^eFTLTo!$uh%_JnRDG6sg)Xv_o50ieW8LEuqsq87! zI4=lajYr#SD37sS^|9zALd`Xhig8>yH7eVnv#I#Wo{W8Whhk)N`1wdk@|&CYqBufW zTFh*sBltdUtG1oK|A-;za6Z?VLW&#+sxv6sXw7-P>Uo!7#o|e|$D&i4Dp#+IkB`^u z3wAo53F51k(QNkuPo@L37*6bsukvRL7@!{c9NicCtHdV!j~J@lQX7oW;=wD?y>AO; zSMx{U$``_W0-D1`)$#yb=Y>4Pzu`50m?4oShw+Sm9qu znp+V#Ds{L`UU;G_H{h`7Cq7=}6%=Noa5+G}5$ ztEI|iK%1pT-0I+RUM0kQpSdWc*W%AqEUM2nY{^#wEufXvY{etI28;pdbJFIoT~=Y(qV#D#UrDM@2;i!Y^qi^e~;n;NyIBDkt#R z2gScpXR)}O`Bq~v8WAv>IK=h{)^h+O#__83W3MDIjfsY z?`GZAZFarb0|xn$Qa@p&lB-E}CVa0?LrD=b#YawZhe!DvL{r9jS=>!x_+F7bea=L7 zjpg%%KCZAcv4hFJpfiqWYmqivV&dY${lFtyD_3__GBgxddvA-WZF4?`h?gPw?3t&m zHj4P29G7O`Gld({ z#iLQ-Zdw+4H59}8{`MB$!T|^luDv9hudy*Jfa>J8?Qj=W5Iq<#s#~9vNegPzMH} zm9l;_ncC|oi)C=9`&&m^RRnNE?PiLpXv6tXj}xG=vx`j{hZ9-y#0z;mMl2cd?g7h| z{s7^vvR27?@|{4RXgM*V;BNQWl$klF+?a&(D}_MP(YbUR$VO)Olb;{Z!h{~ zmLc1tJZxh4gZoX~ktr39t4e5=UqgyCn|#t)^v7$F?oX&$?-DRfDz%l?x1K}MTO9$i zrA2=;<$>7#=!z%3{o9=)*tt|eJ;6muEisAMC#&#dU8Uu=*nT;(h@`u2d9HY!j$dy; zVDy_doL!3HdH;drpEZ);oKeY{T#`t-OrNAm5tAld{lMs6^NW!c+Dpx=3=aKe94N4K_lf04sUl zJ&q#{ol$cLR7L_=6lUgeOOFc5L+HKS?5N|myI&J6`x*q=XR~lx zD4spdq-%Xb*SyW8*f0UExvZJNNQ5xn za}Q1>_tG3tTNC#DrWlcdNn#utA!M9-`+9IPe{;af>UopN?DO4SaCC{bMym`qGgQ2V z?m`DM9F&cAz4Oe>O#l3yU<6#XawsJX-)%UtQ{T88uvH`(*hg%p#2sUot<_UzF}8G) zBovk9)khkIa`WwYSj>wHPzYf3_ftcp;WsDYFS~@_R2ln(uCD~f#v@7(e<06R{KFQG z^&*4{N_-^|^GX%-e6N7^e;a#q!ZY=i1L3yVLCS)MW3s@ zh|>{9B`!ME--SYj+ukWYj~`GqT*s7ZzeJE36fB}b?eLQkpX?lqiX#=5UI08}v9vi0|g=suxT-b(!>ebeNa(NC8Mv6k>X zzd7xie%RdX@rTM>E7B^bPz_%bl3;?aMD$k)G(wZt#FQMbQ0IfWI`W%-J5X2ShvVthr1 zijqf8Si&xDWURTl8N@8v9MGJI2dF0+Yrn!kuMmEs7rVVC>o2 zY0ZLAIn;A+`Y+S|Mc)@4WG_Rwo3c}3hj>? zbTU#5Z^_`ef$qXpTVVf0DjEz;&{JTk_u={DvG30Q>J?4P)yFHfaRKl zl?E42^|fZBCFpwGJS{vp!6d-@>0ohHJ;$@wU@0RY+T|ktZh1&RTar07Vv&quLVD?G zu?4(r(Q3J#CYzbLI^|zwD+0_Gs$=iv{?yLS4p`E>m@S%&#^(_fQ|EM;IZ?h`M7*xH zUDYDs_e_nCp8@8i(*Rsh@8w?5xs^@fiX#Cbdrni62172$n7wNu;h;mRtGFS+5XatOh`y*YvVa8=^phZxO(Uh(^b;c*LQzBem#}ltf}gTq8Oa6 zNw1nL%JFtT7{k#8<*-}=5rFXcV% zs1mi4JkX&9{~R>171BZ#VP87Xh#*?Vk1$hWyPGya?c9?ee1Gcw`b-&SvFVd%@u*y; z(sLJq#pr+ajyqBTID_-XJTPi|RpOXJe?_qq>ljc2%ajnK*c5LQ=bp9~zz7WBm5Xq) zVT9)7;fcv$`q-L?iR4ERySrSrxJ2YD;*q*xt-DQ=xRl1@*GH#=$fCNsx;dX|$VdUN zI||6M98qrIX}xiR8NbNXHRmwRrJYDa!F{|vPJqd9RvVR#vY01_f9x4_W8J94+BjLb zFPnaUwb^V2yMsq2#KgqJUw;ii`nJ#8&Skpv)EvL2`B<0HWNP^>4Oqg_;^QUlJ4L`{ z?mX(bX8<2sl1h2gR<{;ONJ)Y6PEJl_vmuzydvD}tbXxtia-|notV#I&+9qG(v)|-? zu-xJCaIlXB7K6)4KAyo50;t&RaF|W{Tz7jqnvTS&qg%URhiteGJVt%kpXL^8LgKJl z_SlNpC|hVULmjlWu`0BjCD&@e(^})O`nbI4$Z5r zV}G^v+Igh({T^Z!tT zW7(`?vWmuowRW>msy2LDU2dxv+HJ6rb9+lqGyZr0RlXw7WFL5-!a$u06+X-Io1WGA~b9#&5~mm`(rq4C!x zmt;2c1=Kfrm86Xp2NRj2V2+Te!ZQx|9}rTvS64?%HKfpvCvz~hl>{1CZ+=Dh2+@pE z1eM)R^hnszCXQ#c^mLfHUIS36v{9w@o3vVj+b@x4EI^6#yCv_&F>D4o0_|27nZ#QR z*%I3tx7GjRthfhnze!QFy(o@RS|uTM>(i@_bN3CGvtZPHZQ-62?vgiJrihlclXta< zRzUB4PZQ7E_pk;|TQw-(P|=AyKso(Qwq1Q64tMJkyLeU4xMehamt7qX+gAnNYwYVd z;a68upPu&8ZmFa;n%j4uvyRf_lJpz}PxrlS+#u|>+!-2J&uDwqmXl%T2JMt#VhR!H zX~lXt35-br6FXa$KfgX`>7v0Tg#(HBo?mqauI*i!{D5A$EP*nubc9`Au=vEChRCyb zau=HAPnN7aC*ZsCyc-@ZX%KBR8`)_Y&34f#Z?u-NP^7k;83rW3m~@c{hVMAN@EfY| ziHJK4v6FkajE4B&RZFNkwA$|85DG9TjV6`ESQOX7GBOiiP*v{rA1*p73^IgQ?u3ev z4-@^JNhpSXgvk|6rQA}mCH}p(vlJCm1U2Hjc$PRLaiNUt$Lb@*_0DP-faDA5ofMUD z;9Th4-@84eEFl16&n<_NG>pRGh`_!j%+lv3f7b>x$UK`tWkDSkhO&e zIrmwqc6%U#8S#wXVDSc0_bW%+uSk?=hCRd9|AUp5GA*aQ)Ri?7L;R5PUEMCP7-V8d z63ij%;%vhR(vVbSVv)Tp@c$YbGo_Rg=+YWV|IQKuMh$0RwmHcuC;HC=9Z}uFLmdgm zI74FH_xeXv3EE%tFEne`03?tB+Ef#~GE0DxhN$19`~{6FKG*MWP0)Xb1YEI%v?Eka z$A32bi&K)0z*ugS%Ouw-!>X^u9>~Y!fpcMJdBA-I|C{w&fi2_I+1v8m<4xuvKA3QJ zp_!n~i_$+w@OGgiGgTDB4e<9zRdoZ8X~pe_TqMsT{$Ws`o4gdn(i-Jv0(89lDyU%I zQ|h-l3pXsZauzIPAkeR=;hm|o&qq^Wh0PZHyZ+fz%6>?d>_POOahNf}Xh1SF10w@r zO3#Xbspp!W!%C*9CwM} z6T69#0$&e2UzO+Mw8)}25@-Q_D8Dgc_o8jA|9gt*xPLP|=xZI|5YzISaA_*?yAMN; z6N|yBTSSL1Oj!W_%mDvOq(90(E_8kxnbZ8AQI!(=jOrBF??GNDQ<#FRKsh4?U4n)K zv-%&7_d9AU|Am9$#k}=D+L8V~Ersm{68x6juoJ?d^B>ki0s0(DvYi0o&{!~(uD~a9 zZ11qzis{mDyWY_s5JhV9z1LCE2>(CE_zTG5zdQ#5!vL=>@1KmO9{l*HZSAT%9r~_S z{&*TcsiU0||1Com(Fpz~bq(YHcfv4o`BI?_aU;@>Vc)b#jt7>`7PbSE@D(!kmElyK zRLQS(!TPYGS-c^m^~da0jdY&kMxnzVCFu|w2Z%+){X!ol|FW>BNzXnhu1!@jE&Z=3 zO~AhFGWi62Mb75np%m1sy0~zc@;tiA( zpnazlf9^$C0$*lDGb`hQ&;T{O4wzZ*`G15wo`AQO}P z7gYzh^dtEH`)Yod70();0R1mi{+DwH(n|tvCq?&(d{jf^^m{OxiV70vKq+Q)m5k-T zF^8+OC?{|OJ-Rsq(4Jj?HS8Ic1&|*dd-T_P4s!mt&}O0j<8TdU{|=A>t^L-;p$ybw zA}LgRKo1G?rU!JP3Umf0&E5#Q;eX@pt+lJu`cqs*@T(}~dkw3-HbrF*hdRIdI&XyX6K^Ir-Bd-;1o zKO^y-652nN{s$)+D|t5cArwCpk$85!fBNb~MFd2!pR!;vx1hYBINe`x{}uVT$Nvr# z`ZE<2{{kQRuk2%Ql;wUcOc|Dtj65khC69j*E7MVKUhizhAE2eu!Sk~CUlFN3RP!Hw zqjE_qi^fv~O7juwU#9?Eq@SHCL?go8FURj1prWC%U*mAx|D*XM3DWa>>3>3?7?rvxgVClmeF=V^3 z0KoDf{?1C2LAi9%EM<3mr?yI2$8eF&1^9w`KrH(6)Cu8TIif9+*J#T3Q)B0i_eFQs zmqTOFV=o>tEzr#P7>&r4UbRPDT zR9(0lw7-Oh8h1JQLy?f==*~YzM#8e94;1`tV#InmmiQCZ{4{yxl(#Z9i#?Z4KE`IUlM?dcpt_cYVkeg!_ zWi-vvEFMQ|E$agPSW%dK;mz2Khn2uDbJo6 zeBVk*i|~YjLmqMFAx0oeWZ*zT!}_#!4?tR7>_Y`LX^m}Z!;Dn|Q{HGKl2&Qf#An_V z)Gh7u?BrS8_7O3HT|a~87nLbSGo*qw4IY6xL5fC#3MdF}7%K2$*G+;WX*iMZF2V+Y zTsr~uMZ~{~Ip#78b|vPJ{PN(k<>hEcD;`(PUT4a`kKN8`&V4 zw9v_WWqIdohfW`~Qh!RymdDPz>BTI2QqoBi1fyza$*JMfHDA(2um`PQCV%%I4DeO! zdQX1{<&V1)FgNj9(wY= zD%J0S>`6zxy@>LtBqFI%@(m)YFV@PMEVM}^?xA2`1UJ-m<&Y9P5X`WaxdO{cIf(~L{S+=F>M#q?H zANjtWEc{;Wj8(<6E8QxIMiu+gx$W7S`A|QgZ{I#Fs-7ILsks(4O^BTNH_rS78R8+a zbv2iAe@f0^YhpMJKye%YYyR+bWwO7dZ};g*{~hbziQ~BTGI|Ld8GK*$GUTE zP%}LNJoOzrQjHjc8Zi#V9qq^F9Uh#9ecnoU;m0_ZGp%`xm2!4e6C%A;E^ZuIfLv}} z_tcNv&}qJcHjb{hY(v6D)2!+2^P8PBxi}N@48%A@$8Ih5^=*g2!;jtvj`_D_=bC32 zUUd7y2bJ>}8#Oc}`b$;iNs7-LxW6)IO%%U(+tZrUr9-eKU#yRYl zWy?@K(0gC&H^0Qzoo!cNl$yh=Oo8d3ulTJoQ}cwzmtcQA-~-jp(so_B7mKfH&;_4B ziZ^le`5r#LRo3JWbBLrc{f2(&V))0Yiu+~*R^~o>XeLjGG6_s9d|-IV?6%+2xp|P+ zGHagh=c_L`PuY$Bf@y0+abSIsFf+}hLZ=3tWM=_;5G+W*ijzT2@TFQl(yA#z7NEan z`*I5BkYcbIrt=gf03#&{<9LAHD1&}Zk4XS&)9==-H>of*C48Ukdu1akh8O(h5scgC zhkiMh?C{IE+nsPb2F^shF>?r4Dy&jGf~d-_YR-&ajRoD#f2j-Z@Wm3wKw4 zTBuPsuw)j$xtG*Z{CQQ2306s1$Fb+jefxzFGurRr^fH9l-y3_0Qk{hEf6mmnPGy-w zI+kNhm0P8eqr6m_6HxS(B)LcBlZADFL)~s^Kc&hb&&Gw{6snMp@$QeF^YfCP$Hj9e zHLl;}Y-yJrSswZ4DLXW4b;67Rc9%iier**-^PNgDM~y zAsI|mZ_I%Nj@24|_S$17jjCI$g=*#ORa+)_NTGUNbJ-)2QeXss579NSR^`YV%>FLv zA;$EckiWeJJMKL<18QX90;XGjYGL=|vEV`TxjBS?kBaB|NKOuJf!B>QGShaOGHgwu zw35+^lr6_eu^!i{Y+#E1EIlK=71!nNBux**{71}6>9GR45=nEYd_Gm=qkMq4rNk2N zrJ7%55aFd=ug+cn1E!aU?E(V!?5xZrflQ@(yF5Jl4UIbag`$(J;0GK3Aa_@eK$J%~IE0W22iTh4R0Qk!U zlUsyUO9&<9RJB7h%F{E{)(HAZNh$fXv^qNu&ptw&8M-F73!ux(eL6lp`jb&SW7uLf zUktKj(+RNoZ3lpAQGW&dO@mi8PUi__s{4>(#vS5*Wn+@CbFI@dO{VK(_E)sYuSmBx!l^2~YjMgnT8k7sW@tn;Xw+|S|?PJ4_A*jQtU1{3zc$&iXiM~lPW*$qqHmgI9Q3NNlNgiJFsDbviHa)@hK~rSY<~+vlIT^b;%G-HMwA007$wFvMIv_%hu@AD18)jHm6t?iVxn*)>%&oBs@eWb{D^W3@CYkp||G%5_C5Fv>&F2)&mO|MD3wi<-kzwUWFjjVI(F%z}s zq#+-mw;-k(FzVE}E^j}?P_O2~NJPBeQJjA@t9UWeLg5@3pZ_&7U#8&`q9! z(uvgF-Y0B$xMny0f%|l+HhSxGiDsOAx`Ej?<&SIS+pvAgL$)Mvp_VYU)3@eI9cmfQx*a*pKJF@}-J+`EH zZKzymLXa&M-C!K1hSD?~yV62_VibnzR%v}V53`DzzD2DmySE`^rKAU*)ex){ovjAO zDoO^?XuiH}EQ~|crK58<7HE+Zl|QGx z*R}odbj+r<-D1iOV@!w+l=ZH3&WJ0n4`jfR9qvoRdCU`vsCH1DkE zjK;wVBK~+9L0n41{MCv{e9ox6T$Ts=*e*kr%37CenP)nN(6d^%qV;X;b4?-l(xU?UW9brB)?+iNW`K!XT9PK<=S{TCx z|GIkZWa1wXX~&l2(Gw2#WcQL=96ASn`>%mWw^gEdJxz>JyOAPYcq0x z`Lam~7E%=X0aKwK%Kd|pTLypqL@K16Zxz~%mhY?}@nDs-f{Q~UDf?Jo5&WOOK1GN|(8YV}0$&Tm`t`wg%>pe2>W%vox|hYml7^#~(|~X>sA=F7 z`{FKn%+E}uJ*%U>n8phPk+DdS*@D;;z=VqXnzGA;@nssl z>*;t%@XcPa5GmXs9nE}U=G2z+#iGaVtPh5J%-72v)hT&CcYLt8+?B44ki*^cwuV*Vt<$+gfyfI*l@$6={F1t_@QenESz~!F{ zqB!E!{21K|AE^L<0w(0obj)=&ay9O$qHgnLmfrS1{(M_>_Ho@55z=2wG;>C!FbSs% z<0CARZwxbQCZ|_ZWYHo!MVt|_`IQ{2Bxli5w#1P+#nStNcHuE6$`>MBm?QQu-k)a2 zVp~*04%r6|irOZ-IG*_Qqz{jWERVcjU)DE&?(Z7sZA%={WCZ>w&JR(>N35Wv^q&Av zTa%9wU`={?Af>4=ae`JSTS$-v*v%}K(`Sqn+)ZPtp)u%`REFRFFGSvz9geu<_TJ^Mid513(>^0$` z-yboFJ;n_HHz6@HAV4KSCa+v5>NeZclaUByr_f7u<%^}i-m}n7gk1<2men0a}D14ok&CeIt=RCcY@KBy9SAoLdJ@K^FdGSJV}X-*i?cBh!R1+5D9 zLO{2Caad$!V%E^hSST#6D%W5ZS3C!aJfnO^3}(5J{JlOTI}H`bL!qX=*D$W0M)8U* zYN|>@KQH@fx0lqt(2xFfbEk!j;E^uRFlf+cB5|Jmls_|^47Zc@9%SR|N*&s&$Q-9M zX?&6Q#dcc`v43be*D|Bt^N!vsaB$n4S7vrU8YosAc?dqv4f|efUXX5y^UY^YHMnV*c%b-Yy{U$DR@P zz5dU5Y)eym7aWd(Bf?*d&jD;atL6;&d^*1>jQmxUNxh~Z$_93c%`b0ctG}dXHKxv= zdJ|zWnN9JHWVa97`a^338BPi`gce6BStyXtVQX9OdblW6%hC$|ZbkPWt<8d)O-rAJ zGca3CerY&ggN4!h;GO;waNpP=*A+CaeXQ7YnXy0DUkWy#XUmnN>ZiU+x}QC-eXjBt zGWq8}G1st{$SmVuFp8v!yAsME$&fbGoU6P6*p}- zrsZy9X!*6uy|UCuOPG#-Z65F|ho;rVnuZII97N9nZ#h|)Pvx3^%PZSX(lgI#Ck{VY z9}Nvd5G8DOzvuatYhnk+SXJKfG&k1mk%%v1ox3Er7FMrOp(CV`D9%qX3PyS~&@lk7 zRYq!nHThPat0(V#XGphWHXxr@_lh=pa%m$J{`bDlR!8-PR=}oblBxTJfxFY}!1X3+ zqHZS3h3rWikK5|y=?vrqD&?(0EKoGsroF0lfeIL+`T z4(v1!V2Hti6p-bdpO==IURne`$D`OtzaYP$v;cT`N2xyQi5+lFKn6B_#U+Wr&9zC1 zMR@dqPWnK%uOvS|hjd*a2a>KUEhj&*Bo*dDY{RwcSX`KxoSd4I3Jjq9BK_pjq9W*6 z4l}rK016h+StKApT7ZE(UXYlVnu906fMZJ-0aj3ypI($&OdzP`vFOaqO-xTM)_2M* z$xSRMhFXg)6hwiVeO*Hwbv^yu^x^pn*soa|;+=O`LE!Fl5wY8+E~JGnw1^CO#d(Q2 zz@}_Mg2NdB)$RIyQ~X1huDbf>+3$PFY!SJ92hFQbJW(opEmzB zAePlPKa!5tG$soCw+cz{X_n`d_1e@ z9F-G~mh5$%aU%TH@$e1*m_S+2>1Ilw0x;{jvVc+qBa;XN?xS>o;fw@e2kW5gLO(1A zp(O;!#C3EI%oJDzBM(@D%1s0?)JL78K-Y=f{{;68!<0VPF{9*Gf7u$kMgOF+uFVk4yr<#wR!3%m{E;tsyK;F8p;?Bx+%%cFaVg zB;e8jtwXLr9V=mAh1e4AtmzlJ7u4s}wN*aFQ@w`rLW#T`%Bn&N7QNx|(V3^%{*Q{> zZF$2L0}&5Vn4rZ`{@W|VfY^b#9V!}n_f)nvqZ|DGy`51%gDI@W2db*-Yh(<{^N|KU z@Km=^R$rz$1A_SzU+mmrOuCXLl-K)q!Ud)MsWJJB+C?~zKEHXeV`WnWV1S!-EsHr+gXSe>ypzKp>~;DXZL0uj~Kp z-e>%#*g_`C`7Tx}0$qw=RHc9p|I0!6yhQ9~KmE5a0+rE(#Nv$2o>gJ#7cTBV4i?um zMVCrMFUVu^Wb#|4l8P6bM@KwIMN8QW)qzDu#ZLzcbp)f_4=6B+imAfxNM;5azEd|? zFh8qCnUvGnsS2xoC7i#RJenOaomR4eD;*)KwmqIn(hoC#GF$E2??8WYPNAn`BWhb~ zp64pY;ALXz@a9M%yNl?`mrEn3UzkksZ!L&+mV{NXgOm_~Dc)1l1|bYj5Pe$EhIR z7gVB?Zg5!?A(}Ul!=CtUr;(!(R1EW-Dw-gr+eC!hn_Cq-*mzkmqE@M-e$G5%k*{ZL z%;e#PB@7D3t>a+=b{}}$`RrgHsRxmm8ERa4b`hepT@}>$>J?oUyY=c#t33Q0`tu+! z+OZ>Y%zF~JUVyRn33~8Z_uX$8hp#WK)xAF0cNbpZtWs5|(!3Ou^bK>P3-4E=4PZ}# ztrldq>+K=jh+&Dm8(~8M=jeJEjXA|XuZFT=CK?SiHE4}7qIny2`86zvciHE_L1?uv z3LeK?Mb*)X@km%!1EVviym}bh{DZ|s4`9yO02SOf>|4fAi3C-QOo@$B#yZj-o@0`aVA~Xi zcy>4O%CiZPc#SzpS$Ih`J*qJ(M%WhQ?swk2RrkKDQ{WXrTO36PZj+hbLBv0!y*LdX z&lstxi6*x?fw1pNCVo7WeXm4}K#M0`v${{b!6I~`p|qc-)B+P?2$!C{G3iv?ZvXH? zYz3tge-IV#Zb6mta(Xn0(_6`SYVy~4XV@a#e90OiY89mYoC;H%E3X}gT=O8&t^fE9dVDNlrK@0tRejn+u=czH&d>w2~ zJkotq!E+vU1;Xcq7Ky_6wrXI*w8A^v+r=*I`+WyY9#mm9w)b5>ce+877E;bq<$9bf zrG#J?>dstRmu^MT%UZRcf~KT@363&s%2LP8)fV~$_G3G7 z_y|`)`ja0pGOmMLv@O-@9Xkm?sR-Q2v&RR3N=s~#fl zik#N8GOnrU)N*qwONEJ~o$4(bhsek`#}dijHcHkid;ByvuFgq8pZ3+fSGFtBp9HKt z(9B%UqRlu``5rw*GSB^Lfg1tEJiRf6qrMgX<$R-qpbwML0f0D)AH~3LWN@>waXi8z?PSOi$9GK^&y|n}60Nuyo34EJ{eyeDutjQ|AJ}Z%Ypq-aqE6L)8 zR#uuZR>z6f96I4T^Ob$Gx~)!s*GJZo8OEwrXcm-?%bRw;OizuBDhb@`bEdZi4|NTP^;Dw8z1zlDB0FLBj&e z1@PncD(L8F9R*u^Fw!h5l`Q9{(Y>J+0&{0U|9@f0pxdtU$iDg)5jk_ zBZ38e3&%ISa8YYyK+FROincGn6K7F4iRIh%IFg0K4%xyqN{ChhZpC(zyxKzsp;g0} z-C8#Q0JBIrp%)ZQo|g}@bctXSRgP>>Edent;4sI?!;1CEbvO4-t|i=yC4!oH#=TXI z--Of%-jl+kEw*Ht+YL9JoTP(1_q#cqC0bi;c+ZNTmnU(yv4ZGH21;8u$Ha-VWo}ZN z_}%I8Toc@VPiUfAIYJdY%#cb#ehJ zwGv188;-(!6KZER}TJsRK_53 z#FES`_^W#qVPJ_!_uItL8Txl=v-2#y`&%^R#W4+$&QPM#=!i*Xc~?^=?J?W%UV`+{ zSh|q8{gDN((xEcPDM?>T21KaLgq(jwIpW=r4Y!s9zo-K5Bz0%Bf+b^Xm$H&r_2_K{ z?8wtqx&9~ z^`1#oXHGM+?M7pw;ia45ggAR$r=fUhkuTA%G~1G-fM&JD(9`VB5^Q&$!w&^$WD4i>%Q{x=z{1f>e2Z*kEw)j* zw5(QN7#Rw#Fh)!xP4pHuAW(uK&1kk znzIUz8OI15YJsT7GlQ?^rZpy^UiW0aU9mDXcB>J(V@JNL2NmplGEEGB2)#S>wt#&E zBHtAAWspS1k%Z)-v}o<7U3+JGF4~(CtossaE`xZt)5cP}MW>aWTv;ah0e6UoaM&2; zlO73cXnx>UZF&&VC@ZHboE(xC2BKJ&5I-qQK8kU#z$lm1Y%@O>A{L++5eC__Gn6(4 zvb1S`>=lK!%g%>?ssm*;&0}s~BKY!Tcb!{z@48{Vf5Mn(4Y}N68{%9o2!EO)`Y2MP z1f3To;?5QcugULRN7#qb*2Wc z)YLnj1`g#p;2{>`-@X5Ul3OZFP?WJ)rUHz^3`fnk`#QoKNHmg~KyvQ+l4rHPf|mUy z)!-Z`_byuvTU*8xXXXO1*d}xpb%*;ozlhs>C{V}1^u~QsvRzko)V9E2LQP)Ja}g01>u z_DMQQj?&oO>w~*ZHGa<`)0Lp4ik#g1CxOM45f%76lXGA3dGJuiT1h9+tGp{HQw&c& zcZxPQcKH!laP--30o-T)MiOy@|~ zr3oaCOKc)n=i-X!;uz^r?UWM1q?I3E-cJ=p5i!vt0k6Z-bOJU} zwbT0bSKbPgX;lemRRv?WW^NJYEQ1ueH&pd*#R@++wED0s_1Q#pYnwIh@{9E>q}xC3 z?8@3en_cuXk$d?tP0OnfzBM$cf}S2jK*n6;iP^ot5(hjFpUXz*?w^d6e~5I5!% z@JM9?L(oAktbGZ047Y4+UrYsx-^GXqiaCUGGUkYrRKrWt51D;G+xQ3QU{8q0^dpwd=Y(xL+9p+n!#)>mqIOX zt`QfT)dmD$su2pj^qk$~9i2xse(W?jR9Cw=w|3}HZ3XbSzwqoIexf^8wBS2nS^hLL zw9I1|qjXdu5)b^m+_g-D?oZYh5W-A5ibIsb-#Tqq^YJ4#L-#)Ey)z%?%VlZK?|8o| zZ?qxnZC6M(_#xRq_B$JXls7OND=Rk`_`f!pZN=MM8 zV#ln)rlH+4#w8{ymQ;EC+w>kleX}Jt<-!z&|FzcTENDU=*lw`C1H!tH2Creh8pexkAq%3&C4rvIk)?h~Tbl%VfoA&9?s zI^jE%X5=k3lft4ybTgM!6BoSsx}3`qj;>^caU4hW-2^e?xh;ls$EhO!QFvBgGsjGd zShluP@D1+uqF|;c1}B0R$eHheanszRNwF2_qlhR?uQvC@*${_eyI zrHf0|q@I=rb2e*s>yD0t52yz_1J8$M6L7!Zn+Thxz|?P1b@B;3%%yjY?e2d!zof-EWRjtB@{9mQFT5ai$N)whxh;gE}lOXbV}6oz3`+UY+E9DmjvW zEb5aGCCnfnxW))Xb0j0R3KQBY_KBt{jx;T@L$h4Rz#2K)sz_$1iT!!^nf0hj_g&B%@#lXDu@$^Xxx;ohy+NsPd>d5sFOE-mP zaRUQDAsI)RtW78?t6U_HtqC_$DCCkwo-%T;j%)!Rn-pzpY=kc$#o(q_X)zH1r z7VGPBzbXrn+*<^nR+&p=iC6U@%uVAA#K<}G#GS^j%sUjk)`5wXXV8_J9yZKnrYPwP z63AB{BKa3mTo=;39#=EC)?04~o(!mq(C48DrAI}$J~5UCBA~_&d=>*@ZI=(ve_gIO zq*+RWEB26w3dAMP) zXSc-Zx`A=}s!}9SanTeen1j=|-9mmIpq_2YM=Lq?o*uK>oa^EoKCXtF;W zgd6@a;VSpb>pOiAy5WpeGJ3=P9OniHXvrLI@BJH`gGez27UpDA8jV%$_R1Zfjy$yT z7GmpQawaZrko^$ehEjWI{|%inB$72O)AQY|Rpk}`*ZVX?(EMVOQ$ohZLW=1(*1L~T8#r9rtS?MM?_~Pt>IVQAeZ8I z@fGD37g9_6b^H0x1^aXSMKfAU^`8#@*%$lM@W)t&WX0dQWIr4JvsdtU!x5wc_WySd ze)jXTfc!U4nE#TKe>VPEVEoIN8v8fnf60wMd-z$h`^y6^&MyVLpB?;MFa70UjPUor z@Sp1GXVagP%fCz)N&YkSf2Eo~d--R){mTacKu8V%{44tYZ2r$p@bBiYDgS2v$Cjw2 VdKE04@Lk00;m80Bvb)WpsIPWnpk|Y-wX* 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 z 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test_multisheet.ods b/pandas/io/tests/data/test_multisheet.ods new file mode 100644 index 0000000000000000000000000000000000000000..275f5350fe8536386609b994e9d4638b1ca93b37 GIT binary patch literal 10818 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 YTYi?6fO+;<4fWw;{lGtsB#*iO2UPv>6aWAK literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test_multisheet.xls b/pandas/io/tests/data/test_multisheet.xls new file mode 100644 index 0000000000000000000000000000000000000000..fa37723fcdefbd014df010d464223044c977273c GIT binary patch literal 29696 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 GyZ-^HamEe+ literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test_types.ods b/pandas/io/tests/data/test_types.ods new file mode 100644 index 0000000000000000000000000000000000000000..bcf5433102f7883e9c6a7805d392b9701268d92e GIT binary patch literal 20547 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 L04#s@dV_cXm~lRq literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/test_types.xlsm b/pandas/io/tests/data/test_types.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..c66fdc82dfb672286c0e1215c1a3a42c3af3b277 GIT binary patch literal 8733 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 o{uW< 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 XXn85nPaj`Hcz@Wx`yU|2kE{O$hP~T4 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/times_1900.xlsm b/pandas/io/tests/data/times_1900.xlsm new file mode 100644 index 0000000000000000000000000000000000000000..1ffdbe223453b103b4a67c138c3eb0109b9b4863 GIT binary patch literal 8282 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/times_1900.xlsx b/pandas/io/tests/data/times_1900.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3702289b256fd0768b7edb235c423b0a9f14b15c GIT binary patch literal 8266 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 literal 0 HcmV?d00001 diff --git a/pandas/io/tests/data/times_1904.xlsx b/pandas/io/tests/data/times_1904.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1a13468e59d1c51d7414a2a33e35994207be491f GIT binary patch literal 8244 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 R1psi7R}eCYXVU(7`VUT^90~vc literal 0 HcmV?d00001 From 42cfdd8adc547d6ab3f225e85e8e2309123b2157 Mon Sep 17 00:00:00 2001 From: davidovitch Date: Sun, 15 Mar 2015 17:08:30 +0100 Subject: [PATCH 2/4] added ezodf to optional dependencies --- doc/source/install.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/source/install.rst b/doc/source/install.rst index 36a6c4038f8be..37263899c0521 100644 --- a/doc/source/install.rst +++ b/doc/source/install.rst @@ -250,7 +250,8 @@ Optional Dependencies * `matplotlib `__: for plotting * `statsmodels `__ * Needed for parts of :mod:`pandas.stats` -* `openpyxl `__, `xlrd/xlwt `__ +* `openpyxl `__, `xlrd/xlwt `__, `ezodf `__ + * ezodf supports Open Document Format spreadsheets (ods) * Needed for Excel I/O * `XlsxWriter `__ * Alternative Excel writer From c2ea36573b4441f86377da3495c0fd9332fec6d9 Mon Sep 17 00:00:00 2001 From: davidovitch Date: Sat, 29 Aug 2015 13:54:06 +0200 Subject: [PATCH 3/4] TST: refactor Excel reader tests, add ODF (.ods) test when reader becomes available --- pandas/io/tests/test_excel.py | 577 ++++++++++++++++++---------------- 1 file changed, 313 insertions(+), 264 deletions(-) diff --git a/pandas/io/tests/test_excel.py b/pandas/io/tests/test_excel.py index 83db59f9d9029..4a3d6d18616c0 100644 --- a/pandas/io/tests/test_excel.py +++ b/pandas/io/tests/test_excel.py @@ -1,7 +1,8 @@ # pylint: disable=E1101 from pandas.compat import u, range, map, openpyxl_compat, BytesIO, iteritems -from datetime import datetime, date, time +from pandas import compat +from datetime import datetime, date, time, timedelta import sys import os from distutils.version import LooseVersion @@ -58,6 +59,13 @@ def _skip_if_no_xlsxwriter(): raise nose.SkipTest('xlsxwriter not installed, skipping') +def _skip_if_no_ezodf(): + try: + import ezodf # NOQA + except ImportError: + raise nose.SkipTest('ezodf not installed, skipping') + + def _skip_if_no_excelsuite(): _skip_if_no_xlrd() _skip_if_no_xlwt() @@ -76,11 +84,6 @@ def _skip_if_no_excelsuite(): class SharedItems(object): def setUp(self): self.dirpath = tm.get_data_path() - self.csv1 = os.path.join(self.dirpath, 'test1.csv') - self.csv2 = os.path.join(self.dirpath, 'test2.csv') - self.xls1 = os.path.join(self.dirpath, 'test.xls') - self.xlsx1 = os.path.join(self.dirpath, 'test.xlsx') - self.multisheet = os.path.join(self.dirpath, 'test_multisheet.xlsx') self.frame = _frame.copy() self.frame2 = _frame2.copy() self.tsframe = _tsframe.copy() @@ -91,266 +94,176 @@ def read_csv(self, *args, **kwds): kwds['engine'] = 'python' return read_csv(*args, **kwds) + def get_data(self, basename, csv=True): + """ + Return a DataFrame as read by the Python csv engine and a DataFrame + as read by the ExcelFile engine. Test data path is defined by + pandas.util.testing.get_data_path() + + Parameters + ---------- + + basename : str + File base name, excluding file extension. + + csv : boolean, default=True + When True, basename.csv is returned + """ + + excel = ExcelFile(os.path.join(self.dirpath, basename + self.ext)) + if csv: + # the reference is obtained form read_csv with Python engine + pref = os.path.join(self.dirpath, basename + '.csv') + dfref = self.read_csv(pref, index_col=0, parse_dates=True) + return dfref, excel + else: + return excel + + +class ReadingTestsBase(SharedItems): + # This is based on ExcelWriterBase + # + # Base class for test cases to run with different Excel readers. + # To add a reader test, define the following: + # 1. A check_skip function that skips your tests if your reader isn't + # installed. + # 2. Add a property ext, which is the file extension that your reader + # reades from. (needs to start with '.' so it's a valid path) + # 3. Add a property engine_name, which is the name of the reader class. + # For the reader this is not used for anything at the moment. + + def setUp(self): + self.check_skip() + super(ReadingTestsBase, self).setUp() -class ExcelReaderTests(SharedItems, tm.TestCase): def test_parse_cols_int(self): - _skip_if_no_openpyxl() - _skip_if_no_xlrd() - suffix = ['xls', 'xlsx', 'xlsm'] - - for s in suffix: - pth = os.path.join(self.dirpath, 'test.%s' % s) - xls = ExcelFile(pth) - df = xls.parse('Sheet1', index_col=0, parse_dates=True, - parse_cols=3) - df2 = self.read_csv(self.csv1, index_col=0, parse_dates=True) - df2 = df2.reindex(columns=['A', 'B', 'C']) - df3 = xls.parse('Sheet2', skiprows=[1], index_col=0, - parse_dates=True, parse_cols=3) - # TODO add index to xls file) - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) + dfref, excel = self.get_data('test1') + dfref = dfref.reindex(columns=['A', 'B', 'C']) + df1 = excel.parse('Sheet1', index_col=0, parse_dates=True, + parse_cols=3) + df2 = excel.parse('Sheet2', skiprows=[1], index_col=0, + parse_dates=True, parse_cols=3) + # TODO add index to xls file) + tm.assert_frame_equal(df1, dfref, check_names=False) + tm.assert_frame_equal(df2, dfref, check_names=False) def test_parse_cols_list(self): - _skip_if_no_openpyxl() - _skip_if_no_xlrd() - suffix = ['xls', 'xlsx', 'xlsm'] - - for s in suffix: - pth = os.path.join(self.dirpath, 'test.%s' % s) - xls = ExcelFile(pth) - df = xls.parse('Sheet1', index_col=0, parse_dates=True, - parse_cols=[0, 2, 3]) - df2 = self.read_csv(self.csv1, index_col=0, parse_dates=True) - df2 = df2.reindex(columns=['B', 'C']) - df3 = xls.parse('Sheet2', skiprows=[1], index_col=0, - parse_dates=True, - parse_cols=[0, 2, 3]) - # TODO add index to xls file) - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) + dfref, excel = self.get_data('test1') + dfref = dfref.reindex(columns=['B', 'C']) + df1 = excel.parse('Sheet1', index_col=0, parse_dates=True, + parse_cols=[0, 2, 3]) + df2 = excel.parse('Sheet2', skiprows=[1], index_col=0, + parse_dates=True, + parse_cols=[0, 2, 3]) + # TODO add index to xls file) + tm.assert_frame_equal(df1, dfref, check_names=False) + tm.assert_frame_equal(df2, dfref, check_names=False) def test_parse_cols_str(self): - _skip_if_no_openpyxl() - _skip_if_no_xlrd() - suffix = ['xls', 'xlsx', 'xlsm'] - - for s in suffix: - - pth = os.path.join(self.dirpath, 'test.%s' % s) - xls = ExcelFile(pth) - - df = xls.parse('Sheet1', index_col=0, parse_dates=True, - parse_cols='A:D') - df2 = read_csv(self.csv1, index_col=0, parse_dates=True) - df2 = df2.reindex(columns=['A', 'B', 'C']) - df3 = xls.parse('Sheet2', skiprows=[1], index_col=0, - parse_dates=True, parse_cols='A:D') - # TODO add index to xls, read xls ignores index name ? - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) - del df, df2, df3 - - df = xls.parse('Sheet1', index_col=0, parse_dates=True, - parse_cols='A,C,D') - df2 = read_csv(self.csv1, index_col=0, parse_dates=True) - df2 = df2.reindex(columns=['B', 'C']) - df3 = xls.parse('Sheet2', skiprows=[1], index_col=0, - parse_dates=True, - parse_cols='A,C,D') - # TODO add index to xls file - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) - del df, df2, df3 - - df = xls.parse('Sheet1', index_col=0, parse_dates=True, - parse_cols='A,C:D') - df2 = read_csv(self.csv1, index_col=0, parse_dates=True) - df2 = df2.reindex(columns=['B', 'C']) - df3 = xls.parse('Sheet2', skiprows=[1], index_col=0, - parse_dates=True, - parse_cols='A,C:D') - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) + dfref, excel = self.get_data('test1') + + df1 = dfref.reindex(columns=['A', 'B', 'C']) + df2 = excel.parse('Sheet1', index_col=0, parse_dates=True, + parse_cols='A:D') + df3 = excel.parse('Sheet2', skiprows=[1], index_col=0, + parse_dates=True, parse_cols='A:D') + # TODO add index to xls, read xls ignores index name ? + tm.assert_frame_equal(df2, df1, check_names=False) + tm.assert_frame_equal(df3, df1, check_names=False) + + df1 = dfref.reindex(columns=['B', 'C']) + df2 = excel.parse('Sheet1', index_col=0, parse_dates=True, + parse_cols='A,C,D') + df3 = excel.parse('Sheet2', skiprows=[1], index_col=0, + parse_dates=True, + parse_cols='A,C,D') + # TODO add index to xls file + tm.assert_frame_equal(df2, df1, check_names=False) + tm.assert_frame_equal(df3, df1, check_names=False) + + df1 = dfref.reindex(columns=['B', 'C']) + df2 = excel.parse('Sheet1', index_col=0, parse_dates=True, + parse_cols='A,C:D') + df3 = excel.parse('Sheet2', skiprows=[1], index_col=0, + parse_dates=True, + parse_cols='A,C:D') + tm.assert_frame_equal(df2, df1, check_names=False) + tm.assert_frame_equal(df3, df1, check_names=False) def test_excel_stop_iterator(self): - _skip_if_no_xlrd() - excel_data = ExcelFile(os.path.join(self.dirpath, 'test2.xls')) - parsed = excel_data.parse('Sheet1') + excel = self.get_data('test2', csv=False) + + parsed = excel.parse('Sheet1') expected = DataFrame([['aaaa', 'bbbbb']], columns=['Test', 'Test1']) tm.assert_frame_equal(parsed, expected) def test_excel_cell_error_na(self): - _skip_if_no_xlrd() - excel_data = ExcelFile(os.path.join(self.dirpath, 'test3.xls')) - parsed = excel_data.parse('Sheet1') + excel = self.get_data('test3', csv=False) + + parsed = excel.parse('Sheet1') expected = DataFrame([[np.nan]], columns=['Test']) tm.assert_frame_equal(parsed, expected) def test_excel_passes_na(self): - _skip_if_no_xlrd() - excel_data = ExcelFile(os.path.join(self.dirpath, 'test2.xlsx')) - parsed = excel_data.parse('Sheet1', keep_default_na=False, - na_values=['apple']) + excel = self.get_data('test4', csv=False) + + parsed = excel.parse('Sheet1', keep_default_na=False, + na_values=['apple']) expected = DataFrame([['NA'], [1], ['NA'], [np.nan], ['rabbit']], columns=['Test']) tm.assert_frame_equal(parsed, expected) - parsed = excel_data.parse('Sheet1', keep_default_na=True, - na_values=['apple']) + parsed = excel.parse('Sheet1', keep_default_na=True, + na_values=['apple']) expected = DataFrame([[np.nan], [1], [np.nan], [np.nan], ['rabbit']], columns=['Test']) tm.assert_frame_equal(parsed, expected) - def check_excel_table_sheet_by_index(self, filename, csvfile): - import xlrd - - pth = os.path.join(self.dirpath, filename) - xls = ExcelFile(pth) - df = xls.parse(0, index_col=0, parse_dates=True) - df2 = self.read_csv(csvfile, index_col=0, parse_dates=True) - df3 = xls.parse(1, skiprows=[1], index_col=0, parse_dates=True) - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) - - df4 = xls.parse(0, index_col=0, parse_dates=True, skipfooter=1) - df5 = xls.parse(0, index_col=0, parse_dates=True, skip_footer=1) - tm.assert_frame_equal(df4, df.ix[:-1]) - tm.assert_frame_equal(df4, df5) - - self.assertRaises(xlrd.XLRDError, xls.parse, 'asdf') - def test_excel_table_sheet_by_index(self): - _skip_if_no_xlrd() - for filename, csvfile in [(self.xls1, self.csv1), - (self.xlsx1, self.csv1)]: - self.check_excel_table_sheet_by_index(filename, csvfile) - - def test_excel_table(self): - _skip_if_no_xlrd() - - pth = os.path.join(self.dirpath, 'test.xls') - xls = ExcelFile(pth) - df = xls.parse('Sheet1', index_col=0, parse_dates=True) - df2 = self.read_csv(self.csv1, index_col=0, parse_dates=True) - df3 = xls.parse('Sheet2', skiprows=[1], index_col=0, parse_dates=True) - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) - - df4 = xls.parse('Sheet1', index_col=0, parse_dates=True, - skipfooter=1) - df5 = xls.parse('Sheet1', index_col=0, parse_dates=True, - skip_footer=1) - tm.assert_frame_equal(df4, df.ix[:-1]) - tm.assert_frame_equal(df4, df5) - - def test_excel_read_buffer(self): - _skip_if_no_xlrd() - _skip_if_no_openpyxl() - - pth = os.path.join(self.dirpath, 'test.xls') - f = open(pth, 'rb') - xls = ExcelFile(f) - # it works - xls.parse('Sheet1', index_col=0, parse_dates=True) - - pth = os.path.join(self.dirpath, 'test.xlsx') - f = open(pth, 'rb') - xl = ExcelFile(f) - xl.parse('Sheet1', index_col=0, parse_dates=True) - - def test_read_xlrd_Book(self): - _skip_if_no_xlrd() - _skip_if_no_xlwt() - - import xlrd - - df = self.frame - - with ensure_clean('.xls') as pth: - df.to_excel(pth, "SheetA") - book = xlrd.open_workbook(pth) - - with ExcelFile(book, engine="xlrd") as xl: - result = xl.parse("SheetA") - tm.assert_frame_equal(df, result) - result = read_excel(book, sheetname="SheetA", engine="xlrd") - tm.assert_frame_equal(df, result) + dfref, excel = self.get_data('test1') - @tm.network - def test_read_from_http_url(self): - _skip_if_no_xlrd() + df1 = excel.parse(0, index_col=0, parse_dates=True) + df2 = excel.parse(1, skiprows=[1], index_col=0, parse_dates=True) + tm.assert_frame_equal(df1, dfref, check_names=False) + tm.assert_frame_equal(df2, dfref, check_names=False) - url = ('https://raw.github.com/pydata/pandas/master/' - 'pandas/io/tests/data/test.xlsx') - url_table = read_excel(url) - dirpath = tm.get_data_path() - localtable = os.path.join(dirpath, 'test.xlsx') - local_table = read_excel(localtable) - tm.assert_frame_equal(url_table, local_table) - - @slow - def test_read_from_file_url(self): - _skip_if_no_xlrd() + df3 = excel.parse(0, index_col=0, parse_dates=True, skipfooter=1) + df4 = excel.parse(0, index_col=0, parse_dates=True, skip_footer=1) + tm.assert_frame_equal(df3, df1.ix[:-1]) + tm.assert_frame_equal(df3, df4) - # FILE - if sys.version_info[:2] < (2, 6): - raise nose.SkipTest("file:// not supported with Python < 2.6") - dirpath = tm.get_data_path() - localtable = os.path.join(dirpath, 'test.xlsx') - local_table = read_excel(localtable) - - try: - url_table = read_excel('file://localhost/' + localtable) - except URLError: - # fails on some systems - raise nose.SkipTest("failing on %s" % - ' '.join(platform.uname()).strip()) - - tm.assert_frame_equal(url_table, local_table) - - def test_xlsx_table(self): - _skip_if_no_xlrd() - _skip_if_no_openpyxl() - - pth = os.path.join(self.dirpath, 'test.xlsx') - xlsx = ExcelFile(pth) - df = xlsx.parse('Sheet1', index_col=0, parse_dates=True) - df2 = self.read_csv(self.csv1, index_col=0, parse_dates=True) - df3 = xlsx.parse('Sheet2', skiprows=[1], index_col=0, parse_dates=True) - - # TODO add index to xlsx file - tm.assert_frame_equal(df, df2, check_names=False) - tm.assert_frame_equal(df3, df2, check_names=False) + if self.ext == '.ods': + self.assertRaises(KeyError, excel.parse, 'asdf') + else: + import xlrd + self.assertRaises(xlrd.XLRDError, excel.parse, 'asdf') - df4 = xlsx.parse('Sheet1', index_col=0, parse_dates=True, - skipfooter=1) - df5 = xlsx.parse('Sheet1', index_col=0, parse_dates=True, - skip_footer=1) - tm.assert_frame_equal(df4, df.ix[:-1]) - tm.assert_frame_equal(df4, df5) + def test_excel_table(self): - def test_reader_closes_file(self): - _skip_if_no_xlrd() - _skip_if_no_openpyxl() + dfref, excel = self.get_data('test1') - pth = os.path.join(self.dirpath, 'test.xlsx') - f = open(pth, 'rb') - with ExcelFile(f) as xlsx: - # parses okay - xlsx.parse('Sheet1', index_col=0) + df1 = excel.parse('Sheet1', index_col=0, parse_dates=True) + df2 = excel.parse('Sheet2', skiprows=[1], index_col=0, + parse_dates=True) + # TODO add index to file + tm.assert_frame_equal(df1, dfref, check_names=False) + tm.assert_frame_equal(df2, dfref, check_names=False) - self.assertTrue(f.closed) + df3 = excel.parse('Sheet1', index_col=0, parse_dates=True, + skipfooter=1) + df4 = excel.parse('Sheet1', index_col=0, parse_dates=True, + skip_footer=1) + tm.assert_frame_equal(df3, df1.ix[:-1]) + tm.assert_frame_equal(df3, df4) def test_reader_special_dtypes(self): - _skip_if_no_xlrd() expected = DataFrame.from_items([ ("IntCol", [1, 2, -3, 4, 0]), @@ -364,44 +277,40 @@ def test_reader_special_dtypes(self): datetime(2015, 3, 14)]) ]) - xlsx_path = os.path.join(self.dirpath, 'test_types.xlsx') - xls_path = os.path.join(self.dirpath, 'test_types.xls') + pth = os.path.join(self.dirpath, 'test_types' + self.ext) # should read in correctly and infer types - for path in (xls_path, xlsx_path): - actual = read_excel(path, 'Sheet1') - tm.assert_frame_equal(actual, expected) + actual = read_excel(pth, 'Sheet1') + tm.assert_frame_equal(actual, expected) # if not coercing number, then int comes in as float float_expected = expected.copy() float_expected["IntCol"] = float_expected["IntCol"].astype(float) float_expected.loc[1, "Str2Col"] = 3.0 - for path in (xls_path, xlsx_path): - actual = read_excel(path, 'Sheet1', convert_float=False) - tm.assert_frame_equal(actual, float_expected) + actual = read_excel(pth, 'Sheet1', convert_float=False) + tm.assert_frame_equal(actual, float_expected) # check setting Index (assuming xls and xlsx are the same here) for icol, name in enumerate(expected.columns): - actual = read_excel(xlsx_path, 'Sheet1', index_col=icol) - actual2 = read_excel(xlsx_path, 'Sheet1', index_col=name) + actual = read_excel(pth, 'Sheet1', index_col=icol) exp = expected.set_index(name) tm.assert_frame_equal(actual, exp) - tm.assert_frame_equal(actual2, exp) # convert_float and converters should be different but both accepted expected["StrCol"] = expected["StrCol"].apply(str) - actual = read_excel(xlsx_path, 'Sheet1', converters={"StrCol": str}) + actual = read_excel(pth, 'Sheet1', converters={"StrCol": str}) tm.assert_frame_equal(actual, expected) no_convert_float = float_expected.copy() no_convert_float["StrCol"] = no_convert_float["StrCol"].apply(str) - actual = read_excel(xlsx_path, 'Sheet1', converters={"StrCol": str}, + actual = read_excel(pth, 'Sheet1', converters={"StrCol": str}, convert_float=False) tm.assert_frame_equal(actual, no_convert_float) # GH8212 - support for converters and missing values def test_reader_converters(self): - _skip_if_no_xlrd() + + pth = os.path.join(self.dirpath, 'test_converters' + self.ext) expected = DataFrame.from_items([ ("IntCol", [1, 2, -3, -1000, 0]), @@ -416,48 +325,166 @@ def test_reader_converters(self): 3: lambda x: str(x) if x else '', } - xlsx_path = os.path.join(self.dirpath, 'test_converters.xlsx') - xls_path = os.path.join(self.dirpath, 'test_converters.xls') - # should read in correctly and set types of single cells (not array dtypes) - for path in (xls_path, xlsx_path): - actual = read_excel(path, 'Sheet1', converters=converters) - tm.assert_frame_equal(actual, expected) + actual = read_excel(pth, 'Sheet1', converters=converters) + tm.assert_frame_equal(actual, expected) def test_reading_all_sheets(self): # Test reading all sheetnames by setting sheetname to None, # Ensure a dict is returned. # See PR #9450 - - _skip_if_no_xlrd() - - dfs = read_excel(self.multisheet,sheetname=None) - expected_keys = ['Alpha','Beta','Charlie'] - tm.assert_contains_all(expected_keys,dfs.keys()) + pth = os.path.join(self.dirpath, 'test_multisheet' + self.ext) + dfs = read_excel(pth, sheetname=None) + expected_keys = ['Alpha', 'Beta', 'Charlie'] + tm.assert_contains_all(expected_keys, dfs.keys()) def test_reading_multiple_specific_sheets(self): # Test reading specific sheetnames by specifying a mixed list # of integers and strings, and confirm that duplicated sheet # references (positions/names) are removed properly. - # Ensure a dict is returned # See PR #9450 - _skip_if_no_xlrd() - - #Explicitly request duplicates. Only the set should be returned. - expected_keys = [2,'Charlie','Charlie'] - dfs = read_excel(self.multisheet,sheetname=expected_keys) + pth = os.path.join(self.dirpath, 'test_multisheet' + self.ext) + # Explicitly request duplicates. Only the set should be returned. + expected_keys = [2, 'Charlie', 'Charlie'] + dfs = read_excel(pth, sheetname=expected_keys) expected_keys = list(set(expected_keys)) - tm.assert_contains_all(expected_keys,dfs.keys()) + tm.assert_contains_all(expected_keys, dfs.keys()) assert len(expected_keys) == len(dfs.keys()) + +class OdsReaderTests(ReadingTestsBase, tm.TestCase): + ext = '.ods' + engine_name = 'ezodf' + check_skip = staticmethod(_skip_if_no_ezodf) + + def test_read_ezodf_book(self): + + import ezodf + pth = os.path.join(self.dirpath, 'test1' + self.ext) + book = ezodf.opendoc(pth) + result1 = ExcelFile(book).parse() + result2 = read_excel(book) + + df = read_excel(pth) + tm.assert_frame_equal(df, result1) + tm.assert_frame_equal(df, result2) + + def test_types_datetime(self): + + expected = DataFrame.from_items([ + ("UnicodeCol", ['øø', 'ææ', 'åå', 'oø', '€£$¥', '£@$', 'ÅøØæÆ@']), + ("ExpCol", [8.50E-010, 8.50E+012, 9.00E-055, 8.50E+011, 8.5E-10, + 5E-10, 5E-10]), + ("BoolCol", [True, False, True, True, False, False, False]), + ("TimeCol", [time(hour=23, microsecond=1), + time(hour=2), + time(hour=1, minute=1, second=1), + timedelta(days=1, hours=2, minutes=1, seconds=1, + microseconds=1), + timedelta(hours=866, minutes=1, seconds=1, + microseconds=1), + time(2, 59, 40, 500000), + time(23, 59, 59, 100)]), + ("DateTimeCol", [datetime(2014, 10, 10, 10), + datetime(1900, 2, 1, 2), + datetime(2014, 1, 1, 23, 15, 15), + datetime(2011, 2, 3, 4, 5, 6), + datetime(1900, 7, 8, 9, 0, 1), + datetime(2015, 5, 7, 9, 33, 23), + datetime(2015, 5, 7, 2, 33, 23, 300000)]), + ("DateCol", [datetime(2014,3,2), datetime(1900,2,1), + datetime(1899,12,30), datetime(2100,12,11), + datetime(1850,11,3), datetime(2950,11,3), + datetime(2015,7,6)]), + ("TimeInDateFormat", [datetime(1899,12,30,1) for k in range(7)]) + ]) + + pth = os.path.join(self.dirpath, 'test_types_datetime' + self.ext) + dfs = read_excel(pth) + tm.assert_frame_equal(dfs, expected) + + +class XlrdTests(ReadingTestsBase): + """ + This is the base class for the xlrd tests, and 3 different file formats + are supported: xls, xlsx, xlsm + """ + + def test_excel_read_buffer(self): + + pth = os.path.join(self.dirpath, 'test1' + self.ext) + f = open(pth, 'rb') + xls = ExcelFile(f) + # it works + xls.parse('Sheet1', index_col=0, parse_dates=True) + + def test_read_xlrd_Book(self): + _skip_if_no_xlwt() + + import xlrd + df = self.frame + with ensure_clean('.xls') as pth: + df.to_excel(pth, "SheetA") + book = xlrd.open_workbook(pth) + + with ExcelFile(book, engine="xlrd") as xl: + result = xl.parse("SheetA") + tm.assert_frame_equal(df, result) + + result = read_excel(book, sheetname="SheetA", engine="xlrd") + tm.assert_frame_equal(df, result) + + @tm.network + def test_read_from_http_url(self): + # TODO: remove this when merging into master + url = ('https://raw.github.com/davidovitch/pandas/master/' + 'pandas/io/tests/data/test1' + self.ext) +# url = ('https://raw.github.com/pydata/pandas/master/' +# 'pandas/io/tests/data/test' + self.ext) + url_table = read_excel(url) + dirpath = tm.get_data_path() + localtable = os.path.join(dirpath, 'test1' + self.ext) + local_table = read_excel(localtable) + tm.assert_frame_equal(url_table, local_table) + + @slow + def test_read_from_file_url(self): + + # FILE + if sys.version_info[:2] < (2, 6): + raise nose.SkipTest("file:// not supported with Python < 2.6") + dirpath = tm.get_data_path() + localtable = os.path.join(dirpath, 'test1' + self.ext) + local_table = read_excel(localtable) + + try: + url_table = read_excel('file://localhost/' + localtable) + except URLError: + # fails on some systems + import platform + raise nose.SkipTest("failing on %s" % + ' '.join(platform.uname()).strip()) + + tm.assert_frame_equal(url_table, local_table) + + def test_reader_closes_file(self): + + pth = os.path.join(self.dirpath, 'test1' + self.ext) + f = open(pth, 'rb') + with ExcelFile(f) as xlsx: + # parses okay + xlsx.parse('Sheet1', index_col=0) + + self.assertTrue(f.closed) + def test_creating_and_reading_multiple_sheets(self): # Test reading multiple sheets, from a runtime created excel file # with multiple sheets. # See PR #9450 - _skip_if_no_xlrd() _skip_if_no_xlwt() + _skip_if_no_openpyxl() def tdf(sheetname): d, i = [11,22,33], [1,2,3] @@ -468,9 +495,9 @@ def tdf(sheetname): dfs = [tdf(s) for s in sheets] dfs = dict(zip(sheets,dfs)) - with ensure_clean('.xlsx') as pth: + with ensure_clean(self.ext) as pth: with ExcelWriter(pth) as ew: - for sheetname, df in iteritems(dfs): + for sheetname, df in compat.iteritems(dfs): df.to_excel(ew,sheetname) dfs_returned = pd.read_excel(pth,sheetname=sheets) for s in sheets: @@ -478,7 +505,6 @@ def tdf(sheetname): def test_reader_seconds(self): # Test reading times with and without milliseconds. GH5945. - _skip_if_no_xlrd() import xlrd if LooseVersion(xlrd.__VERSION__) >= LooseVersion("0.9.3"): @@ -510,8 +536,8 @@ def test_reader_seconds(self): time(16, 37, 1), time(18, 20, 54)])]) - epoch_1900 = os.path.join(self.dirpath, 'times_1900.xls') - epoch_1904 = os.path.join(self.dirpath, 'times_1904.xls') + epoch_1900 = os.path.join(self.dirpath, 'times_1900' + self.ext) + epoch_1904 = os.path.join(self.dirpath, 'times_1904' + self.ext) actual = read_excel(epoch_1900, 'Sheet1') tm.assert_frame_equal(actual, expected) @@ -543,6 +569,24 @@ def test_read_excel_blank_with_header(self): actual = read_excel(blank, 'Sheet1') tm.assert_frame_equal(actual, expected) +class XlsReaderTests(XlrdTests, tm.TestCase): + ext = '.xls' + engine_name = 'xlrd' + check_skip = staticmethod(_skip_if_no_xlrd) + + +class XlsxReaderTests(XlrdTests, tm.TestCase): + ext = '.xlsx' + engine_name = 'xlrd' + check_skip = staticmethod(_skip_if_no_xlrd) + + +class XlsmReaderTests(XlrdTests, tm.TestCase): + ext = '.xlsm' + engine_name = 'xlrd' + check_skip = staticmethod(_skip_if_no_xlrd) + + class ExcelWriterBase(SharedItems): # Base class for test cases to run with different Excel writers. # To add a writer test, define the following: @@ -1269,6 +1313,8 @@ def test_datetimes(self): # GH7074 def test_bytes_io(self): + _skip_if_no_xlrd() + bio = BytesIO() df = DataFrame(np.random.randn(10, 2)) writer = ExcelWriter(bio) @@ -1280,6 +1326,8 @@ def test_bytes_io(self): # GH8188 def test_write_lists_dict(self): + _skip_if_no_xlrd() + df = pd.DataFrame({'mixed': ['a', ['b', 'c'], {'d': 'e', 'f': 2}], 'numeric': [1, 2, 3.0], 'str': ['apple', 'banana', 'cherry']}) @@ -1291,6 +1339,7 @@ def test_write_lists_dict(self): read = read_excel(path, 'Sheet1', header=0) tm.assert_frame_equal(read, expected) + def raise_wrapper(major_ver): def versioned_raise_wrapper(orig_method): @functools.wraps(orig_method) From f196336effef8cee389e35e7bc3ace426d745ef6 Mon Sep 17 00:00:00 2001 From: davidovitch Date: Sat, 29 Aug 2015 14:01:10 +0200 Subject: [PATCH 4/4] ENH: Reading Open Document Format (.ods) spreadsheet using EzODF --- pandas/io/excel.py | 449 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 392 insertions(+), 57 deletions(-) diff --git a/pandas/io/excel.py b/pandas/io/excel.py index d5258cb32e6e0..8f1d423800565 100644 --- a/pandas/io/excel.py +++ b/pandas/io/excel.py @@ -4,7 +4,10 @@ #---------------------------------------------------------------------- # ExcelFile class +from __future__ import print_function + import os +import re import datetime import abc import numpy as np @@ -28,6 +31,8 @@ _writer_extensions = ["xlsx", "xls", "xlsm"] _writers = {} +_readers = {} +_reader_extensions = {} def register_writer(klass): @@ -68,12 +73,176 @@ def get_writer(engine_name): raise ValueError("No Excel writer '%s'" % engine_name) +class BaseFile(object): + """Base class for excel readers + + A file class can be initialized even if the engine is not installed. + If the engine is not installed, io_class and workbook_factory are None. + When attempting to use open_workbook while workbook_factory is None, the + relevant ImportError is raised. + """ + + def __init__(self): + """Set the engine name, and extension. If the engine is not installed, + io_class and workbook_factory are both None. + """ + self.io_class = None + self.workbook_factory = None + + def open_workbook(self, *args, **kwargs): + """Explicitely load the engine again (and trigger an ImportError in the + process) if workbook_factory is set to None. + """ + # try to load the engine again and raise import error if required + if self.workbook_factory is None: + self.load_engine() + # just in case the user passes an already opened workbook of io_class + if len(args) > 0 and isinstance(args[0], self.io_class): + self.book = args[0] + else: + self.book = self.workbook_factory(*args, **kwargs) + return self.book + + def create_reader(self, io, engine=None): + """Create the appropriate reader object based on io and optionally + engine. + + Paratemeters + ------------ + io : string, file-like object or xlrd/ezodf workbook + If a string, expected to be a path to xls, xlsx, or ods file. + File-like objects or buffers are only supported for xlrd types. + + engine: string, default None + If io is not a buffer or path, this must be set to identify io. + Acceptable values are None, xlrd, or ezodf + + Returns + ------- + engine : string + Engine used for reading the io + + book : object + The spreadsheet book class created by the engine. + """ + + if engine is not None: + try: + reader = _readers[engine] + except KeyError: + msg = 'Excel reader engine "%s" is not implemented' % engine + raise NotImplementedError(msg) + # load_engine throws the relevant import error if not installed + reader.load_engine() + reader.open_workbook(io) + return reader + + if isinstance(io, compat.string_types): + ext = io.split('.')[-1] + try: + reader = _reader_extensions[ext] + except KeyError: + msg = 'No reader implemented for extension "%s"' % ext + raise NotImplementedError(msg) + reader.load_engine() + if _is_url(io): + data = _urlopen(io).read() + reader.read_buffer(data) + else: + reader.open_workbook(io) + return reader + + # try to determine the reader type based on properties of installed + # reader modules. + for engine, reader in compat.iteritems(_readers): + # only try to import readers that have not been imported before + if reader.io_class is None: + try: + reader.load_engine() + # if the reader is not installed, the user could not have + # passed the corresponding reader.io_class, so it is safe + # to assume that io is not the current reader + except ImportError: + continue + # Does the io type match the currently selected reader? + if isinstance(io, reader.io_class): + reader.engine = engine + reader.book = io + return reader + # xlrd has some additional/alternative reading mechanisms: + elif engine=='xlrd' and hasattr(io, "read"): + # N.B. xlrd.Book has a read attribute too + reader.read_buffer(io.read()) + return reader + + raise ValueError('Must explicitly set engine if not passing in buffer ' + 'or path for io.') + + +class XLRDFile(BaseFile): + """File reader class for MS Excel spreadsheets (depends on xlrd) + """ + extensions = ['xls', 'xlsx', 'xlsm'] + engine = 'xlrd' + + def load_engine(self): + import xlrd # throw an ImportError if we need to + ver = tuple(map(int, xlrd.__VERSION__.split(".")[:2])) + if ver < (0, 9): # pragma: no cover + raise ImportError("pandas requires xlrd >= 0.9.0 for excel " + "support, current version " + xlrd.__VERSION__) + else: + self.workbook_factory = xlrd.open_workbook + self.io_class = xlrd.Book + + def read_buffer(self, data): + """Read from a buffer + """ + return self.open_workbook(file_contents=data) + + +class EZODFFile(BaseFile): + """File reader class for ODF spreadsheets (depends on ezodf) + """ + extensions = ['ods'] + engine = 'ezodf' + + def load_engine(self): + import ezodf # throw an ImportError if we need to + self.workbook_factory = ezodf.opendoc + self.io_class = ezodf.document.PackagedDocument + + def read_buffer(self, *args, **kwargs): + """ + """ + msg = 'Can not read ODF spreadsheet from a buffer or URL.' + raise NotImplementedError(msg) + + +# register all supported readers +def register_readers(): + """ + Establish which readers are supported and/or installed. + """ + + def populate(reader): + _readers[reader.engine] = reader + for ext in reader.extensions: + _reader_extensions[ext] = reader + + populate(XLRDFile()) + populate(EZODFFile()) + +register_readers() + + def read_excel(io, sheetname=0, **kwds): - """Read an Excel table into a pandas DataFrame + """Read an Excel/ods table into a pandas DataFrame Parameters ---------- - io : string, file-like object, or xlrd workbook. + io : string, file-like object, or xlrd workbook for MS Excel files. For an + ods file (Open Document Formant), string or ezodf workbook is required. The string could be a URL. Valid URL schemes include http, ftp, s3, and file. For file URLs, a host is expected. For instance, a local file could be file://localhost/path/to/workbook.xlsx @@ -106,7 +275,7 @@ def read_excel(io, sheetname=0, **kwds): converters : dict, default None Dict of functions for converting values in certain columns. Keys can either be integers or column labels, values are functions that take one - input argument, the Excel cell content, and return the transformed + input argument, the Excel/ods cell content, and return the transformed content. index_col : int, default None Column to use as the row labels of the DataFrame. Pass None if @@ -126,10 +295,10 @@ def read_excel(io, sheetname=0, **kwds): Indicate number of NA values placed in non-numeric columns engine: string, default None If io is not a buffer or path, this must be set to identify io. - Acceptable values are None or xlrd + Acceptable values are None, xlrd, or ezodf convert_float : boolean, default True convert integral floats to int (i.e., 1.0 --> 1). If False, all numeric - data will be read in as floats: Excel stores all numbers as floats + data will be read in as floats: Excel/ods stores all numbers as floats internally has_index_names : boolean, default False True if the cols defined in index_col have an index name and are @@ -151,47 +320,21 @@ def read_excel(io, sheetname=0, **kwds): class ExcelFile(object): """ Class for parsing tabular excel sheets into DataFrame objects. - Uses xlrd. See ExcelFile.parse for more documentation + Uses xlrd and/or ezodf. See ExcelFile.parse for more documentation Parameters ---------- - io : string, file-like object or xlrd workbook - If a string, expected to be a path to xls or xlsx file + io : string, file-like object or xlrd/ezodf workbook + If a string, expected to be a path to xls, xlsx, or ods file engine: string, default None If io is not a buffer or path, this must be set to identify io. - Acceptable values are None or xlrd + Acceptable values are None, xlrd, or ezodf """ def __init__(self, io, **kwds): - - import xlrd # throw an ImportError if we need to - - ver = tuple(map(int, xlrd.__VERSION__.split(".")[:2])) - if ver < (0, 9): # pragma: no cover - raise ImportError("pandas requires xlrd >= 0.9.0 for excel " - "support, current version " + xlrd.__VERSION__) - self.io = io engine = kwds.pop('engine', None) - - if engine is not None and engine != 'xlrd': - raise ValueError("Unknown engine: %s" % engine) - - if isinstance(io, compat.string_types): - if _is_url(io): - data = _urlopen(io).read() - self.book = xlrd.open_workbook(file_contents=data) - else: - self.book = xlrd.open_workbook(io) - elif engine == 'xlrd' and isinstance(io, xlrd.Book): - self.book = io - elif not isinstance(io, xlrd.Book) and hasattr(io, "read"): - # N.B. xlrd.Book has a read attribute too - data = io.read() - self.book = xlrd.open_workbook(file_contents=data) - else: - raise ValueError('Must explicitly set engine if not passing in' - ' buffer or path for io.') + self.reader = BaseFile().create_reader(io, engine=engine) def parse(self, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, parse_cols=None, parse_dates=False, @@ -270,18 +413,25 @@ def parse(self, sheetname=0, header=0, skiprows=None, skip_footer=0, if skipfooter is not None: skip_footer = skipfooter - return self._parse_excel(sheetname=sheetname, header=header, - skiprows=skiprows, - index_col=index_col, - has_index_names=has_index_names, - parse_cols=parse_cols, - parse_dates=parse_dates, - date_parser=date_parser, na_values=na_values, - thousands=thousands, chunksize=chunksize, - skip_footer=skip_footer, - convert_float=convert_float, - converters=converters, - **kwds) + if self.reader.engine == 'ezodf': + parser = self._parse_ods + elif self.reader.engine == 'xlrd': + parser = self._parse_excel + else: + raise ValueError('Engine is not specified.') + + return parser(sheetname=sheetname, header=header, + skiprows=skiprows, + index_col=index_col, + has_index_names=has_index_names, + parse_cols=parse_cols, + parse_dates=parse_dates, + date_parser=date_parser, na_values=na_values, + thousands=thousands, chunksize=chunksize, + skip_footer=skip_footer, + convert_float=convert_float, + converters=converters, + **kwds) def _should_parse(self, i, parse_cols): @@ -326,9 +476,9 @@ def _parse_excel(self, sheetname=0, header=0, skiprows=None, skip_footer=0, XL_CELL_ERROR, XL_CELL_BOOLEAN, XL_CELL_NUMBER) - epoch1904 = self.book.datemode + epoch1904 = self.reader.book.datemode - def _parse_cell(cell_contents,cell_typ): + def _parse_cell(cell_contents, cell_typ): """converts the contents of the cell into a pandas appropriate object""" @@ -377,7 +527,7 @@ def _parse_cell(cell_contents,cell_typ): ret_dict = False - #Keep sheetname to maintain backwards compatibility. + # Keep sheetname to maintain backwards compatibility. if isinstance(sheetname, list): sheets = sheetname ret_dict = True @@ -387,7 +537,7 @@ def _parse_cell(cell_contents,cell_typ): else: sheets = [sheetname] - #handle same-type duplicates. + # handle same-type duplicates. sheets = list(set(sheets)) output = {} @@ -397,9 +547,9 @@ def _parse_cell(cell_contents,cell_typ): print("Reading sheet %s" % asheetname) if isinstance(asheetname, compat.string_types): - sheet = self.book.sheet_by_name(asheetname) + sheet = self.reader.book.sheet_by_name(asheetname) else: # assume an integer if not a string - sheet = self.book.sheet_by_index(asheetname) + sheet = self.reader.book.sheet_by_index(asheetname) data = [] should_parse = {} @@ -412,7 +562,7 @@ def _parse_cell(cell_contents,cell_typ): should_parse[j] = self._should_parse(j, parse_cols) if parse_cols is None or should_parse[j]: - row.append(_parse_cell(value,typ)) + row.append(_parse_cell(value, typ)) data.append(row) if sheet.nrows == 0: @@ -439,10 +589,195 @@ def _parse_cell(cell_contents,cell_typ): else: return output[asheetname] + def _parse_ods(self, sheetname=0, header=0, skiprows=None, skip_footer=0, + index_col=None, has_index_names=None, parse_cols=None, + parse_dates=False, date_parser=None, na_values=None, + thousands=None, chunksize=None, convert_float=True, + verbose=False, **kwds): + # adds support for parsing ODS files, see PR #9070 + + def _parse_cell(cell): + """converts the contents of the cell into a pandas + appropriate object""" + if isinstance(cell.value, float): + value = cell.value + if convert_float: + # GH5394 - Excel and ODS 'numbers' are always floats + # it's a minimal perf hit and less suprising + # FIXME: this goes wrong when int(cell.value) returns + # a long (>1e18) + val = int(cell.value) + if val == cell.value: + value = val + elif isinstance(cell.value, compat.string_types): + typ = cell.value_type + if typ == 'date' or typ == 'time': + value = self._parse_datetime(cell) + else: + value = cell.value + elif isinstance(cell.value, bool): + value = cell.value + # empty cells have None as value, type, currency, formula. + # xlrd assigns empty string to empty cells, ezodf assigns None + # test_excel.ExcelReaderTests.test_reader_converters expects empty + # cells to be an empty string + elif isinstance(cell.value, type(None)): + value = '' + else: + value = np.nan + return value + + ret_dict = False + # find numbers for the date/time object conversion + self.regex = re.compile('[[0-9]*[\\.[0-9]+]*]*') + + # Keep sheetname to maintain backwards compatibility. + if isinstance(sheetname, list): + sheets = sheetname + ret_dict = True + elif sheetname is None: + sheets = self.sheet_names + ret_dict = True + else: + sheets = [sheetname] + + # handle same-type duplicates. + sheets = list(set(sheets)) + + output = {} + + for asheetname in sheets: + if verbose: + print("Reading sheet %s" % asheetname) + + # sheetname can be index or string + sheet = self.reader.book.sheets[asheetname] + + data = [] + should_parse = {} + for i in range(sheet.nrows()): + row = [] + for j, cell in enumerate(sheet.row(i)): + + if parse_cols is not None and j not in should_parse: + should_parse[j] = self._should_parse(j, parse_cols) + + if parse_cols is None or should_parse[j]: + row.append(_parse_cell(cell)) + + data.append(row) + + parser = TextParser(data, header=header, index_col=index_col, + has_index_names=has_index_names, + na_values=na_values, + thousands=thousands, + parse_dates=parse_dates, + date_parser=date_parser, + skiprows=skiprows, + skip_footer=skip_footer, + chunksize=chunksize, + **kwds) + output[asheetname] = parser.read() + + if ret_dict: + return output + else: + return output[asheetname] + + def _parse_datetime(self, cell): + """Parse the date or time from on ods cell to a datetime object. + Formats returned by ezodf are documented here: + https://pythonhosted.org/ezodf/tableobjects.html#cell-class + + Because time cells can also be timedeltas, all time fields that exceed + 23 hours are converted to a timedelta object. + + Date string value formats: 'yyyy-mm-dd' or 'yyyy-mm-ddThh:mm:ss' + + Time string value format: 'PThhHmmMss,ffffS' + """ + + def _sec_split_micro(seconds): + """Split a floatingpoint second value into an integer second value + and an integer microsecond value. + """ + sec = float(seconds) + sec_i = int(sec) + microsec = int(round((sec - sec_i)*1e6, 0)) + return sec_i, microsec + + def _timedelta(items): + """ + Possible formats for formulas are: + 'of:=TIME(%H;%M;%S)' + 'of:=TIME(%H;%M;%S.%fS)' + Possible formats for values are: + 'PT%HH%MM%S.%fS' + 'PT%HH%MM%SS' + """ + hours, minutes, seconds = items + return datetime.timedelta(hours=int(hours), minutes=int(minutes), + seconds=float(seconds)) + + def _time(items): + hours, minutes, seconds = items + sec_i, microsec = _sec_split_micro(seconds) + return datetime.time(int(hours), int(minutes), sec_i, microsec) + + def _datetime(items): + """ + Possible formats for values are: + '%Y-%m-%d' + '%Y-%m-%dT%H:%M:%S' + '%Y-%m-%dT%H:%M:%S.%f' + """ + + if len(items) == 3: + year, month, day = [int(k) for k in items] + return datetime.datetime(year, month, day) + else: + year, month, day, hours, minutes = [int(k) for k in items[:-1]] + # seconds can be a float, convert to microseconds + sec_i, microsec = _sec_split_micro(items[-1]) + return datetime.datetime(year, month, day, hours, minutes, + sec_i, microsec) + + # Only consider the value fields, formula's can contain just cell refs. + # Note that cell formatting determines if a value type is time, date or + # just a number. By using the cell value, cell type is consistent with + # what the user will see/format in LibreOffice + items = self.regex.findall(cell.value) + if cell.value_type == 'date': + value = _datetime(items) + else: + try: + # will fail when hours > 23, which is possible in LibreOffice + value = _time(items) + except ValueError: + value = _timedelta(items) + + return value + + def _print_ods_cellinfo(self, cell): + """Convienent for debugging purposes: print all ods cell data. + Cell attributes are documented here: + https://pythonhosted.org/ezodf/tableobjects.html#id2 + """ + print(' plaintext:', cell.plaintext()) # no formatting + # formatted, but what is difference with value? + print('display_form:', cell.display_form) # format, ?=plaintext + print(' value:', cell.value) # data handled + print(' value_type:', cell.value_type) # data type + print(' formula:', cell.formula) + print(' currency:', cell.currency) @property def sheet_names(self): - return self.book.sheet_names() + if self.reader.engine == 'ezodf': + # book.sheet.names() is a generator for ezodf + return [sheetname for sheetname in self.reader.book.sheets.names()] + else: + return self.reader.book.sheet_names() def close(self): """close io if necessary""" @@ -1174,7 +1509,7 @@ class _XlwtWriter(ExcelWriter): def __init__(self, path, engine=None, encoding=None, **engine_kwargs): # Use the xlwt module as the Excel writer. import xlwt - engine_kwargs['engine'] = engine + super(_XlwtWriter, self).__init__(path, **engine_kwargs) if encoding is None: