summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUwe L. Korn <uwelk@xhochy.com>2019-10-19 11:36:00 +0200
committerSebastian Thiel <sebastian.thiel@icloud.com>2019-10-19 13:20:43 +0200
commit6fd090293792884f5a0d05f69109da1c970c3cab (patch)
treee3c8ae96a7c371b4c08f54cd66a690032906705c
parent95897f99551db8d81ca77adec3f44e459899c20b (diff)
downloadgitpython-6fd090293792884f5a0d05f69109da1c970c3cab.tar.gz
Fix pickling of tzoffset
Fixes #650
-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)