@@ -128,13 +128,16 @@ def df_ref(datapath):
128
128
return df_ref
129
129
130
130
131
- def adjust_expected (expected : DataFrame , read_ext : str , engine : str | None ) -> None :
132
- expected .index .name = None
133
-
131
+ def get_exp_unit (read_ext : str , engine : str | None ) -> str :
134
132
unit = "us"
135
133
if (read_ext == ".ods" ) ^ (engine == "calamine" ):
136
- # TODO: why is .ods & calamine a separate special case?
137
134
unit = "s"
135
+ return unit
136
+
137
+
138
+ def adjust_expected (expected : DataFrame , read_ext : str , engine : str | None ) -> None :
139
+ expected .index .name = None
140
+ unit = get_exp_unit (read_ext , engine )
138
141
expected .index = expected .index .as_unit (unit )
139
142
140
143
@@ -307,11 +310,6 @@ def test_usecols_diff_positional_int_columns_order(
307
310
308
311
expected = df_ref [["A" , "C" ]]
309
312
adjust_expected (expected , read_ext , engine )
310
- if engine == "calamine" :
311
- unit = "s"
312
- if read_ext == ".ods" : # WTF?
313
- unit = "us"
314
- expected .index = expected .index .as_unit (unit )
315
313
316
314
result = pd .read_excel (
317
315
"test1" + read_ext , sheet_name = "Sheet1" , index_col = 0 , usecols = usecols
@@ -455,24 +453,26 @@ def test_excel_table(self, request, engine, read_ext, df_ref):
455
453
def test_reader_special_dtypes (self , request , engine , read_ext ):
456
454
xfail_datetimes_with_pyxlsb (engine , request )
457
455
456
+ unit = get_exp_unit (read_ext , engine )
458
457
expected = DataFrame .from_dict (
459
458
{
460
459
"IntCol" : [1 , 2 , - 3 , 4 , 0 ],
461
460
"FloatCol" : [1.25 , 2.25 , 1.83 , 1.92 , 0.0000000005 ],
462
461
"BoolCol" : [True , False , True , True , False ],
463
462
"StrCol" : [1 , 2 , 3 , 4 , 5 ],
464
463
"Str2Col" : ["a" , 3 , "c" , "d" , "e" ],
465
- "DateCol" : [
466
- datetime (2013 , 10 , 30 ),
467
- datetime (2013 , 10 , 31 ),
468
- datetime (1905 , 1 , 1 ),
469
- datetime (2013 , 12 , 14 ),
470
- datetime (2015 , 3 , 14 ),
471
- ],
464
+ "DateCol" : Index (
465
+ [
466
+ datetime (2013 , 10 , 30 ),
467
+ datetime (2013 , 10 , 31 ),
468
+ datetime (1905 , 1 , 1 ),
469
+ datetime (2013 , 12 , 14 ),
470
+ datetime (2015 , 3 , 14 ),
471
+ ],
472
+ dtype = f"M8[{ unit } ]" ,
473
+ ),
472
474
},
473
475
)
474
- if (read_ext == ".ods" ) ^ (engine == "calamine" ):
475
- expected ["DateCol" ] = expected ["DateCol" ].astype ("M8[s]" )
476
476
basename = "test_types"
477
477
478
478
# should read in correctly and infer types
@@ -632,8 +632,8 @@ def test_dtype_backend(self, read_ext, dtype_backend, engine):
632
632
expected ["j" ] = ArrowExtensionArray (pa .array ([None , None ]))
633
633
else :
634
634
expected = df
635
- if not (( read_ext == ".ods" ) ^ ( engine == "calamine" )):
636
- expected ["i" ] = expected ["i" ].astype ("M8[us ]" )
635
+ unit = get_exp_unit ( read_ext , engine )
636
+ expected ["i" ] = expected ["i" ].astype (f "M8[{ unit } ]" )
637
637
638
638
tm .assert_frame_equal (result , expected )
639
639
@@ -1025,9 +1025,7 @@ def test_read_excel_multiindex(self, request, engine, read_ext):
1025
1025
if engine == "calamine" and read_ext == ".ods" :
1026
1026
request .applymarker (pytest .mark .xfail (reason = "Last test fails in calamine" ))
1027
1027
1028
- unit = "us"
1029
- if (read_ext == ".ods" ) ^ (engine == "calamine" ):
1030
- unit = "s"
1028
+ unit = get_exp_unit (read_ext , engine )
1031
1029
1032
1030
mi = MultiIndex .from_product ([["foo" , "bar" ], ["a" , "b" ]])
1033
1031
mi_file = "testmultiindex" + read_ext
@@ -1122,9 +1120,9 @@ def test_read_excel_multiindex_blank_after_name(
1122
1120
1123
1121
mi_file = "testmultiindex" + read_ext
1124
1122
mi = MultiIndex .from_product ([["foo" , "bar" ], ["a" , "b" ]], names = ["c1" , "c2" ])
1125
- unit = "us"
1126
- if ( read_ext == ".ods" ) ^ ( engine == "calamine" ):
1127
- unit = "s"
1123
+
1124
+ unit = get_exp_unit ( read_ext , engine )
1125
+
1128
1126
expected = DataFrame (
1129
1127
[
1130
1128
[1 , 2.5 , pd .Timestamp ("2015-01-01" ).as_unit (unit ), True ],
@@ -1241,13 +1239,7 @@ def test_read_excel_skiprows(self, request, engine, read_ext):
1241
1239
# GH 4903
1242
1240
xfail_datetimes_with_pyxlsb (engine , request )
1243
1241
1244
- unit = "us"
1245
- if read_ext == ".ods" :
1246
- unit = "s"
1247
- if engine == "calamine" :
1248
- unit = "us"
1249
- elif engine == "calamine" :
1250
- unit = "s"
1242
+ unit = get_exp_unit (read_ext , engine )
1251
1243
1252
1244
actual = pd .read_excel (
1253
1245
"testskiprows" + read_ext , sheet_name = "skiprows_list" , skiprows = [0 , 2 ]
@@ -1300,13 +1292,7 @@ def test_read_excel_skiprows(self, request, engine, read_ext):
1300
1292
def test_read_excel_skiprows_callable_not_in (self , request , engine , read_ext ):
1301
1293
# GH 4903
1302
1294
xfail_datetimes_with_pyxlsb (engine , request )
1303
- unit = "us"
1304
- if read_ext == ".ods" :
1305
- unit = "s"
1306
- if engine == "calamine" :
1307
- unit = "us" # WTF?
1308
- elif engine == "calamine" :
1309
- unit = "s"
1295
+ unit = get_exp_unit (read_ext , engine )
1310
1296
1311
1297
actual = pd .read_excel (
1312
1298
"testskiprows" + read_ext ,
@@ -1578,11 +1564,6 @@ def test_excel_table_sheet_by_index(self, request, engine, read_ext, df_ref):
1578
1564
1579
1565
expected = df_ref
1580
1566
adjust_expected (expected , read_ext , engine )
1581
- if engine == "calamine" :
1582
- unit = "s"
1583
- if read_ext == ".ods" :
1584
- unit = "us"
1585
- expected .index = expected .index .as_unit (unit )
1586
1567
1587
1568
with pd .ExcelFile ("test1" + read_ext ) as excel :
1588
1569
df1 = pd .read_excel (excel , sheet_name = 0 , index_col = 0 )
@@ -1610,11 +1591,6 @@ def test_sheet_name(self, request, engine, read_ext, df_ref):
1610
1591
1611
1592
expected = df_ref
1612
1593
adjust_expected (expected , read_ext , engine )
1613
- if engine == "calamine" :
1614
- unit = "s"
1615
- if read_ext == ".ods" :
1616
- unit = "us"
1617
- expected .index = expected .index .as_unit (unit )
1618
1594
1619
1595
filename = "test1"
1620
1596
sheet_name = "Sheet1"
@@ -1706,9 +1682,7 @@ def test_read_datetime_multiindex(self, request, engine, read_ext):
1706
1682
f = "test_datetime_mi" + read_ext
1707
1683
with pd .ExcelFile (f ) as excel :
1708
1684
actual = pd .read_excel (excel , header = [0 , 1 ], index_col = 0 , engine = engine )
1709
- unit = "us"
1710
- if (read_ext == ".ods" ) ^ (engine == "calamine" ):
1711
- unit = "s"
1685
+ unit = get_exp_unit (read_ext , engine )
1712
1686
expected_column_index = MultiIndex .from_tuples (
1713
1687
[
1714
1688
(
0 commit comments