Coverage for jsonschema_diff/core/parameter_combined.py: 83%

24 statements  

« prev     ^ index     » next       coverage.py v7.10.5, created at 2025-08-25 07:00 +0000

1from typing import TYPE_CHECKING, Any, Dict 

2 

3from .abstraction import Statuses, ToCompare 

4from .parameter_base import Compare 

5 

6if TYPE_CHECKING: 

7 from .parameter_base import LEGEND_RETURN_TYPE 

8 

9 

10class CompareCombined(Compare): 

11 def __init__(self, *args: Any, **kwargs: Any) -> None: 

12 super().__init__(*args, **kwargs) 

13 self.dict_compare: Dict[str, ToCompare] = {} 

14 self.dict_values: Dict[str, Any] = {} 

15 

16 def compare(self) -> Statuses: 

17 for c in self.to_compare: 

18 if self.status == Statuses.UNKNOWN: 

19 self.status = c.status 

20 elif self.status != c.status: 

21 self.status = Statuses.REPLACED 

22 

23 self.dict_compare[c.key] = c 

24 self.dict_values[c.key] = c.value 

25 

26 return self.status 

27 

28 def get_name(self) -> str: 

29 raise NotImplementedError("CompareCombined.get_name должен быть переопределен") 

30 

31 def render(self, tab_level: int = 0, with_path: bool = True) -> str: 

32 raise NotImplementedError("CompareCombined.render должен быть переопределен") 

33 

34 @staticmethod 

35 def legend() -> "LEGEND_RETURN_TYPE": 

36 raise NotImplementedError("CompareCombined.legend должен быть переопределен")