laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/27140 
)

Change subject: filesystem.py: Accept both a class or an instance as TLV._tlv 
member
......................................................................

filesystem.py: Accept both a class or an instance as TLV._tlv member

As we've seen in recent patches, this has been a source of bugs, so
let's be tolerant and deal with both.

Change-Id: I0a5ec2a860104ffe4524c647105a42505ac394d6
---
M pySim/filesystem.py
1 file changed, 12 insertions(+), 12 deletions(-)

Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index 7100b21..cfca708 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -532,7 +532,7 @@
         if self._construct:
             return parse_construct(self._construct, raw_bin_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_tlv(raw_bin_data)
             return t.to_dict()
         return {'raw': raw_bin_data.hex()}
@@ -559,7 +559,7 @@
         if self._construct:
             return parse_construct(self._construct, raw_bin_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_tlv(raw_bin_data)
             return t.to_dict()
         return {'raw': raw_bin_data.hex()}
@@ -585,7 +585,7 @@
         if self._construct:
             return self._construct.build(abstract_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_dict(abstract_data)
             return t.to_tlv()
         raise NotImplementedError("%s encoder not yet implemented. Patches 
welcome." % self)
@@ -612,7 +612,7 @@
         if self._construct:
             return b2h(self._construct.build(abstract_data))
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_dict(abstract_data)
             return b2h(t.to_tlv())
         raise NotImplementedError("%s encoder not yet implemented. Patches 
welcome." % self)
@@ -771,7 +771,7 @@
         if self._construct:
             return parse_construct(self._construct, raw_bin_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_tlv(raw_bin_data)
             return t.to_dict()
         return {'raw': raw_bin_data.hex()}
@@ -798,7 +798,7 @@
         if self._construct:
             return parse_construct(self._construct, raw_bin_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_tlv(raw_bin_data)
             return t.to_dict()
         return {'raw': raw_hex_data}
@@ -825,7 +825,7 @@
         if self._construct:
             return b2h(self._construct.build(abstract_data))
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_dict(abstract_data)
             return b2h(t.to_tlv())
         raise NotImplementedError("%s encoder not yet implemented. Patches 
welcome." % self)
@@ -851,7 +851,7 @@
         if self._construct:
             return self._construct.build(abstract_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_dict(abstract_data)
             return t.to_tlv()
         raise NotImplementedError("%s encoder not yet implemented. Patches 
welcome." % self)
@@ -909,7 +909,7 @@
         if self._construct:
             return parse_construct(self._construct, raw_bin_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_tlv(raw_bin_data)
             return t.to_dict()
         return {'raw': raw_hex_data}
@@ -936,7 +936,7 @@
         if self._construct:
             return parse_construct(self._construct, raw_bin_data)
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_tlv(raw_bin_data)
             return t.to_dict()
         return {'raw': raw_hex_data}
@@ -962,7 +962,7 @@
         if self._construct:
             return b2h(filter_dict(self._construct.build(abstract_data)))
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_dict(abstract_data)
             return b2h(t.to_tlv())
         raise NotImplementedError("%s encoder not yet implemented. Patches 
welcome." % self)
@@ -988,7 +988,7 @@
         if self._construct:
             return filter_dict(self._construct.build(abstract_data))
         elif self._tlv:
-            t = self._tlv()
+            t = self._tlv() if inspect.isclass(self._tlv) else self._tlv
             t.from_dict(abstract_data)
             return t.to_tlv()
         raise NotImplementedError("%s encoder not yet implemented. Patches 
welcome." % self)

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27140
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I0a5ec2a860104ffe4524c647105a42505ac394d6
Gerrit-Change-Number: 27140
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-MessageType: merged

Reply via email to