issue-51-telegram make Telegram completely backwards compatible for now
This commit is contained in:
parent
929435c5fb
commit
64787130bc
@ -1,4 +1,3 @@
|
||||
from collections import defaultdict
|
||||
from decimal import Decimal
|
||||
from operator import attrgetter
|
||||
|
||||
@ -10,7 +9,7 @@ import pytz
|
||||
from dsmr_parser import obis_name_mapping
|
||||
|
||||
|
||||
class Telegram(object):
|
||||
class Telegram(dict):
|
||||
"""
|
||||
Container for parsed telegram data.
|
||||
|
||||
@ -22,13 +21,14 @@ class Telegram(object):
|
||||
yields:
|
||||
['P1_MESSAGE_HEADER', 'P1_MESSAGE_TIMESTAMP', 'EQUIPMENT_IDENTIFIER', ...]
|
||||
"""
|
||||
def __init__(self):
|
||||
self._telegram_data = defaultdict(list)
|
||||
def __init__(self, *args, **kwargs):
|
||||
self._mbus_channel_devices = {}
|
||||
self._item_names = []
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def add(self, obis_reference, dsmr_object):
|
||||
self._telegram_data[obis_reference].append(dsmr_object)
|
||||
if obis_reference not in self:
|
||||
self[obis_reference] = dsmr_object
|
||||
|
||||
# Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER
|
||||
# Also keep track of the added names internally
|
||||
@ -68,20 +68,6 @@ class Telegram(object):
|
||||
def get_mbus_device_by_channel(self, channel_id):
|
||||
return self._mbus_channel_devices.get(channel_id)
|
||||
|
||||
def __getitem__(self, obis_reference):
|
||||
"""
|
||||
Deprecated method to get obis_reference by key. Exists for backwards compatibility
|
||||
|
||||
Example: telegram[obis_references.P1_MESSAGE_HEADER]
|
||||
"""
|
||||
try:
|
||||
# TODO use _telegram_data here or else TelegramParserFluviusTest.test_parse breaks
|
||||
return self._telegram_data[obis_reference][0]
|
||||
# obis_name = obis_name_mapping.EN[obis_reference]
|
||||
# return getattr(self, obis_name)
|
||||
except IndexError:
|
||||
# The index error is an internal detail. The KeyError is expected as a user.
|
||||
raise KeyError
|
||||
|
||||
def __len__(self):
|
||||
return len(self._item_names)
|
||||
|
Loading…
Reference in New Issue
Block a user