Coverage for opt/mealie/lib/python3.12/site-packages/mealie/schema/mapper.py: 93%
10 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 03:04 +0000
1from pydantic import BaseModel
4def mapper[U: BaseModel, T: BaseModel](source: U, dest: T, **_) -> T:
5 """
6 Map a source model to a destination model. Only top-level fields are mapped.
7 """
9 for field in source.__class__.model_fields:
10 if field in dest.__class__.model_fields: 10 ↛ 9line 10 didn't jump to line 9 because the condition on line 10 was always true
11 setattr(dest, field, getattr(source, field))
13 return dest
16def cast[U: BaseModel, T: BaseModel](source: U, dest: type[T], **kwargs) -> T:
17 create_data = {
18 field: getattr(source, field) for field in source.__class__.model_fields if field in dest.model_fields
19 }
20 create_data.update(kwargs or {})
21 return dest(**create_data)