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

1from pydantic import BaseModel 

2 

3 

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 """ 

8 

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)) 

12 

13 return dest 

14 

15 

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)