Skip to content

Commit 5aa891b

Browse files
committed
PYTHON-5395 - Investigate why we don't encode Python decimal instances by default
1 parent bbb6f88 commit 5aa891b

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

bson/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
from __future__ import annotations
7373

7474
import datetime
75+
import decimal
7576
import itertools
7677
import os
7778
import re
@@ -858,6 +859,11 @@ def _encode_decimal128(name: bytes, value: Decimal128, dummy0: Any, dummy1: Any)
858859
return b"\x13" + name + value.bid
859860

860861

862+
def _encode_python_decimal(name: bytes, value: decimal.Decimal, dummy0: Any, dummy1: Any) -> bytes:
863+
converted = Decimal128(value)
864+
return b"\x13" + name + converted.bid
865+
866+
861867
def _encode_minkey(name: bytes, dummy0: Any, dummy1: Any, dummy2: Any) -> bytes:
862868
"""Encode bson.min_key.MinKey."""
863869
return b"\xFF" + name
@@ -885,6 +891,7 @@ def _encode_maxkey(name: bytes, dummy0: Any, dummy1: Any, dummy2: Any) -> bytes:
885891
str: _encode_text,
886892
tuple: _encode_list,
887893
type(None): _encode_none,
894+
decimal.Decimal: _encode_python_decimal,
888895
uuid.UUID: _encode_uuid,
889896
Binary: _encode_binary,
890897
Int64: _encode_long,

0 commit comments

Comments
 (0)