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 decimal import Decimal | ||||||
| from operator import attrgetter | from operator import attrgetter | ||||||
| 
 | 
 | ||||||
| @ -10,7 +9,7 @@ import pytz | |||||||
| from dsmr_parser import obis_name_mapping | from dsmr_parser import obis_name_mapping | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class Telegram(object): | class Telegram(dict): | ||||||
|     """ |     """ | ||||||
|     Container for parsed telegram data. |     Container for parsed telegram data. | ||||||
| 
 | 
 | ||||||
| @ -22,13 +21,14 @@ class Telegram(object): | |||||||
|     yields: |     yields: | ||||||
|     ['P1_MESSAGE_HEADER',  'P1_MESSAGE_TIMESTAMP', 'EQUIPMENT_IDENTIFIER', ...] |     ['P1_MESSAGE_HEADER',  'P1_MESSAGE_TIMESTAMP', 'EQUIPMENT_IDENTIFIER', ...] | ||||||
|     """ |     """ | ||||||
|     def __init__(self): |     def __init__(self, *args, **kwargs): | ||||||
|         self._telegram_data = defaultdict(list) |  | ||||||
|         self._mbus_channel_devices = {} |         self._mbus_channel_devices = {} | ||||||
|         self._item_names = [] |         self._item_names = [] | ||||||
|  |         super().__init__(*args, **kwargs) | ||||||
| 
 | 
 | ||||||
|     def add(self, obis_reference, dsmr_object): |     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 |         # Update name mapping used to get value by attribute. Example: telegram.P1_MESSAGE_HEADER | ||||||
|         # Also keep track of the added names internally |         # Also keep track of the added names internally | ||||||
| @ -68,20 +68,6 @@ class Telegram(object): | |||||||
|     def get_mbus_device_by_channel(self, channel_id): |     def get_mbus_device_by_channel(self, channel_id): | ||||||
|         return self._mbus_channel_devices.get(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): |     def __len__(self): | ||||||
|         return len(self._item_names) |         return len(self._item_names) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user