Avoid Mypy error during lint

This commit is contained in:
Etan Kissling 2023-12-27 13:58:36 +01:00
parent 3e5427e31e
commit cf55918a6f
No known key found for this signature in database
GPG Key ID: B21DA824C5A3D03D

View File

@ -93,6 +93,8 @@ def _get_class_info_from_source(source: str) -> Tuple[str, Optional[str]]:
base = class_def.bases[0]
if isinstance(base, ast.Name):
parent_class = base.id
elif isinstance(base, ast.Subscript):
parent_class = base.value.id
else:
# NOTE: SSZ definition derives from earlier phase...
# e.g. `phase0.SignedBeaconBlock`
@ -216,10 +218,19 @@ def get_spec(file_name: Path, preset: Dict[str, str], config: Dict[str, str], pr
class_name, parent_class = _get_class_info_from_source(source)
# check consistency with spec
assert class_name == current_name
ignore_type = False
if parent_class:
assert parent_class == "Container"
if parent_class == "Container":
pass
elif parent_class == "Vector":
ignore_type = True # Avoid Mypy error: Invalid base class "Vector"
else:
raise Exception("unrecognized parent class: " + source)
# NOTE: trim whitespace from spec
ssz_objects[current_name] = "\n".join(line.rstrip() for line in source.splitlines())
lines = [line.rstrip() for line in source.splitlines()]
if ignore_type:
lines[0] += " # type: ignore"
ssz_objects[current_name] = "\n".join(lines)
else:
raise Exception("unrecognized python code element: " + source)
elif isinstance(child, Table):