Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/anthropic/_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ def model_dump(
exclude_defaults=exclude_defaults,
# warnings are not supported in Pydantic v1
warnings=True if PYDANTIC_V1 else warnings,
by_alias=by_alias,
by_alias=by_alias if by_alias is not None else False,
)
return cast(
"dict[str, Any]",
Expand Down
37 changes: 37 additions & 0 deletions test_pydantic_by_alias.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
"""Test for Pydantic by_alias None handling fix."""
import pydantic
from anthropic._compat import model_dump

class SimpleModel(pydantic.BaseModel):
field_name: str = pydantic.Field(alias="fieldName")

def test_model_dump_with_none_by_alias():
"""Test that model_dump handles by_alias=None correctly."""
model = SimpleModel(fieldName="test_value")

# Should not raise TypeError when by_alias is None
result = model_dump(model, by_alias=None)
assert isinstance(result, dict)
assert result["field_name"] == "test_value"

def test_model_dump_with_true_by_alias():
"""Test that model_dump respects by_alias=True."""
model = SimpleModel(fieldName="test_value")

result = model_dump(model, by_alias=True)
assert isinstance(result, dict)
assert "fieldName" in result or "field_name" in result

def test_model_dump_with_false_by_alias():
"""Test that model_dump respects by_alias=False."""
model = SimpleModel(fieldName="test_value")

result = model_dump(model, by_alias=False)
assert isinstance(result, dict)
assert "field_name" in result

if __name__ == "__main__":
test_model_dump_with_none_by_alias()
test_model_dump_with_true_by_alias()
test_model_dump_with_false_by_alias()
print("All tests passed!")