From 83ef354c1285def5beecbd077670971e74b388e3 Mon Sep 17 00:00:00 2001
From: Hans Erik van Elburg <hanserik@vanelburg.net>
Date: Sat, 27 Nov 2021 19:55:58 +0100
Subject: [PATCH 1/2] resolve name clash as reported in issue #95

---
 dsmr_parser/clients/socket_.py         |  3 +--
 dsmr_parser/obis_name_mapping.py       |  4 ----
 dsmr_parser/obis_references.py         | 12 +++++-------
 dsmr_parser/telegram_specifications.py |  8 ++++----
 4 files changed, 10 insertions(+), 17 deletions(-)

diff --git a/dsmr_parser/clients/socket_.py b/dsmr_parser/clients/socket_.py
index 7c13f02..6727979 100644
--- a/dsmr_parser/clients/socket_.py
+++ b/dsmr_parser/clients/socket_.py
@@ -22,7 +22,6 @@ class SocketReader(object):
         self.telegram_buffer = TelegramBuffer()
         self.telegram_specification = telegram_specification
 
-
     def read(self):
         """
         Read complete DSMR telegram's from remote interface and parse it
@@ -88,4 +87,4 @@ class SocketReader(object):
                         except ParseError as e:
                             logger.error('Failed to parse telegram: %s', e)
 
-                buffer = b""
\ No newline at end of file
+                buffer = b""
diff --git a/dsmr_parser/obis_name_mapping.py b/dsmr_parser/obis_name_mapping.py
index 87c720d..b224b7a 100644
--- a/dsmr_parser/obis_name_mapping.py
+++ b/dsmr_parser/obis_name_mapping.py
@@ -52,10 +52,6 @@ EN = {
     obis.VALVE_POSITION_GAS: 'VALVE_POSITION_GAS',
     obis.BELGIUM_HOURLY_GAS_METER_READING: 'BELGIUM_HOURLY_GAS_METER_READING',
     obis.LUXEMBOURG_EQUIPMENT_IDENTIFIER: 'LUXEMBOURG_EQUIPMENT_IDENTIFIER',
-    obis.LUXEMBOURG_ELECTRICITY_USED_TARIFF_GLOBAL: 'LUXEMBOURG_ELECTRICITY_USED_TARIFF_GLOBAL',
-    obis.LUXEMBOURG_ELECTRICITY_DELIVERED_TARIFF_GLOBAL: 'LUXEMBOURG_ELECTRICITY_DELIVERED_TARIFF_GLOBAL',
-    obis.SWEDEN_ELECTRICITY_USED_TARIFF_GLOBAL: 'SWEDEN_ELECTRICITY_USED_TARIFF_GLOBAL',
-    obis.SWEDEN_ELECTRICITY_DELIVERED_TARIFF_GLOBAL: 'SWEDEN_ELECTRICITY_DELIVERED_TARIFF_GLOBAL',
     obis.Q3D_EQUIPMENT_IDENTIFIER: 'Q3D_EQUIPMENT_IDENTIFIER',
     obis.Q3D_EQUIPMENT_STATE: 'Q3D_EQUIPMENT_STATE',
     obis.Q3D_EQUIPMENT_SERIALNUMBER: 'Q3D_EQUIPMENT_SERIALNUMBER',
diff --git a/dsmr_parser/obis_references.py b/dsmr_parser/obis_references.py
index ad3bd98..d4a4cbf 100644
--- a/dsmr_parser/obis_references.py
+++ b/dsmr_parser/obis_references.py
@@ -8,10 +8,8 @@ objects are introduced.
 """
 P1_MESSAGE_HEADER = r'\d-\d:0\.2\.8.+?\r\n'
 P1_MESSAGE_TIMESTAMP = r'\d-\d:1\.0\.0.+?\r\n'
-ELECTRICITY_IMPORTED_TOTAL = r'\d-\d:1\.8\.0.+?\r\n'
 ELECTRICITY_USED_TARIFF_1 = r'\d-\d:1\.8\.1.+?\r\n'
 ELECTRICITY_USED_TARIFF_2 = r'\d-\d:1\.8\.2.+?\r\n'
-ELECTRICITY_EXPORTED_TOTAL = r'\d-\d:2\.8\.0.+?\r\n'
 ELECTRICITY_DELIVERED_TARIFF_1 = r'\d-\d:2\.8\.1.+?\r\n'
 ELECTRICITY_DELIVERED_TARIFF_2 = r'\d-\d:2\.8\.2.+?\r\n'
 ELECTRICITY_ACTIVE_TARIFF = r'\d-\d:96\.14\.0.+?\r\n'
@@ -62,13 +60,13 @@ ELECTRICITY_DELIVERED_TARIFF_ALL = (
     ELECTRICITY_DELIVERED_TARIFF_2
 )
 
-# Alternate codes for foreign countries.
+# International generalized additions
+ELECTRICITY_IMPORTED_TOTAL = r'\d-\d:1\.8\.0.+?\r\n'  # Total imported energy register (P+)
+ELECTRICITY_EXPORTED_TOTAL = r'\d-\d:2\.8\.0.+?\r\n'  # Total exported energy register (P-)
+
+# International non generalized additions (country specific) / risk for necessary refactoring
 BELGIUM_HOURLY_GAS_METER_READING = r'\d-\d:24\.2\.3.+?\r\n'  # Different code, same format.
 LUXEMBOURG_EQUIPMENT_IDENTIFIER = r'\d-\d:42\.0\.0.+?\r\n'  # Logical device name
