Skip to content

Commit 79a033f

Browse files
committed
Fix AnswerLikes null handling and DocumentContent serialization
1 parent 128c3ef commit 79a033f

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

src/glean/api_client/models/answerlikes.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,25 @@
33
from __future__ import annotations
44
from glean.api_client.types import BaseModel
55
import pydantic
6-
from typing import List, TYPE_CHECKING
7-
from typing_extensions import Annotated, TypedDict
6+
from typing import List, Optional, TYPE_CHECKING
7+
from typing_extensions import Annotated, NotRequired, TypedDict
88

99
if TYPE_CHECKING:
1010
from .answerlike import AnswerLike, AnswerLikeTypedDict
1111

1212

1313
class AnswerLikesTypedDict(TypedDict):
14-
liked_by: List["AnswerLikeTypedDict"]
14+
liked_by: NotRequired[Optional[List["AnswerLikeTypedDict"]]]
1515
liked_by_user: bool
1616
r"""Whether the user in context liked the answer."""
1717
num_likes: int
1818
r"""The total number of likes for the answer."""
1919

2020

2121
class AnswerLikes(BaseModel):
22-
liked_by: Annotated[List["AnswerLike"], pydantic.Field(alias="likedBy")]
22+
liked_by: Annotated[
23+
Optional[List["AnswerLike"]], pydantic.Field(alias="likedBy")
24+
] = None
2325

2426
liked_by_user: Annotated[bool, pydantic.Field(alias="likedByUser")]
2527
r"""Whether the user in context liked the answer."""

src/glean/api_client/models/documentcontent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def serialize_model(self, handler):
2727

2828
for n, f in type(self).model_fields.items():
2929
k = f.alias or n
30-
val = serialized.get(k)
30+
val = serialized.get(k, serialized.get(n, UNSET_SENTINEL))
3131

3232
if val != UNSET_SENTINEL:
3333
if val is not None or k not in optional_fields:

tests/test_model_regressions.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from glean.api_client import models
2+
3+
4+
def test_answer_likes_accepts_null_liked_by():
5+
payload = {
6+
"likedBy": None,
7+
"likedByUser": False,
8+
"numLikes": 0,
9+
}
10+
11+
likes = models.AnswerLikes.model_validate(payload)
12+
13+
assert likes.liked_by is None
14+
assert likes.liked_by_user is False
15+
assert likes.num_likes == 0
16+
17+
18+
def test_document_content_model_dump_keeps_alias_field_value():
19+
content = models.DocumentContent(fullTextList=["This is a test document."])
20+
21+
dumped = content.model_dump()
22+
23+
assert dumped["fullTextList"] == ["This is a test document."]

0 commit comments

Comments
 (0)