Skip to content

common

common

EnumByteString

Bases: str

Like EnumIntegerString but for Bytes.

new staticmethod

new(bytevalue: bytes, stringvalue: str) -> EnumByteString

Create EnumByteString object as a class constructor

Source code in src/itksn/common.py
@staticmethod
def new(bytevalue: bytes, stringvalue: str) -> EnumByteString:
    """
    Create EnumByteString object as a class constructor
    """
    ret = EnumByteString(stringvalue)
    ret.bytevalue = bytevalue
    return ret

EnumStr

EnumStr(subcon: Construct[bytes, bytes], **mapping: bytes)

Bases: TheAdapter

This is exactly the same as construct.Enum, but supports byte subcons.

Source code in src/itksn/common.py
def __init__(self: Self, subcon: Construct[bytes, bytes], **mapping: bytes) -> None:
    super().__init__(subcon)
    self.encmapping: dict[str, bytes] = {
        EnumByteString.new(v, k): v for k, v in mapping.items()
    }
    self.decmapping: dict[bytes, EnumByteString] = {
        v: EnumByteString.new(v, k) for k, v in mapping.items()
    }
    self.ksymapping: dict[bytes, str] = {v: k for k, v in mapping.items()}