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