Skip to content

Commit 545b336

Browse files
committed
add missing file
1 parent f42d86a commit 545b336

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

chipflow_lib/_appresponse.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from dataclasses import dataclass
2+
3+
from pydantic import BaseModel, PlainSerializer, model_serializer
4+
5+
@dataclass
6+
class OmitIfNone:
7+
pass
8+
9+
class AppResponseModel(BaseModel):
10+
@model_serializer
11+
def _serialize(self):
12+
skip_if_none = set()
13+
serialize_aliases = dict()
14+
15+
# Gather fields that should omit if None
16+
for name, field_info in self.model_fields.items():
17+
if any(
18+
isinstance(metadata, OmitIfNone) for metadata in field_info.metadata
19+
):
20+
skip_if_none.add(name)
21+
elif field_info.serialization_alias:
22+
serialize_aliases[name] = field_info.serialization_alias
23+
24+
serialized = dict()
25+
26+
for name, value in self:
27+
# Skip serializing None if it was marked with "OmitIfNone"
28+
if value is None and name in skip_if_none:
29+
continue
30+
serialize_key = serialize_aliases.get(name, name)
31+
32+
# Run Annotated PlainSerializer
33+
for metadata in self.model_fields[name].metadata:
34+
if isinstance(metadata, PlainSerializer):
35+
value = metadata.func(value)
36+
37+
serialized[serialize_key] = value
38+
39+
return serialized

0 commit comments

Comments
 (0)