Many of the ERD code values are represented by Enums, NamedTuples, or similar. Currently, translation between those occurs in a bunch of tiny functions in erd_utils.py. This is gross and cumbersome. Rather, we should have a protocol like
and have each of those special types implement the protocol. Unencodable values can simply raise a NotImplementedError or similar. The Appliance.{encode/decode}_erd_value methods can then be updated to simply dispatch to the correct object's method.
We'll also probably need a register_erd_type(erd_code: ErdType) decorator to set up dispatch to the correct decoded.
Many of the ERD code values are represented by Enums, NamedTuples, or similar. Currently, translation between those occurs in a bunch of tiny functions in erd_utils.py. This is gross and cumbersome. Rather, we should have a protocol like
and have each of those special types implement the protocol. Unencodable values can simply raise a
NotImplementedError
or similar. TheAppliance.{encode/decode}_erd_value
methods can then be updated to simply dispatch to the correct object's method.We'll also probably need a
register_erd_type(erd_code: ErdType)
decorator to set up dispatch to the correct decoded.