trival simplification + explicit variable typing

This commit is contained in:
Istvan Ruzman
2022-02-21 20:24:51 +01:00
parent 0af5d95316
commit 9b75e69378
2 changed files with 10 additions and 13 deletions

View File

@@ -385,9 +385,8 @@ class Dictionary:
# else: # else:
# pass # pass
base_datatype = datatype.split("[")[0].replace("-", "")
try: try:
attribute_type = Datatype[base_datatype.upper()] attribute_type = Datatype[datatype.split("[")[0].replace("-", "").upper()]
except KeyError as exc: except KeyError as exc:
raise ParseError(filename, f"Illegal type: {datatype}", line_num) from exc raise ParseError(filename, f"Illegal type: {datatype}", line_num) from exc
@@ -401,18 +400,15 @@ class Dictionary:
len(codes) > 1, len(codes) > 1,
) )
attrcode: Union[int, Tuple[int, ...]] = (
codes[0] if len(codes) == 1 else tuple(codes)
)
self.cur_vendor.attrs[attrcode] = attribute
if datatype == "evs": if datatype == "evs":
if not isinstance(attrcode, tuple): if not len(codes) > 1:
raise ParseError(filename, "evs must be a tlv", line_num) raise ParseError(filename, "evs must be a tlv", line_num)
self.evs[name.upper()] = list(attrcode) self.evs[name.upper()] = codes
if self.cur_vendor != self.rfc_vendor and len(evs) == 0: if self.cur_vendor != self.rfc_vendor and len(evs) == 0:
codes = [26, self.cur_vendor.code] + codes codes = [26, self.cur_vendor.code] + codes
self.cur_vendor.attrs[tuple(codes)] = attribute
LOG.info( LOG.info(
"Register Attribute %s for Vendor %s", "Register Attribute %s for Vendor %s",
attribute.name, attribute.name,
@@ -420,11 +416,11 @@ class Dictionary:
) )
else: else:
LOG.info("Register Attribute %s", attribute.name) LOG.info("Register Attribute %s", attribute.name)
attrcode: Union[int, Tuple[int, ...]] = ( attrcode: Union[int, Tuple[int, ...]] = (
codes[0] if len(codes) == 1 else tuple(codes) codes[0] if len(codes) == 1 else tuple(codes)
) )
self.attrindex[attrcode] = attribute self.attrindex[attrcode] = self.attrindex[name] = attribute
self.attrindex[name] = attribute
def _parse_value(self, tokens: Sequence[str], line_num: int): def _parse_value(self, tokens: Sequence[str], line_num: int):
"""Parse an ATTRIBUTE line of (Free)RADIUS dictionaries.""" """Parse an ATTRIBUTE line of (Free)RADIUS dictionaries."""

View File

@@ -144,8 +144,9 @@ def pre_decode_attributes( # pylint: disable=too-many-branches
# TODO: deal with tagged tlvs # TODO: deal with tagged tlvs
attributes.extend(decode_tlv(rad_dict, list(key), value, offset)) attributes.extend(decode_tlv(rad_dict, list(key), value, offset))
elif adef.datatype == Datatype.EVS: elif adef.datatype == Datatype.EVS:
assert isinstance(key, tuple) # EVS must be a Tuple[int, int]
attributes.append(decode_evs(key, value)) k: Tuple[int, int] = key
attributes.append(decode_evs(k, value))
else: else:
raise ValueError raise ValueError
except (ValueError, KeyError): except (ValueError, KeyError):