-LUXEMBOURG_ELECTRICITY_USED_TARIFF_GLOBAL = r'\d-\d:1\.8\.0.+?\r\n'  # Total imported energy register (P+)
-LUXEMBOURG_ELECTRICITY_DELIVERED_TARIFF_GLOBAL = r'\d-\d:2\.8\.0.+?\r\n'  # Total exported energy register (P-)
-SWEDEN_ELECTRICITY_USED_TARIFF_GLOBAL = r'\d-\d:1\.8\.0.+?\r\n'  # Total imported energy register (P+)
-SWEDEN_ELECTRICITY_DELIVERED_TARIFF_GLOBAL = r'\d-\d:2\.8\.0.+?\r\n'  # Total exported energy register (P-)
 Q3D_EQUIPMENT_IDENTIFIER = r'\d-\d:0\.0\.0.+?\r\n'  # Logical device name
 Q3D_EQUIPMENT_STATE = r'\d-\d:96\.5\.5.+?\r\n'  # Device state (hexadecimal)
 Q3D_EQUIPMENT_SERIALNUMBER = r'\d-\d:96\.1\.255.+?\r\n'  # Device Serialnumber
diff --git a/dsmr_parser/telegram_specifications.py b/dsmr_parser/telegram_specifications.py
index 978a65c..c8f05a5 100644
--- a/dsmr_parser/telegram_specifications.py
+++ b/dsmr_parser/telegram_specifications.py
@@ -153,8 +153,8 @@ BELGIUM_FLUVIUS['objects'].update({
 LUXEMBOURG_SMARTY = deepcopy(V5)
 LUXEMBOURG_SMARTY['objects'].update({
     obis.LUXEMBOURG_EQUIPMENT_IDENTIFIER: CosemParser(ValueParser(str)),
-    obis.LUXEMBOURG_ELECTRICITY_USED_TARIFF_GLOBAL: CosemParser(ValueParser(Decimal)),
-    obis.LUXEMBOURG_ELECTRICITY_DELIVERED_TARIFF_GLOBAL: CosemParser(ValueParser(Decimal)),
+    obis.ELECTRICITY_IMPORTED_TOTAL: CosemParser(ValueParser(Decimal)),
+    obis.ELECTRICITY_EXPORTED_TOTAL: CosemParser(ValueParser(Decimal)),
 })
 
 # Source: https://www.energiforetagen.se/globalassets/energiforetagen/det-erbjuder-vi/kurser-och-konferenser/elnat/
@@ -164,8 +164,8 @@ SWEDEN = {
     'objects': {
         obis.P1_MESSAGE_HEADER: CosemParser(ValueParser(str)),
         obis.P1_MESSAGE_TIMESTAMP: CosemParser(ValueParser(timestamp)),
-        obis.SWEDEN_ELECTRICITY_USED_TARIFF_GLOBAL: CosemParser(ValueParser(Decimal)),
-        obis.SWEDEN_ELECTRICITY_DELIVERED_TARIFF_GLOBAL: CosemParser(ValueParser(Decimal)),
+        obis.ELECTRICITY_IMPORTED_TOTAL: CosemParser(ValueParser(Decimal)),
+        obis.ELECTRICITY_EXPORTED_TOTAL: CosemParser(ValueParser(Decimal)),
         obis.CURRENT_ELECTRICITY_USAGE: CosemParser(ValueParser(Decimal)),
         obis.CURRENT_ELECTRICITY_DELIVERY: CosemParser(ValueParser(Decimal)),
         obis.INSTANTANEOUS_ACTIVE_POWER_L1_POSITIVE: CosemParser(ValueParser(Decimal)),

From f0e035c8ed39e821e2a155e3d62151d31f643a91 Mon Sep 17 00:00:00 2001
From: Hans Erik van Elburg <hanserik@vanelburg.net>
Date: Sun, 28 Nov 2021 01:12:32 +0100
Subject: [PATCH 2/2] fix newer version pylama errors

---
 dsmr_parser/objects.py                        | 2 +-
 dsmr_parser/profile_generic_specifications.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dsmr_parser/objects.py b/dsmr_parser/objects.py
index c062d9d..af7d068 100644
--- a/dsmr_parser/objects.py
+++ b/dsmr_parser/objects.py
@@ -179,7 +179,7 @@ class ProfileGenericObject(DSMRObject):
             self._buffer_list = []
             values_offset = 2
             for i in range(self.buffer_length):
-                offset = values_offset + i*2
+                offset = values_offset + i * 2
                 self._buffer_list.append(MBusObject([self.values[offset], self.values[offset + 1]]))
         return self._buffer_list
 
diff --git a/dsmr_parser/profile_generic_specifications.py b/dsmr_parser/profile_generic_specifications.py
index a52416c..e753c01 100644
--- a/dsmr_parser/profile_generic_specifications.py
+++ b/dsmr_parser/profile_generic_specifications.py
@@ -7,4 +7,4 @@ PG_HEAD_PARSERS = [ValueParser(int), ValueParser(str)]
 PG_UNIDENTIFIED_BUFFERTYPE_PARSERS = [ValueParser(str), ValueParser(str)]
 BUFFER_TYPES = {
     PG_FAILURE_EVENT:  [ValueParser(timestamp), ValueParser(int)]
-    }
+}