summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--git/objects/util.py3
-rw-r--r--git/test/test_util.py7
2 files changed, 10 insertions, 0 deletions
diff --git a/git/objects/util.py b/git/objects/util.py
index 7b6a2763..5dbd9822 100644
--- a/git/objects/util.py
+++ b/git/objects/util.py
@@ -105,6 +105,9 @@ class tzoffset(tzinfo):
self._offset = timedelta(seconds=-secs_west_of_utc)
self._name = name or 'fixed'
+ def __reduce__(self):
+ return tzoffset, (-self._offset.total_seconds(), self._name)
+
def utcoffset(self, dt):
return self._offset
diff --git a/git/test/test_util.py b/git/test/test_util.py
index b5f9d222..a4d9d7ad 100644
--- a/git/test/test_util.py
+++ b/git/test/test_util.py
@@ -4,6 +4,7 @@
# This module is part of GitPython and is released under
# the BSD License: http://www.opensource.org/licenses/bsd-license.php
+import pickle
import tempfile
import time
from unittest import skipIf
@@ -280,3 +281,9 @@ class TestUtils(TestBase):
# Wrong offset: UTC-9000, should return datetime + tzoffset(UTC)
altz = utctz_to_altz('-9000')
self.assertEqual(datetime.fromtimestamp(1522827734, tzoffset(0)), from_timestamp(1522827734, altz))
+
+ def test_pickle_tzoffset(self):
+ t1 = tzoffset(555)
+ t2 = pickle.loads(pickle.dumps(t1))
+ self.assertEqual(t1._offset, t2._offset)
+ self.assertEqual(t1._name, t2._name)