Skip to content

Commit 555b50e

Browse files
committed
Fix pickling of tzoffset
Fixes gitpython-developers#650
1 parent 11fd713 commit 555b50e

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

git/objects/util.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ def __init__(self, secs_west_of_utc, name=None):
105105
self._offset = timedelta(seconds=-secs_west_of_utc)
106106
self._name = name or 'fixed'
107107

108+
def __reduce__(self):
109+
return tzoffset, (-self._offset.total_seconds(), self._name)
110+
108111
def utcoffset(self, dt):
109112
return self._offset
110113

git/test/test_util.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,3 +274,9 @@ def test_from_timestamp(self):
274274
# Wrong offset: UTC-9000, should return datetime + tzoffset(UTC)
275275
altz = utctz_to_altz('-9000')
276276
self.assertEqual(datetime.fromtimestamp(1522827734, tzoffset(0)), from_timestamp(1522827734, altz))
277+
278+
def test_pickle_tzoffset(self):
279+
t1 = tzoffset(555)
280+
t2 = pickle.loads(pickle.dumps(t1))
281+
self.assertEqual(t1._offset, t2._offset)
282+
self.assertEqual(t1._name, t2._name)

0 commit comments

Comments
 (0)