Skip to content

Commit 9ea26e5

Browse files
committed
Fixes pickling/unpickling of Pendulum instances with fixed timezone.
1 parent 6b47c9d commit 9ea26e5

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

pendulum/pendulum.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2236,10 +2236,16 @@ def __getnewargs__(self):
22362236
return(self, )
22372237

22382238
def _getstate(self):
2239+
tz = self.timezone_name
2240+
2241+
# Fix for fixed timezones not being properly unpickled
2242+
if isinstance(self.tz, FixedTimezone):
2243+
tz = self.offset_hours
2244+
22392245
return (
22402246
self.year, self.month, self.day,
22412247
self.hour, self.minute, self.second, self.microsecond,
2242-
self.timezone_name
2248+
tz
22432249
)
22442250

22452251
def __reduce__(self):

tests/pendulum_tests/test_behavior.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,10 @@ def test_pickle(self):
9191
dt2 = pickle.loads(s)
9292

9393
self.assertEqual(dt1, dt2)
94+
95+
def test_pickle_with_integer_tzinfo(self):
96+
dt1 = Pendulum(2016, 8, 27, 12, 34, 56, 123456, 0)
97+
s = pickle.dumps(dt1)
98+
dt2 = pickle.loads(s)
99+
100+
self.assertEqual(dt1, dt2)

0 commit comments

Comments
 (0)