@@ -99,6 +99,7 @@ def test_sheet_with_mixed_dtypes_and_sample_rows(expected_data: dict[str, list[A
99
99
)
100
100
101
101
102
+ @pytest .mark .parametrize ("dtype_by_index" , (True , False ))
102
103
@pytest .mark .parametrize (
103
104
"dtype,expected_data,expected_pd_dtype,expected_pl_dtype" ,
104
105
[
@@ -123,14 +124,16 @@ def test_sheet_with_mixed_dtypes_and_sample_rows(expected_data: dict[str, list[A
123
124
],
124
125
)
125
126
def test_sheet_with_mixed_dtypes_specify_dtypes (
127
+ dtype_by_index : bool ,
126
128
dtype : fastexcel .DType ,
127
129
expected_data : list [Any ],
128
130
expected_pd_dtype : str ,
129
131
expected_pl_dtype : pl .DataType ,
130
132
) -> None :
133
+ dtypes : fastexcel .DTypeMap = {0 : dtype } if dtype_by_index else {"Employee ID" : dtype } # type:ignore[dict-item]
131
134
excel_reader = fastexcel .read_excel (path_for_fixture ("fixture-multi-dtypes-columns.xlsx" ))
132
- sheet = excel_reader .load_sheet (0 , dtypes = { "Employee ID" : dtype } , n_rows = 5 )
133
- assert sheet .dtypes == { "Employee ID" : dtype }
135
+ sheet = excel_reader .load_sheet (0 , dtypes = dtypes , n_rows = 5 )
136
+ assert sheet .dtypes == dtypes
134
137
135
138
pd_df = sheet .to_pandas ()
136
139
assert pd_df ["Employee ID" ].dtype == expected_pd_dtype
@@ -144,10 +147,13 @@ def test_sheet_with_mixed_dtypes_specify_dtypes(
144
147
@pytest .mark .parametrize (
145
148
"dtypes,expected,expected_pd_dtype,expected_pl_dtype" ,
146
149
[
147
- (None , datetime (2023 , 7 , 21 ), "datetime64" , pl .Datetime ),
148
- ({"Date" : "datetime" }, datetime (2023 , 7 , 21 ), "datetime64" , pl .Datetime ),
150
+ (None , datetime (2023 , 7 , 21 ), "datetime64[ms] " , pl .Datetime ),
151
+ ({"Date" : "datetime" }, datetime (2023 , 7 , 21 ), "datetime64[ms] " , pl .Datetime ),
149
152
({"Date" : "date" }, date (2023 , 7 , 21 ), "object" , pl .Date ),
150
153
({"Date" : "string" }, "2023-07-21 00:00:00" , "object" , pl .Utf8 ),
154
+ ({2 : "datetime" }, datetime (2023 , 7 , 21 ), "datetime64[ms]" , pl .Datetime ),
155
+ ({2 : "date" }, date (2023 , 7 , 21 ), "object" , pl .Date ),
156
+ ({2 : "string" }, "2023-07-21 00:00:00" , "object" , pl .Utf8 ),
151
157
],
152
158
)
153
159
def test_sheet_datetime_conversion (
@@ -161,6 +167,9 @@ def test_sheet_datetime_conversion(
161
167
sheet = excel_reader .load_sheet (0 , dtypes = dtypes )
162
168
assert sheet .dtypes == dtypes
163
169
pd_df = sheet .to_pandas ()
170
+ assert pd_df ["Date" ].dtype == expected_pd_dtype
164
171
assert pd_df ["Date" ].to_list () == [expected ] * 9
172
+
165
173
pl_df = sheet .to_polars ()
174
+ assert pl_df ["Date" ].dtype == expected_pl_dtype
166
175
assert pl_df ["Date" ].to_list () == [expected ] * 9
0 commit comments