trx_toolkit: make codec.py work with EOL Python 3.5

Our build system is based on Debian 9 and EOL Python 3.5, so we have
to maintain backwards compatibility (sigh).  Some type hints moved
to comments, some had to be commented out completely.  Hopefully,
we can 'un-vandalize' the code by reverting this change once there
will be no requirement to support EOL stuff.

Change-Id: I7211cfbb7549b6e700aa3dd44464ff762fd51185
Related: OS#4006, SYS#4895
This commit is contained in:
Vadim Yanitskiy 2021-03-12 15:15:37 +01:00
parent a772337e27
commit 33f456dda3
1 changed files with 12 additions and 12 deletions

View File

@ -55,17 +55,17 @@ class Field(Codec):
''' Base class representing one field in a Message. '''
# Default length (0 means the whole buffer)
DEF_LEN: int = 0
DEF_LEN = 0 # type: int
# Default parameters
DEF_PARAMS: dict = { }
DEF_PARAMS = { } # type: dict
# Presence of a field during decoding and encoding
get_pres: Callable[[dict], bool]
## get_pres: Callable[[dict], bool]
# Length of a field for self.from_bytes()
get_len: Callable[[dict, bytes], int]
## get_len: Callable[[dict, bytes], int]
# Value of a field for self.to_bytes()
get_val: Callable[[dict], Any]
## get_val: Callable[[dict], Any]
def __init__(self, name: str, **kw) -> None:
self.name = name
@ -201,7 +201,7 @@ class BitFieldSet(Field):
}
# To be defined by derived types
STRUCT: Tuple['BitField', ...] = ()
STRUCT = () # type: Tuple['BitField', ...]
def __init__(self, **kw) -> None:
Field.__init__(self, self.__class__.__name__, **kw)
@ -248,8 +248,8 @@ class BitField:
''' One field in a BitFieldSet. '''
# Special fields for BitFieldSet
offset: int = 0
mask: int = 0
offset = 0 # type: int
mask = 0 # type: int
class Spare:
''' Spare filling in a BitFieldSet. '''
@ -272,7 +272,7 @@ class BitField:
self.bl = bl
# (Optional) fixed value for encoding and decoding
self.val: Optional[int] = kw.get('val', None)
self.val = kw.get('val', None) # type: Optional[int]
def enc_val(self, vals: dict) -> int:
if self.val is None:
@ -291,11 +291,11 @@ class BitField:
class Envelope:
''' A group of related fields. '''
STRUCT: Tuple[Codec, ...] = ()
STRUCT = () # type: Tuple[Codec, ...]
def __init__(self, check_len: bool = True):
# TODO: ensure uniqueue field names in self.STRUCT
self.c: dict = { }
self.c = { } # type: dict
self.check_len = check_len
def __getitem__(self, key: str) -> Any:
@ -368,7 +368,7 @@ class Sequence:
''' A sequence of repeating elements (e.g. TLVs). '''
# The item of sequence
ITEM: Optional[Envelope] = None
ITEM = None # type: Optional[Envelope]
def __init__(self, **kw) -> None:
if (self.ITEM is None) and ('item' not in kw):