From da4cbc237f3f7e9ed3d2ddcc1cdea204ac73f507 Mon Sep 17 00:00:00 2001 From: Alexis Engelke Date: Sun, 10 May 2020 14:20:34 +0200 Subject: [PATCH] parseinstr: Use typing.NamedTuple --- parseinstrs.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/parseinstrs.py b/parseinstrs.py index 01c65fe..8a3dd82 100644 --- a/parseinstrs.py +++ b/parseinstrs.py @@ -7,6 +7,7 @@ from copy import copy from enum import Enum, IntEnum from itertools import accumulate, product import struct +from typing import NamedTuple, FrozenSet, List, Tuple, Union, Optional, ByteString def bitstruct(name, fields): names, sizes = zip(*(field.split(":") for field in fields)) @@ -110,8 +111,11 @@ OPKIND_LOOKUP = { "DR": (0, 0, 10), } -class InstrDesc(namedtuple("InstrDesc", "mnemonic,flags,encoding")): - __slots__ = () +class InstrDesc(NamedTuple): + mnemonic: str + flags: FrozenSet[str] + encoding: bitstruct + @classmethod def parse(cls, desc): desc = desc.split() @@ -151,8 +155,11 @@ class EntryKind(Enum): TABLE_PREFIX_REP = 7 TABLE_ROOT = -1 -class TrieEntry(namedtuple("TrieEntry", "kind,items,payload")): - __slots__ = () +class TrieEntry(NamedTuple): + kind: EntryKind + items: Union[List[Optional[str]], Tuple[Optional[str]]] + payload: ByteString + TABLE_LENGTH = { EntryKind.TABLE256: 256, EntryKind.TABLE8: 8,