Skip to content

BUG: warning shown when parsing delimited date string even if users can't do anything about it #50232

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Dec 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/source/whatsnew/v2.0.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -775,6 +775,7 @@ Datetimelike
- Bug in ``pandas.tseries.holiday.Holiday`` where a half-open date interval causes inconsistent return types from :meth:`USFederalHolidayCalendar.holidays` (:issue:`49075`)
- Bug in rendering :class:`DatetimeIndex` and :class:`Series` and :class:`DataFrame` with timezone-aware dtypes with ``dateutil`` or ``zoneinfo`` timezones near daylight-savings transitions (:issue:`49684`)
- Bug in :func:`to_datetime` was raising ``ValueError`` when parsing :class:`Timestamp`, ``datetime.datetime``, ``datetime.date``, or ``np.datetime64`` objects when non-ISO8601 ``format`` was passed (:issue:`49298`, :issue:`50036`)
- Bug in :class:`Timestamp` was showing ``UserWarning`` which was not actionable by users (:issue:`50232`)
-

Timedelta
Expand Down
24 changes: 0 additions & 24 deletions pandas/_libs/tslibs/parsing.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,6 @@ class DateParseError(ValueError):
_DEFAULT_DATETIME = datetime(1, 1, 1).replace(hour=0, minute=0,
second=0, microsecond=0)

PARSING_WARNING_MSG = (
"Parsing dates in {format} format when dayfirst={dayfirst} was specified. "
"This may lead to inconsistently parsed dates! Specify a format "
"to ensure consistent parsing."
)

cdef:
set _not_datelike_strings = {"a", "A", "m", "M", "p", "P", "t", "T"}

Expand Down Expand Up @@ -203,28 +197,10 @@ cdef object _parse_delimited_date(str date_string, bint dayfirst):
# date_string can't be converted to date, above format
return None, None

swapped_day_and_month = False
if 1 <= month <= MAX_DAYS_IN_MONTH and 1 <= day <= MAX_DAYS_IN_MONTH \
and (month <= MAX_MONTH or day <= MAX_MONTH):
if (month > MAX_MONTH or (day <= MAX_MONTH and dayfirst)) and can_swap:
day, month = month, day
swapped_day_and_month = True
if dayfirst and not swapped_day_and_month:
warnings.warn(
PARSING_WARNING_MSG.format(
format="MM/DD/YYYY",
dayfirst="True",
),
stacklevel=find_stack_level(),
)
elif not dayfirst and swapped_day_and_month:
warnings.warn(
PARSING_WARNING_MSG.format(
format="DD/MM/YYYY",
dayfirst="False (the default)",
),
stacklevel=find_stack_level(),
)
# In Python <= 3.6.0 there is no range checking for invalid dates
# in C api, thus we call faster C version for 3.6.1 or newer
return datetime_new(year, month, day, 0, 0, 0, 0, None), reso
Expand Down
8 changes: 8 additions & 0 deletions pandas/tests/scalar/timestamp/test_timestamp.py
Original file line number Diff line number Diff line change
Expand Up @@ -1082,3 +1082,11 @@ def test_as_unit_non_nano(self):
== res.nanosecond
== 0
)


def test_delimited_date():
# https://github.com/pandas-dev/pandas/issues/50231
with tm.assert_produces_warning(None):
result = Timestamp("13-01-2000")
expected = Timestamp(2000, 1, 13)
assert result == expected