Coverage for src/fluree_py/query/select/pydantic/warning_manager.py: 100%

10 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-02 03:03 +0000

1from dataclasses import dataclass, field 

2import warnings 

3 

4 

5@dataclass 

6class WarningManager: 

7 """Manages warnings for the Pydantic model processing. 

8 

9 Example: 

10 >>> manager = WarningManager() 

11 >>> manager.add_warning(ListOrderWarning, "Field 'items' is a list") 

12 >>> manager.emit_warnings() 

13 """ 

14 

15 warnings_list: list[tuple[type[Warning], str]] = field(default_factory=list) 

16 

17 def add_warning(self, warning_type: type[Warning], message: str) -> None: 

18 """Add a warning to the list.""" 

19 self.warnings_list.append((warning_type, message)) 

20 

21 def emit_warnings(self) -> None: 

22 """Emit all collected warnings.""" 

23 for warning_type, message in self.warnings_list: 

24 warnings.warn(message, warning_type)