8
8
datetime ,
9
9
)
10
10
from io import StringIO
11
+ import warnings
11
12
12
13
from dateutil .parser import parse as du_parse
13
14
from hypothesis import (
@@ -1556,16 +1557,16 @@ def test_invalid_parse_delimited_date(all_parsers, date_string):
1556
1557
"date_string,dayfirst,expected" ,
1557
1558
[
1558
1559
# %d/%m/%Y; month > 12 thus replacement
1559
- ("13/02/2019" , False , datetime (2019 , 2 , 13 )),
1560
1560
("13/02/2019" , True , datetime (2019 , 2 , 13 )),
1561
1561
# %m/%d/%Y; day > 12 thus there will be no replacement
1562
1562
("02/13/2019" , False , datetime (2019 , 2 , 13 )),
1563
- ("02/13/2019" , True , datetime (2019 , 2 , 13 )),
1564
1563
# %d/%m/%Y; dayfirst==True thus replacement
1565
1564
("04/02/2019" , True , datetime (2019 , 2 , 4 )),
1566
1565
],
1567
1566
)
1568
- def test_parse_delimited_date_swap (all_parsers , date_string , dayfirst , expected ):
1567
+ def test_parse_delimited_date_swap_no_warning (
1568
+ all_parsers , date_string , dayfirst , expected
1569
+ ):
1569
1570
parser = all_parsers
1570
1571
expected = DataFrame ({0 : [expected ]}, dtype = "datetime64[ns]" )
1571
1572
result = parser .read_csv (
@@ -1574,6 +1575,30 @@ def test_parse_delimited_date_swap(all_parsers, date_string, dayfirst, expected)
1574
1575
tm .assert_frame_equal (result , expected )
1575
1576
1576
1577
1578
+ @pytest .mark .parametrize (
1579
+ "date_string,dayfirst,expected" ,
1580
+ [
1581
+ # %d/%m/%Y; month > 12 thus replacement
1582
+ ("13/02/2019" , False , datetime (2019 , 2 , 13 )),
1583
+ # %m/%d/%Y; day > 12 thus there will be no replacement
1584
+ ("02/13/2019" , True , datetime (2019 , 2 , 13 )),
1585
+ ],
1586
+ )
1587
+ def test_parse_delimited_date_swap_with_warning (
1588
+ all_parsers , date_string , dayfirst , expected
1589
+ ):
1590
+ parser = all_parsers
1591
+ expected = DataFrame ({0 : [expected ]}, dtype = "datetime64[ns]" )
1592
+ warning_msg = (
1593
+ "Provide format or specify infer_datetime_format=True for consistent parsing"
1594
+ )
1595
+ with tm .assert_produces_warning (UserWarning , match = warning_msg ):
1596
+ result = parser .read_csv (
1597
+ StringIO (date_string ), header = None , dayfirst = dayfirst , parse_dates = [0 ]
1598
+ )
1599
+ tm .assert_frame_equal (result , expected )
1600
+
1601
+
1577
1602
def _helper_hypothesis_delimited_date (call , date_string , ** kwargs ):
1578
1603
msg , result = None , None
1579
1604
try :
@@ -1602,9 +1627,11 @@ def test_hypothesis_delimited_date(date_format, dayfirst, delimiter, test_dateti
1602
1627
except_in_dateutil , except_out_dateutil = None , None
1603
1628
date_string = test_datetime .strftime (date_format .replace (" " , delimiter ))
1604
1629
1605
- except_out_dateutil , result = _helper_hypothesis_delimited_date (
1606
- parse_datetime_string , date_string , dayfirst = dayfirst
1607
- )
1630
+ with warnings .catch_warnings ():
1631
+ warnings .filterwarnings ("ignore" , category = UserWarning )
1632
+ except_out_dateutil , result = _helper_hypothesis_delimited_date (
1633
+ parse_datetime_string , date_string , dayfirst = dayfirst
1634
+ )
1608
1635
except_in_dateutil , expected = _helper_hypothesis_delimited_date (
1609
1636
du_parse ,
1610
1637
date_string ,
0 commit comments