Coverage for archdocs/features/kubernetes/values_lookup.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.3, created at 2026-08-03 00:00 +0000

1import typing 

2 

3from archdocs.features.kubernetes import values 

4 

5 

6def _is_path_suffix(one_value: values.ManifestValue, value_path: values.ValuePath, /) -> bool: 

7 return one_value.value_path[-len(value_path) :] == value_path 

8 

9 

10def _contains_path(one_value: values.ManifestValue, value_path: values.ValuePath, /) -> bool: 

11 return any( 

12 one_value.value_path[one_offset : one_offset + len(value_path)] == value_path 

13 for one_offset in range(len(one_value.value_path)) 

14 ) 

15 

16 

17def read_values(all_values: values.ManifestValues, /, *all_value_paths: values.ValuePath) -> tuple[str, ...]: 

18 return tuple( 

19 dict.fromkeys( 

20 one_value.raw_value 

21 for one_value in all_values 

22 if any(_is_path_suffix(one_value, one_value_path) for one_value_path in all_value_paths) 

23 ), 

24 ) 

25 

26 

27def read_first_value(all_values: values.ManifestValues, /, *all_value_paths: values.ValuePath) -> str: 

28 all_matched_values: typing.Final = read_values(all_values, *all_value_paths) 

29 return all_matched_values[0] if all_matched_values else "" 

30 

31 

32def read_int_value(all_values: values.ManifestValues, /, *all_value_paths: values.ValuePath) -> int: 

33 raw_value: typing.Final = read_first_value(all_values, *all_value_paths) 

34 return int(raw_value) if raw_value.isdigit() else 0 

35 

36 

37def has_any_block(all_values: values.ManifestValues, /, *all_value_paths: values.ValuePath) -> bool: 

38 return any( 

39 _contains_path(one_value, one_value_path) for one_value in all_values for one_value_path in all_value_paths 

40 )