Skip to content

Commit aadd9e4

Browse files
rozzabehackett
authored andcommitted
Ensures UTC stays a singleton
1 parent 8c68bde commit aadd9e4

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

bson/tz_util.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def __init__(self, offset, name):
3838
def __getinitargs__(self):
3939
return self.__offset, self.__name
4040

41+
def __reduce__(self):
42+
return _UTC, ()
43+
4144
def utcoffset(self, dt):
4245
return self.__offset
4346

@@ -50,3 +53,12 @@ def dst(self, dt):
5053

5154
utc = FixedOffset(0, "UTC")
5255
"""Fixed offset timezone representing UTC."""
56+
57+
58+
def _UTC():
59+
"""Factory function for utc unpickling.
60+
61+
Makes sure that unpickling a utc instance always returns the same
62+
module global.
63+
"""
64+
return utc

test/test_timestamp.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ def test_datetime_copy_pickle(self):
4848

4949
dc = copy.deepcopy(d)
5050
self.assertEqual(dc, t.as_datetime())
51+
self.assertEqual(d.tzinfo, dc.tzinfo)
5152

5253
dp = pickle.loads(pickle.dumps(d))
5354
self.assertEqual(dp, t.as_datetime())
55+
self.assertEqual(d.tzinfo, dp.tzinfo)
5456

5557
def test_exceptions(self):
5658
self.assertRaises(TypeError, Timestamp)

0 commit comments

Comments
 (0)