diff --git a/pydantic/_internal/_std_types_schema.py b/pydantic/_internal/_std_types_schema.py index 9305e0c0a6..4e332a0bad 100644 --- a/pydantic/_internal/_std_types_schema.py +++ b/pydantic/_internal/_std_types_schema.py @@ -444,6 +444,7 @@ def infer_default() -> Callable[[], Any]: list: list, typing.Sequence: list, typing.Set: set, + set: set, typing.MutableSet: set, collections.abc.MutableSet: set, collections.abc.Set: frozenset, diff --git a/tests/test_types.py b/tests/test_types.py index 1923d925a6..0443763c62 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -4977,12 +4977,15 @@ def test_defaultdict_infer_default_factory() -> None: class Model(BaseModel): a: DefaultDict[int, List[int]] b: DefaultDict[int, int] + c: DefaultDict[int, set] - m = Model(a={}, b={}) + m = Model(a={}, b={}, c={}) assert m.a.default_factory is not None assert m.a.default_factory() == [] assert m.b.default_factory is not None assert m.b.default_factory() == 0 + assert m.c.default_factory is not None + assert m.c.default_factory() == set() def test_defaultdict_explicit_default_factory() -> None: