neels has uploaded this change for review. (
https://gerrit.osmocom.org/c/pysim/+/42268?usp=email )
Change subject: saip: add numeric_base indicator to ConfigurableParameter and
ParamSource
......................................................................
saip: add numeric_base indicator to ConfigurableParameter and ParamSource
By default, numeric_base = None, to indicate that there are no explicit
limitations on the number space.
For parameters that are definitely decimal, set numeric_base = 10.
For definitely hexadecimal, set numeric_base = 16.
Do the same for ConfigurableParameter as well as ParamSource, so callers
can match them up: if a parameter is numeric_base = 10, then omit
sources that are numeric_base = 16, and vice versa.
Change-Id: Ib0977bbdd9a85167be7eb46dd331fedd529dae01
---
M pySim/esim/saip/param_source.py
M pySim/esim/saip/personalization.py
2 files changed, 10 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/68/42268/1
diff --git a/pySim/esim/saip/param_source.py b/pySim/esim/saip/param_source.py
index c460375..366d6dd 100644
--- a/pySim/esim/saip/param_source.py
+++ b/pySim/esim/saip/param_source.py
@@ -35,6 +35,7 @@
# This name should be short but descriptive, useful for a user interface,
like 'random decimal digits'.
name = "none"
+ numeric_base = None # or 10 or 16
@classmethod
def from_str(cls, s:str):
@@ -85,6 +86,8 @@
class DecimalRangeSource(InputExpandingParamSource):
"""abstract: decimal numbers with a value range"""
+ numeric_base = 10
+
def __init__(self, num_digits, first_value, last_value):
"""
See also from_str().
@@ -144,6 +147,7 @@
class RandomHexDigitSource(InputExpandingParamSource, RandomSourceMixin):
"""return a different sequence of random hexadecimal digits each"""
name = "random hexadecimal digits"
+ numeric_base = 16
used_keys = set()
def __init__(self, num_digits):
diff --git a/pySim/esim/saip/personalization.py
b/pySim/esim/saip/personalization.py
index 327dbe6..b783177 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -72,6 +72,7 @@
min_len: minimum length of an input str; min_len = 4
max_len: maximum length of an input str; max_len = 8
allow_len: permit only specific lengths; allow_len = (8, 16, 32)
+ numeric_base: indicate hex / decimal, if any; numeric_base = None;
numeric_base = 10; numeric_base = 16
Subclasses may change the meaning of these by overriding validate_val(),
for example that the length counts
resulting bytes instead of a hexstring length. Most subclasses will be
covered by the default validate_val().
@@ -127,6 +128,7 @@
allow_len = None # a list of specific lengths
example_input = None
default_source = None # a param_source.ParamSource subclass
+ numeric_base = None # or 10 or 16
def __init__(self, input_value=None):
self.input_value = input_value # the raw input value as given by caller
@@ -302,6 +304,7 @@
"""
allow_types = (str, int)
allow_chars = '0123456789'
+ numeric_base = 10
@classmethod
def validate_val(cls, val):
@@ -346,6 +349,7 @@
class IntegerParam(ConfigurableParameter):
allow_types = (str, int)
allow_chars = '0123456789'
+ numeric_base = 10
# two integers, if the resulting int should be range limited
min_val = None
@@ -378,6 +382,7 @@
allow_types = (str, io.BytesIO, bytes, bytearray, int)
allow_chars = '0123456789abcdefABCDEF'
strip_chars = ' \t\r\n'
+ numeric_base = 16
default_source = param_source.RandomHexDigitSource
@classmethod
@@ -549,6 +554,7 @@
name = 'SMSP-TP-SC-ADDR'
allow_chars = '+0123456789'
strip_chars = ' \t\r\n'
+ numeric_base = 10
max_len = 21 # '+' and 20 digits
min_len = 1
example_input = '+49301234567'
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42268?usp=email
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ib0977bbdd9a85167be7eb46dd331fedd529dae01
Gerrit-Change-Number: 42268
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>