"""
# pylint: disable=missing-class-docstring,missing-function-docstring
-# pylint: disable=line-too-long,invalid-name,too-many-branches
+# pylint: disable=line-too-long,too-many-branches
from __future__ import annotations
import sys
-from typing import Union, Optional, List, Dict, OrderedDict, Tuple
+from typing import Union, Optional, List, Dict, Tuple
StrOrNone = Optional[str]
-TupleOrNone = Optional[Tuple]
-TupleOrOrderedDict = Union[Tuple, OrderedDict[str, str]]
+TupleOrNone = Optional[Tuple[int, ...]]
+DictOrTuple = Union[Dict[str, str], Tuple[int, ...]]
StrOrBool = Union[str, bool]
GREEN_COLOR = '\x1b[32m'
class KconfigCheck(OptCheck):
- def __init__(self, *args, **kwargs) -> None:
- super().__init__(*args, **kwargs)
+ def __init__(self, *args: str) -> None:
+ super().__init__(*args)
self.name = f'CONFIG_{self.name}'
@property
assert(all(map(lambda x: isinstance(x, int), ver_expected))), \
f'invalid expected version "{ver_expected}" for VersionCheck (2)'
self.ver_expected = ver_expected
- self.ver = (0, 0, 0) # type: Tuple[int, int, int]
+ self.ver = (0, 0, 0) # type: Tuple[int, ...]
self.result = None # type: str | None
@property
def opt_type(self) -> str:
return 'version'
- def set_state(self, data: Tuple) -> None:
+ def set_state(self, data: Tuple[int, ...]) -> None:
assert(data and isinstance(data, tuple) and len(data) >= 3), \
- f'invalid version "{data}" for VersionCheck'
+ f'invalid version "{data}" for VersionCheck (1)'
+ assert(all(map(lambda x: isinstance(x, int), data))), \
+ f'invalid version "{data}" for VersionCheck (2)'
self.ver = data[:3]
def check(self) -> None:
AnyOptCheckType = Union[KconfigCheck, CmdlineCheck, SysctlCheck, VersionCheck, OR, AND]
-def populate_simple_opt_with_data(opt: SimpleOptCheckType, data: TupleOrOrderedDict, data_type: str) -> None:
+def populate_simple_opt_with_data(opt: SimpleOptCheckType, data: DictOrTuple, data_type: str) -> None:
assert(opt.opt_type != 'complex'), f'unexpected opt_type "{opt.opt_type}" for {opt}'
assert(opt.opt_type in SIMPLE_OPTION_TYPES), f'invalid opt_type "{opt.opt_type}"'
assert(data_type in SIMPLE_OPTION_TYPES), f'invalid data_type "{data_type}"'
return
if data_type in ('kconfig', 'cmdline', 'sysctl'):
- assert(isinstance(data, OrderedDict)), \
+ assert(isinstance(data, dict)), \
f'unexpected data with data_type {data_type}'
assert(isinstance(opt, SimpleNamedOptCheckTypes)), \
f'unexpected VersionCheck with opt_type "{opt.opt_type}"'
opt.set_state(data)
-def populate_opt_with_data(opt: AnyOptCheckType, data: TupleOrOrderedDict, data_type: str) -> None:
+def populate_opt_with_data(opt: AnyOptCheckType, data: DictOrTuple, data_type: str) -> None:
assert(opt.opt_type != 'version'), 'a single VersionCheck is useless'
if opt.opt_type != 'complex':
assert(isinstance(opt, SimpleOptCheckTypes)), \
populate_opt_with_data(o, data, data_type)
-def populate_with_data(checklist: List[ChecklistObjType], data: TupleOrOrderedDict, data_type: str) -> None:
+def populate_with_data(checklist: List[ChecklistObjType], data: DictOrTuple, data_type: str) -> None:
for opt in checklist:
populate_opt_with_data(opt, data, data_type)
opt.check()
-def print_unknown_options(checklist: List[ChecklistObjType], parsed_options: OrderedDict[str, str], opt_type: str) -> None:
+def print_unknown_options(checklist: List[ChecklistObjType], parsed_options: Dict[str, str], opt_type: str) -> None:
known_options = []
for o1 in checklist: