Skip to content

Commit a1fd2dd

Browse files
committed
add missing return
1 parent 7214f85 commit a1fd2dd

File tree

8 files changed

+357
-127
lines changed

8 files changed

+357
-127
lines changed

doc/source/user_guide/timedeltas.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,7 @@ Similarly to other of the datetime-like indices, ``DatetimeIndex`` and ``PeriodI
424424
Selections work similarly, with coercion on string-likes and slices:
425425

426426
.. ipython:: python
427+
:okwarning:
427428
428429
s["1 day":"2 day"]
429430
s["1 day 01:00:00"]
@@ -432,6 +433,7 @@ Selections work similarly, with coercion on string-likes and slices:
432433
Furthermore you can use partial string selection and the range will be inferred:
433434

434435
.. ipython:: python
436+
:okwarning:
435437
436438
s["1 day":"1 day 5 hours"]
437439

pandas/_libs/tslibs/parsing.pyx

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,18 @@ cdef inline bint does_string_look_like_time(str parse_string):
263263

264264
return 0 <= hour <= 23 and 0 <= minute <= 59
265265

266+
from pandas.util._exceptions import find_stack_level
267+
268+
269+
def du_parse_with_warning(*args, **kwargs):
270+
parsed = du_parse(*args, **kwargs)
271+
warnings.warn(
272+
"Parsing datetime strings without a format specified, "
273+
"please specify a format to avoid unexpected results",
274+
stacklevel=find_stack_level(),
275+
)
276+
return parsed
277+
266278

267279
def parse_datetime_string(
268280
# NB: This will break with np.str_ (GH#32264) even though
@@ -290,8 +302,12 @@ def parse_datetime_string(
290302

291303
if does_string_look_like_time(date_string):
292304
# use current datetime as default, not pass _DEFAULT_DATETIME
293-
dt = du_parse(date_string, dayfirst=dayfirst,
294-
yearfirst=yearfirst, **kwargs)
305+
dt = du_parse_with_warning(
306+
date_string,
307+
dayfirst=dayfirst,
308+
yearfirst=yearfirst,
309+
**kwargs,
310+
)
295311
return dt
296312

297313
dt, _ = _parse_delimited_date(date_string, dayfirst)
@@ -307,8 +323,13 @@ def parse_datetime_string(
307323
pass
308324

309325
try:
310-
dt = du_parse(date_string, default=_DEFAULT_DATETIME,
311-
dayfirst=dayfirst, yearfirst=yearfirst, **kwargs)
326+
dt = du_parse_with_warning(
327+
date_string,
328+
default=_DEFAULT_DATETIME,
329+
dayfirst=dayfirst,
330+
yearfirst=yearfirst,
331+
**kwargs,
332+
)
312333
except TypeError:
313334
# following may be raised from dateutil
314335
# TypeError: 'NoneType' object is not iterable
@@ -706,7 +727,11 @@ def try_parse_dates(
706727
date = datetime.now()
707728
default = datetime(date.year, date.month, 1)
708729

709-
parse_date = lambda x: du_parse(x, dayfirst=dayfirst, default=default)
730+
parse_date = lambda x: du_parse_with_warning(
731+
x,
732+
dayfirst=dayfirst,
733+
default=default,
734+
)
710735

711736
# EAFP here
712737
try:
@@ -753,13 +778,17 @@ def try_parse_date_and_time(
753778
date = datetime.now()
754779
default = datetime(date.year, date.month, 1)
755780

756-
parse_date = lambda x: du_parse(x, dayfirst=dayfirst, default=default)
781+
parse_date = lambda x: du_parse_with_warning(
782+
x,
783+
dayfirst=dayfirst,
784+
default=default,
785+
)
757786

758787
else:
759788
parse_date = date_parser
760789

761790
if time_parser is None:
762-
parse_time = lambda x: du_parse(x)
791+
parse_time = lambda x: du_parse_with_warning(x)
763792

764793
else:
765794
parse_time = time_parser
@@ -980,7 +1009,7 @@ def guess_datetime_format(dt_str, bint dayfirst=False):
9801009
datetime_attrs_to_format.insert(0, day_attribute_and_format)
9811010

9821011
try:
983-
parsed_datetime = du_parse(dt_str, dayfirst=dayfirst)
1012+
parsed_datetime = du_parse_with_warning(dt_str, dayfirst=dayfirst)
9841013
except (ValueError, OverflowError):
9851014
# In case the datetime can't be parsed, its format cannot be guessed
9861015
return None

pandas/tests/frame/methods/test_reset_index.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -337,24 +337,19 @@ def test_reset_index_multiindex_nan(self):
337337
tm.assert_frame_equal(rs, df)
338338

339339
@pytest.mark.parametrize(
340-
"name",
340+
"name, warn",
341341
[
342-
None,
343-
"foo",
344-
2,
345-
3.0,
346-
pd.Timedelta(6),
347-
Timestamp("2012-12-30", tz="UTC"),
348-
"2012-12-31",
342+
(None, UserWarning),
343+
("foo", UserWarning),
344+
(2, None),
345+
(3.0, None),
346+
(pd.Timedelta(6), None),
347+
(Timestamp("2012-12-30", tz="UTC"), FutureWarning),
348+
("2012-12-31", None),
349349
],
350350
)
351-
def test_reset_index_with_datetimeindex_cols(self, name):
351+
def test_reset_index_with_datetimeindex_cols(self, name, warn):
352352
# GH#5818
353-
warn = None
354-
if isinstance(name, Timestamp) and name.tz is not None:
355-
# _deprecate_mismatched_indexing
356-
warn = FutureWarning
357-
358353
df = DataFrame(
359354
[[1, 2], [3, 4]],
360355
columns=date_range("1/1/2013", "1/2/2013"),

0 commit comments

Comments
 (0)