From 63a658ff71591cd5871d220438f90a9b06ae6075 Mon Sep 17 00:00:00 2001 From: Ruaridh Williamson Date: Tue, 12 Aug 2025 12:43:25 +0100 Subject: [PATCH] fix: pickling DateTime Pickling pendulum DateTimes doesn't preserve before vs after DST effects. See https://github.com/python-pendulum/pendulum/issues/908 --- src/pendulum/datetime.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pendulum/datetime.py b/src/pendulum/datetime.py index e6f19eb2..ee6b54d1 100644 --- a/src/pendulum/datetime.py +++ b/src/pendulum/datetime.py @@ -1338,7 +1338,7 @@ def __getnewargs__(self) -> tuple[Self]: def _getstate( self, protocol: SupportsIndex = 3 - ) -> tuple[int, int, int, int, int, int, int, datetime.tzinfo | None]: + ) -> tuple[int, int, int, int, int, int, int, datetime.tzinfo | None, int]: return ( self.year, self.month, @@ -1348,6 +1348,7 @@ def _getstate( self.second, self.microsecond, self.tzinfo, + self.fold, ) def __reduce__( @@ -1364,7 +1365,7 @@ def __reduce_ex__( type[Self], tuple[int, int, int, int, int, int, int, datetime.tzinfo | None], ]: - return self.__class__, self._getstate(protocol) + return self.create, self._getstate(protocol) def __deepcopy__(self, _: dict[int, Self]) -> Self: return self.__class__(