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
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
1import typing
3from archdocs.features.kubernetes import values
6def _is_path_suffix(one_value: values.ManifestValue, value_path: values.ValuePath, /) -> bool:
7 return one_value.value_path[-len(value_path) :] == value_path
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 )
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 )
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 ""
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
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 )