Attention is currently required from: laforge.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/27131 )
Change subject: ts_51_011: Fix type annotation for Tuple[int, int]
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27131
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I7ee1309331902bafab3c9fc6bc33ca713f8c7832
Gerrit-Change-Number: 27131
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Thu, 10 Feb 2022 14:59:47 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: laforge.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/27127 )
Change subject: Better decode of EF.UST, EF.EST and EF.IST
......................................................................
Patch Set 4: Code-Review+1
(1 comment)
File pySim/ts_31_102.py:
https://gerrit.osmocom.org/c/pysim/+/27127/comment/cfcf1ab5_5ec191e6
PS2, Line 536: (int, int)
> I just copid this from ts_51_001.EF_ServiceTable. […]
At least mypy is not happy about this:
test.py:1: error: Syntax error in type annotation
test.py:1: note: Suggestion: Use Tuple[T1, ..., Tn] instead of (T1, ..., Tn)
Found 1 error in 1 file (checked 1 source file)
So I think yes. pylint does not complain though.
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27127
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I34f64d1043698dc385619b2fdda23cb541675f76
Gerrit-Change-Number: 27127
Gerrit-PatchSet: 4
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Thu, 10 Feb 2022 14:59:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: comment
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/27132 )
Change subject: utils.py: type annotations for DataObject related methods
......................................................................
utils.py: type annotations for DataObject related methods
Change-Id: I291a429e9fe9f1a3fd95dcba3020b0e982154c97
---
M pySim/utils.py
1 file changed, 31 insertions(+), 29 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/32/27132/1
diff --git a/pySim/utils.py b/pySim/utils.py
index 0a9be86..9f47197 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -1170,7 +1170,7 @@
simply has any number of different TLVs that may occur in any order at any point, ISO 7816
has the habit of specifying TLV data but with very spcific ordering, or specific choices of
tags at specific points in a stream. This class tries to represent this."""
- def __init__(self, name, desc = None, tag = None):
+ def __init__(self, name:str, desc:str = None, tag:int = None):
"""
Args:
name: A brief, all-lowercase, underscore separated string identifier
@@ -1186,10 +1186,10 @@
def __str__(self):
return self.name
- def __repr__(self):
+ def __repr__(self) -> str:
return '%s(%s)' % (self.__class__, self.name)
- def __or__(self, other):
+ def __or__(self, other) -> 'DataObjectChoice':
"""OR-ing DataObjects together renders a DataObjectChoice."""
if isinstance(other, DataObject):
# DataObject | DataObject = DataObjectChoice
@@ -1197,17 +1197,19 @@
else:
raise TypeError
- def __add__(self, other):
+ def __add__(self, other) -> 'DataObjectCollection':
"""ADD-ing DataObjects together renders a DataObjectCollection."""
if isinstance(other, DataObject):
# DataObject + DataObject = DataObjectCollectin
return DataObjectCollection(None, members=[self, other])
+ else:
+ raise TypeError
- def _compute_tag(self):
+ def _compute_tag(self) -> int:
"""Compute the tag (sometimes the tag encodes part of the value)."""
return self.tag
- def to_dict(self):
+ def to_dict(self) -> dict:
"""Return a dict in form "name: decoded_value" """
return {self.name: self.decoded}
@@ -1219,13 +1221,13 @@
"""
@abc.abstractmethod
- def to_bytes(self):
+ def to_bytes(self) -> bytes:
"""Encode the internal state of this instance into the TLV value part.
Returns:
binary bytes encoding the internal state
"""
- def from_tlv(self, do:bytes):
+ def from_tlv(self, do:bytes) -> bytes:
"""Parse binary TLV representation into internal state. The resulting decoded
representation is _not_ returned, but just internalized in the object instance!
Args:
@@ -1241,7 +1243,7 @@
# return remaining bytes
return do[2+length:]
- def to_tlv(self):
+ def to_tlv(self) -> bytes:
"""Encode internal representation to binary TLV.
Returns:
bytes encoded in TLV format.
@@ -1250,7 +1252,7 @@
return bytes(self._compute_tag()) + bytes(len(val)) + val
# 'codec' interface
- def decode(self, binary:bytes):
+ def decode(self, binary:bytes) -> Tuple[dict, bytes]:
"""Decode a single DOs from the input data.
Args:
binary : binary bytes of encoded data
@@ -1265,12 +1267,12 @@
return (self.to_dict(), remainder)
# 'codec' interface
- def encode(self):
+ def encode(self) -> bytes:
return self.to_tlv()
class TL0_DataObject(DataObject):
"""Data Object that has Tag, Len=0 and no Value part."""
- def __init__(self, name, desc, tag, val=None):
+ def __init__(self, name:str, desc:str, tag:int, val=None):
super().__init__(name, desc, tag)
self.val = val
@@ -1279,7 +1281,7 @@
raise ValueError
self.decoded = self.val
- def to_bytes(self):
+ def to_bytes(self) -> bytes:
return b''
@@ -1287,7 +1289,7 @@
"""A DataObjectCollection consits of multiple Data Objects identified by their tags.
A given encoded DO may contain any of them in any order, and may contain multiple instances
of each DO."""
- def __init__(self, name, desc = None, members=None):
+ def __init__(self, name:str, desc:str = None, members=None):
self.name = name
self.desc = desc
self.members = members or []
@@ -1296,15 +1298,15 @@
self.members_by_tag = { m.tag:m for m in members }
self.members_by_name = { m.name:m for m in members }
- def __str__(self):
+ def __str__(self) -> str:
member_strs = [str(x) for x in self.members]
return '%s(%s)' % (self.name, ','.join(member_strs))
- def __repr__(self):
+ def __repr__(self) -> str:
member_strs = [repr(x) for x in self.members]
return '%s(%s)' % (self.__class__, ','.join(member_strs))
- def __add__(self, other):
+ def __add__(self, other) -> DataObjectCollection:
"""Extending DataCollections with other DataCollections or DataObjects."""
if isinstance(other, DataObjectCollection):
# adding one collection to another
@@ -1317,7 +1319,7 @@
raise TypeError
# 'codec' interface
- def decode(self, binary:bytes):
+ def decode(self, binary:bytes) -> Tuple[List, bytes]:
"""Decode any number of DOs from the collection until the end of the input data,
or uninitialized memory (0xFF) is found.
Args:
@@ -1343,7 +1345,7 @@
return (res, remainder)
# 'codec' interface
- def encode(self, decoded):
+ def encode(self, decoded) -> bytes:
res = bytearray()
for i in decoded:
obj = self.members_by_name(i[0])
@@ -1358,7 +1360,7 @@
"""We overload the add operator here to avoid inheriting it from DataObjecCollection."""
raise TypeError
- def __or__(self, other):
+ def __or__(self, other) -> DataObjectChoice:
"""OR-ing a Choice to another choice extends the choice, as does OR-ing a DataObject."""
if isinstance(other, DataObjectChoice):
# adding one collection to another
@@ -1371,7 +1373,7 @@
raise TypeError
# 'codec' interface
- def decode(self, binary:bytes):
+ def decode(self, binary:bytes) -> Tuple[dict, bytes]:
"""Decode a single DOs from the choice based on the tag.
Args:
binary : binary bytes of encoded data
@@ -1389,7 +1391,7 @@
return (obj.to_dict(), remainder)
# 'codec' interface
- def encode(self, decoded):
+ def encode(self, decoded) -> bytes:
obj = self.members_by_name(decoded[0])
return obj.to_tlv()
@@ -1398,20 +1400,20 @@
ordered sequence of DOs or choices of DOs that have to appear as per the specification.
By wrapping them into this formal DataObjectSequence, we can offer convenience methods
for encoding or decoding an entire sequence."""
- def __init__(self, name, desc=None, sequence=None):
+ def __init__(self, name:str, desc:str=None, sequence=None):
self.sequence = sequence or []
self.name = name
self.desc = desc
- def __str__(self):
+ def __str__(self) -> str:
member_strs = [str(x) for x in self.sequence]
return '%s(%s)' % (self.name, ','.join(member_strs))
- def __repr__(self):
+ def __repr__(self) -> str:
member_strs = [repr(x) for x in self.sequence]
return '%s(%s)' % (self.__class__, ','.join(member_strs))
- def __add__(self, other):
+ def __add__(self, other) -> 'DataObjectSequence':
"""Add (append) a DataObject or DataObjectChoice to the sequence."""
if isinstance(other, 'DataObject'):
return DataObjectSequence(self.name, self.desc, self.sequence + [other])
@@ -1421,7 +1423,7 @@
return DataObjectSequence(self.name, self.desc, self.sequence + other.sequence)
# 'codec' interface
- def decode(self, binary:bytes):
+ def decode(self, binary:bytes) -> Tuple[list, bytes]:
"""Decode a sequence by calling the decoder of each element in the sequence.
Args:
binary : binary bytes of encoded data
@@ -1437,7 +1439,7 @@
return (res, remainder)
# 'codec' interface
- def decode_multi(self, do:bytes):
+ def decode_multi(self, do:bytes) -> Tuple[list, bytes]:
"""Decode multiple occurrences of the sequence from the binary input data.
Args:
do : binary input data to be decoded
@@ -1458,7 +1460,7 @@
return (res, remainder)
# 'codec' interface
- def encode(self, decoded):
+ def encode(self, decoded) -> bytes:
"""Encode a sequence by calling the encoder of each element in the sequence."""
encoded = bytearray()
i = 0
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27132
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I291a429e9fe9f1a3fd95dcba3020b0e982154c97
Gerrit-Change-Number: 27132
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: newchange
laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/27133 )
Change subject: utils.py: Fix some tuple type annotations
......................................................................
utils.py: Fix some tuple type annotations
Change-Id: I869b0268383f6babd9b51d0ddfce448a1d2dda1e
---
M pySim/utils.py
1 file changed, 2 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/33/27133/1
diff --git a/pySim/utils.py b/pySim/utils.py
index 9f47197..325499d 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -161,7 +161,7 @@
# length value coding is equal to BER-TLV
-def comprehensiontlv_parse_one(binary:bytes) -> (dict, int, bytes, bytes):
+def comprehensiontlv_parse_one(binary:bytes) -> Tuple[dict, int, bytes, bytes]:
"""Parse a single TLV IE at the start of the given binary data.
Args:
binary : binary input data of BER-TLV length field
@@ -311,7 +311,7 @@
else:
raise ValueError("Length > 32bits not supported")
-def bertlv_parse_one(binary:bytes) -> (dict, int, bytes, bytes):
+def bertlv_parse_one(binary:bytes) -> Tuple[dict, int, bytes, bytes]:
"""Parse a single TLV IE at the start of the given binary data.
Args:
binary : binary input data of BER-TLV length field
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27133
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I869b0268383f6babd9b51d0ddfce448a1d2dda1e
Gerrit-Change-Number: 27133
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: newchange
Attention is currently required from: laforge, daniel.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27106 )
Change subject: Add hnbgw test
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
To me this looks good. I have the tests running already.
I think it might make sense to squash the whole patchset into one patch. The testsuite is completely new and this patch is only the first patch followed by a series of improvements.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/27106
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I0a2fb795aec83337eda8d9972e6ff264ead61076
Gerrit-Change-Number: 27106
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 10 Feb 2022 14:18:44 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: fixeria.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/27129 )
Change subject: ts_102_221: Handle nested security condition data objects
......................................................................
Patch Set 2:
(3 comments)
File pySim/ts_102_221.py:
https://gerrit.osmocom.org/c/pysim/+/27129/comment/c04026c1_a6f9d08d
PS1, Line 479: def from_bytes(self, binary:bytes):
> Missing type hint: […]
true for this specific implementation of the abstrac method, but in general i's basically any python type, just as long as it can be json-serialized.
https://gerrit.osmocom.org/c/pysim/+/27129/comment/271bb72c_04830da9
PS1, Line 486: def to_bytes(self):
> Missing type hint: […]
Done
https://gerrit.osmocom.org/c/pysim/+/27129/comment/e762d684_16b80310
PS1, Line 489: ++
> Looks like you meant '+=' here? This could be done simpler: […]
Done
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/27129
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Icb09cf3a90303a86fc77406b8b0806b5c926f1be
Gerrit-Change-Number: 27129
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 10 Feb 2022 14:13:33 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: comment