diff --git a/bson/tz_util.py b/bson/tz_util.py index a21d3c173..4d31c04f9 100644 --- a/bson/tz_util.py +++ b/bson/tz_util.py @@ -39,6 +39,9 @@ class FixedOffset(tzinfo): def __getinitargs__(self) -> Tuple[timedelta, str]: return self.__offset, self.__name + def __repr__(self) -> str: + return f"{self.__class__.__name__}({self.__offset!r}, {self.__name!r})" + def utcoffset(self, dt: Optional[datetime]) -> timedelta: return self.__offset diff --git a/doc/changelog.rst b/doc/changelog.rst index 8d1c6f118..d80f78fe4 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -30,6 +30,7 @@ PyMongo 4.9 brings a number of improvements including: :class:`~pymongo.operations.DeleteOne`, and :class:`~pymongo.operations.DeleteMany` operations, so they can be used in the new :meth:`~pymongo.mongo_client.MongoClient.bulk_write`. +- Added :func:`repr` support to :class:`bson.tz_util.FixedOffset`. Issues Resolved ............... diff --git a/test/test_bson.py b/test/test_bson.py index fec84090d..79a7fa061 100644 --- a/test/test_bson.py +++ b/test/test_bson.py @@ -1019,6 +1019,10 @@ class TestCodecOptions(unittest.TestCase): tz = FixedOffset(42, "forty-two") self.assertRaises(ValueError, CodecOptions, tzinfo=tz) self.assertEqual(tz, CodecOptions(tz_aware=True, tzinfo=tz).tzinfo) + self.assertEqual(repr(tz), "FixedOffset(datetime.timedelta(seconds=2520), 'forty-two')") + self.assertEqual( + repr(eval(repr(tz))), "FixedOffset(datetime.timedelta(seconds=2520), 'forty-two')" + ) def test_codec_options_repr(self): r = (