diff --git a/pydantic/fields.py b/pydantic/fields.py index 36a31df3e2..a8a34d822f 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -113,7 +113,7 @@ def __init__(self, **kwargs: Any) -> None: self.default_factory = kwargs.get('default_factory') if self.default is not Undefined and self.default_factory is not None: - raise ValueError('cannot specify both default and default_factory') + raise TypeError('cannot specify both default and default_factory') self.alias = kwargs.get('alias') self.alias_priority = kwargs.get('alias_priority') or 2 if self.alias is not None else None @@ -732,7 +732,7 @@ def PrivateAttr( ValueError: If both `default` and `default_factory` are set. """ if default is not Undefined and default_factory is not None: - raise ValueError('cannot specify both default and default_factory') + raise TypeError('cannot specify both default and default_factory') return ModelPrivateAttr( default, diff --git a/tests/test_main.py b/tests/test_main.py index a8f7b69088..c664720f03 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1376,7 +1376,7 @@ class MyModel(BaseModel): def test_two_defaults(): - with pytest.raises(ValueError, match='^cannot specify both default and default_factory$'): + with pytest.raises(TypeError, match='^cannot specify both default and default_factory$'): class Model(BaseModel): a: int = Field(default=3, default_factory=lambda: 3) diff --git a/tests/test_private_attributes.py b/tests/test_private_attributes.py index 4c5783a0d7..9119528da8 100644 --- a/tests/test_private_attributes.py +++ b/tests/test_private_attributes.py @@ -194,7 +194,7 @@ def __init__(self): def test_default_and_default_factory_used_error(): - with pytest.raises(ValueError, match='cannot specify both default and default_factory'): + with pytest.raises(TypeError, match='cannot specify both default and default_factory'): PrivateAttr(default=123, default_factory=lambda: 321)