Skip to content

Commit 4eae7d2

Browse files
authored
PYTHON-4690 Add repr for FixedOffset eg FixedOffset(datetime.timedelta(seconds=3600), '+60')) (#1806)
1 parent 4dde301 commit 4eae7d2

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

bson/tz_util.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ def __init__(self, offset: Union[float, timedelta], name: str) -> None:
3939
def __getinitargs__(self) -> Tuple[timedelta, str]:
4040
return self.__offset, self.__name
4141

42+
def __repr__(self) -> str:
43+
return f"{self.__class__.__name__}({self.__offset!r}, {self.__name!r})"
44+
4245
def utcoffset(self, dt: Optional[datetime]) -> timedelta:
4346
return self.__offset
4447

doc/changelog.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ PyMongo 4.9 brings a number of improvements including:
3030
:class:`~pymongo.operations.DeleteOne`, and
3131
:class:`~pymongo.operations.DeleteMany` operations, so
3232
they can be used in the new :meth:`~pymongo.mongo_client.MongoClient.bulk_write`.
33+
- Added :func:`repr` support to :class:`bson.tz_util.FixedOffset`.
3334

3435
Issues Resolved
3536
...............

test/test_bson.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,10 @@ def test_tzinfo(self):
10191019
tz = FixedOffset(42, "forty-two")
10201020
self.assertRaises(ValueError, CodecOptions, tzinfo=tz)
10211021
self.assertEqual(tz, CodecOptions(tz_aware=True, tzinfo=tz).tzinfo)
1022+
self.assertEqual(repr(tz), "FixedOffset(datetime.timedelta(seconds=2520), 'forty-two')")
1023+
self.assertEqual(
1024+
repr(eval(repr(tz))), "FixedOffset(datetime.timedelta(seconds=2520), 'forty-two')"
1025+
)
10221026

10231027
def test_codec_options_repr(self):
10241028
r = (

0 commit comments

Comments
 (0)