@@ -370,7 +370,11 @@ def test_date_col_as_index_col(all_parsers):
370
370
tm .assert_frame_equal (result , expected )
371
371
372
372
373
- def test_multiple_date_cols_int_cast (all_parsers ):
373
+ @pytest .mark .parametrize (
374
+ "date_parser, warning" ,
375
+ ([conv .parse_date_time , FutureWarning ], [pd .to_datetime , None ]),
376
+ )
377
+ def test_multiple_date_cols_int_cast (all_parsers , date_parser , warning ):
374
378
data = (
375
379
"KORD,19990127, 19:00:00, 18:56:00, 0.8100\n "
376
380
"KORD,19990127, 20:00:00, 19:56:00, 0.0100\n "
@@ -382,13 +386,15 @@ def test_multiple_date_cols_int_cast(all_parsers):
382
386
parse_dates = {"actual" : [1 , 2 ], "nominal" : [1 , 3 ]}
383
387
parser = all_parsers
384
388
385
- result = parser .read_csv (
386
- StringIO (data ),
387
- header = None ,
388
- date_parser = conv .parse_date_time ,
389
- parse_dates = parse_dates ,
390
- prefix = "X" ,
391
- )
389
+ with tm .assert_produces_warning (warning , check_stacklevel = False ):
390
+ result = parser .read_csv (
391
+ StringIO (data ),
392
+ header = None ,
393
+ date_parser = date_parser ,
394
+ parse_dates = parse_dates ,
395
+ prefix = "X" ,
396
+ )
397
+
392
398
expected = DataFrame (
393
399
[
394
400
[datetime (1999 , 1 , 27 , 19 , 0 ), datetime (1999 , 1 , 27 , 18 , 56 ), "KORD" , 0.81 ],
@@ -808,7 +814,9 @@ def test_parse_dates_custom_euro_format(all_parsers, kwargs):
808
814
tm .assert_frame_equal (df , expected )
809
815
else :
810
816
msg = "got an unexpected keyword argument 'day_first'"
811
- with pytest .raises (TypeError , match = msg ):
817
+ with pytest .raises (TypeError , match = msg ), tm .assert_produces_warning (
818
+ FutureWarning
819
+ ):
812
820
parser .read_csv (
813
821
StringIO (data ),
814
822
names = ["time" , "Q" , "NTU" ],
@@ -1166,20 +1174,25 @@ def test_parse_dates_no_convert_thousands(all_parsers, data, kwargs, expected):
1166
1174
tm .assert_frame_equal (result , expected )
1167
1175
1168
1176
1169
- def test_parse_date_time_multi_level_column_name (all_parsers ):
1177
+ @pytest .mark .parametrize (
1178
+ "date_parser, warning" ,
1179
+ ([conv .parse_date_time , FutureWarning ], [pd .to_datetime , None ]),
1180
+ )
1181
+ def test_parse_date_time_multi_level_column_name (all_parsers , date_parser , warning ):
1170
1182
data = """\
1171
1183
D,T,A,B
1172
1184
date, time,a,b
1173
1185
2001-01-05, 09:00:00, 0.0, 10.
1174
1186
2001-01-06, 00:00:00, 1.0, 11.
1175
1187
"""
1176
1188
parser = all_parsers
1177
- result = parser .read_csv (
1178
- StringIO (data ),
1179
- header = [0 , 1 ],
1180
- parse_dates = {"date_time" : [0 , 1 ]},
1181
- date_parser = conv .parse_date_time ,
1182
- )
1189
+ with tm .assert_produces_warning (warning , check_stacklevel = False ):
1190
+ result = parser .read_csv (
1191
+ StringIO (data ),
1192
+ header = [0 , 1 ],
1193
+ parse_dates = {"date_time" : [0 , 1 ]},
1194
+ date_parser = date_parser ,
1195
+ )
1183
1196
1184
1197
expected_data = [
1185
1198
[datetime (2001 , 1 , 5 , 9 , 0 , 0 ), 0.0 , 10.0 ],
@@ -1189,6 +1202,10 @@ def test_parse_date_time_multi_level_column_name(all_parsers):
1189
1202
tm .assert_frame_equal (result , expected )
1190
1203
1191
1204
1205
+ @pytest .mark .parametrize (
1206
+ "date_parser, warning" ,
1207
+ ([conv .parse_date_time , FutureWarning ], [pd .to_datetime , None ]),
1208
+ )
1192
1209
@pytest .mark .parametrize (
1193
1210
"data,kwargs,expected" ,
1194
1211
[
@@ -1261,9 +1278,10 @@ def test_parse_date_time_multi_level_column_name(all_parsers):
1261
1278
),
1262
1279
],
1263
1280
)
1264
- def test_parse_date_time (all_parsers , data , kwargs , expected ):
1281
+ def test_parse_date_time (all_parsers , data , kwargs , expected , date_parser , warning ):
1265
1282
parser = all_parsers
1266
- result = parser .read_csv (StringIO (data ), date_parser = conv .parse_date_time , ** kwargs )
1283
+ with tm .assert_produces_warning (warning , check_stacklevel = False ):
1284
+ result = parser .read_csv (StringIO (data ), date_parser = date_parser , ** kwargs )
1267
1285
1268
1286
# Python can sometimes be flaky about how
1269
1287
# the aggregated columns are entered, so
@@ -1272,15 +1290,20 @@ def test_parse_date_time(all_parsers, data, kwargs, expected):
1272
1290
tm .assert_frame_equal (result , expected )
1273
1291
1274
1292
1275
- def test_parse_date_fields (all_parsers ):
1293
+ @pytest .mark .parametrize (
1294
+ "date_parser, warning" ,
1295
+ ([conv .parse_date_fields , FutureWarning ], [pd .to_datetime , None ]),
1296
+ )
1297
+ def test_parse_date_fields (all_parsers , date_parser , warning ):
1276
1298
parser = all_parsers
1277
1299
data = "year,month,day,a\n 2001,01,10,10.\n 2001,02,1,11."
1278
- result = parser .read_csv (
1279
- StringIO (data ),
1280
- header = 0 ,
1281
- parse_dates = {"ymd" : [0 , 1 , 2 ]},
1282
- date_parser = conv .parse_date_fields ,
1283
- )
1300
+ with tm .assert_produces_warning (warning , check_stacklevel = False ):
1301
+ result = parser .read_csv (
1302
+ StringIO (data ),
1303
+ header = 0 ,
1304
+ parse_dates = {"ymd" : [0 , 1 , 2 ]},
1305
+ date_parser = date_parser ,
1306
+ )
1284
1307
1285
1308
expected = DataFrame (
1286
1309
[[datetime (2001 , 1 , 10 ), 10.0 ], [datetime (2001 , 2 , 1 ), 11.0 ]],
@@ -1289,19 +1312,27 @@ def test_parse_date_fields(all_parsers):
1289
1312
tm .assert_frame_equal (result , expected )
1290
1313
1291
1314
1292
- def test_parse_date_all_fields (all_parsers ):
1315
+ @pytest .mark .parametrize (
1316
+ "date_parser, warning" ,
1317
+ (
1318
+ [conv .parse_all_fields , FutureWarning ],
1319
+ [lambda x : pd .to_datetime (x , format = "%Y %m %d %H %M %S" ), None ],
1320
+ ),
1321
+ )
1322
+ def test_parse_date_all_fields (all_parsers , date_parser , warning ):
1293
1323
parser = all_parsers
1294
1324
data = """\
1295
1325
year,month,day,hour,minute,second,a,b
1296
1326
2001,01,05,10,00,0,0.0,10.
1297
1327
2001,01,5,10,0,00,1.,11.
1298
1328
"""
1299
- result = parser .read_csv (
1300
- StringIO (data ),
1301
- header = 0 ,
1302
- date_parser = conv .parse_all_fields ,
1303
- parse_dates = {"ymdHMS" : [0 , 1 , 2 , 3 , 4 , 5 ]},
1304
- )
1329
+ with tm .assert_produces_warning (warning , check_stacklevel = False ):
1330
+ result = parser .read_csv (
1331
+ StringIO (data ),
1332
+ header = 0 ,
1333
+ date_parser = date_parser ,
1334
+ parse_dates = {"ymdHMS" : [0 , 1 , 2 , 3 , 4 , 5 ]},
1335
+ )
1305
1336
expected = DataFrame (
1306
1337
[
1307
1338
[datetime (2001 , 1 , 5 , 10 , 0 , 0 ), 0.0 , 10.0 ],
@@ -1312,19 +1343,27 @@ def test_parse_date_all_fields(all_parsers):
1312
1343
tm .assert_frame_equal (result , expected )
1313
1344
1314
1345
1315
- def test_datetime_fractional_seconds (all_parsers ):
1346
+ @pytest .mark .parametrize (
1347
+ "date_parser, warning" ,
1348
+ (
1349
+ [conv .parse_all_fields , FutureWarning ],
1350
+ [lambda x : pd .to_datetime (x , format = "%Y %m %d %H %M %S.%f" ), None ],
1351
+ ),
1352
+ )
1353
+ def test_datetime_fractional_seconds (all_parsers , date_parser , warning ):
1316
1354
parser = all_parsers
1317
1355
data = """\
1318
1356
year,month,day,hour,minute,second,a,b
1319
1357
2001,01,05,10,00,0.123456,0.0,10.
1320
1358
2001,01,5,10,0,0.500000,1.,11.
1321
1359
"""
1322
- result = parser .read_csv (
1323
- StringIO (data ),
1324
- header = 0 ,
1325
- date_parser = conv .parse_all_fields ,
1326
- parse_dates = {"ymdHMS" : [0 , 1 , 2 , 3 , 4 , 5 ]},
1327
- )
1360
+ with tm .assert_produces_warning (warning , check_stacklevel = False ):
1361
+ result = parser .read_csv (
1362
+ StringIO (data ),
1363
+ header = 0 ,
1364
+ date_parser = date_parser ,
1365
+ parse_dates = {"ymdHMS" : [0 , 1 , 2 , 3 , 4 , 5 ]},
1366
+ )
1328
1367
expected = DataFrame (
1329
1368
[
1330
1369
[datetime (2001 , 1 , 5 , 10 , 0 , 0 , microsecond = 123456 ), 0.0 , 10.0 ],
@@ -1339,12 +1378,13 @@ def test_generic(all_parsers):
1339
1378
parser = all_parsers
1340
1379
data = "year,month,day,a\n 2001,01,10,10.\n 2001,02,1,11."
1341
1380
1342
- result = parser .read_csv (
1343
- StringIO (data ),
1344
- header = 0 ,
1345
- parse_dates = {"ym" : [0 , 1 ]},
1346
- date_parser = lambda y , m : date (year = int (y ), month = int (m ), day = 1 ),
1347
- )
1381
+ with tm .assert_produces_warning (FutureWarning , check_stacklevel = False ):
1382
+ result = parser .read_csv (
1383
+ StringIO (data ),
1384
+ header = 0 ,
1385
+ parse_dates = {"ym" : [0 , 1 ]},
1386
+ date_parser = lambda y , m : date (year = int (y ), month = int (m ), day = 1 ),
1387
+ )
1348
1388
expected = DataFrame (
1349
1389
[[date (2001 , 1 , 1 ), 10 , 10.0 ], [date (2001 , 2 , 1 ), 1 , 11.0 ]],
1350
1390
columns = ["ym" , "day" , "a" ],
0 commit comments