Skip to content

Commit

Permalink
BUG: Timestamp.to_pydatetime losing 'fold' (pandas-dev#45087)
Browse files Browse the repository at this point in the history
  • Loading branch information
jbrockmendel authored Jan 12, 2022
1 parent aa8a3ba commit 4f99c32
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 3 deletions.
1 change: 1 addition & 0 deletions doc/source/whatsnew/v1.4.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -724,6 +724,7 @@ Datetimelike
- ``np.maximum.reduce`` and ``np.minimum.reduce`` now correctly return :class:`Timestamp` and :class:`Timedelta` objects when operating on :class:`Series`, :class:`DataFrame`, or :class:`Index` with ``datetime64[ns]`` or ``timedelta64[ns]`` dtype (:issue:`43923`)
- Bug in adding a ``np.timedelta64`` object to a :class:`BusinessDay` or :class:`CustomBusinessDay` object incorrectly raising (:issue:`44532`)
- Bug in :meth:`Index.insert` for inserting ``np.datetime64``, ``np.timedelta64`` or ``tuple`` into :class:`Index` with ``dtype='object'`` with negative loc adding ``None`` and replacing existing value (:issue:`44509`)
- Bug in :meth:`Timestamp.to_pydatetime` failing to retain the ``fold`` attribute (:issue:`45087`)
- Bug in :meth:`Series.mode` with ``DatetimeTZDtype`` incorrectly returning timezone-naive and ``PeriodDtype`` incorrectly raising (:issue:`41927`)
- Bug in :class:`DateOffset`` addition with :class:`Timestamp` where ``offset.nanoseconds`` would not be included in the result (:issue:`43968`, :issue:`36589`)
- Bug in :meth:`Timestamp.fromtimestamp` not supporting the ``tz`` argument (:issue:`45083`)
Expand Down
2 changes: 1 addition & 1 deletion pandas/_libs/tslibs/timestamps.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -898,7 +898,7 @@ cdef class _Timestamp(ABCTimestamp):

return datetime(self.year, self.month, self.day,
self.hour, self.minute, self.second,
self.microsecond, self.tzinfo)
self.microsecond, self.tzinfo, fold=self.fold)

cpdef to_datetime64(self):
"""
Expand Down
7 changes: 7 additions & 0 deletions pandas/tests/scalar/timestamp/test_timestamp.py
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,13 @@ def test_conversion(self):
assert type(result) == type(expected)
assert result.dtype == expected.dtype

def test_to_pydatetime_fold(self):
# GH#45087
tzstr = "dateutil/usr/share/zoneinfo/America/Chicago"
ts = Timestamp(year=2013, month=11, day=3, hour=1, minute=0, fold=1, tz=tzstr)
dt = ts.to_pydatetime()
assert dt.fold == 1

def test_to_pydatetime_nonzero_nano(self):
ts = Timestamp("2011-01-01 9:00:00.123456789")

Expand Down
4 changes: 2 additions & 2 deletions pandas/tests/scalar/timestamp/test_timezones.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,9 @@ def test_tz_localize_ambiguous_compat(self):
assert result_pytz.value == 1382835600000000000

# fixed ambiguous behavior
# see gh-14621
# see gh-14621, GH#45087
assert result_pytz.to_pydatetime().tzname() == "GMT"
assert result_dateutil.to_pydatetime().tzname() == "BST"
assert result_dateutil.to_pydatetime().tzname() == "GMT"
assert str(result_pytz) == str(result_dateutil)

# 1 hour difference
Expand Down

0 comments on commit 4f99c32

Please sign in to comment.