Browse Source

🐛 Fix `exclude_defaults` not propagated to dict keys and values in `jsonable_encoder` (#16043)

Co-authored-by: Sebastián Ramírez <[email protected]>
pull/16089/head
Muhammad Bin Gulzar 1 day ago
committed by GitHub
parent
commit
aadfcce763
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      fastapi/encoders.py
  2. 14
      tests/test_jsonable_encoder.py

2
fastapi/encoders.py

@ -299,6 +299,7 @@ def jsonable_encoder(
key,
by_alias=by_alias,
exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
exclude_none=exclude_none,
custom_encoder=custom_encoder,
sqlalchemy_safe=sqlalchemy_safe,
@ -307,6 +308,7 @@ def jsonable_encoder(
value,
by_alias=by_alias,
exclude_unset=exclude_unset,
exclude_defaults=exclude_defaults,
exclude_none=exclude_none,
custom_encoder=custom_encoder,
sqlalchemy_safe=sqlalchemy_safe,

14
tests/test_jsonable_encoder.py

@ -202,6 +202,20 @@ def test_encode_model_with_default():
}
def test_encode_model_with_default_in_dict_and_list():
model = ModelWithDefault(foo="foo", bar="bar")
assert jsonable_encoder([model], exclude_defaults=True) == [{"foo": "foo"}]
assert jsonable_encoder({"key": model}, exclude_defaults=True) == {
"key": {"foo": "foo"}
}
assert jsonable_encoder({"key": [model]}, exclude_defaults=True) == {
"key": [{"foo": "foo"}]
}
assert jsonable_encoder({"key": model}) == {
"key": {"foo": "foo", "bar": "bar", "bla": "bla"}
}
def test_custom_encoders():
class safe_datetime(datetime):
pass

Loading…
Cancel
Save