mirror of https://github.com/tiangolo/fastapi.git
✨ Add support for `deque` objects and children in `jsonable_encoder` (#9433)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
This commit is contained in:
parent
d409c05d6f
commit
1f21b16e03
|
|
@ -1,5 +1,5 @@
|
||||||
import dataclasses
|
import dataclasses
|
||||||
from collections import defaultdict
|
from collections import defaultdict, deque
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from pathlib import PurePath
|
from pathlib import PurePath
|
||||||
from types import GeneratorType
|
from types import GeneratorType
|
||||||
|
|
@ -124,7 +124,7 @@ def jsonable_encoder(
|
||||||
)
|
)
|
||||||
encoded_dict[encoded_key] = encoded_value
|
encoded_dict[encoded_key] = encoded_value
|
||||||
return encoded_dict
|
return encoded_dict
|
||||||
if isinstance(obj, (list, set, frozenset, GeneratorType, tuple)):
|
if isinstance(obj, (list, set, frozenset, GeneratorType, tuple, deque)):
|
||||||
encoded_list = []
|
encoded_list = []
|
||||||
for item in obj:
|
for item in obj:
|
||||||
encoded_list.append(
|
encoded_list.append(
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
from collections import deque
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
@ -237,3 +238,12 @@ def test_encode_model_with_path(model_with_path):
|
||||||
def test_encode_root():
|
def test_encode_root():
|
||||||
model = ModelWithRoot(__root__="Foo")
|
model = ModelWithRoot(__root__="Foo")
|
||||||
assert jsonable_encoder(model) == "Foo"
|
assert jsonable_encoder(model) == "Foo"
|
||||||
|
|
||||||
|
|
||||||
|
def test_encode_deque_encodes_child_models():
|
||||||
|
class Model(BaseModel):
|
||||||
|
test: str
|
||||||
|
|
||||||
|
dq = deque([Model(test="test")])
|
||||||
|
|
||||||
|
assert jsonable_encoder(dq)[0]["test"] == "test"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue