<matrixProject _class='hudson.matrix.MatrixProject'><action _class='hudson.model.ParametersDefinitionProperty'><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></defaultParameterValue><description>osmo-ci.git branch
</description><name>BRANCH_CI</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>COMMENT_TYPE</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>DISTRO</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_BRANCH</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_CHANGE_NUMBER</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_HOST</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PATCHSET_NUMBER</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PATCHSET_REVISION</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PATCHSET_UPLOADER_NAME</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PORT</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PROJECT</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_REFSPEC</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_REPO_URL</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>PIPELINE_BUILD_URL</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>PROJECT_NAME</name><type>StringParameterDefinition</type></parameterDefinition></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/</displayUrl></action><action _class='org.jenkinsci.plugins.testresultsanalyzer.TestResultsAnalyzerAction'></action><action _class='com.cloudbees.plugins.credentials.ViewCredentialsAction'><stores></stores></action><description>Build job of CI for patches sent to
&lt;a href="https://gerrit.osmocom.org/#/q/status:open+project:pysim"&gt;pysim&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Auto-generated using Jenkins Job Builder. DO NOT EDIT MANUALLY!&lt;/b&gt;
&lt;!-- Managed by Jenkins Job Builder --&gt;</description><displayName>gerrit-pysim-build</displayName><fullDisplayName>gerrit-pysim-build</fullDisplayName><fullName>gerrit-pysim-build</fullName><name>gerrit-pysim-build</name><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/</url><buildable>true</buildable><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,060</shortDescription><upstreamBuild>3060</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42626</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c50f4b4a0222a964710ce3124a66fe13c804be65</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/26/42626/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3060/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1271585</buildingDurationMillis><executingTimeMillis>1271585</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7742</waitingDurationMillis><waitingTimeMillis>7742</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3053</buildNumber><marked><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></marked><revision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3053</displayName><duration>1271585</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3053</fullDisplayName><id>3053</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3053</number><queueId>90068</queueId><result>SUCCESS</result><timestamp>1776337300087</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3053/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>setup.py</affectedPath><affectedPath>requirements.txt</affectedPath><affectedPath>README.md</affectedPath><commitId>c50f4b4a0222a964710ce3124a66fe13c804be65</commitId><timestamp>1776337279000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)

PyYAML versions 5.1–5.3.1 are vulnerable to CVE-2020-1747, which allows
arbitrary code execution through yaml.FullLoader. While PyYAML 5.4+
patches this, the dependency specification (pyyaml &gt;= 5.1) doesn't
guarantee a safe version. Let's increase the requirement to version
5.4 to ensure a safe version of is used.

This patch is based on suggestions from:
"YanTong C &lt;chyeyantong03@gmail.com&gt;"

Change-Id: I901c76c59e9c1bab030eab81038e04a475b32510
</comment><date>2026-04-16 11:01:19 +0000</date><id>c50f4b4a0222a964710ce3124a66fe13c804be65</id><msg>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)</msg><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>setup.py</file></path><path><editType>edit</editType><file>requirements.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,059</shortDescription><upstreamBuild>3059</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42625</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/25/42625/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3059/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1985904</blockedDurationMillis><blockedTimeMillis>1985904</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>986686</buildingDurationMillis><executingTimeMillis>986686</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5607</waitingDurationMillis><waitingTimeMillis>5607</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3052</buildNumber><marked><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></marked><revision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><branch><SHA1>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3052</displayName><duration>986686</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3052</fullDisplayName><id>3052</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3052</number><queueId>89966</queueId><result>SUCCESS</result><timestamp>1776332547781</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3052/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>osmo-smdpp.py</affectedPath><commitId>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</commitId><timestamp>1776254248000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)

Root Cause:
os.path.commonprefix() compares strings character-by-character, NOT by path
components. This is a well-known Python antipattern (Python docs explicitly
warn: "this function may return invalid paths because it works a character
at a time").

Attack Context:
The matchingId parameter is received from a network client via the GSMA
ES9+ authenticateClient API endpoint (POST to
/gsma/rsp2/es9plus/authenticateClient). The SM-DP+ server is a Twisted web
application listening on port 443. An unauthenticated eUICC client sends
the matchingId in the ctxParamsForCommonAuthentication ASN.1 structure.

Fix:
Replace os.path.commonprefix() with proper path component checking:

Change-Id: I7a42b40aa2bbcd5f0ec99f172503354c6eaa9828
</comment><date>2026-04-15 13:57:28 +0200</date><id>33d00b34a7fd22858ae6614cf7e5164cc1fe9ad6</id><msg>osmo-smdpp.py: fix path Traversal Bypass in SM-DP+ (CWE-22)</msg><path><editType>edit</editType><file>osmo-smdpp.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url></run><run><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url></run><run><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url></run><run><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3052/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,058</shortDescription><upstreamBuild>3058</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42626</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/26/42626/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3058/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>997813</blockedDurationMillis><blockedTimeMillis>997813</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>987592</buildingDurationMillis><executingTimeMillis>987592</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6149</waitingDurationMillis><waitingTimeMillis>6149</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3051</buildNumber><marked><SHA1>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</SHA1><branch><SHA1>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</SHA1><name>master</name></branch></marked><revision><SHA1>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</SHA1><branch><SHA1>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</SHA1><branch><SHA1>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3051</displayName><duration>987592</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3051</fullDisplayName><id>3051</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3051</number><queueId>89965</queueId><result>SUCCESS</result><timestamp>1776331559689</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3051/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>setup.py</affectedPath><affectedPath>requirements.txt</affectedPath><affectedPath>README.md</affectedPath><commitId>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</commitId><timestamp>1776259750000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)

PyYAML versions 5.1–5.3.1 are vulnerable to CVE-2020-1747, which allows
arbitrary code execution through yaml.FullLoader. While PyYAML 5.4+
patches this, the dependency specification (pyyaml &gt;= 5.1) doesn't
guarantee a safe version. Let's increase the requirement to version
5.4 to ensure a safe version of is used.

This patch is based on suggestions from:
"YanTong C &lt;chyeyantong03@gmail.com&gt;"

Change-Id: I901c76c59e9c1bab030eab81038e04a475b32510
</comment><date>2026-04-15 15:29:10 +0200</date><id>a05bf3388e0b1e0b9357d39340e162a9dd8a32ca</id><msg>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)</msg><path><editType>edit</editType><file>setup.py</file></path><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>requirements.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3051/</url></run><run><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3051/</url></run><run><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3051/</url></run><run><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3051/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,057</shortDescription><upstreamBuild>3057</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42624</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>816b31eb07ec975275a03fa0f521d228d44ac6f4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/24/42624/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3057/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>996748</buildingDurationMillis><executingTimeMillis>996748</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6150</waitingDurationMillis><waitingTimeMillis>6150</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3050</buildNumber><marked><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><branch><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><name>master</name></branch></marked><revision><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><branch><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><branch><SHA1>816b31eb07ec975275a03fa0f521d228d44ac6f4</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3050</displayName><duration>996748</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3050</fullDisplayName><id>3050</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3050</number><queueId>89964</queueId><result>SUCCESS</result><timestamp>1776330561869</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3050/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim-prog.py</affectedPath><commitId>816b31eb07ec975275a03fa0f521d228d44ac6f4</commitId><timestamp>1776253811000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim-prog: fix Insecure PRNG for SIM Authentication Keys (CWE-338)

Root Cause:
pySim-prog.py uses Python's random module (Mersenne Twister MT19937) to
generate Ki and OPC — the root authentication keys for SIM cards. MT19937
is a deterministic PRNG that is not cryptographically secure. Its internal
state (624 × 32-bit words, 19,937 bits) can be fully recovered after
observing 624 consecutive outputs.

Impact:
1. SIM Card Cloning: An attacker who determines the PRNG state can predict
all Ki/OPC values generated before and after. With these keys, SIM cards
can be cloned.
2. Network Authentication Bypass: Ki/OPC are used in the Milenage algorithm
for 3G/4G/5G authentication. Predictable keys mean an attacker can
authenticate as any subscriber whose SIM was provisioned with the weak RNG.
3. Batch Compromise: In bulk provisioning scenarios (pySim-prog's primary
use case), hundreds or thousands of SIMs may be programmed sequentially.
Compromising one batch means recovering the PRNG state to predict all keys.

Fix:
Replace random.randrange() with os.urandom()

Change-Id: Id3e00d3ec5386f17c1525cacfc7d3f5bba43381f
</comment><date>2026-04-15 13:50:11 +0200</date><id>816b31eb07ec975275a03fa0f521d228d44ac6f4</id><msg>pySim-prog: fix Insecure PRNG for SIM Authentication Keys (CWE-338)</msg><path><editType>edit</editType><file>pySim-prog.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3050/</url></run><run><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3050/</url></run><run><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3050/</url></run><run><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3050/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,056</shortDescription><upstreamBuild>3056</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42301</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>7</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>37724024fa0f0b7292cdfe92a265e2941c540672</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/01/42301/7</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3056/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>989354</buildingDurationMillis><executingTimeMillis>989354</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5445</waitingDurationMillis><waitingTimeMillis>5445</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3049</buildNumber><marked><SHA1>37724024fa0f0b7292cdfe92a265e2941c540672</SHA1><branch><SHA1>37724024fa0f0b7292cdfe92a265e2941c540672</SHA1><name>master</name></branch></marked><revision><SHA1>37724024fa0f0b7292cdfe92a265e2941c540672</SHA1><branch><SHA1>37724024fa0f0b7292cdfe92a265e2941c540672</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>37724024fa0f0b7292cdfe92a265e2941c540672</SHA1><branch><SHA1>37724024fa0f0b7292cdfe92a265e2941c540672</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3049</displayName><duration>989354</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3049</fullDisplayName><id>3049</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3049</number><queueId>89155</queueId><result>SUCCESS</result><timestamp>1776247299951</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3049/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/__init__.py</affectedPath><affectedPath>tests/pySim-shell_test/apdu/test_apdu.script</affectedPath><commitId>37724024fa0f0b7292cdfe92a265e2941c540672</commitId><timestamp>1776245640000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/transport: fix GET RESPONSE behaviour

The current behavior we implement in the method __send_apdu_T0 is
incomplete. Some details discussed in ETSI TS 102 221,
section 7.3.1.1.4, clause 4 seem to be not fully implemented. We
may also end up sending a GET RESPONSE in other APDU cases than
case 4 (the only case that uses the GET RESPONSE command).

Related: OS#6970
Change-Id: I26f0566af0cdd61dcc97f5f502479dc76adc37cc
</comment><date>2026-04-15 11:34:00 +0200</date><id>37724024fa0f0b7292cdfe92a265e2941c540672</id><msg>pySim/transport: fix GET RESPONSE behaviour</msg><path><editType>edit</editType><file>pySim/transport/__init__.py</file></path><path><editType>edit</editType><file>tests/pySim-shell_test/apdu/test_apdu.script</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3049/</url></run><run><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3049/</url></run><run><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3049/</url></run><run><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3049/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,055</shortDescription><upstreamBuild>3055</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42301</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>d7f4d204716176a62c48c4c73cb6a884a873d310</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/01/42301/6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3055/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1012644</buildingDurationMillis><executingTimeMillis>1012644</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6468</waitingDurationMillis><waitingTimeMillis>6468</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3048</buildNumber><marked><SHA1>d7f4d204716176a62c48c4c73cb6a884a873d310</SHA1><branch><SHA1>d7f4d204716176a62c48c4c73cb6a884a873d310</SHA1><name>master</name></branch></marked><revision><SHA1>d7f4d204716176a62c48c4c73cb6a884a873d310</SHA1><branch><SHA1>d7f4d204716176a62c48c4c73cb6a884a873d310</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>d7f4d204716176a62c48c4c73cb6a884a873d310</SHA1><branch><SHA1>d7f4d204716176a62c48c4c73cb6a884a873d310</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3048</displayName><duration>1012644</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3048</fullDisplayName><id>3048</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3048</number><queueId>84590</queueId><result>SUCCESS</result><timestamp>1775750344525</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3048/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/__init__.py</affectedPath><affectedPath>tests/pySim-shell_test/apdu/test_apdu.script</affectedPath><commitId>d7f4d204716176a62c48c4c73cb6a884a873d310</commitId><timestamp>1775750137000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/transport: fix GET RESPONSE behaviour

The current behavior we implement in the method __send_apdu_T0 is
incomplete. Some details discussed in ETSI TS 102 221,
section 7.3.1.1.4, clause 4 seem to be not fully implemented. We
may also end up sending a GET RESPONSE in other APDU cases than
case 4 (the only case that uses the GET RESPONSE command).

Related: OS#6970
Change-Id: I26f0566af0cdd61dcc97f5f502479dc76adc37cc
</comment><date>2026-04-09 17:55:37 +0200</date><id>d7f4d204716176a62c48c4c73cb6a884a873d310</id><msg>pySim/transport: fix GET RESPONSE behaviour</msg><path><editType>edit</editType><file>pySim/transport/__init__.py</file></path><path><editType>edit</editType><file>tests/pySim-shell_test/apdu/test_apdu.script</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3048/</url></run><run><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3048/</url></run><run><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3048/</url></run><run><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3048/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,054</shortDescription><upstreamBuild>3054</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42301</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>63d2a76bedfdd332ad241096c3f6c8d8b33da800</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/01/42301/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3054/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1015045</buildingDurationMillis><executingTimeMillis>1015045</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6770</waitingDurationMillis><waitingTimeMillis>6770</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3047</buildNumber><marked><SHA1>63d2a76bedfdd332ad241096c3f6c8d8b33da800</SHA1><branch><SHA1>63d2a76bedfdd332ad241096c3f6c8d8b33da800</SHA1><name>master</name></branch></marked><revision><SHA1>63d2a76bedfdd332ad241096c3f6c8d8b33da800</SHA1><branch><SHA1>63d2a76bedfdd332ad241096c3f6c8d8b33da800</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>63d2a76bedfdd332ad241096c3f6c8d8b33da800</SHA1><branch><SHA1>63d2a76bedfdd332ad241096c3f6c8d8b33da800</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3047</displayName><duration>1015045</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3047</fullDisplayName><id>3047</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3047</number><queueId>84581</queueId><result>SUCCESS</result><timestamp>1775748803997</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3047/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/__init__.py</affectedPath><commitId>63d2a76bedfdd332ad241096c3f6c8d8b33da800</commitId><timestamp>1775746855000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/transport: fix GET RESPONSE behaviour

The current behavior we implement in the method __send_apdu_T0 is
incomplete. Some details discussed in ETSI TS 102 221,
section 7.3.1.1.4, clause 4 seem to be not fully implemented. We
may also end up sending a GET RESPONSE in other APDU cases than
case 4 (the only case that uses the GET RESPONSE command).

Related: OS#6970
Change-Id: I26f0566af0cdd61dcc97f5f502479dc76adc37cc
</comment><date>2026-04-09 17:00:55 +0200</date><id>63d2a76bedfdd332ad241096c3f6c8d8b33da800</id><msg>pySim/transport: fix GET RESPONSE behaviour</msg><path><editType>edit</editType><file>pySim/transport/__init__.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3047/</url></run><run><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3047/</url></run><run><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3047/</url></run><run><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3047/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,052</shortDescription><upstreamBuild>3052</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42554</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>45220e00d567533cea4165d8e04994d8ef2ce365</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/54/42554/6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3052/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>5026668</blockedDurationMillis><blockedTimeMillis>5026668</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1008660</buildingDurationMillis><executingTimeMillis>1008660</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5380</waitingDurationMillis><waitingTimeMillis>5380</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3046</buildNumber><marked><SHA1>45220e00d567533cea4165d8e04994d8ef2ce365</SHA1><branch><SHA1>45220e00d567533cea4165d8e04994d8ef2ce365</SHA1><name>master</name></branch></marked><revision><SHA1>45220e00d567533cea4165d8e04994d8ef2ce365</SHA1><branch><SHA1>45220e00d567533cea4165d8e04994d8ef2ce365</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>45220e00d567533cea4165d8e04994d8ef2ce365</SHA1><branch><SHA1>45220e00d567533cea4165d8e04994d8ef2ce365</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3046</displayName><duration>1008660</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3046</fullDisplayName><id>3046</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3046</number><queueId>82996</queueId><result>SUCCESS</result><timestamp>1775582016769</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3046/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>45220e00d567533cea4165d8e04994d8ef2ce365</commitId><timestamp>1775576842000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: offer interactive retry on error

When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'.  If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.

Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
</comment><date>2026-04-07 22:47:22 +0700</date><id>45220e00d567533cea4165d8e04994d8ef2ce365</id><msg>filesystem: JsonEditor: offer interactive retry on error</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3046/</url></run><run><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3046/</url></run><run><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3046/</url></run><run><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3046/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,053</shortDescription><upstreamBuild>3053</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42597</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>6b5fa38f147c41673bc89456984d0fe28c4c963b</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/97/42597/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3053/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>4015314</blockedDurationMillis><blockedTimeMillis>4015314</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1009607</buildingDurationMillis><executingTimeMillis>1009607</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5731</waitingDurationMillis><waitingTimeMillis>5731</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3045</buildNumber><marked><SHA1>6b5fa38f147c41673bc89456984d0fe28c4c963b</SHA1><branch><SHA1>6b5fa38f147c41673bc89456984d0fe28c4c963b</SHA1><name>master</name></branch></marked><revision><SHA1>6b5fa38f147c41673bc89456984d0fe28c4c963b</SHA1><branch><SHA1>6b5fa38f147c41673bc89456984d0fe28c4c963b</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>6b5fa38f147c41673bc89456984d0fe28c4c963b</SHA1><branch><SHA1>6b5fa38f147c41673bc89456984d0fe28c4c963b</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3045</displayName><duration>1009607</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3045</fullDisplayName><id>3045</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3045</number><queueId>82995</queueId><result>SUCCESS</result><timestamp>1775581004805</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3045/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/unittests/test_files.py</affectedPath><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>6b5fa38f147c41673bc89456984d0fe28c4c963b</commitId><timestamp>1775576842000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>tests: fix TransRecEF _test_de_encode to operate at file level

Previously, _test_de_encode vectors for TransRecEF subclasses were tested
via decode_record_hex()/encode_record_hex(), i.e. one record at a time,
with the decoded value being a scalar.

Switch test_de_encode_record() in TransRecEF_Test to use decode_hex() /
encode_hex() instead, so that vectors represent whole-file content
(decoded value is a list of records) -- consistent with how LinFixedEF
handles _test_de_encode.  Update all existing vectors accordingly.

Change-Id: I4a9610f9ee39833cd0c90f64f89f5fbdd6f0846d
</comment><date>2026-04-07 22:47:22 +0700</date><id>6b5fa38f147c41673bc89456984d0fe28c4c963b</id><msg>tests: fix TransRecEF _test_de_encode to operate at file level</msg><path><editType>edit</editType><file>tests/unittests/test_files.py</file></path><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3045/</url></run><run><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3045/</url></run><run><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3045/</url></run><run><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3045/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,051</shortDescription><upstreamBuild>3051</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42598</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>f2567de387c71cf637a4cb1365089ba7173870b0</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/98/42598/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3051/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>3006520</blockedDurationMillis><blockedTimeMillis>3006520</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1005623</buildingDurationMillis><executingTimeMillis>1005623</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5731</waitingDurationMillis><waitingTimeMillis>5731</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3044</buildNumber><marked><SHA1>f2567de387c71cf637a4cb1365089ba7173870b0</SHA1><branch><SHA1>f2567de387c71cf637a4cb1365089ba7173870b0</SHA1><name>master</name></branch></marked><revision><SHA1>f2567de387c71cf637a4cb1365089ba7173870b0</SHA1><branch><SHA1>f2567de387c71cf637a4cb1365089ba7173870b0</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>f2567de387c71cf637a4cb1365089ba7173870b0</SHA1><branch><SHA1>f2567de387c71cf637a4cb1365089ba7173870b0</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3044</displayName><duration>1005623</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3044</fullDisplayName><id>3044</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3044</number><queueId>82994</queueId><result>SUCCESS</result><timestamp>1775579996010</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3044/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>f2567de387c71cf637a4cb1365089ba7173870b0</commitId><timestamp>1775576842000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>pySim/ts_51_011.py: add multi-record test vector for EF_PL

Change-Id: I9f7a444b18056b1683cbd52a25af950125531746
</comment><date>2026-04-07 22:47:22 +0700</date><id>f2567de387c71cf637a4cb1365089ba7173870b0</id><msg>pySim/ts_51_011.py: add multi-record test vector for EF_PL</msg><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3044/</url></run><run><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3044/</url></run><run><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3044/</url></run><run><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3044/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,050</shortDescription><upstreamBuild>3050</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42553</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>5828c92c6693414301639ab5b84dc75529fe27ab</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42553/6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3050/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1993172</blockedDurationMillis><blockedTimeMillis>1993172</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1013514</buildingDurationMillis><executingTimeMillis>1013514</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6189</waitingDurationMillis><waitingTimeMillis>6189</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3043</buildNumber><marked><SHA1>5828c92c6693414301639ab5b84dc75529fe27ab</SHA1><branch><SHA1>5828c92c6693414301639ab5b84dc75529fe27ab</SHA1><name>master</name></branch></marked><revision><SHA1>5828c92c6693414301639ab5b84dc75529fe27ab</SHA1><branch><SHA1>5828c92c6693414301639ab5b84dc75529fe27ab</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>5828c92c6693414301639ab5b84dc75529fe27ab</SHA1><branch><SHA1>5828c92c6693414301639ab5b84dc75529fe27ab</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3043</displayName><duration>1013514</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3043</fullDisplayName><id>3043</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3043</number><queueId>82993</queueId><result>SUCCESS</result><timestamp>1775578981860</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3043/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>5828c92c6693414301639ab5b84dc75529fe27ab</commitId><timestamp>1775576842000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: use NamedTemporaryFile

A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it.  Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.

Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
</comment><date>2026-04-07 22:47:22 +0700</date><id>5828c92c6693414301639ab5b84dc75529fe27ab</id><msg>filesystem: JsonEditor: use NamedTemporaryFile</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3043/</url></run><run><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3043/</url></run><run><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3043/</url></run><run><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3043/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,047</shortDescription><upstreamBuild>3047</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42553</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>2507372474614b3473b2fe6f1709f6c06f9f985f</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42553/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3047/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2107421</blockedDurationMillis><blockedTimeMillis>2107421</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>2051456</buildingDurationMillis><executingTimeMillis>2051456</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>8194</waitingDurationMillis><waitingTimeMillis>8194</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3042</buildNumber><marked><SHA1>2507372474614b3473b2fe6f1709f6c06f9f985f</SHA1><branch><SHA1>2507372474614b3473b2fe6f1709f6c06f9f985f</SHA1><name>master</name></branch></marked><revision><SHA1>2507372474614b3473b2fe6f1709f6c06f9f985f</SHA1><branch><SHA1>2507372474614b3473b2fe6f1709f6c06f9f985f</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>2507372474614b3473b2fe6f1709f6c06f9f985f</SHA1><branch><SHA1>2507372474614b3473b2fe6f1709f6c06f9f985f</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3042</displayName><duration>2051456</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3042</fullDisplayName><id>3042</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3042</number><queueId>82965</queueId><result>SUCCESS</result><timestamp>1775576929214</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3042/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>2507372474614b3473b2fe6f1709f6c06f9f985f</commitId><timestamp>1775573943000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: use NamedTemporaryFile

A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it.  Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.

Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
</comment><date>2026-04-07 21:59:03 +0700</date><id>2507372474614b3473b2fe6f1709f6c06f9f985f</id><msg>filesystem: JsonEditor: use NamedTemporaryFile</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3042/</url></run><run><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3042/</url></run><run><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3042/</url></run><run><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3042/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,048</shortDescription><upstreamBuild>3048</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42554</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c0129cef17e113654f25c4b5d75d50102cf61eb7</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/54/42554/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3048/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1062012</blockedDurationMillis><blockedTimeMillis>1062012</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1045807</buildingDurationMillis><executingTimeMillis>1045807</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5118</waitingDurationMillis><waitingTimeMillis>5118</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3041</buildNumber><marked><SHA1>c0129cef17e113654f25c4b5d75d50102cf61eb7</SHA1><branch><SHA1>c0129cef17e113654f25c4b5d75d50102cf61eb7</SHA1><name>master</name></branch></marked><revision><SHA1>c0129cef17e113654f25c4b5d75d50102cf61eb7</SHA1><branch><SHA1>c0129cef17e113654f25c4b5d75d50102cf61eb7</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c0129cef17e113654f25c4b5d75d50102cf61eb7</SHA1><branch><SHA1>c0129cef17e113654f25c4b5d75d50102cf61eb7</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3041</displayName><duration>1045807</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3041</fullDisplayName><id>3041</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3041</number><queueId>82962</queueId><result>SUCCESS</result><timestamp>1775575879304</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3041/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>c0129cef17e113654f25c4b5d75d50102cf61eb7</commitId><timestamp>1775574079000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: offer interactive retry on error

When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'.  If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.

Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
</comment><date>2026-04-07 22:01:19 +0700</date><id>c0129cef17e113654f25c4b5d75d50102cf61eb7</id><msg>filesystem: JsonEditor: offer interactive retry on error</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3041/</url></run><run><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3041/</url></run><run><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3041/</url></run><run><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3041/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,049</shortDescription><upstreamBuild>3049</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42552</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>e63634ed0fd338381d612e27ea066dd01c72caeb</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/52/42552/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3049/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1060836</buildingDurationMillis><executingTimeMillis>1060836</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5386</waitingDurationMillis><waitingTimeMillis>5386</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3040</buildNumber><marked><SHA1>e63634ed0fd338381d612e27ea066dd01c72caeb</SHA1><branch><SHA1>e63634ed0fd338381d612e27ea066dd01c72caeb</SHA1><name>master</name></branch></marked><revision><SHA1>e63634ed0fd338381d612e27ea066dd01c72caeb</SHA1><branch><SHA1>e63634ed0fd338381d612e27ea066dd01c72caeb</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>e63634ed0fd338381d612e27ea066dd01c72caeb</SHA1><branch><SHA1>e63634ed0fd338381d612e27ea066dd01c72caeb</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3040</displayName><duration>1060836</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3040</fullDisplayName><id>3040</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3040</number><queueId>82961</queueId><result>SUCCESS</result><timestamp>1775574817287</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3040/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>e63634ed0fd338381d612e27ea066dd01c72caeb</commitId><timestamp>1775573786000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: edit_{binary,record}_decoded: add encode/decode examples

When invoking `edit_binary_decoded` or `edit_record_decoded`, the
temp file opened in the editor now contains the EF's encode/decode
test vectors as //-comment lines below the JSON content, similar to
how 'git commit' appends comments to the commit message template.
The comment block is stripped before JSON parsing on save,
so it has no effect on the written data.

The feature is implemented via a new module-level JsonEditor context
manager class that encapsulates the full edit cycle:

* write JSON + examples to a TemporaryDirectory
* invoke the editor
* read back, strip //-comments, parse and return the result

Change-Id: I5a046a9c7ba7e08a98cf643d5a26bc669539b38f
Related: OS#6900
</comment><date>2026-04-07 21:56:26 +0700</date><id>e63634ed0fd338381d612e27ea066dd01c72caeb</id><msg>filesystem: edit_{binary,record}_decoded: add encode/decode examples</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3040/</url></run><run><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3040/</url></run><run><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3040/</url></run><run><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3040/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,046</shortDescription><upstreamBuild>3046</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42475</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>d5aa963caa89ea804aa86a098c6ccc41d30e2840</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/75/42475/4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3046/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1708955</buildingDurationMillis><executingTimeMillis>1708955</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5301</waitingDurationMillis><waitingTimeMillis>5301</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3039</buildNumber><marked><SHA1>d5aa963caa89ea804aa86a098c6ccc41d30e2840</SHA1><branch><SHA1>d5aa963caa89ea804aa86a098c6ccc41d30e2840</SHA1><name>master</name></branch></marked><revision><SHA1>d5aa963caa89ea804aa86a098c6ccc41d30e2840</SHA1><branch><SHA1>d5aa963caa89ea804aa86a098c6ccc41d30e2840</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>d5aa963caa89ea804aa86a098c6ccc41d30e2840</SHA1><branch><SHA1>d5aa963caa89ea804aa86a098c6ccc41d30e2840</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3039</displayName><duration>1708955</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3039</fullDisplayName><id>3039</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3039</number><queueId>78837</queueId><result>SUCCESS</result><timestamp>1775127348054</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3039/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/pcsc.py</affectedPath><commitId>d5aa963caa89ea804aa86a098c6ccc41d30e2840</commitId><timestamp>1775127210000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pysim/pcsc: do not use getProtocol for protocol selection

The documentation of the getProtocol provided by pyscard says:

"Return bit mask for the protocol of connection, or None if no
protocol set. The return value is a bit mask of
CardConnection.T0_protocol, CardConnection.T1_protocol,
CardConnection.RAW_protocol, CardConnection.T15_protocol"

This suggests that the purpose of getProtocol is not to determine
which protocols are supported. Its purpose is to determine which
protocol is currently selected (either through auto selection or
through the explicit selection made by the API user). This means
we are using getProtocol wrong.

So far this was no problem, since the auto-selected protocol
should be a supported protocol anyway. However, the automatic
protocol selection may not always return a correct result (see
bug report from THD-siegfried [1]).

Let's not trust the automatic protocol selection. Instead let's
parse the ATR and make the decision based on the TD1/TD2 bytes).

[1] https://osmocom.org/issues/6952

Related: OS#6952
Change-Id: Ib119948aa68c430e42ac84daec8b9bd542db7963
</comment><date>2026-04-02 12:53:30 +0200</date><id>d5aa963caa89ea804aa86a098c6ccc41d30e2840</id><msg>pysim/pcsc: do not use getProtocol for protocol selection</msg><path><editType>edit</editType><file>pySim/transport/pcsc.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3039/</url></run><run><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3039/</url></run><run><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3039/</url></run><run><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3039/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,044</shortDescription><upstreamBuild>3044</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42552</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>319e7c98188999c061eaed863d72fb1e15229e24</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/52/42552/4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3044/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>3161735</blockedDurationMillis><blockedTimeMillis>3161735</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1174643</buildingDurationMillis><executingTimeMillis>1174643</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5516</waitingDurationMillis><waitingTimeMillis>5516</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3038</buildNumber><marked><SHA1>319e7c98188999c061eaed863d72fb1e15229e24</SHA1><branch><SHA1>319e7c98188999c061eaed863d72fb1e15229e24</SHA1><name>master</name></branch></marked><revision><SHA1>319e7c98188999c061eaed863d72fb1e15229e24</SHA1><branch><SHA1>319e7c98188999c061eaed863d72fb1e15229e24</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>319e7c98188999c061eaed863d72fb1e15229e24</SHA1><branch><SHA1>319e7c98188999c061eaed863d72fb1e15229e24</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3038</displayName><duration>1174643</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3038</fullDisplayName><id>3038</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3038</number><queueId>77949</queueId><result>SUCCESS</result><timestamp>1775051610815</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3038/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>319e7c98188999c061eaed863d72fb1e15229e24</commitId><timestamp>1775048369000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: edit_{binary,record}_decoded: add encode/decode examples

When invoking `edit_binary_decoded` or `edit_record_decoded`, the
temp file opened in the editor now contains the EF's encode/decode
test vectors as //-comment lines below the JSON content, similar to
how 'git commit' appends comments to the commit message template.
The comment block is stripped before JSON parsing on save,
so it has no effect on the written data.

The feature is implemented via a new module-level JsonEditor context
manager class that encapsulates the full edit cycle:

* write JSON + examples to a TemporaryDirectory
* invoke the editor
* read back, strip //-comments, parse and return the result

Change-Id: I5a046a9c7ba7e08a98cf643d5a26bc669539b38f
Related: OS#6900
</comment><date>2026-04-01 19:59:29 +0700</date><id>319e7c98188999c061eaed863d72fb1e15229e24</id><msg>filesystem: edit_{binary,record}_decoded: add encode/decode examples</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3038/</url></run><run><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3038/</url></run><run><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3038/</url></run><run><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3038/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,043</shortDescription><upstreamBuild>3043</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42554</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/54/42554/4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3043/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2109224</blockedDurationMillis><blockedTimeMillis>2109224</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1045835</buildingDurationMillis><executingTimeMillis>1045835</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5743</waitingDurationMillis><waitingTimeMillis>5743</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3037</buildNumber><marked><SHA1>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</SHA1><branch><SHA1>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</SHA1><name>master</name></branch></marked><revision><SHA1>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</SHA1><branch><SHA1>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</SHA1><branch><SHA1>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3037</displayName><duration>1045835</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3037</fullDisplayName><id>3037</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3037</number><queueId>77948</queueId><result>SUCCESS</result><timestamp>1775050558303</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3037/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</commitId><timestamp>1775048369000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: offer interactive retry on error

When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'.  If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.

Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
</comment><date>2026-04-01 19:59:29 +0700</date><id>7d6c76b5c9b38177a03724e97f9ac60f88ac97d9</id><msg>filesystem: JsonEditor: offer interactive retry on error</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3037/</url></run><run><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3037/</url></run><run><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3037/</url></run><run><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3037/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,045</shortDescription><upstreamBuild>3045</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42553</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42553/4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3045/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1054704</blockedDurationMillis><blockedTimeMillis>1054704</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1050884</buildingDurationMillis><executingTimeMillis>1050884</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5743</waitingDurationMillis><waitingTimeMillis>5743</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3036</buildNumber><marked><SHA1>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</SHA1><branch><SHA1>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</SHA1><name>master</name></branch></marked><revision><SHA1>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</SHA1><branch><SHA1>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</SHA1><branch><SHA1>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3036</displayName><duration>1050884</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3036</fullDisplayName><id>3036</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3036</number><queueId>77947</queueId><result>SUCCESS</result><timestamp>1775049503781</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3036/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</commitId><timestamp>1775048369000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: use NamedTemporaryFile

A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it.  Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.

Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
</comment><date>2026-04-01 19:59:29 +0700</date><id>39f32cee46a919df2af622cb1e1c75d1d01b0e0e</id><msg>filesystem: JsonEditor: use NamedTemporaryFile</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3036/</url></run><run><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3036/</url></run><run><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3036/</url></run><run><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3036/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,042</shortDescription><upstreamBuild>3042</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42551</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>1704541a494eacf031e7b2ff3b90c0203781e615</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/51/42551/4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3042/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1053760</buildingDurationMillis><executingTimeMillis>1053760</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5743</waitingDurationMillis><waitingTimeMillis>5743</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3035</buildNumber><marked><SHA1>1704541a494eacf031e7b2ff3b90c0203781e615</SHA1><branch><SHA1>1704541a494eacf031e7b2ff3b90c0203781e615</SHA1><name>master</name></branch></marked><revision><SHA1>1704541a494eacf031e7b2ff3b90c0203781e615</SHA1><branch><SHA1>1704541a494eacf031e7b2ff3b90c0203781e615</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>1704541a494eacf031e7b2ff3b90c0203781e615</SHA1><branch><SHA1>1704541a494eacf031e7b2ff3b90c0203781e615</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3035</displayName><duration>1053760</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3035</fullDisplayName><id>3035</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3035</number><queueId>77946</queueId><result>SUCCESS</result><timestamp>1775048449076</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3035/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/index.rst</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>docs/pysim_fs_sphinx.py</affectedPath><affectedPath>docs/conf.py</affectedPath><affectedPath>tests/unittests/test_fs_coverage.py</affectedPath><commitId>1704541a494eacf031e7b2ff3b90c0203781e615</commitId><timestamp>1775048369000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs: auto-generate Card Filesystem Reference

Add a Sphinx extension (docs/pysim_fs_sphinx.py) that hooks into the
builder-inited event and generates docs/filesystem.rst before Sphinx
reads any source files.

The generated page contains a hierarchical listing of all implemented
EFs and DFs, organised by application/specification (UICC/TS 102 221,
ADF.USIM/TS 31.102, ADF.ISIM/TS 31.103, SIM/TS 51.011).  For each file,
the class docstring and any _test_de_encode / _test_decode vectors
are included as an encoding/decoding example table.

docs/filesystem.rst is fully generated at build time and is therefore
added to .gitignore.

Add tests/unittests/test_fs_coverage.py that walks all pySim.* modules
and verifies that every CardProfile, CardApplication, and standalone
CardDF subclass with EF/DF children is either listed in the SECTIONS
(and will appear in the docs) or explicitly EXCLUDED.

Change-Id: I06ddeefc6c11e04d7c24e116f3f39c8a6635856f
Related: OS#6316
</comment><date>2026-04-01 19:59:29 +0700</date><id>1704541a494eacf031e7b2ff3b90c0203781e615</id><msg>docs: auto-generate Card Filesystem Reference</msg><path><editType>edit</editType><file>docs/index.rst</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>tests/unittests/test_fs_coverage.py</file></path><path><editType>edit</editType><file>docs/conf.py</file></path><path><editType>add</editType><file>docs/pysim_fs_sphinx.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3035/</url></run><run><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3035/</url></run><run><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3035/</url></run><run><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3035/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,041</shortDescription><upstreamBuild>3041</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42553</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42553/3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3041/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>3157306</blockedDurationMillis><blockedTimeMillis>3157306</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1048896</buildingDurationMillis><executingTimeMillis>1048896</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5068</waitingDurationMillis><waitingTimeMillis>5068</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3034</buildNumber><marked><SHA1>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</SHA1><branch><SHA1>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</SHA1><name>master</name></branch></marked><revision><SHA1>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</SHA1><branch><SHA1>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</SHA1><branch><SHA1>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3034</displayName><duration>1048896</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3034</fullDisplayName><id>3034</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3034</number><queueId>77067</queueId><result>SUCCESS</result><timestamp>1774997143270</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3034/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</commitId><timestamp>1774993911000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: use NamedTemporaryFile

A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it.  Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.

Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
</comment><date>2026-04-01 04:51:51 +0700</date><id>e3fc20a419ff26e5ec470fe3b9287255bb66e5c3</id><msg>filesystem: JsonEditor: use NamedTemporaryFile</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3034/</url></run><run><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3034/</url></run><run><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3034/</url></run><run><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3034/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,038</shortDescription><upstreamBuild>3038</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42551</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>445ca57e829670114feb4b9a85848388f41ab3d7</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/51/42551/3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3038/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2108937</blockedDurationMillis><blockedTimeMillis>2108937</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1047941</buildingDurationMillis><executingTimeMillis>1047941</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5298</waitingDurationMillis><waitingTimeMillis>5298</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3033</buildNumber><marked><SHA1>445ca57e829670114feb4b9a85848388f41ab3d7</SHA1><branch><SHA1>445ca57e829670114feb4b9a85848388f41ab3d7</SHA1><name>master</name></branch></marked><revision><SHA1>445ca57e829670114feb4b9a85848388f41ab3d7</SHA1><branch><SHA1>445ca57e829670114feb4b9a85848388f41ab3d7</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>445ca57e829670114feb4b9a85848388f41ab3d7</SHA1><branch><SHA1>445ca57e829670114feb4b9a85848388f41ab3d7</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3033</displayName><duration>1047941</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3033</fullDisplayName><id>3033</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3033</number><queueId>77066</queueId><result>SUCCESS</result><timestamp>1774996094899</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3033/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/index.rst</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>docs/pysim_fs_sphinx.py</affectedPath><affectedPath>docs/conf.py</affectedPath><affectedPath>tests/unittests/test_fs_coverage.py</affectedPath><commitId>445ca57e829670114feb4b9a85848388f41ab3d7</commitId><timestamp>1774993911000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs: auto-generate Card Filesystem Reference

Add a Sphinx extension (docs/pysim_fs_sphinx.py) that hooks into the
builder-inited event and generates docs/filesystem.rst before Sphinx
reads any source files.

The generated page contains a hierarchical listing of all implemented
EFs and DFs, organised by application/specification (UICC/TS 102 221,
ADF.USIM/TS 31.102, ADF.ISIM/TS 31.103, SIM/TS 51.011).  For each file,
the class docstring and any _test_de_encode / _test_decode vectors
are included as an encoding/decoding example table.

docs/filesystem.rst is fully generated at build time and is therefore
added to .gitignore.

Add tests/unittests/test_fs_coverage.py that walks all pySim.* modules
and verifies that every CardProfile, CardApplication, and standalone
CardDF subclass with EF/DF children is either listed in the SECTIONS
(and will appear in the docs) or explicitly EXCLUDED.

Change-Id: I06ddeefc6c11e04d7c24e116f3f39c8a6635856f
Related: OS#6316
</comment><date>2026-04-01 04:51:51 +0700</date><id>445ca57e829670114feb4b9a85848388f41ab3d7</id><msg>docs: auto-generate Card Filesystem Reference</msg><path><editType>edit</editType><file>docs/conf.py</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>tests/unittests/test_fs_coverage.py</file></path><path><editType>add</editType><file>docs/pysim_fs_sphinx.py</file></path><path><editType>edit</editType><file>docs/index.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3033/</url></run><run><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3033/</url></run><run><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3033/</url></run><run><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3033/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,039</shortDescription><upstreamBuild>3039</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42554</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>6c098111718235449be731a8664e4bf73ce6eb6f</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/54/42554/3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3039/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1056239</blockedDurationMillis><blockedTimeMillis>1056239</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1051547</buildingDurationMillis><executingTimeMillis>1051547</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5299</waitingDurationMillis><waitingTimeMillis>5299</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3032</buildNumber><marked><SHA1>6c098111718235449be731a8664e4bf73ce6eb6f</SHA1><branch><SHA1>6c098111718235449be731a8664e4bf73ce6eb6f</SHA1><name>master</name></branch></marked><revision><SHA1>6c098111718235449be731a8664e4bf73ce6eb6f</SHA1><branch><SHA1>6c098111718235449be731a8664e4bf73ce6eb6f</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>6c098111718235449be731a8664e4bf73ce6eb6f</SHA1><branch><SHA1>6c098111718235449be731a8664e4bf73ce6eb6f</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3032</displayName><duration>1051547</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3032</fullDisplayName><id>3032</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3032</number><queueId>77065</queueId><result>SUCCESS</result><timestamp>1774995042199</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3032/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>6c098111718235449be731a8664e4bf73ce6eb6f</commitId><timestamp>1774993911000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: offer interactive retry on error

When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'.  If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.

Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
</comment><date>2026-04-01 04:51:51 +0700</date><id>6c098111718235449be731a8664e4bf73ce6eb6f</id><msg>filesystem: JsonEditor: offer interactive retry on error</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3032/</url></run><run><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3032/</url></run><run><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3032/</url></run><run><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3032/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,040</shortDescription><upstreamBuild>3040</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42552</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/52/42552/3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3040/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1052902</buildingDurationMillis><executingTimeMillis>1052902</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5520</waitingDurationMillis><waitingTimeMillis>5520</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3031</buildNumber><marked><SHA1>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</SHA1><branch><SHA1>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</SHA1><name>master</name></branch></marked><revision><SHA1>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</SHA1><branch><SHA1>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</SHA1><branch><SHA1>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3031</displayName><duration>1052902</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3031</fullDisplayName><id>3031</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3031</number><queueId>77064</queueId><result>SUCCESS</result><timestamp>1774993985962</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3031/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</commitId><timestamp>1774993911000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: edit_{binary,record}_decoded: add encode/decode examples

When invoking `edit_binary_decoded` or `edit_record_decoded`, the
temp file opened in the editor now contains the EF's encode/decode
test vectors as //-comment lines below the JSON content, similar to
how 'git commit' appends comments to the commit message template.
The comment block is stripped before JSON parsing on save,
so it has no effect on the written data.

The feature is implemented via a new module-level JsonEditor context
manager class that encapsulates the full edit cycle:

* write JSON + examples to a TemporaryDirectory
* invoke the editor
* read back, strip //-comments, parse and return the result

Change-Id: I5a046a9c7ba7e08a98cf643d5a26bc669539b38f
Related: OS#6900
</comment><date>2026-04-01 04:51:51 +0700</date><id>8db3207931ab5d776a8cf020e80a6c4ca2dd717c</id><msg>filesystem: edit_{binary,record}_decoded: add encode/decode examples</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3031/</url></run><run><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3031/</url></run><run><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3031/</url></run><run><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3031/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,035</shortDescription><upstreamBuild>3035</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42543</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>a786590906996fe282b95b7d5e781f7d5a2625a0</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/43/42543/3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3035/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>5250270</blockedDurationMillis><blockedTimeMillis>5250270</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1179445</buildingDurationMillis><executingTimeMillis>1179445</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7902</waitingDurationMillis><waitingTimeMillis>7902</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3030</buildNumber><marked><SHA1>a786590906996fe282b95b7d5e781f7d5a2625a0</SHA1><branch><SHA1>a786590906996fe282b95b7d5e781f7d5a2625a0</SHA1><name>master</name></branch></marked><revision><SHA1>a786590906996fe282b95b7d5e781f7d5a2625a0</SHA1><branch><SHA1>a786590906996fe282b95b7d5e781f7d5a2625a0</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>a786590906996fe282b95b7d5e781f7d5a2625a0</SHA1><branch><SHA1>a786590906996fe282b95b7d5e781f7d5a2625a0</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3030</displayName><duration>1179445</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3030</fullDisplayName><id>3030</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3030</number><queueId>76577</queueId><result>SUCCESS</result><timestamp>1774964759748</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3030/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/conf.py</affectedPath><commitId>a786590906996fe282b95b7d5e781f7d5a2625a0</commitId><timestamp>1774959433000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/conf.py: silence autosectionlabel duplicate-label warnings

sphinxarg.ext generates generic sub-headings ("Named arguments",
"Positional arguments", "Sub-commands", "General options", ...) for
every argparse command and tool.  These repeat across many files and
trigger large numbers of autosectionlabel duplicate-label warnings.

Two-pronged fix:

* `autosectionlabel_maxdepth = 3` eliminates the depth-4+ warnings
  (sub-headings inside each individual command block).
* `suppress_warnings` per file silences the residual depth-3 collisions
  ("serial reader", "decode_hex", "sub-commands", ...) that still
  appear across tool documentation files.

Cross-references into these generic argparse-generated sections are not
a supported use-case, so suppressing the warnings is appropriate.

Change-Id: I9cdf2a4f6cbd435b16b90ab668205600ffd7c3b0
</comment><date>2026-03-31 19:17:13 +0700</date><id>a786590906996fe282b95b7d5e781f7d5a2625a0</id><msg>docs/conf.py: silence autosectionlabel duplicate-label warnings</msg><path><editType>edit</editType><file>docs/conf.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3030/</url></run><run><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3030/</url></run><run><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3030/</url></run><run><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3030/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,034</shortDescription><upstreamBuild>3034</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42551</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>f7b1df85f5f360b89d188cc018fea4d6ace10d24</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/51/42551/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3034/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>4204816</blockedDurationMillis><blockedTimeMillis>4204816</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1047084</buildingDurationMillis><executingTimeMillis>1047084</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5116</waitingDurationMillis><waitingTimeMillis>5116</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3029</buildNumber><marked><SHA1>f7b1df85f5f360b89d188cc018fea4d6ace10d24</SHA1><branch><SHA1>f7b1df85f5f360b89d188cc018fea4d6ace10d24</SHA1><name>master</name></branch></marked><revision><SHA1>f7b1df85f5f360b89d188cc018fea4d6ace10d24</SHA1><branch><SHA1>f7b1df85f5f360b89d188cc018fea4d6ace10d24</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>f7b1df85f5f360b89d188cc018fea4d6ace10d24</SHA1><branch><SHA1>f7b1df85f5f360b89d188cc018fea4d6ace10d24</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3029</displayName><duration>1047084</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3029</fullDisplayName><id>3029</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3029</number><queueId>76576</queueId><result>SUCCESS</result><timestamp>1774963711382</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3029/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/index.rst</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>docs/pysim_fs_sphinx.py</affectedPath><affectedPath>docs/conf.py</affectedPath><commitId>f7b1df85f5f360b89d188cc018fea4d6ace10d24</commitId><timestamp>1774959433000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs: auto-generate Card Filesystem Reference

Add a Sphinx extension (docs/pysim_fs_sphinx.py) that hooks into the
builder-inited event and generates docs/filesystem.rst before Sphinx
reads any source files.

The generated page contains a hierarchical listing of all implemented
EFs and DFs, organised by application/specification (UICC/TS 102 221,
ADF.USIM/TS 31.102, ADF.ISIM/TS 31.103, SIM/TS 51.011).  For each file,
the class docstring and any _test_de_encode / _test_decode vectors
are included as an encoding/decoding example table.

docs/filesystem.rst is fully generated at build time and is therefore
added to .gitignore.

Change-Id: I06ddeefc6c11e04d7c24e116f3f39c8a6635856f
Related: OS#6316
</comment><date>2026-03-31 19:17:13 +0700</date><id>f7b1df85f5f360b89d188cc018fea4d6ace10d24</id><msg>docs: auto-generate Card Filesystem Reference</msg><path><editType>add</editType><file>docs/pysim_fs_sphinx.py</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>edit</editType><file>docs/conf.py</file></path><path><editType>edit</editType><file>docs/index.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3029/</url></run><run><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3029/</url></run><run><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3029/</url></run><run><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3029/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,033</shortDescription><upstreamBuild>3033</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42552</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/52/42552/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3033/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>3157061</blockedDurationMillis><blockedTimeMillis>3157061</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1047076</buildingDurationMillis><executingTimeMillis>1047076</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5117</waitingDurationMillis><waitingTimeMillis>5117</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3028</buildNumber><marked><SHA1>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</SHA1><branch><SHA1>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</SHA1><name>master</name></branch></marked><revision><SHA1>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</SHA1><branch><SHA1>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</SHA1><branch><SHA1>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3028</displayName><duration>1047076</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3028</fullDisplayName><id>3028</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3028</number><queueId>76575</queueId><result>SUCCESS</result><timestamp>1774962663626</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3028/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</commitId><timestamp>1774959433000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: edit_{binary,record}_decoded: add encode/decode examples

When invoking `edit_binary_decoded` or `edit_record_decoded`, the
temp file opened in the editor now contains the EF's encode/decode
test vectors as //-comment lines below the JSON content, similar to
how 'git commit' appends comments to the commit message template.
The comment block is stripped before JSON parsing on save,
so it has no effect on the written data.

The feature is implemented via a new module-level JsonEditor context
manager class that encapsulates the full edit cycle:

* write JSON + examples to a TemporaryDirectory
* invoke the editor
* read back, strip //-comments, parse and return the result

Change-Id: I5a046a9c7ba7e08a98cf643d5a26bc669539b38f
Related: OS#6900
</comment><date>2026-03-31 19:17:13 +0700</date><id>a172b34cbd09ad80aebe21b47fd1285a92bf82b4</id><msg>filesystem: edit_{binary,record}_decoded: add encode/decode examples</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3028/</url></run><run><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3028/</url></run><run><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3028/</url></run><run><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3028/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,037</shortDescription><upstreamBuild>3037</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42554</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>6bcd4e06f9b4da74e8e97130ace4a606a750a659</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/54/42554/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3037/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2107920</blockedDurationMillis><blockedTimeMillis>2107920</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1048394</buildingDurationMillis><executingTimeMillis>1048394</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5192</waitingDurationMillis><waitingTimeMillis>5192</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3027</buildNumber><marked><SHA1>6bcd4e06f9b4da74e8e97130ace4a606a750a659</SHA1><branch><SHA1>6bcd4e06f9b4da74e8e97130ace4a606a750a659</SHA1><name>master</name></branch></marked><revision><SHA1>6bcd4e06f9b4da74e8e97130ace4a606a750a659</SHA1><branch><SHA1>6bcd4e06f9b4da74e8e97130ace4a606a750a659</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>6bcd4e06f9b4da74e8e97130ace4a606a750a659</SHA1><branch><SHA1>6bcd4e06f9b4da74e8e97130ace4a606a750a659</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3027</displayName><duration>1048394</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3027</fullDisplayName><id>3027</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3027</number><queueId>76574</queueId><result>SUCCESS</result><timestamp>1774961614484</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3027/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>6bcd4e06f9b4da74e8e97130ace4a606a750a659</commitId><timestamp>1774959433000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: offer interactive retry on error

When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'.  If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.

Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
</comment><date>2026-03-31 19:17:13 +0700</date><id>6bcd4e06f9b4da74e8e97130ace4a606a750a659</id><msg>filesystem: JsonEditor: offer interactive retry on error</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3027/</url></run><run><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3027/</url></run><run><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3027/</url></run><run><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3027/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,036</shortDescription><upstreamBuild>3036</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42553</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>d7793622369f0c2deca2e6399bf2640558e53260</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42553/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3036/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1051156</blockedDurationMillis><blockedTimeMillis>1051156</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1056524</buildingDurationMillis><executingTimeMillis>1056524</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5526</waitingDurationMillis><waitingTimeMillis>5526</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3026</buildNumber><marked><SHA1>d7793622369f0c2deca2e6399bf2640558e53260</SHA1><branch><SHA1>d7793622369f0c2deca2e6399bf2640558e53260</SHA1><name>master</name></branch></marked><revision><SHA1>d7793622369f0c2deca2e6399bf2640558e53260</SHA1><branch><SHA1>d7793622369f0c2deca2e6399bf2640558e53260</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>d7793622369f0c2deca2e6399bf2640558e53260</SHA1><branch><SHA1>d7793622369f0c2deca2e6399bf2640558e53260</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3026</displayName><duration>1056524</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3026</fullDisplayName><id>3026</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3026</number><queueId>76573</queueId><result>SUCCESS</result><timestamp>1774960557494</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3026/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>d7793622369f0c2deca2e6399bf2640558e53260</commitId><timestamp>1774959433000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: use NamedTemporaryFile

A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it.  Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.

Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
</comment><date>2026-03-31 19:17:13 +0700</date><id>d7793622369f0c2deca2e6399bf2640558e53260</id><msg>filesystem: JsonEditor: use NamedTemporaryFile</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3026/</url></run><run><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3026/</url></run><run><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3026/</url></run><run><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3026/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,032</shortDescription><upstreamBuild>3032</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42546</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/46/42546/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3032/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1050406</buildingDurationMillis><executingTimeMillis>1050406</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5527</waitingDurationMillis><waitingTimeMillis>5527</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3025</buildNumber><marked><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><branch><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><name>master</name></branch></marked><revision><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><branch><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><branch><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3025</displayName><duration>1050406</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3025</fullDisplayName><id>3025</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3025</number><queueId>76572</queueId><result>SUCCESS</result><timestamp>1774959506336</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3025/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/conf.py</affectedPath><commitId>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</commitId><timestamp>1774959433000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/conf.py: add autodoc_mock_imports for klein and twisted

The eSIM SM-DP+ server modules (`pySim.esim.es2p`, `pySim.esim.es9p`,
`pySim.esim.http_json_api`) unconditionally import optional server-side
dependencies at module level:

  pySim.esim.es2p          -- from klein import Klein
  pySim.esim.http_json_api -- from twisted.web.server import Request

Both imports fail during a docs build if the packages are absent or
broken, causing three "autodoc: failed to import" warnings and three
missing chapters in the generated manual.

Even when klein and twisted are installed, twisted 23.10.0 (the
version pulled in transitively by smpp.twisted3's `Twisted~=23.10.0`
constraint) is incompatible with Python 3.13+ because twisted.web.http
unconditionally executes `import cgi`, a module that was removed from
the standard library in Python 3.13.

Fix: add `autodoc_mock_imports = ['klein', 'twisted']` to conf.py.
Sphinx inserts mock entries into sys.modules before each autodoc import
attempt, so the modules can be imported and documented without requiring
the real packages to be importable at build time.

Change-Id: I71650466f02a6a6d150650deed167c05d2cb6e64
</comment><date>2026-03-31 19:17:13 +0700</date><id>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</id><msg>docs/conf.py: add autodoc_mock_imports for klein and twisted</msg><path><editType>edit</editType><file>docs/conf.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3025/</url></run><run><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3025/</url></run><run><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3025/</url></run><run><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3025/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,031</shortDescription><upstreamBuild>3031</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42475</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/75/42475/3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3031/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1447734</buildingDurationMillis><executingTimeMillis>1447734</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5254</waitingDurationMillis><waitingTimeMillis>5254</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3024</buildNumber><marked><SHA1>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</SHA1><branch><SHA1>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</SHA1><name>master</name></branch></marked><revision><SHA1>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</SHA1><branch><SHA1>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</SHA1><branch><SHA1>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3024</displayName><duration>1447734</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3024</fullDisplayName><id>3024</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3024</number><queueId>76538</queueId><result>SUCCESS</result><timestamp>1774957214439</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3024/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/pcsc.py</affectedPath><commitId>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</commitId><timestamp>1774957116000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pysim/pcsc: do not use getProtocol for protocol selection

The documentation of the getProtocol provided by pyscard says:

"Return bit mask for the protocol of connection, or None if no
protocol set. The return value is a bit mask of
CardConnection.T0_protocol, CardConnection.T1_protocol,
CardConnection.RAW_protocol, CardConnection.T15_protocol"

This suggests that the purpose of getProtocol is not to determine
which protocols are supported. Its purpose is to determine which
protocol is currently selected (either through auto selection or
through the explicit selection made by the API user). This means
we are using getProtocol wrong.

So far this was no problem, since the auto-selected protocol
should be a supported protocol anyway. However, the automatic
protocol selection may not always return a correct result (see
bug report from THD-siegfried [1]).

Let's not trust the automatic protocol selection. Instead let's
parse the ATR and make the decision based on the TD1/TD2 bytes).

[1] https://osmocom.org/issues/6952

Related: OS#6952
Change-Id: Ib119948aa68c430e42ac84daec8b9bd542db7963
</comment><date>2026-03-31 13:38:36 +0200</date><id>4af4aa017b089e7ff3e2d9627f75262c8e7ac509</id><msg>pysim/pcsc: do not use getProtocol for protocol selection</msg><path><editType>edit</editType><file>pySim/transport/pcsc.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3024/</url></run><run><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3024/</url></run><run><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3024/</url></run><run><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3024/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,030</shortDescription><upstreamBuild>3030</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42557</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/57/42557/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3030/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1045205</buildingDurationMillis><executingTimeMillis>1045205</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7606</waitingDurationMillis><waitingTimeMillis>7606</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3023</buildNumber><marked><SHA1>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</SHA1><branch><SHA1>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</SHA1><name>master</name></branch></marked><revision><SHA1>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</SHA1><branch><SHA1>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</SHA1><branch><SHA1>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3023</displayName><duration>1045205</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3023</fullDisplayName><id>3023</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3023</number><queueId>76382</queueId><result>SUCCESS</result><timestamp>1774950416416</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3023/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim-read.py</affectedPath><commitId>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</commitId><timestamp>1774950388000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim-read: remove import random

In pySim-read we do not have to compute any random numbers, so
we may remove random from the imports

Change-Id: Iae4ee6aafb339cc682345299b92b4ecd0bbca14e
</comment><date>2026-03-31 11:46:28 +0200</date><id>a1d3b8f5e887fc72fefae24248aa1fd4ffbe9094</id><msg>pySim-read: remove import random</msg><path><editType>edit</editType><file>pySim-read.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3023/</url></run><run><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3023/</url></run><run><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3023/</url></run><run><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3023/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,029</shortDescription><upstreamBuild>3029</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42554</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>7c99c77612507d27181d3eb90859bde4ebb4adc6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/54/42554/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3029/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1052366</buildingDurationMillis><executingTimeMillis>1052366</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7681</waitingDurationMillis><waitingTimeMillis>7681</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3022</buildNumber><marked><SHA1>7c99c77612507d27181d3eb90859bde4ebb4adc6</SHA1><branch><SHA1>7c99c77612507d27181d3eb90859bde4ebb4adc6</SHA1><name>master</name></branch></marked><revision><SHA1>7c99c77612507d27181d3eb90859bde4ebb4adc6</SHA1><branch><SHA1>7c99c77612507d27181d3eb90859bde4ebb4adc6</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>7c99c77612507d27181d3eb90859bde4ebb4adc6</SHA1><branch><SHA1>7c99c77612507d27181d3eb90859bde4ebb4adc6</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3022</displayName><duration>1052366</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3022</fullDisplayName><id>3022</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3022</number><queueId>75907</queueId><result>SUCCESS</result><timestamp>1774915041824</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3022/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>7c99c77612507d27181d3eb90859bde4ebb4adc6</commitId><timestamp>1774914898000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: offer interactive retry on error

When json.loads() fails (e.g. the user made a syntax mistake), prompt
the user with "Re-open file for editing? [y]es/[n]o:" and loop back to
the editor if they answer 'y' or 'yes'.  If the user declines, return
the original unmodified value so no write is attempted; the temp file
is still cleaned up by __exit__() in that case.

Change-Id: I9161b7becea0d8dfd3f5f740fbb253da2f061a1d
Related: OS#6899
</comment><date>2026-03-31 06:54:58 +0700</date><id>7c99c77612507d27181d3eb90859bde4ebb4adc6</id><msg>filesystem: JsonEditor: offer interactive retry on error</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3022/</url></run><run><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3022/</url></run><run><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3022/</url></run><run><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3022/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,028</shortDescription><upstreamBuild>3028</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42553</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42553/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3028/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2126144</blockedDurationMillis><blockedTimeMillis>2126144</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1047550</buildingDurationMillis><executingTimeMillis>1047550</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>8920</waitingDurationMillis><waitingTimeMillis>8920</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3021</buildNumber><marked><SHA1>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</SHA1><branch><SHA1>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</SHA1><name>master</name></branch></marked><revision><SHA1>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</SHA1><branch><SHA1>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</SHA1><branch><SHA1>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3021</displayName><duration>1047550</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3021</fullDisplayName><id>3021</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3021</number><queueId>75843</queueId><result>SUCCESS</result><timestamp>1774913209565</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3021/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</commitId><timestamp>1774910920000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: JsonEditor: use NamedTemporaryFile

A plain NamedTemporaryFile is sufficient here: we only need a single
file, not a directory to hold it.  Using NamedTemporaryFile is simpler
(no subdirectory to manage) and gives us a .json suffix for free,
which editors use for syntax highlighting.

Change-Id: If3b0bd0fcc90732407dbd03b9cc883f7abeb948e
</comment><date>2026-03-31 05:48:40 +0700</date><id>cbad0cfdca9b33c992532a4707ebb6b724aebb5a</id><msg>filesystem: JsonEditor: use NamedTemporaryFile</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3021/</url></run><run><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3021/</url></run><run><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3021/</url></run><run><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3021/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,026</shortDescription><upstreamBuild>3026</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42552</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>17677ee8c2ede66511b6025fe71d97c37deec8ff</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/52/42552/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3026/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1065088</blockedDurationMillis><blockedTimeMillis>1065088</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1058376</buildingDurationMillis><executingTimeMillis>1058376</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>9099</waitingDurationMillis><waitingTimeMillis>9099</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3020</buildNumber><marked><SHA1>17677ee8c2ede66511b6025fe71d97c37deec8ff</SHA1><branch><SHA1>17677ee8c2ede66511b6025fe71d97c37deec8ff</SHA1><name>master</name></branch></marked><revision><SHA1>17677ee8c2ede66511b6025fe71d97c37deec8ff</SHA1><branch><SHA1>17677ee8c2ede66511b6025fe71d97c37deec8ff</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>17677ee8c2ede66511b6025fe71d97c37deec8ff</SHA1><branch><SHA1>17677ee8c2ede66511b6025fe71d97c37deec8ff</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3020</displayName><duration>1058376</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3020</fullDisplayName><id>3020</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3020</number><queueId>75842</queueId><result>SUCCESS</result><timestamp>1774912148507</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3020/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/filesystem.py</affectedPath><commitId>17677ee8c2ede66511b6025fe71d97c37deec8ff</commitId><timestamp>1774910900000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>filesystem: edit_{binary,record}_decoded: add encode/decode examples

When invoking `edit_binary_decoded` or `edit_record_decoded`, the
temp file opened in the editor now contains the EF's encode/decode
test vectors as //-comment lines below the JSON content, similar to
how 'git commit' appends comments to the commit message template.
The comment block is stripped before JSON parsing on save,
so it has no effect on the written data.

The feature is implemented via a new module-level JsonEditor context
manager class that encapsulates the full edit cycle:

* write JSON + examples to a TemporaryDirectory
* invoke the editor
* read back, strip //-comments, parse and return the result

Change-Id: I5a046a9c7ba7e08a98cf643d5a26bc669539b38f
Related: OS#6900
</comment><date>2026-03-31 05:48:20 +0700</date><id>17677ee8c2ede66511b6025fe71d97c37deec8ff</id><msg>filesystem: edit_{binary,record}_decoded: add encode/decode examples</msg><path><editType>edit</editType><file>pySim/filesystem.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3020/</url></run><run><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3020/</url></run><run><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3020/</url></run><run><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3020/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,027</shortDescription><upstreamBuild>3027</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42551</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>eea5ab03a016bb2a55259cd1473c5a64dc723b75</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/51/42551/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3027/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1059447</buildingDurationMillis><executingTimeMillis>1059447</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>9261</waitingDurationMillis><waitingTimeMillis>9261</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3019</buildNumber><marked><SHA1>eea5ab03a016bb2a55259cd1473c5a64dc723b75</SHA1><branch><SHA1>eea5ab03a016bb2a55259cd1473c5a64dc723b75</SHA1><name>master</name></branch></marked><revision><SHA1>eea5ab03a016bb2a55259cd1473c5a64dc723b75</SHA1><branch><SHA1>eea5ab03a016bb2a55259cd1473c5a64dc723b75</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>eea5ab03a016bb2a55259cd1473c5a64dc723b75</SHA1><branch><SHA1>eea5ab03a016bb2a55259cd1473c5a64dc723b75</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3019</displayName><duration>1059447</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3019</fullDisplayName><id>3019</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3019</number><queueId>75841</queueId><result>SUCCESS</result><timestamp>1774911083416</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3019/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/index.rst</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>docs/pysim_fs_sphinx.py</affectedPath><affectedPath>docs/conf.py</affectedPath><commitId>eea5ab03a016bb2a55259cd1473c5a64dc723b75</commitId><timestamp>1774897881000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs: auto-generate Card Filesystem Reference

Add a Sphinx extension (docs/pysim_fs_sphinx.py) that hooks into the
builder-inited event and generates docs/filesystem.rst before Sphinx
reads any source files.

The generated page contains a hierarchical listing of all implemented
EFs and DFs, organised by application/specification (UICC/TS 102 221,
ADF.USIM/TS 31.102, ADF.ISIM/TS 31.103, SIM/TS 51.011).  For each file,
the class docstring and any _test_de_encode / _test_decode vectors
are included as an encoding/decoding example table.

docs/filesystem.rst is fully generated at build time and is therefore
added to .gitignore.

Change-Id: I06ddeefc6c11e04d7c24e116f3f39c8a6635856f
Related: OS#6316
</comment><date>2026-03-31 02:11:21 +0700</date><id>eea5ab03a016bb2a55259cd1473c5a64dc723b75</id><msg>docs: auto-generate Card Filesystem Reference</msg><path><editType>edit</editType><file>docs/index.rst</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>docs/pysim_fs_sphinx.py</file></path><path><editType>edit</editType><file>docs/conf.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3019/</url></run><run><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3019/</url></run><run><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3019/</url></run><run><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3019/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,025</shortDescription><upstreamBuild>3025</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42546</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>37f90cc6725b2af637a710aaac78385caf34b5f4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/46/42546/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3025/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>4319479</blockedDurationMillis><blockedTimeMillis>4319479</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1051792</buildingDurationMillis><executingTimeMillis>1051792</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6760</waitingDurationMillis><waitingTimeMillis>6760</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3018</buildNumber><marked><SHA1>37f90cc6725b2af637a710aaac78385caf34b5f4</SHA1><branch><SHA1>37f90cc6725b2af637a710aaac78385caf34b5f4</SHA1><name>master</name></branch></marked><revision><SHA1>37f90cc6725b2af637a710aaac78385caf34b5f4</SHA1><branch><SHA1>37f90cc6725b2af637a710aaac78385caf34b5f4</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>37f90cc6725b2af637a710aaac78385caf34b5f4</SHA1><branch><SHA1>37f90cc6725b2af637a710aaac78385caf34b5f4</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3018</displayName><duration>1051792</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3018</fullDisplayName><id>3018</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3018</number><queueId>75647</queueId><result>SUCCESS</result><timestamp>1774885034575</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3018/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/conf.py</affectedPath><commitId>37f90cc6725b2af637a710aaac78385caf34b5f4</commitId><timestamp>1774880680000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/conf.py: add autodoc_mock_imports for klein and twisted

The eSIM SM-DP+ server modules (`pySim.esim.es2p`, `pySim.esim.es9p`,
`pySim.esim.http_json_api`) unconditionally import optional server-side
dependencies at module level:

  pySim.esim.es2p          -- from klein import Klein
  pySim.esim.http_json_api -- from twisted.web.server import Request

Both imports fail during a docs build if the packages are absent or
broken, causing three "autodoc: failed to import" warnings and three
missing chapters in the generated manual.

Even when klein and twisted are installed, twisted 23.10.0 (the
version pulled in transitively by smpp.twisted3's `Twisted~=23.10.0`
constraint) is incompatible with Python 3.13+ because twisted.web.http
unconditionally executes `import cgi`, a module that was removed from
the standard library in Python 3.13.

Fix: add `autodoc_mock_imports = ['klein', 'twisted']` to conf.py.
Sphinx inserts mock entries into sys.modules before each autodoc import
attempt, so the modules can be imported and documented without requiring
the real packages to be importable at build time.

Change-Id: I71650466f02a6a6d150650deed167c05d2cb6e64
</comment><date>2026-03-30 21:24:40 +0700</date><id>37f90cc6725b2af637a710aaac78385caf34b5f4</id><msg>docs/conf.py: add autodoc_mock_imports for klein and twisted</msg><path><editType>edit</editType><file>docs/conf.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3018/</url></run><run><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3018/</url></run><run><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3018/</url></run><run><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3018/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,024</shortDescription><upstreamBuild>3024</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42543</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>0993a78c94c807382f1a5ca488ad468f2210c3ea</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/43/42543/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3024/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>5373510</blockedDurationMillis><blockedTimeMillis>5373510</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1048598</buildingDurationMillis><executingTimeMillis>1048598</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5565</waitingDurationMillis><waitingTimeMillis>5565</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3017</buildNumber><marked><SHA1>0993a78c94c807382f1a5ca488ad468f2210c3ea</SHA1><branch><SHA1>0993a78c94c807382f1a5ca488ad468f2210c3ea</SHA1><name>master</name></branch></marked><revision><SHA1>0993a78c94c807382f1a5ca488ad468f2210c3ea</SHA1><branch><SHA1>0993a78c94c807382f1a5ca488ad468f2210c3ea</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>0993a78c94c807382f1a5ca488ad468f2210c3ea</SHA1><branch><SHA1>0993a78c94c807382f1a5ca488ad468f2210c3ea</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3017</displayName><duration>1048598</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3017</fullDisplayName><id>3017</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3017</number><queueId>75598</queueId><result>SUCCESS</result><timestamp>1774883983448</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3017/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/conf.py</affectedPath><commitId>0993a78c94c807382f1a5ca488ad468f2210c3ea</commitId><timestamp>1774878573000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/conf.py: silence autosectionlabel duplicate-label warnings

sphinxarg.ext generates generic sub-headings ("Named arguments",
"Positional arguments", "Sub-commands", "General options", ...) for
every argparse command and tool.  These repeat across many files and
trigger large numbers of autosectionlabel duplicate-label warnings.

Two-pronged fix:

* `autosectionlabel_maxdepth = 3` eliminates the depth-4+ warnings
  (sub-headings inside each individual command block).
* `suppress_warnings` per file silences the residual depth-3 collisions
  ("serial reader", "decode_hex", "sub-commands", ...) that still
  appear across tool documentation files.

Cross-references into these generic argparse-generated sections are not
a supported use-case, so suppressing the warnings is appropriate.

Change-Id: I9cdf2a4f6cbd435b16b90ab668205600ffd7c3b0
</comment><date>2026-03-30 20:49:33 +0700</date><id>0993a78c94c807382f1a5ca488ad468f2210c3ea</id><msg>docs/conf.py: silence autosectionlabel duplicate-label warnings</msg><path><editType>edit</editType><file>docs/conf.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3017/</url></run><run><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3017/</url></run><run><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3017/</url></run><run><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3017/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,021</shortDescription><upstreamBuild>3021</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42541</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/41/42541/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3021/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>5377573</blockedDurationMillis><blockedTimeMillis>5377573</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1051687</buildingDurationMillis><executingTimeMillis>1051687</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6909</waitingDurationMillis><waitingTimeMillis>6909</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3016</buildNumber><marked><SHA1>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</SHA1><branch><SHA1>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</SHA1><name>master</name></branch></marked><revision><SHA1>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</SHA1><branch><SHA1>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</SHA1><branch><SHA1>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3016</displayName><duration>1051687</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3016</fullDisplayName><id>3016</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3016</number><queueId>75554</queueId><result>SUCCESS</result><timestamp>1774882930675</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3016/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/legacy.rst</affectedPath><commitId>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</commitId><timestamp>1774876714000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/legacy: fix typo "EF,IMSI" -&gt; "EF.IMSI"

Change-Id: I1f246ec008a57b2373ed3f5531ab4166101f4dd0
</comment><date>2026-03-30 20:18:34 +0700</date><id>bf6dd62b5458d1de20aecd9efa6a4ea6110d9f44</id><msg>docs/legacy: fix typo "EF,IMSI" -&gt; "EF.IMSI"</msg><path><editType>edit</editType><file>docs/legacy.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3016/</url></run><run><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3016/</url></run><run><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3016/</url></run><run><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3016/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,023</shortDescription><upstreamBuild>3023</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42543</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/43/42543/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3023/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>4333901</blockedDurationMillis><blockedTimeMillis>4333901</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1045923</buildingDurationMillis><executingTimeMillis>1045923</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6306</waitingDurationMillis><waitingTimeMillis>6306</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3015</buildNumber><marked><SHA1>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</SHA1><branch><SHA1>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</SHA1><name>master</name></branch></marked><revision><SHA1>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</SHA1><branch><SHA1>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</SHA1><branch><SHA1>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3015</displayName><duration>1045923</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3015</fullDisplayName><id>3015</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3015</number><queueId>75548</queueId><result>SUCCESS</result><timestamp>1774881884304</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3015/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/conf.py</affectedPath><commitId>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</commitId><timestamp>1774876920000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/conf.py: silence autosectionlabel duplicate-label warnings

sphinxarg.ext generates generic sub-headings ("Named arguments",
"Positional arguments", "Sub-commands", "General options", ...) for
every argparse command and tool.  These repeat across many files and
trigger large numbers of autosectionlabel duplicate-label warnings.

Two-pronged fix:

* `autosectionlabel_maxdepth = 3` eliminates the depth-4+ warnings
  (sub-headings inside each individual command block).
* `suppress_warnings` per file silences the residual depth-3 collisions
  ("serial reader", "decode_hex", "sub-commands", ...) that still
  appear across tool documentation files.

Cross-references into these generic argparse-generated sections are not
a supported use-case, so suppressing the warnings is appropriate.

Change-Id: I9cdf2a4f6cbd435b16b90ab668205600ffd7c3b0
</comment><date>2026-03-30 20:22:00 +0700</date><id>b0ad68e7ff3a14ef91ab52f5112648bb49e3e64e</id><msg>docs/conf.py: silence autosectionlabel duplicate-label warnings</msg><path><editType>edit</editType><file>docs/conf.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3015/</url></run><run><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3015/</url></run><run><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3015/</url></run><run><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3015/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,020</shortDescription><upstreamBuild>3020</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42542</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>7641ec222327f07ed020fb5e04a35b3dada0033e</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/42/42542/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3020/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>3284305</blockedDurationMillis><blockedTimeMillis>3284305</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1050483</buildingDurationMillis><executingTimeMillis>1050483</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5123</waitingDurationMillis><waitingTimeMillis>5123</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3014</buildNumber><marked><SHA1>7641ec222327f07ed020fb5e04a35b3dada0033e</SHA1><branch><SHA1>7641ec222327f07ed020fb5e04a35b3dada0033e</SHA1><name>master</name></branch></marked><revision><SHA1>7641ec222327f07ed020fb5e04a35b3dada0033e</SHA1><branch><SHA1>7641ec222327f07ed020fb5e04a35b3dada0033e</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>7641ec222327f07ed020fb5e04a35b3dada0033e</SHA1><branch><SHA1>7641ec222327f07ed020fb5e04a35b3dada0033e</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3014</displayName><duration>1050483</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3014</fullDisplayName><id>3014</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3014</number><queueId>75547</queueId><result>SUCCESS</result><timestamp>1774880832956</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3014/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/put_key-tutorial.rst</affectedPath><commitId>7641ec222327f07ed020fb5e04a35b3dada0033e</commitId><timestamp>1774876719000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/put_key-tutorial: fix three typos

  "verifiation"        -&gt; "verification"
  "this is identifies" -&gt; "this identifies" (extra word)
  "and and"            -&gt; "and" (doubled word)

Change-Id: I1ae6b01638cc2c3dd8355ba801f85cc179ca8bd3
</comment><date>2026-03-30 20:18:39 +0700</date><id>7641ec222327f07ed020fb5e04a35b3dada0033e</id><msg>docs/put_key-tutorial: fix three typos</msg><path><editType>edit</editType><file>docs/put_key-tutorial.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3014/</url></run><run><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3014/</url></run><run><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3014/</url></run><run><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3014/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,018</shortDescription><upstreamBuild>3018</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42538</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>53ee369d42840f11015e986160f3a2a25220bbda</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/38/42538/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3018/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2236889</blockedDurationMillis><blockedTimeMillis>2236889</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1046920</buildingDurationMillis><executingTimeMillis>1046920</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5193</waitingDurationMillis><waitingTimeMillis>5193</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3013</buildNumber><marked><SHA1>53ee369d42840f11015e986160f3a2a25220bbda</SHA1><branch><SHA1>53ee369d42840f11015e986160f3a2a25220bbda</SHA1><name>master</name></branch></marked><revision><SHA1>53ee369d42840f11015e986160f3a2a25220bbda</SHA1><branch><SHA1>53ee369d42840f11015e986160f3a2a25220bbda</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>53ee369d42840f11015e986160f3a2a25220bbda</SHA1><branch><SHA1>53ee369d42840f11015e986160f3a2a25220bbda</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3013</displayName><duration>1046920</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3013</fullDisplayName><id>3013</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3013</number><queueId>75546</queueId><result>SUCCESS</result><timestamp>1774879785540</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3013/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/card-key-provider.rst</affectedPath><commitId>53ee369d42840f11015e986160f3a2a25220bbda</commitId><timestamp>1774876375000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/card-key-provider: fix heading levels and typo

The "ADM PIN" and "SCP02 / SCP03" sub-sections of "Field naming" used
the '~' heading character, which Sphinx resolved to level 4 - skipping
level 3 and throwing build ERRORs.  As a result, both sub-sections
had no heading at all.  Change both to '^' (level 3) to match the
other sub-sections in this file.

While at it, fix a typo: "consisting if" -&gt; "consisting of".

Change-Id: Ia56efc7fadcc0fd62e87e63850b929d2f80851ba
</comment><date>2026-03-30 20:12:55 +0700</date><id>53ee369d42840f11015e986160f3a2a25220bbda</id><msg>docs/card-key-provider: fix heading levels and typo</msg><path><editType>edit</editType><file>docs/card-key-provider.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3013/</url></run><run><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3013/</url></run><run><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3013/</url></run><run><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3013/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,022</shortDescription><upstreamBuild>3022</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42539</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/39/42539/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3022/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1054690</blockedDurationMillis><blockedTimeMillis>1054690</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1181538</buildingDurationMillis><executingTimeMillis>1181538</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5025</waitingDurationMillis><waitingTimeMillis>5025</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3012</buildNumber><marked><SHA1>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</SHA1><branch><SHA1>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</SHA1><name>master</name></branch></marked><revision><SHA1>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</SHA1><branch><SHA1>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</SHA1><branch><SHA1>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3012</displayName><duration>1181538</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3012</fullDisplayName><id>3012</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3012</number><queueId>75545</queueId><result>SUCCESS</result><timestamp>1774878602958</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3012/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/shell.rst</affectedPath><commitId>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</commitId><timestamp>1774876635000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/shell: fix copy-paste typos in editor command descriptions

Two adjacent commands (`edit_record_decoded`, `edit_binary_decoded`)
had identical copy-pasted error messages with three typos each:

  "modificatiosn" -&gt; "modifications"
  "us the"        -&gt; "use the"
  "comamdn"       -&gt; "command"

Change-Id: Ie23baba4634e2cc40f81439fb11b102778aed1f6
</comment><date>2026-03-30 20:17:15 +0700</date><id>8bd3ab79bac4bd00164356d1e9ad21835fb3ad67</id><msg>docs/shell: fix copy-paste typos in editor command descriptions</msg><path><editType>edit</editType><file>docs/shell.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3012/</url></run><run><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3012/</url></run><run><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3012/</url></run><run><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3012/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,019</shortDescription><upstreamBuild>3019</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42540</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/40/42540/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3019/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1052999</buildingDurationMillis><executingTimeMillis>1052999</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5329</waitingDurationMillis><waitingTimeMillis>5329</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3011</buildNumber><marked><SHA1>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</SHA1><branch><SHA1>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</SHA1><name>master</name></branch></marked><revision><SHA1>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</SHA1><branch><SHA1>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</SHA1><branch><SHA1>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3011</displayName><duration>1052999</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3011</fullDisplayName><id>3011</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3011</number><queueId>75544</queueId><result>SUCCESS</result><timestamp>1774877548260</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3011/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/saip-tool.rst</affectedPath><commitId>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</commitId><timestamp>1774876687000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>docs/saip-tool: fix typo "insertaion" -&gt; "insertion"

Change-Id: Ie9c9235ec964a15fab19d6ca5a83b2b1ddf07e7b
</comment><date>2026-03-30 20:18:07 +0700</date><id>2cd1bc048dad0eeb6fbffc19964a6d191ae20ad3</id><msg>docs/saip-tool: fix typo "insertaion" -&gt; "insertion"</msg><path><editType>edit</editType><file>docs/saip-tool.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3011/</url></run><run><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3011/</url></run><run><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3011/</url></run><run><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3011/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,017</shortDescription><upstreamBuild>3017</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42469</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/69/42469/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3017/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1053814</buildingDurationMillis><executingTimeMillis>1053814</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5933</waitingDurationMillis><waitingTimeMillis>5933</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3010</buildNumber><marked><SHA1>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</SHA1><branch><SHA1>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</SHA1><name>master</name></branch></marked><revision><SHA1>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</SHA1><branch><SHA1>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</SHA1><branch><SHA1>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3010</displayName><duration>1053814</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3010</fullDisplayName><id>3010</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3010</number><queueId>70951</queueId><result>SUCCESS</result><timestamp>1774449377137</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3010/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</commitId><timestamp>1774449296000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/EF.SMSP: fix encoding of TP-Destination Address

The TP-Destination Address in EF.SMSP uses the same encoding as the
TS-Service Centre Address field. However, even though the encoding
of both fields looks almost identical, it actually isn't.

The TS-Service Centre Address field encodes the length field as
octets required for the call_number + one octet for ton_npi.
(see also: 3GPP TS 24.011, section 8.2.5.2)

The TP-Destination Address uses the number of digits of the
call_number directly in the length field.
(see also: 3GPP TS 23.040, section 9.1.2.5)

Related: SYS#7765
Change-Id: I55c123c9e244e5a6e71a0348f5d476ef03e618e8
</comment><date>2026-03-25 15:34:56 +0100</date><id>969f9c0e4bcb3cbf46be3a592315aa8a9a39e807</id><msg>pySim/EF.SMSP: fix encoding of TP-Destination Address</msg><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3010/</url></run><run><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3010/</url></run><run><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3010/</url></run><run><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3010/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,016</shortDescription><upstreamBuild>3016</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42475</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/75/42475/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3016/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>93282</blockedDurationMillis><blockedTimeMillis>93282</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1005288</buildingDurationMillis><executingTimeMillis>1005288</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>8918</waitingDurationMillis><waitingTimeMillis>8918</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3009</buildNumber><marked><SHA1>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</SHA1><branch><SHA1>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</SHA1><name>master</name></branch></marked><revision><SHA1>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</SHA1><branch><SHA1>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</SHA1><branch><SHA1>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3009</displayName><duration>1005288</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3009</fullDisplayName><id>3009</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3009</number><queueId>70850</queueId><result>SUCCESS</result><timestamp>1774444732163</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3009/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/pcsc.py</affectedPath><commitId>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</commitId><timestamp>1774444434000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pysim/pcsc: do not use getProtocol for protocol selection

The documentation of the getProtocol provided by pyscard says:

"Return bit mask for the protocol of connection, or None if no
protocol set. The return value is a bit mask of
CardConnection.T0_protocol, CardConnection.T1_protocol,
CardConnection.RAW_protocol, CardConnection.T15_protocol"

This suggests that the purpose of getProtocol is not to determine
which protocols are supported. Its purpose is to determine which
protocol is currently selected (either through auto selection or
through the explicit selection made by the API user). This means
we are using getProtocol wrong.

So far this was no problem, since the auto-selected protocol
should be a supported protocol anyway. However, the automatic
protocol selection may not always return a correct result (see
bug report from THD-siegfried [1]).

Let's not trust the automatic protocol selection. Instead let's
parse the ATR and make the decision based on the TD1/TD2 bytes).

[1] https://osmocom.org/issues/6952

Related: OS#6952
Change-Id: Ib119948aa68c430e42ac84daec8b9bd542db7963
</comment><date>2026-03-25 14:13:54 +0100</date><id>7f8ea27f51aeba6c31882fc3488542f16e8c7d12</id><msg>pysim/pcsc: do not use getProtocol for protocol selection</msg><path><editType>edit</editType><file>pySim/transport/pcsc.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3009/</url></run><run><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3009/</url></run><run><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3009/</url></run><run><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3009/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,015</shortDescription><upstreamBuild>3015</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42310</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>03e6cc15e127d285fd17946d85ba1be5cc511d3c</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/10/42310/4</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3015/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1053136</blockedDurationMillis><blockedTimeMillis>1053136</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1048790</buildingDurationMillis><executingTimeMillis>1048790</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5000</waitingDurationMillis><waitingTimeMillis>5000</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3008</buildNumber><marked><SHA1>03e6cc15e127d285fd17946d85ba1be5cc511d3c</SHA1><branch><SHA1>03e6cc15e127d285fd17946d85ba1be5cc511d3c</SHA1><name>master</name></branch></marked><revision><SHA1>03e6cc15e127d285fd17946d85ba1be5cc511d3c</SHA1><branch><SHA1>03e6cc15e127d285fd17946d85ba1be5cc511d3c</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>03e6cc15e127d285fd17946d85ba1be5cc511d3c</SHA1><branch><SHA1>03e6cc15e127d285fd17946d85ba1be5cc511d3c</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3008</displayName><duration>1048790</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3008</fullDisplayName><id>3008</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3008</number><queueId>70808</queueId><result>SUCCESS</result><timestamp>1774443681944</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3008/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/global_platform/__init__.py</affectedPath><commitId>03e6cc15e127d285fd17946d85ba1be5cc511d3c</commitId><timestamp>1774442232000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>global_platform: install_cap_parser: argument groups cannot be nested

pySim-shell currently does not work on systems with Python 3.14+:

  File ".../pysim/pySim/global_platform/__init__.py", line 868, in AddlShellCommands
    install_cap_parser_inst_prm_g_grp = install_cap_parser_inst_prm_g.add_argument_group()
  File "/usr/lib/python3.14/argparse.py", line 1794, in add_argument_group
    raise ValueError('argument groups cannot be nested')
  ValueError('argument groups cannot be nested')

The problem is that install_cap_parser creates a nested group inside
of mutually exclusive group.  argparse never supported group nesting
properly, so it has been deprecated since Python 3.11, and eventually
got removed in Python 3.14.

Remove group nesting, adjust the usage string, and implement the
mutual exclusiveness enforcement manually in do_install_cap().

Change-Id: Idddf72d5a745345e134b23f2f01e0257d0667579
</comment><date>2026-03-25 19:37:12 +0700</date><id>03e6cc15e127d285fd17946d85ba1be5cc511d3c</id><msg>global_platform: install_cap_parser: argument groups cannot be nested</msg><path><editType>edit</editType><file>pySim/global_platform/__init__.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3008/</url></run><run><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3008/</url></run><run><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3008/</url></run><run><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3008/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,014</shortDescription><upstreamBuild>3014</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42378</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c4cab766d9f83b78962c757706c2dfc48d0f1a10</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>fixeria</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/78/42378/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3014/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1057572</buildingDurationMillis><executingTimeMillis>1057572</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>8645</waitingDurationMillis><waitingTimeMillis>8645</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3007</buildNumber><marked><SHA1>c4cab766d9f83b78962c757706c2dfc48d0f1a10</SHA1><branch><SHA1>c4cab766d9f83b78962c757706c2dfc48d0f1a10</SHA1><name>master</name></branch></marked><revision><SHA1>c4cab766d9f83b78962c757706c2dfc48d0f1a10</SHA1><branch><SHA1>c4cab766d9f83b78962c757706c2dfc48d0f1a10</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c4cab766d9f83b78962c757706c2dfc48d0f1a10</SHA1><branch><SHA1>c4cab766d9f83b78962c757706c2dfc48d0f1a10</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3007</displayName><duration>1057572</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3007</fullDisplayName><id>3007</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3007</number><queueId>70807</queueId><result>SUCCESS</result><timestamp>1774442623026</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3007/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/unittests/test_globalplatform.py</affectedPath><affectedPath>pySim/global_platform/install_param.py</affectedPath><commitId>c4cab766d9f83b78962c757706c2dfc48d0f1a10</commitId><timestamp>1774442490000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>global_platform: refactor gen_install_parameters()

gen_install_parameters() had contradictory logic: the outer guard
required all three arguments to be non-None/non-empty (making them
mutually inclusive), while the inner checks then treated each one
as optional.

Make each parameter independently optional (defaulting to None) and
remove the all-or-nothing check.  Simplify the function body to a
straightforward single-pass construction of system_specific_params.

Change-Id: I8756fb38016cdf0527fe2e21edb44381d1dc557f
</comment><date>2026-03-25 19:41:30 +0700</date><id>c4cab766d9f83b78962c757706c2dfc48d0f1a10</id><msg>global_platform: refactor gen_install_parameters()</msg><path><editType>edit</editType><file>tests/unittests/test_globalplatform.py</file></path><path><editType>edit</editType><file>pySim/global_platform/install_param.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3007/</url></run><run><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3007/</url></run><run><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3007/</url></run><run><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3007/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,013</shortDescription><upstreamBuild>3013</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42353</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>7</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>233162cca4986c56769629232aff04606279f82b</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42353/7</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3013/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1051986</buildingDurationMillis><executingTimeMillis>1051986</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7935</waitingDurationMillis><waitingTimeMillis>7935</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3006</buildNumber><marked><SHA1>233162cca4986c56769629232aff04606279f82b</SHA1><branch><SHA1>233162cca4986c56769629232aff04606279f82b</SHA1><name>master</name></branch></marked><revision><SHA1>233162cca4986c56769629232aff04606279f82b</SHA1><branch><SHA1>233162cca4986c56769629232aff04606279f82b</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>233162cca4986c56769629232aff04606279f82b</SHA1><branch><SHA1>233162cca4986c56769629232aff04606279f82b</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3006</displayName><duration>1051986</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3006</fullDisplayName><id>3006</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3006</number><queueId>70745</queueId><result>SUCCESS</result><timestamp>1774440173029</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3006/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/put_key-tutorial.rst</affectedPath><affectedPath>docs/shell.rst</affectedPath><commitId>233162cca4986c56769629232aff04606279f82b</commitId><timestamp>1774439788000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>docs/put_key: add tutorial that explains how to manage global platform keys

With the increased interest in using GlobalPlatform features of
UICC and eUICCs (OTA-SMS, applets, etc.), also comes an increased
interest in how the related GlobalPlatform keys can be managed
(key rotation, adding/removing keysets from/to a Security Domain).

Unfortunately, many aspects of this topic are not immediately
obvious for the average user. Let's add a tutorial that contains
some practical examples to shine some light on the topic.

Related: SYS#7881
Change-Id: I163dfedca3df572cb8442e9a4a280e6c5b00327e
</comment><date>2026-03-25 12:56:28 +0100</date><id>233162cca4986c56769629232aff04606279f82b</id><msg>docs/put_key: add tutorial that explains how to manage global platform</msg><path><editType>edit</editType><file>docs/shell.rst</file></path><path><editType>add</editType><file>docs/put_key-tutorial.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3006/</url></run><run><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3006/</url></run><run><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3006/</url></run><run><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3006/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,012</shortDescription><upstreamBuild>3012</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42353</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/53/42353/6</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3012/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1060821</buildingDurationMillis><executingTimeMillis>1060821</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5158</waitingDurationMillis><waitingTimeMillis>5158</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3005</buildNumber><marked><SHA1>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</SHA1><branch><SHA1>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</SHA1><name>master</name></branch></marked><revision><SHA1>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</SHA1><branch><SHA1>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</SHA1><branch><SHA1>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3005</displayName><duration>1060821</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3005</fullDisplayName><id>3005</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3005</number><queueId>69823</queueId><result>SUCCESS</result><timestamp>1774355009938</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3005/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/put_key-tutorial.rst</affectedPath><affectedPath>docs/shell.rst</affectedPath><commitId>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</commitId><timestamp>1774354883000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>docs/put_key: add tutorial that explains how to manage global platform keys

With the increased interest in using GlobalPlatform features of
UICC and eUICCs (OTA-SMS, applets, etc.), also comes an increased
interest in how the related GlobalPlatform keys can be managed
(key rotation, adding/removing keysets from/to a Security Domain).

Unfortunately, many aspects of this topic are not immediately
obvious for the average user. Let's add a tutorial that contains
some practical examples to shine some light on the topic.

Related: SYS#7881
Change-Id: I163dfedca3df572cb8442e9a4a280e6c5b00327e
</comment><date>2026-03-24 13:21:23 +0100</date><id>16ff8138524a14b4bd40ebaf4f127ab4dd8b4433</id><msg>docs/put_key: add tutorial that explains how to manage global platform</msg><path><editType>edit</editType><file>docs/shell.rst</file></path><path><editType>add</editType><file>docs/put_key-tutorial.rst</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3005/</url></run><run><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3005/</url></run><run><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3005/</url></run><run><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3005/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,011</shortDescription><upstreamBuild>3011</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42475</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>4665650de4a78930c2acbe72da396c527b57df4c</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/75/42475/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3011/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1051978</blockedDurationMillis><blockedTimeMillis>1051978</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1052338</buildingDurationMillis><executingTimeMillis>1052338</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6293</waitingDurationMillis><waitingTimeMillis>6293</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3004</buildNumber><marked><SHA1>4665650de4a78930c2acbe72da396c527b57df4c</SHA1><branch><SHA1>4665650de4a78930c2acbe72da396c527b57df4c</SHA1><name>master</name></branch></marked><revision><SHA1>4665650de4a78930c2acbe72da396c527b57df4c</SHA1><branch><SHA1>4665650de4a78930c2acbe72da396c527b57df4c</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>4665650de4a78930c2acbe72da396c527b57df4c</SHA1><branch><SHA1>4665650de4a78930c2acbe72da396c527b57df4c</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3004</displayName><duration>1052338</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3004</fullDisplayName><id>3004</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3004</number><queueId>69000</queueId><result>SUCCESS</result><timestamp>1774286200519</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3004/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/pcsc.py</affectedPath><commitId>4665650de4a78930c2acbe72da396c527b57df4c</commitId><timestamp>1774285091000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pysim/pcsc: do not use getProtocol for protocol selection

The documentation of the getProtocol provided by pyscard says:

"Return bit mask for the protocol of connection, or None if no
protocol set. The return value is a bit mask of
CardConnection.T0_protocol, CardConnection.T1_protocol,
CardConnection.RAW_protocol, CardConnection.T15_protocol"

This suggests that the purpose of getProtocol is not to determine
which protocols are supported. Its purpose is to determine which
protocol is currently selected (either through auto selection or
through the explicit selection made by the API user). This means
we are using getProtocol wrong.

So far this was no problem, since the auto-selected protocol
should be a supported protocol anyway. However, the automatic
protocol selection may not always return a correct result (see
bug report from THD-siegfried [1]).

Let's not trust the automatic protocol selection. Instead let's
parse the ATR and make the decision based on the TD1/TD2 bytes).

[1] https://osmocom.org/issues/6952

Related: OS#6952
Change-Id: Ib119948aa68c430e42ac84daec8b9bd542db7963
</comment><date>2026-03-23 17:58:11 +0100</date><id>4665650de4a78930c2acbe72da396c527b57df4c</id><msg>pysim/pcsc: do not use getProtocol for protocol selection</msg><path><editType>edit</editType><file>pySim/transport/pcsc.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3004/</url></run><run><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3004/</url></run><run><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3004/</url></run><run><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3004/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,010</shortDescription><upstreamBuild>3010</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42474</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>a63548a2498f075c0cfbb52356c3edbb2ac41754</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/74/42474/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3010/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1045465</buildingDurationMillis><executingTimeMillis>1045465</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6558</waitingDurationMillis><waitingTimeMillis>6558</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3003</buildNumber><marked><SHA1>a63548a2498f075c0cfbb52356c3edbb2ac41754</SHA1><branch><SHA1>a63548a2498f075c0cfbb52356c3edbb2ac41754</SHA1><name>master</name></branch></marked><revision><SHA1>a63548a2498f075c0cfbb52356c3edbb2ac41754</SHA1><branch><SHA1>a63548a2498f075c0cfbb52356c3edbb2ac41754</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>a63548a2498f075c0cfbb52356c3edbb2ac41754</SHA1><branch><SHA1>a63548a2498f075c0cfbb52356c3edbb2ac41754</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3003</displayName><duration>1045465</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3003</fullDisplayName><id>3003</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3003</number><queueId>68999</queueId><result>SUCCESS</result><timestamp>1774285148540</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3003/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/pcsc.py</affectedPath><commitId>a63548a2498f075c0cfbb52356c3edbb2ac41754</commitId><timestamp>1774283520000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/pcsc/cosmetic: reformat comment

Change-Id: Ic04bdfbc6727cc670679c377c1afd1de53504b8f
</comment><date>2026-03-23 17:32:00 +0100</date><id>a63548a2498f075c0cfbb52356c3edbb2ac41754</id><msg>pySim/pcsc/cosmetic: reformat comment</msg><path><editType>edit</editType><file>pySim/transport/pcsc.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3003/</url></run><run><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3003/</url></run><run><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3003/</url></run><run><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3003/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,008</shortDescription><upstreamBuild>3008</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42469</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>1a241132ec28ee918a021d6424a0816346a4f2a2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/69/42469/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3008/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>2112493</blockedDurationMillis><blockedTimeMillis>2112493</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1056350</buildingDurationMillis><executingTimeMillis>1056350</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5262</waitingDurationMillis><waitingTimeMillis>5262</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3002</buildNumber><marked><SHA1>1a241132ec28ee918a021d6424a0816346a4f2a2</SHA1><branch><SHA1>1a241132ec28ee918a021d6424a0816346a4f2a2</SHA1><name>master</name></branch></marked><revision><SHA1>1a241132ec28ee918a021d6424a0816346a4f2a2</SHA1><branch><SHA1>1a241132ec28ee918a021d6424a0816346a4f2a2</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>1a241132ec28ee918a021d6424a0816346a4f2a2</SHA1><branch><SHA1>1a241132ec28ee918a021d6424a0816346a4f2a2</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3002</displayName><duration>1056350</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3002</fullDisplayName><id>3002</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3002</number><queueId>68912</queueId><result>SUCCESS</result><timestamp>1774283129963</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3002/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>1a241132ec28ee918a021d6424a0816346a4f2a2</commitId><timestamp>1774280720000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/EF.SMSP: fix encoding of TP-Destination Address

The TP-Destination Address in EF.SMSP uses the same encoding as the
TS-Service Centre Address field. However, even though the encoding
of both fields looks almost identical, it actually isn't.

The TS-Service Centre Address field encodes the length field as
octets required for the call_number + one octet for ton_npi.
(see also: 3GPP TS 24.011, section 8.2.5.2)

The TP-Destination Address uses the number of digits of the
call_number directly in the length field.
(see also: 3GPP TS 23.040, section 9.1.2.5)

Related: SYS#7765
Change-Id: I55c123c9e244e5a6e71a0348f5d476ef03e618e8
</comment><date>2026-03-23 16:45:20 +0100</date><id>1a241132ec28ee918a021d6424a0816346a4f2a2</id><msg>pySim/EF.SMSP: fix encoding of TP-Destination Address</msg><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3002/</url></run><run><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3002/</url></run><run><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3002/</url></run><run><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3002/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,007</shortDescription><upstreamBuild>3007</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42467</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>b59363b49e5a86021e96358526440d85ee88c1f2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/67/42467/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3007/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>1067455</blockedDurationMillis><blockedTimeMillis>1067455</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1043269</buildingDurationMillis><executingTimeMillis>1043269</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5021</waitingDurationMillis><waitingTimeMillis>5021</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3001</buildNumber><marked><SHA1>b59363b49e5a86021e96358526440d85ee88c1f2</SHA1><branch><SHA1>b59363b49e5a86021e96358526440d85ee88c1f2</SHA1><name>master</name></branch></marked><revision><SHA1>b59363b49e5a86021e96358526440d85ee88c1f2</SHA1><branch><SHA1>b59363b49e5a86021e96358526440d85ee88c1f2</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>b59363b49e5a86021e96358526440d85ee88c1f2</SHA1><branch><SHA1>b59363b49e5a86021e96358526440d85ee88c1f2</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3001</displayName><duration>1043269</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3001</fullDisplayName><id>3001</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3001</number><queueId>68911</queueId><result>SUCCESS</result><timestamp>1774282084499</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3001/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>b59363b49e5a86021e96358526440d85ee88c1f2</commitId><timestamp>1774280678000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/EF.SMSP: remove superflous line break

Change-Id: Ie02e02546e708e2c339810812188bd8e8af2a720
</comment><date>2026-03-23 16:44:38 +0100</date><id>b59363b49e5a86021e96358526440d85ee88c1f2</id><msg>pySim/EF.SMSP: remove superflous line break</msg><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3001/</url></run><run><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3001/</url></run><run><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3001/</url></run><run><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3001/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,009</shortDescription><upstreamBuild>3009</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42468</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>3759742e9511dc4a030180ee9eb436e7ff567844</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/68/42468/1</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3009/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1057832</buildingDurationMillis><executingTimeMillis>1057832</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5149</waitingDurationMillis><waitingTimeMillis>5149</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3000</buildNumber><marked><SHA1>3759742e9511dc4a030180ee9eb436e7ff567844</SHA1><branch><SHA1>3759742e9511dc4a030180ee9eb436e7ff567844</SHA1><name>master</name></branch></marked><revision><SHA1>3759742e9511dc4a030180ee9eb436e7ff567844</SHA1><branch><SHA1>3759742e9511dc4a030180ee9eb436e7ff567844</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>3759742e9511dc4a030180ee9eb436e7ff567844</SHA1><branch><SHA1>3759742e9511dc4a030180ee9eb436e7ff567844</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3000</displayName><duration>1057832</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3000</fullDisplayName><id>3000</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3000</number><queueId>68910</queueId><result>SUCCESS</result><timestamp>1774281017041</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3000/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/ts_51_011.py</affectedPath><commitId>3759742e9511dc4a030180ee9eb436e7ff567844</commitId><timestamp>1774280705000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>pySim/EF.SMSP: add an additional de_encode test for EF_SMSP

Let's add another testvector where we test what happens when we populate
none of the fields except for the tp_sc_addr.

Related: SYS#7765
Change-Id: I12b600ab17d1acfdddaffe6006095acf1a4228c9
</comment><date>2026-03-23 16:45:05 +0100</date><id>3759742e9511dc4a030180ee9eb436e7ff567844</id><msg>pySim/EF.SMSP: add an additional de_encode test for EF_SMSP</msg><path><editType>edit</editType><file>pySim/ts_51_011.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3000/</url></run><run><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3000/</url></run><run><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3000/</url></run><run><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3000/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,006</shortDescription><upstreamBuild>3006</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42441</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>0d9bbe880156908ec3caa4c326b30539cb6b2141</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/41/42441/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3006/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1046416</buildingDurationMillis><executingTimeMillis>1046416</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>5894</waitingDurationMillis><waitingTimeMillis>5894</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>2999</buildNumber><marked><SHA1>0d9bbe880156908ec3caa4c326b30539cb6b2141</SHA1><branch><SHA1>0d9bbe880156908ec3caa4c326b30539cb6b2141</SHA1><name>master</name></branch></marked><revision><SHA1>0d9bbe880156908ec3caa4c326b30539cb6b2141</SHA1><branch><SHA1>0d9bbe880156908ec3caa4c326b30539cb6b2141</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>0d9bbe880156908ec3caa4c326b30539cb6b2141</SHA1><branch><SHA1>0d9bbe880156908ec3caa4c326b30539cb6b2141</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2999</displayName><duration>1046416</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #2999</fullDisplayName><id>2999</id><inProgress>false</inProgress><keepLog>false</keepLog><number>2999</number><queueId>68803</queueId><result>SUCCESS</result><timestamp>1774270444815</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/2999/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/transport/__init__.py</affectedPath><affectedPath>pySim-shell.py</affectedPath><commitId>0d9bbe880156908ec3caa4c326b30539cb6b2141</commitId><timestamp>1774269154000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>transport: change APDU format paradigm

Unfortunately we have mixed up the concept of TPDUs and APDUs in
earlier versions of pySim-shell. This lead to problems with
detecteding the APDU case properly (see also ISO/IEC 7816-3) and
also prevented us from adding support for T=1.

This problem has been fixed long time ago and all APDUs sent from
the pySim-shell code should be well formed and valid according to
ISO/IEC 7816-3.

To ensure that we continue to format APDUs correctly as APDUs (and
not TPDUs) we have added a mechanism to the LinkBase class that
would either raise an exception or print a warning if someone
mistakenly tries to send an APDU that is really a TPDU. Whether a
warning is printed or an exception is raised is controlled via the
apdu_strict member in the LinkBase class, which is false (print
warning only) by default.

The reason why we have implemneted the mechanism this way was
because we wanted to ensure that existing APDU scripts (pySim-shell
apdu command) keep working, even though when those scripts uses
APDUs which are formally invalid.

Sending a TPDU instead of an APDU via a T=0 link will still work
in almost all cases. This is also the reason why this problem
slipped through unnoticed for long time. However, there may still
be subtile problems araising from this practice. The root of the
problem is that it is impossible to distinguish between APDU case
3 and 4 when a TPDU instead of an APDU is sent. However in order
to handle a case 4 APDU correctly we must be able to distinguish
the APDU case correctly to handle the case correctly.
ETSI TS 102 221, section 7.3.1.1.4, clause 4 is very clear about
the fact that not (only) the status word (e.g. 61xx) but the
APDU case is what matters.

To complete the logic in LinkBaseTpdu and to maintain compatibility
(older APDU scripts), we must still be able to switch between the
'apdu_strict' mode and the non-strict mode. However, since
pySim-shell, pySim-prog and pySim-read internally use proper APDUs,
we may enable the 'apdu_strict' mode by default.

At the same time we will limit the effect of pySim-shell's
apdu_strict setable to the apdu command only. By doing so, the
bahviour of the apdu command is not altered. Users will still
have to enable the 'strict' mode explicitly. At the same time
all the internal functionality of pySim-shell will always use
the 'strict' mode.

Related: OS#6970
Change-Id: I9a531a825def318b28bf58291d811cf119003fab
</comment><date>2026-03-23 13:32:34 +0100</date><id>0d9bbe880156908ec3caa4c326b30539cb6b2141</id><msg>transport: change APDU format paradigm</msg><path><editType>edit</editType><file>pySim/transport/__init__.py</file></path><path><editType>edit</editType><file>pySim-shell.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2999/</url></run><run><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2999/</url></run><run><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2999/</url></run><run><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2999/</url></run></build><build _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 2,151</shortDescription><upstreamBuild>2151</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>39742</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>3a2cb239bcc6b4dd71107a2b522da581599931b2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>neels</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/42/39742/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/2151/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>734725</buildingDurationMillis><executingTimeMillis>734725</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6770</waitingDurationMillis><waitingTimeMillis>6770</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><master _class='hudson.plugins.git.util.Build'><buildNumber>2142</buildNumber><marked><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></marked><revision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2142</displayName><duration>734725</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #2142</fullDisplayName><id>2142</id><inProgress>false</inProgress><keepLog>true</keepLog><number>2142</number><queueId>1838567</queueId><result>FAILURE</result><timestamp>1741611676595</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/2142/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/esim/saip/personalization.py</affectedPath><commitId>3a2cb239bcc6b4dd71107a2b522da581599931b2</commitId><timestamp>1741611631000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></author><authorEmail>nhofmeyr@sysmocom.de</authorEmail><comment>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi

Main points/rationales of the refactoring, details below:
1) common validation implementation
2) offer classmethods

The new features are optional, and will be heavily used by batch
personalization patches coming soon.

Implement Iccid and Imsi to use the new way, with a common abstract
DecimalParam implementation.

So far leave the other parameter classes working as they always did, to
follow suit in subsequent commits.

Details:

1) common validation implementation:
There are very common validation steps in the various parameter
implementations. It is more convenient and much more readable to
implement those once and set simple validation parameters per subclass.
So there now is a validate_val() classmethod, which subclasses can use
as-is to apply the validation parameters -- or subclasses can override
their cls.validate_val() for specialized validation.
(Those subclasses that this patch doesn't touch still override the
self.validate() instance method. Hence they still work as before this
patch, but don't use the new common features yet.)

2) offer stateless classmethods:
It is useful for...
- batch processing of multiple profiles (in upcoming patches) and
- user input validation
to be able to have classmethods that do what self.validate() and
self.apply() do, but do not modify any self.* members.
So far the paradigm was to create a class instance to keep state about
the value. This remains available, but in addition we make available the
paradigm of a singleton that is stateless (the classmethods).
Using self.validate() and self.apply() still work the same as before
this patch, i.e. via self.input_value and self.value -- but in addition,
there are now classmethods that don't touch self.* members.

Related: SYS#6768
Change-Id: I6522be4c463e34897ca9bff2309b3706a88b3ce8
</comment><date>2025-03-10 14:00:31 +0100</date><id>3a2cb239bcc6b4dd71107a2b522da581599931b2</id><msg>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi</msg><path><editType>edit</editType><file>pySim/esim/saip/personalization.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></culprit><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></run></build><color>blue</color><firstBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 2,151</shortDescription><upstreamBuild>2151</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>39742</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>3a2cb239bcc6b4dd71107a2b522da581599931b2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>neels</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/42/39742/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/2151/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>734725</buildingDurationMillis><executingTimeMillis>734725</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6770</waitingDurationMillis><waitingTimeMillis>6770</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><master _class='hudson.plugins.git.util.Build'><buildNumber>2142</buildNumber><marked><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></marked><revision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2142</displayName><duration>734725</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #2142</fullDisplayName><id>2142</id><inProgress>false</inProgress><keepLog>true</keepLog><number>2142</number><queueId>1838567</queueId><result>FAILURE</result><timestamp>1741611676595</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/2142/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/esim/saip/personalization.py</affectedPath><commitId>3a2cb239bcc6b4dd71107a2b522da581599931b2</commitId><timestamp>1741611631000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></author><authorEmail>nhofmeyr@sysmocom.de</authorEmail><comment>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi

Main points/rationales of the refactoring, details below:
1) common validation implementation
2) offer classmethods

The new features are optional, and will be heavily used by batch
personalization patches coming soon.

Implement Iccid and Imsi to use the new way, with a common abstract
DecimalParam implementation.

So far leave the other parameter classes working as they always did, to
follow suit in subsequent commits.

Details:

1) common validation implementation:
There are very common validation steps in the various parameter
implementations. It is more convenient and much more readable to
implement those once and set simple validation parameters per subclass.
So there now is a validate_val() classmethod, which subclasses can use
as-is to apply the validation parameters -- or subclasses can override
their cls.validate_val() for specialized validation.
(Those subclasses that this patch doesn't touch still override the
self.validate() instance method. Hence they still work as before this
patch, but don't use the new common features yet.)

2) offer stateless classmethods:
It is useful for...
- batch processing of multiple profiles (in upcoming patches) and
- user input validation
to be able to have classmethods that do what self.validate() and
self.apply() do, but do not modify any self.* members.
So far the paradigm was to create a class instance to keep state about
the value. This remains available, but in addition we make available the
paradigm of a singleton that is stateless (the classmethods).
Using self.validate() and self.apply() still work the same as before
this patch, i.e. via self.input_value and self.value -- but in addition,
there are now classmethods that don't touch self.* members.

Related: SYS#6768
Change-Id: I6522be4c463e34897ca9bff2309b3706a88b3ce8
</comment><date>2025-03-10 14:00:31 +0100</date><id>3a2cb239bcc6b4dd71107a2b522da581599931b2</id><msg>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi</msg><path><editType>edit</editType><file>pySim/esim/saip/personalization.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></culprit><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></run></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,060</shortDescription><upstreamBuild>3060</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42626</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c50f4b4a0222a964710ce3124a66fe13c804be65</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/26/42626/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3060/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1271585</buildingDurationMillis><executingTimeMillis>1271585</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7742</waitingDurationMillis><waitingTimeMillis>7742</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3053</buildNumber><marked><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></marked><revision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3053</displayName><duration>1271585</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3053</fullDisplayName><id>3053</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3053</number><queueId>90068</queueId><result>SUCCESS</result><timestamp>1776337300087</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3053/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>setup.py</affectedPath><affectedPath>requirements.txt</affectedPath><affectedPath>README.md</affectedPath><commitId>c50f4b4a0222a964710ce3124a66fe13c804be65</commitId><timestamp>1776337279000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)

PyYAML versions 5.1–5.3.1 are vulnerable to CVE-2020-1747, which allows
arbitrary code execution through yaml.FullLoader. While PyYAML 5.4+
patches this, the dependency specification (pyyaml &gt;= 5.1) doesn't
guarantee a safe version. Let's increase the requirement to version
5.4 to ensure a safe version of is used.

This patch is based on suggestions from:
"YanTong C &lt;chyeyantong03@gmail.com&gt;"

Change-Id: I901c76c59e9c1bab030eab81038e04a475b32510
</comment><date>2026-04-16 11:01:19 +0000</date><id>c50f4b4a0222a964710ce3124a66fe13c804be65</id><msg>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)</msg><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>setup.py</file></path><path><editType>edit</editType><file>requirements.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></run></lastBuild><lastCompletedBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,060</shortDescription><upstreamBuild>3060</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42626</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c50f4b4a0222a964710ce3124a66fe13c804be65</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/26/42626/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3060/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1271585</buildingDurationMillis><executingTimeMillis>1271585</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7742</waitingDurationMillis><waitingTimeMillis>7742</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3053</buildNumber><marked><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></marked><revision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3053</displayName><duration>1271585</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3053</fullDisplayName><id>3053</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3053</number><queueId>90068</queueId><result>SUCCESS</result><timestamp>1776337300087</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3053/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>setup.py</affectedPath><affectedPath>requirements.txt</affectedPath><affectedPath>README.md</affectedPath><commitId>c50f4b4a0222a964710ce3124a66fe13c804be65</commitId><timestamp>1776337279000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)

PyYAML versions 5.1–5.3.1 are vulnerable to CVE-2020-1747, which allows
arbitrary code execution through yaml.FullLoader. While PyYAML 5.4+
patches this, the dependency specification (pyyaml &gt;= 5.1) doesn't
guarantee a safe version. Let's increase the requirement to version
5.4 to ensure a safe version of is used.

This patch is based on suggestions from:
"YanTong C &lt;chyeyantong03@gmail.com&gt;"

Change-Id: I901c76c59e9c1bab030eab81038e04a475b32510
</comment><date>2026-04-16 11:01:19 +0000</date><id>c50f4b4a0222a964710ce3124a66fe13c804be65</id><msg>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)</msg><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>setup.py</file></path><path><editType>edit</editType><file>requirements.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></run></lastCompletedBuild><lastFailedBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 2,151</shortDescription><upstreamBuild>2151</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>39742</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>3a2cb239bcc6b4dd71107a2b522da581599931b2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>neels</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/42/39742/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/2151/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>734725</buildingDurationMillis><executingTimeMillis>734725</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6770</waitingDurationMillis><waitingTimeMillis>6770</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><master _class='hudson.plugins.git.util.Build'><buildNumber>2142</buildNumber><marked><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></marked><revision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2142</displayName><duration>734725</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #2142</fullDisplayName><id>2142</id><inProgress>false</inProgress><keepLog>true</keepLog><number>2142</number><queueId>1838567</queueId><result>FAILURE</result><timestamp>1741611676595</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/2142/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/esim/saip/personalization.py</affectedPath><commitId>3a2cb239bcc6b4dd71107a2b522da581599931b2</commitId><timestamp>1741611631000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></author><authorEmail>nhofmeyr@sysmocom.de</authorEmail><comment>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi

Main points/rationales of the refactoring, details below:
1) common validation implementation
2) offer classmethods

The new features are optional, and will be heavily used by batch
personalization patches coming soon.

Implement Iccid and Imsi to use the new way, with a common abstract
DecimalParam implementation.

So far leave the other parameter classes working as they always did, to
follow suit in subsequent commits.

Details:

1) common validation implementation:
There are very common validation steps in the various parameter
implementations. It is more convenient and much more readable to
implement those once and set simple validation parameters per subclass.
So there now is a validate_val() classmethod, which subclasses can use
as-is to apply the validation parameters -- or subclasses can override
their cls.validate_val() for specialized validation.
(Those subclasses that this patch doesn't touch still override the
self.validate() instance method. Hence they still work as before this
patch, but don't use the new common features yet.)

2) offer stateless classmethods:
It is useful for...
- batch processing of multiple profiles (in upcoming patches) and
- user input validation
to be able to have classmethods that do what self.validate() and
self.apply() do, but do not modify any self.* members.
So far the paradigm was to create a class instance to keep state about
the value. This remains available, but in addition we make available the
paradigm of a singleton that is stateless (the classmethods).
Using self.validate() and self.apply() still work the same as before
this patch, i.e. via self.input_value and self.value -- but in addition,
there are now classmethods that don't touch self.* members.

Related: SYS#6768
Change-Id: I6522be4c463e34897ca9bff2309b3706a88b3ce8
</comment><date>2025-03-10 14:00:31 +0100</date><id>3a2cb239bcc6b4dd71107a2b522da581599931b2</id><msg>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi</msg><path><editType>edit</editType><file>pySim/esim/saip/personalization.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></culprit><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></run></lastFailedBuild><lastStableBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,060</shortDescription><upstreamBuild>3060</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42626</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c50f4b4a0222a964710ce3124a66fe13c804be65</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/26/42626/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3060/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1271585</buildingDurationMillis><executingTimeMillis>1271585</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7742</waitingDurationMillis><waitingTimeMillis>7742</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3053</buildNumber><marked><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></marked><revision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3053</displayName><duration>1271585</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3053</fullDisplayName><id>3053</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3053</number><queueId>90068</queueId><result>SUCCESS</result><timestamp>1776337300087</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3053/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>setup.py</affectedPath><affectedPath>requirements.txt</affectedPath><affectedPath>README.md</affectedPath><commitId>c50f4b4a0222a964710ce3124a66fe13c804be65</commitId><timestamp>1776337279000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)

PyYAML versions 5.1–5.3.1 are vulnerable to CVE-2020-1747, which allows
arbitrary code execution through yaml.FullLoader. While PyYAML 5.4+
patches this, the dependency specification (pyyaml &gt;= 5.1) doesn't
guarantee a safe version. Let's increase the requirement to version
5.4 to ensure a safe version of is used.

This patch is based on suggestions from:
"YanTong C &lt;chyeyantong03@gmail.com&gt;"

Change-Id: I901c76c59e9c1bab030eab81038e04a475b32510
</comment><date>2026-04-16 11:01:19 +0000</date><id>c50f4b4a0222a964710ce3124a66fe13c804be65</id><msg>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)</msg><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>setup.py</file></path><path><editType>edit</editType><file>requirements.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></run></lastStableBuild><lastSuccessfulBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 3,060</shortDescription><upstreamBuild>3060</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>42626</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>c50f4b4a0222a964710ce3124a66fe13c804be65</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>dexter</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/26/42626/2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/3060/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>1271585</buildingDurationMillis><executingTimeMillis>1271585</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7742</waitingDurationMillis><waitingTimeMillis>7742</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><_ _class='hudson.plugins.git.util.Build'><buildNumber>2772</buildNumber><marked><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></marked><revision><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><branch><SHA1>167d6aca365b64c84b2485a70cb43bbf3a4e4f2d</SHA1><name>**</name></branch></revision></_><master _class='hudson.plugins.git.util.Build'><buildNumber>3053</buildNumber><marked><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></marked><revision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><branch><SHA1>c50f4b4a0222a964710ce3124a66fe13c804be65</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#3053</displayName><duration>1271585</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #3053</fullDisplayName><id>3053</id><inProgress>false</inProgress><keepLog>false</keepLog><number>3053</number><queueId>90068</queueId><result>SUCCESS</result><timestamp>1776337300087</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/3053/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>setup.py</affectedPath><affectedPath>requirements.txt</affectedPath><affectedPath>README.md</affectedPath><commitId>c50f4b4a0222a964710ce3124a66fe13c804be65</commitId><timestamp>1776337279000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></author><authorEmail>pmaier@sysmocom.de</authorEmail><comment>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)

PyYAML versions 5.1–5.3.1 are vulnerable to CVE-2020-1747, which allows
arbitrary code execution through yaml.FullLoader. While PyYAML 5.4+
patches this, the dependency specification (pyyaml &gt;= 5.1) doesn't
guarantee a safe version. Let's increase the requirement to version
5.4 to ensure a safe version of is used.

This patch is based on suggestions from:
"YanTong C &lt;chyeyantong03@gmail.com&gt;"

Change-Id: I901c76c59e9c1bab030eab81038e04a475b32510
</comment><date>2026-04-16 11:01:19 +0000</date><id>c50f4b4a0222a964710ce3124a66fe13c804be65</id><msg>requirements: ensure safe version of PyYAML &gt;= 5.4 (CVE-2020-1747)</msg><path><editType>edit</editType><file>README.md</file></path><path><editType>edit</editType><file>setup.py</file></path><path><editType>edit</editType><file>requirements.txt</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></run><run><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></run></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='org.jenkinsci.plugins.workflow.support.steps.build.BuildUpstreamCause'><shortDescription>Started by upstream project "gerrit-pysim" build number 2,151</shortDescription><upstreamBuild>2151</upstreamBuild><upstreamProject>gerrit-pysim</upstreamProject><upstreamUrl>job/gerrit-pysim/</upstreamUrl></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value>39742</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value>gerrit.osmocom.org</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value>5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value>3a2cb239bcc6b4dd71107a2b522da581599931b2</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value>neels</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value>29418</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value>refs/changes/42/39742/5</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value>ssh://jenkins@gerrit.osmocom.org:29418/pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value>https://jenkins.osmocom.org/jenkins/job/gerrit-pysim/2151/</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value>pysim</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>734725</buildingDurationMillis><executingTimeMillis>734725</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6770</waitingDurationMillis><waitingTimeMillis>6770</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><master _class='hudson.plugins.git.util.Build'><buildNumber>2142</buildNumber><marked><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></marked><revision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></revision></master></buildsByBranchName><lastBuiltRevision><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><branch><SHA1>3a2cb239bcc6b4dd71107a2b522da581599931b2</SHA1><name>master</name></branch></lastBuiltRevision><remoteUrl>ssh://jenkins@gerrit.osmocom.org:29418/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2142</displayName><duration>734725</duration><estimatedDuration>1081954</estimatedDuration><fullDisplayName>gerrit-pysim-build #2142</fullDisplayName><id>2142</id><inProgress>false</inProgress><keepLog>true</keepLog><number>2142</number><queueId>1838567</queueId><result>FAILURE</result><timestamp>1741611676595</timestamp><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/2142/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim/esim/saip/personalization.py</affectedPath><commitId>3a2cb239bcc6b4dd71107a2b522da581599931b2</commitId><timestamp>1741611631000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></author><authorEmail>nhofmeyr@sysmocom.de</authorEmail><comment>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi

Main points/rationales of the refactoring, details below:
1) common validation implementation
2) offer classmethods

The new features are optional, and will be heavily used by batch
personalization patches coming soon.

Implement Iccid and Imsi to use the new way, with a common abstract
DecimalParam implementation.

So far leave the other parameter classes working as they always did, to
follow suit in subsequent commits.

Details:

1) common validation implementation:
There are very common validation steps in the various parameter
implementations. It is more convenient and much more readable to
implement those once and set simple validation parameters per subclass.
So there now is a validate_val() classmethod, which subclasses can use
as-is to apply the validation parameters -- or subclasses can override
their cls.validate_val() for specialized validation.
(Those subclasses that this patch doesn't touch still override the
self.validate() instance method. Hence they still work as before this
patch, but don't use the new common features yet.)

2) offer stateless classmethods:
It is useful for...
- batch processing of multiple profiles (in upcoming patches) and
- user input validation
to be able to have classmethods that do what self.validate() and
self.apply() do, but do not modify any self.* members.
So far the paradigm was to create a class instance to keep state about
the value. This remains available, but in addition we make available the
paradigm of a singleton that is stateless (the classmethods).
Using self.validate() and self.apply() still work the same as before
this patch, i.e. via self.input_value and self.value -- but in addition,
there are now classmethods that don't touch self.* members.

Related: SYS#6768
Change-Id: I6522be4c463e34897ca9bff2309b3706a88b3ce8
</comment><date>2025-03-10 14:00:31 +0100</date><id>3a2cb239bcc6b4dd71107a2b522da581599931b2</id><msg>[2/7] personalization: refactor ConfigurableParameter, Iccid, Imsi</msg><path><editType>edit</editType><file>pySim/esim/saip/personalization.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/neels</absoluteUrl><fullName>Neels Hofmeyr</fullName></culprit><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></run><run><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></run></lastUnsuccessfulBuild><nextBuildNumber>3054</nextBuildNumber><property _class='jenkins.model.BuildDiscarderProperty'></property><property _class='hudson.model.ParametersDefinitionProperty'><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>BRANCH_CI</name><value>master</value></defaultParameterValue><description>osmo-ci.git branch
</description><name>BRANCH_CI</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>COMMENT_TYPE</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>COMMENT_TYPE</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>DISTRO</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>DISTRO</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_BRANCH</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_BRANCH</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_CHANGE_NUMBER</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_CHANGE_NUMBER</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_HOST</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_HOST</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_NUMBER</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PATCHSET_NUMBER</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_REVISION</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PATCHSET_REVISION</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PATCHSET_UPLOADER_NAME</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PATCHSET_UPLOADER_NAME</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PORT</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PORT</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_PROJECT</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_PROJECT</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_REFSPEC</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_REFSPEC</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>GERRIT_REPO_URL</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>GERRIT_REPO_URL</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>PIPELINE_BUILD_URL</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>PIPELINE_BUILD_URL</name><type>StringParameterDefinition</type></parameterDefinition><parameterDefinition _class='hudson.model.StringParameterDefinition'><defaultParameterValue _class='hudson.model.StringParameterValue'><name>PROJECT_NAME</name><value></value></defaultParameterValue><description>set by gerrit verification pipeline job</description><name>PROJECT_NAME</name><type>StringParameterDefinition</type></parameterDefinition></property><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'><type>hudson.plugins.git.GitSCM</type><branche></branche><mergeOptions><fastForwardMode>--ff</fastForwardMode><mergeStrategy>default</mergeStrategy></mergeOptions><userRemoteConfig></userRemoteConfig></scm><activeConfiguration><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='org.jenkinsci.plugins.testresultsanalyzer.TestResultsAnalyzerAction'></action><displayName>test,a1=default,a3=default,a4=default,simtester</displayName><fullDisplayName>gerrit-pysim-build » test,a1=default,a3=default,a4=default,simtester</fullDisplayName><fullName>gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester</fullName><name>JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester</name><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/</url><buildable>true</buildable><build _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></build><build _class='hudson.matrix.MatrixRun'><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3052/</url></build><build _class='hudson.matrix.MatrixRun'><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3051/</url></build><build _class='hudson.matrix.MatrixRun'><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3050/</url></build><build _class='hudson.matrix.MatrixRun'><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3049/</url></build><build _class='hudson.matrix.MatrixRun'><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3048/</url></build><build _class='hudson.matrix.MatrixRun'><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3047/</url></build><build _class='hudson.matrix.MatrixRun'><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3046/</url></build><build _class='hudson.matrix.MatrixRun'><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3045/</url></build><build _class='hudson.matrix.MatrixRun'><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3044/</url></build><build _class='hudson.matrix.MatrixRun'><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3043/</url></build><build _class='hudson.matrix.MatrixRun'><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3042/</url></build><build _class='hudson.matrix.MatrixRun'><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3041/</url></build><build _class='hudson.matrix.MatrixRun'><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3040/</url></build><build _class='hudson.matrix.MatrixRun'><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3039/</url></build><build _class='hudson.matrix.MatrixRun'><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3038/</url></build><build _class='hudson.matrix.MatrixRun'><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3037/</url></build><build _class='hudson.matrix.MatrixRun'><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3036/</url></build><build _class='hudson.matrix.MatrixRun'><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3035/</url></build><build _class='hudson.matrix.MatrixRun'><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3034/</url></build><build _class='hudson.matrix.MatrixRun'><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3033/</url></build><build _class='hudson.matrix.MatrixRun'><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3032/</url></build><build _class='hudson.matrix.MatrixRun'><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3031/</url></build><build _class='hudson.matrix.MatrixRun'><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3030/</url></build><build _class='hudson.matrix.MatrixRun'><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3029/</url></build><build _class='hudson.matrix.MatrixRun'><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3028/</url></build><build _class='hudson.matrix.MatrixRun'><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3027/</url></build><build _class='hudson.matrix.MatrixRun'><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3026/</url></build><build _class='hudson.matrix.MatrixRun'><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3025/</url></build><build _class='hudson.matrix.MatrixRun'><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3024/</url></build><build _class='hudson.matrix.MatrixRun'><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3023/</url></build><build _class='hudson.matrix.MatrixRun'><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3022/</url></build><build _class='hudson.matrix.MatrixRun'><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3021/</url></build><build _class='hudson.matrix.MatrixRun'><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3020/</url></build><build _class='hudson.matrix.MatrixRun'><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3019/</url></build><build _class='hudson.matrix.MatrixRun'><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3018/</url></build><build _class='hudson.matrix.MatrixRun'><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3017/</url></build><build _class='hudson.matrix.MatrixRun'><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3016/</url></build><build _class='hudson.matrix.MatrixRun'><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3015/</url></build><build _class='hudson.matrix.MatrixRun'><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3014/</url></build><build _class='hudson.matrix.MatrixRun'><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3013/</url></build><build _class='hudson.matrix.MatrixRun'><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3012/</url></build><build _class='hudson.matrix.MatrixRun'><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3011/</url></build><build _class='hudson.matrix.MatrixRun'><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3010/</url></build><build _class='hudson.matrix.MatrixRun'><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3009/</url></build><build _class='hudson.matrix.MatrixRun'><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3008/</url></build><build _class='hudson.matrix.MatrixRun'><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3007/</url></build><build _class='hudson.matrix.MatrixRun'><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3006/</url></build><build _class='hudson.matrix.MatrixRun'><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3005/</url></build><build _class='hudson.matrix.MatrixRun'><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3004/</url></build><build _class='hudson.matrix.MatrixRun'><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3003/</url></build><build _class='hudson.matrix.MatrixRun'><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3002/</url></build><build _class='hudson.matrix.MatrixRun'><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3001/</url></build><build _class='hudson.matrix.MatrixRun'><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3000/</url></build><build _class='hudson.matrix.MatrixRun'><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2999/</url></build><build _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></build><color>blue</color><firstBuild _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></lastBuild><lastCompletedBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></lastCompletedBuild><lastFailedBuild _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></lastFailedBuild><lastStableBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/3053/</url></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=test,a1=default,a3=default,a4=default,label=simtester/2142/</url></lastUnsuccessfulBuild><nextBuildNumber>3054</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm></activeConfiguration><activeConfiguration><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='org.jenkinsci.plugins.testresultsanalyzer.TestResultsAnalyzerAction'></action><displayName>distcheck,a1=default,a3=default,a4=default,osmocom-gerrit</displayName><fullDisplayName>gerrit-pysim-build » distcheck,a1=default,a3=default,a4=default,osmocom-gerrit</fullDisplayName><fullName>gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit</fullName><name>JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit</name><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/</url><buildable>true</buildable><build _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></build><build _class='hudson.matrix.MatrixRun'><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url></build><build _class='hudson.matrix.MatrixRun'><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3051/</url></build><build _class='hudson.matrix.MatrixRun'><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3050/</url></build><build _class='hudson.matrix.MatrixRun'><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3049/</url></build><build _class='hudson.matrix.MatrixRun'><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3048/</url></build><build _class='hudson.matrix.MatrixRun'><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3047/</url></build><build _class='hudson.matrix.MatrixRun'><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3046/</url></build><build _class='hudson.matrix.MatrixRun'><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3045/</url></build><build _class='hudson.matrix.MatrixRun'><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3044/</url></build><build _class='hudson.matrix.MatrixRun'><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3043/</url></build><build _class='hudson.matrix.MatrixRun'><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3042/</url></build><build _class='hudson.matrix.MatrixRun'><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3041/</url></build><build _class='hudson.matrix.MatrixRun'><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3040/</url></build><build _class='hudson.matrix.MatrixRun'><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3039/</url></build><build _class='hudson.matrix.MatrixRun'><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3038/</url></build><build _class='hudson.matrix.MatrixRun'><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3037/</url></build><build _class='hudson.matrix.MatrixRun'><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3036/</url></build><build _class='hudson.matrix.MatrixRun'><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3035/</url></build><build _class='hudson.matrix.MatrixRun'><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3034/</url></build><build _class='hudson.matrix.MatrixRun'><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3033/</url></build><build _class='hudson.matrix.MatrixRun'><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3032/</url></build><build _class='hudson.matrix.MatrixRun'><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3031/</url></build><build _class='hudson.matrix.MatrixRun'><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3030/</url></build><build _class='hudson.matrix.MatrixRun'><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3029/</url></build><build _class='hudson.matrix.MatrixRun'><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3028/</url></build><build _class='hudson.matrix.MatrixRun'><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3027/</url></build><build _class='hudson.matrix.MatrixRun'><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3026/</url></build><build _class='hudson.matrix.MatrixRun'><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3025/</url></build><build _class='hudson.matrix.MatrixRun'><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3024/</url></build><build _class='hudson.matrix.MatrixRun'><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3023/</url></build><build _class='hudson.matrix.MatrixRun'><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3022/</url></build><build _class='hudson.matrix.MatrixRun'><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3021/</url></build><build _class='hudson.matrix.MatrixRun'><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3020/</url></build><build _class='hudson.matrix.MatrixRun'><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3019/</url></build><build _class='hudson.matrix.MatrixRun'><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3018/</url></build><build _class='hudson.matrix.MatrixRun'><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3017/</url></build><build _class='hudson.matrix.MatrixRun'><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3016/</url></build><build _class='hudson.matrix.MatrixRun'><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3015/</url></build><build _class='hudson.matrix.MatrixRun'><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3014/</url></build><build _class='hudson.matrix.MatrixRun'><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3013/</url></build><build _class='hudson.matrix.MatrixRun'><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3012/</url></build><build _class='hudson.matrix.MatrixRun'><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3011/</url></build><build _class='hudson.matrix.MatrixRun'><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3010/</url></build><build _class='hudson.matrix.MatrixRun'><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3009/</url></build><build _class='hudson.matrix.MatrixRun'><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3008/</url></build><build _class='hudson.matrix.MatrixRun'><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3007/</url></build><build _class='hudson.matrix.MatrixRun'><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3006/</url></build><build _class='hudson.matrix.MatrixRun'><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3005/</url></build><build _class='hudson.matrix.MatrixRun'><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3004/</url></build><build _class='hudson.matrix.MatrixRun'><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3003/</url></build><build _class='hudson.matrix.MatrixRun'><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3002/</url></build><build _class='hudson.matrix.MatrixRun'><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3001/</url></build><build _class='hudson.matrix.MatrixRun'><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3000/</url></build><build _class='hudson.matrix.MatrixRun'><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2999/</url></build><build _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></build><color>blue</color><firstBuild _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastBuild><lastCompletedBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastCompletedBuild><lastStableBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=distcheck,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastSuccessfulBuild><nextBuildNumber>3054</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm></activeConfiguration><activeConfiguration><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='org.jenkinsci.plugins.testresultsanalyzer.TestResultsAnalyzerAction'></action><displayName>pylint,a1=default,a3=default,a4=default,osmocom-gerrit</displayName><fullDisplayName>gerrit-pysim-build » pylint,a1=default,a3=default,a4=default,osmocom-gerrit</fullDisplayName><fullName>gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit</fullName><name>JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit</name><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/</url><buildable>true</buildable><build _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></build><build _class='hudson.matrix.MatrixRun'><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url></build><build _class='hudson.matrix.MatrixRun'><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3051/</url></build><build _class='hudson.matrix.MatrixRun'><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3050/</url></build><build _class='hudson.matrix.MatrixRun'><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3049/</url></build><build _class='hudson.matrix.MatrixRun'><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3048/</url></build><build _class='hudson.matrix.MatrixRun'><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3047/</url></build><build _class='hudson.matrix.MatrixRun'><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3046/</url></build><build _class='hudson.matrix.MatrixRun'><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3045/</url></build><build _class='hudson.matrix.MatrixRun'><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3044/</url></build><build _class='hudson.matrix.MatrixRun'><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3043/</url></build><build _class='hudson.matrix.MatrixRun'><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3042/</url></build><build _class='hudson.matrix.MatrixRun'><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3041/</url></build><build _class='hudson.matrix.MatrixRun'><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3040/</url></build><build _class='hudson.matrix.MatrixRun'><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3039/</url></build><build _class='hudson.matrix.MatrixRun'><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3038/</url></build><build _class='hudson.matrix.MatrixRun'><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3037/</url></build><build _class='hudson.matrix.MatrixRun'><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3036/</url></build><build _class='hudson.matrix.MatrixRun'><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3035/</url></build><build _class='hudson.matrix.MatrixRun'><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3034/</url></build><build _class='hudson.matrix.MatrixRun'><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3033/</url></build><build _class='hudson.matrix.MatrixRun'><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3032/</url></build><build _class='hudson.matrix.MatrixRun'><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3031/</url></build><build _class='hudson.matrix.MatrixRun'><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3030/</url></build><build _class='hudson.matrix.MatrixRun'><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3029/</url></build><build _class='hudson.matrix.MatrixRun'><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3028/</url></build><build _class='hudson.matrix.MatrixRun'><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3027/</url></build><build _class='hudson.matrix.MatrixRun'><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3026/</url></build><build _class='hudson.matrix.MatrixRun'><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3025/</url></build><build _class='hudson.matrix.MatrixRun'><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3024/</url></build><build _class='hudson.matrix.MatrixRun'><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3023/</url></build><build _class='hudson.matrix.MatrixRun'><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3022/</url></build><build _class='hudson.matrix.MatrixRun'><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3021/</url></build><build _class='hudson.matrix.MatrixRun'><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3020/</url></build><build _class='hudson.matrix.MatrixRun'><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3019/</url></build><build _class='hudson.matrix.MatrixRun'><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3018/</url></build><build _class='hudson.matrix.MatrixRun'><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3017/</url></build><build _class='hudson.matrix.MatrixRun'><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3016/</url></build><build _class='hudson.matrix.MatrixRun'><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3015/</url></build><build _class='hudson.matrix.MatrixRun'><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3014/</url></build><build _class='hudson.matrix.MatrixRun'><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3013/</url></build><build _class='hudson.matrix.MatrixRun'><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3012/</url></build><build _class='hudson.matrix.MatrixRun'><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3011/</url></build><build _class='hudson.matrix.MatrixRun'><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3010/</url></build><build _class='hudson.matrix.MatrixRun'><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3009/</url></build><build _class='hudson.matrix.MatrixRun'><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3008/</url></build><build _class='hudson.matrix.MatrixRun'><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3007/</url></build><build _class='hudson.matrix.MatrixRun'><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3006/</url></build><build _class='hudson.matrix.MatrixRun'><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3005/</url></build><build _class='hudson.matrix.MatrixRun'><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3004/</url></build><build _class='hudson.matrix.MatrixRun'><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3003/</url></build><build _class='hudson.matrix.MatrixRun'><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3002/</url></build><build _class='hudson.matrix.MatrixRun'><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3001/</url></build><build _class='hudson.matrix.MatrixRun'><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3000/</url></build><build _class='hudson.matrix.MatrixRun'><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2999/</url></build><build _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></build><color>blue</color><firstBuild _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastBuild><lastCompletedBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastCompletedBuild><lastStableBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=pylint,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastSuccessfulBuild><nextBuildNumber>3054</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm></activeConfiguration><activeConfiguration><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'></action><action _class='org.jenkinsci.plugins.testresultsanalyzer.TestResultsAnalyzerAction'></action><displayName>docs,a1=default,a3=default,a4=default,osmocom-gerrit</displayName><fullDisplayName>gerrit-pysim-build » docs,a1=default,a3=default,a4=default,osmocom-gerrit</fullDisplayName><fullName>gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit</fullName><name>JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit</name><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/</url><buildable>true</buildable><build _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></build><build _class='hudson.matrix.MatrixRun'><number>3052</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3052/</url></build><build _class='hudson.matrix.MatrixRun'><number>3051</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3051/</url></build><build _class='hudson.matrix.MatrixRun'><number>3050</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3050/</url></build><build _class='hudson.matrix.MatrixRun'><number>3049</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3049/</url></build><build _class='hudson.matrix.MatrixRun'><number>3048</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3048/</url></build><build _class='hudson.matrix.MatrixRun'><number>3047</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3047/</url></build><build _class='hudson.matrix.MatrixRun'><number>3046</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3046/</url></build><build _class='hudson.matrix.MatrixRun'><number>3045</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3045/</url></build><build _class='hudson.matrix.MatrixRun'><number>3044</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3044/</url></build><build _class='hudson.matrix.MatrixRun'><number>3043</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3043/</url></build><build _class='hudson.matrix.MatrixRun'><number>3042</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3042/</url></build><build _class='hudson.matrix.MatrixRun'><number>3041</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3041/</url></build><build _class='hudson.matrix.MatrixRun'><number>3040</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3040/</url></build><build _class='hudson.matrix.MatrixRun'><number>3039</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3039/</url></build><build _class='hudson.matrix.MatrixRun'><number>3038</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3038/</url></build><build _class='hudson.matrix.MatrixRun'><number>3037</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3037/</url></build><build _class='hudson.matrix.MatrixRun'><number>3036</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3036/</url></build><build _class='hudson.matrix.MatrixRun'><number>3035</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3035/</url></build><build _class='hudson.matrix.MatrixRun'><number>3034</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3034/</url></build><build _class='hudson.matrix.MatrixRun'><number>3033</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3033/</url></build><build _class='hudson.matrix.MatrixRun'><number>3032</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3032/</url></build><build _class='hudson.matrix.MatrixRun'><number>3031</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3031/</url></build><build _class='hudson.matrix.MatrixRun'><number>3030</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3030/</url></build><build _class='hudson.matrix.MatrixRun'><number>3029</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3029/</url></build><build _class='hudson.matrix.MatrixRun'><number>3028</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3028/</url></build><build _class='hudson.matrix.MatrixRun'><number>3027</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3027/</url></build><build _class='hudson.matrix.MatrixRun'><number>3026</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3026/</url></build><build _class='hudson.matrix.MatrixRun'><number>3025</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3025/</url></build><build _class='hudson.matrix.MatrixRun'><number>3024</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3024/</url></build><build _class='hudson.matrix.MatrixRun'><number>3023</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3023/</url></build><build _class='hudson.matrix.MatrixRun'><number>3022</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3022/</url></build><build _class='hudson.matrix.MatrixRun'><number>3021</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3021/</url></build><build _class='hudson.matrix.MatrixRun'><number>3020</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3020/</url></build><build _class='hudson.matrix.MatrixRun'><number>3019</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3019/</url></build><build _class='hudson.matrix.MatrixRun'><number>3018</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3018/</url></build><build _class='hudson.matrix.MatrixRun'><number>3017</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3017/</url></build><build _class='hudson.matrix.MatrixRun'><number>3016</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3016/</url></build><build _class='hudson.matrix.MatrixRun'><number>3015</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3015/</url></build><build _class='hudson.matrix.MatrixRun'><number>3014</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3014/</url></build><build _class='hudson.matrix.MatrixRun'><number>3013</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3013/</url></build><build _class='hudson.matrix.MatrixRun'><number>3012</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3012/</url></build><build _class='hudson.matrix.MatrixRun'><number>3011</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3011/</url></build><build _class='hudson.matrix.MatrixRun'><number>3010</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3010/</url></build><build _class='hudson.matrix.MatrixRun'><number>3009</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3009/</url></build><build _class='hudson.matrix.MatrixRun'><number>3008</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3008/</url></build><build _class='hudson.matrix.MatrixRun'><number>3007</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3007/</url></build><build _class='hudson.matrix.MatrixRun'><number>3006</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3006/</url></build><build _class='hudson.matrix.MatrixRun'><number>3005</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3005/</url></build><build _class='hudson.matrix.MatrixRun'><number>3004</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3004/</url></build><build _class='hudson.matrix.MatrixRun'><number>3003</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3003/</url></build><build _class='hudson.matrix.MatrixRun'><number>3002</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3002/</url></build><build _class='hudson.matrix.MatrixRun'><number>3001</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3001/</url></build><build _class='hudson.matrix.MatrixRun'><number>3000</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3000/</url></build><build _class='hudson.matrix.MatrixRun'><number>2999</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2999/</url></build><build _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></build><color>blue</color><firstBuild _class='hudson.matrix.MatrixRun'><number>2142</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/2142/</url></firstBuild><healthReport><description>Build stability: No recent builds failed.</description><iconClassName>icon-health-80plus</iconClassName><iconUrl>health-80plus.png</iconUrl><score>100</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastBuild><lastCompletedBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastCompletedBuild><lastStableBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastStableBuild><lastSuccessfulBuild _class='hudson.matrix.MatrixRun'><number>3053</number><url>https://jenkins.osmocom.org/jenkins/view/gerrit/job/gerrit-pysim-build/JOB_TYPE=docs,a1=default,a3=default,a4=default,label=osmocom-gerrit/3053/</url></lastSuccessfulBuild><nextBuildNumber>3054</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.plugins.git.GitSCM'></scm></activeConfiguration></matrixProject>