<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.TimerTrigger$TimerTriggerCause'><shortDescription>Started by timer</shortDescription></cause></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>4</buildableDurationMillis><buildableTimeMillis>4</buildableTimeMillis><buildingDurationMillis>477448</buildingDurationMillis><executingTimeMillis>477448</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>0</waitingTimeMillis></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>551</buildNumber><marked><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><branch><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><name>origin/master</name></branch></marked><revision><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><branch><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginosmithwip _class='hudson.plugins.git.util.Build'><buildNumber>5</buildNumber><marked><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><branch><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></marked><revision><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><branch><SHA1>b52b9704ed57386959a73c98e946c756e0188e6c</SHA1><name>refs/remotes/origin/osmith/wip</name></branch></revision></refsremotesoriginosmithwip><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>253</buildNumber><marked><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><branch><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><branch><SHA1>c7c48718ba3637e29fc6a7af4e2e39ba0679bb8d</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><branch><SHA1>19245d0d8bce1e7d87a5a5af328f9cacb2dc6600</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/pysim</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#551</displayName><duration>477448</duration><estimatedDuration>473668</estimatedDuration><fullDisplayName>simtester-sanitize #551</fullDisplayName><id>551</id><inProgress>false</inProgress><keepLog>false</keepLog><number>551</number><queueId>77204</queueId><result>SUCCESS</result><timestamp>1775004180777</timestamp><url>https://jenkins.osmocom.org/jenkins/job/simtester-sanitize/551/</url><builtOn>simtester</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/card-key-provider.rst</affectedPath><commitId>74ac191ae60fcdffe39bc98d46fc94a315a87932</commitId><timestamp>1774945567000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</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-31 08:26:07 +0000</date><id>74ac191ae60fcdffe39bc98d46fc94a315a87932</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><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/shell.rst</affectedPath><commitId>b42d417bbefc77f48d946854f290ee9cb02dfe5d</commitId><timestamp>1774945567000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</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-31 08:26:07 +0000</date><id>b42d417bbefc77f48d946854f290ee9cb02dfe5d</id><msg>docs/shell: fix copy-paste typos in editor command descriptions</msg><path><editType>edit</editType><file>docs/shell.rst</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/saip-tool.rst</affectedPath><commitId>4215a3bfd3762f1ccee788d1f205e43a2460b8bc</commitId><timestamp>1774945567000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>docs/saip-tool: fix typo "insertaion" -&gt; "insertion"

Change-Id: Ie9c9235ec964a15fab19d6ca5a83b2b1ddf07e7b
</comment><date>2026-03-31 08:26:07 +0000</date><id>4215a3bfd3762f1ccee788d1f205e43a2460b8bc</id><msg>docs/saip-tool: fix typo "insertaion" -&gt; "insertion"</msg><path><editType>edit</editType><file>docs/saip-tool.rst</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/legacy.rst</affectedPath><commitId>2cfb0972df36214d85b18d1071ed6b657020911c</commitId><timestamp>1774945567000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>docs/legacy: fix typo "EF,IMSI" -&gt; "EF.IMSI"

Change-Id: I1f246ec008a57b2373ed3f5531ab4166101f4dd0
</comment><date>2026-03-31 08:26:07 +0000</date><id>2cfb0972df36214d85b18d1071ed6b657020911c</id><msg>docs/legacy: fix typo "EF,IMSI" -&gt; "EF.IMSI"</msg><path><editType>edit</editType><file>docs/legacy.rst</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>docs/put_key-tutorial.rst</affectedPath><commitId>f7b86e1920cbd4f378bfe81fb51ad5d47c2a0c3d</commitId><timestamp>1774945567000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</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-31 08:26:07 +0000</date><id>f7b86e1920cbd4f378bfe81fb51ad5d47c2a0c3d</id><msg>docs/put_key-tutorial: fix three typos</msg><path><editType>edit</editType><file>docs/put_key-tutorial.rst</file></path></item><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><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>contrib/csv-to-pgsql.py</affectedPath><affectedPath>pySim/log.py</affectedPath><affectedPath>pySim-shell.py</affectedPath><commitId>ee06ab987fc29640fd59b6b0696596e8a4eb3f9a</commitId><timestamp>1774956586000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>PySimLogger: add parameter to set initial log-level/verbosity

When we initialize a new PySimLogger, we always call the setup method
first and then use the set_verbose and set_level method to configure
the initial log level and the initial log verbosity. However, we
initialize the PySimLogger in all our programs the same way and we
end up with the same boilerplate code every time. Let's add a keyword
parameter to the setup method where we can pass our opts.verbose (bool)
parameter so that the setup method can do the work for the main program.

In case the caller wants a different default configuration he still can
call set_verbose and set_level methods as needed.

Change-Id: I4b8ef1e203186878910c9614a1d900d5759236a8
</comment><date>2026-03-31 11:29:46 +0000</date><id>ee06ab987fc29640fd59b6b0696596e8a4eb3f9a</id><msg>PySimLogger: add parameter to set initial log-level/verbosity</msg><path><editType>edit</editType><file>pySim-shell.py</file></path><path><editType>edit</editType><file>contrib/csv-to-pgsql.py</file></path><path><editType>edit</editType><file>pySim/log.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>pySim-shell.py</affectedPath><commitId>c995bb1ec230b88d0b8891d78cfdb30d34fcf4e2</commitId><timestamp>1774956586000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>pySim-shell/cosmetic: remove semicolon

Change-Id: I629bacd432491211b939fcd2bed554b44ef441bc
</comment><date>2026-03-31 11:29:46 +0000</date><id>c995bb1ec230b88d0b8891d78cfdb30d34fcf4e2</id><msg>pySim-shell/cosmetic: remove semicolon</msg><path><editType>edit</editType><file>pySim-shell.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/pySim-prog_test/sysmoISIM-SJA2.ok</affectedPath><affectedPath>tests/pySim-prog_test/sysmosim-gr1.ok</affectedPath><affectedPath>tests/pySim-prog_test/sysmoISIM-SJA5.ok</affectedPath><affectedPath>tests/pySim-prog_test/Wavemobile-SIM.ok</affectedPath><affectedPath>tests/pySim-prog_test/sysmoUSIM-SJS1.ok</affectedPath><affectedPath>pySim-prog.py</affectedPath><affectedPath>tests/pySim-prog_test/Fairwaves-SIM.ok</affectedPath><affectedPath>pySim-read.py</affectedPath><affectedPath>tests/pySim-prog_test/fakemagicsim.ok</affectedPath><commitId>ca8fada7b6d5b36fab87cab66f8b75ed180a8ca2</commitId><timestamp>1774956586000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></author><authorEmail>laforge@osmocom.org</authorEmail><comment>pySim-prog/pySim-read: add pySimLogger and verbose cmdline argument

pySim-prog and pySim-read do not integrate the pySimLogger yet. As we
may add more debug output that should not be visible on normal use, we
should ensure that the pySimLogger is correctly set up.

Change-Id: Ia2fa535fd9ce4ffa301c3f5d6f98c1f7a4716c74
</comment><date>2026-03-31 11:29:46 +0000</date><id>ca8fada7b6d5b36fab87cab66f8b75ed180a8ca2</id><msg>pySim-prog/pySim-read: add pySimLogger and verbose cmdline argument</msg><path><editType>edit</editType><file>tests/pySim-prog_test/sysmoISIM-SJA5.ok</file></path><path><editType>edit</editType><file>tests/pySim-prog_test/Fairwaves-SIM.ok</file></path><path><editType>edit</editType><file>tests/pySim-prog_test/sysmosim-gr1.ok</file></path><path><editType>edit</editType><file>tests/pySim-prog_test/Wavemobile-SIM.ok</file></path><path><editType>edit</editType><file>tests/pySim-prog_test/sysmoUSIM-SJS1.ok</file></path><path><editType>edit</editType><file>tests/pySim-prog_test/fakemagicsim.ok</file></path><path><editType>edit</editType><file>tests/pySim-prog_test/sysmoISIM-SJA2.ok</file></path><path><editType>edit</editType><file>pySim-prog.py</file></path><path><editType>edit</editType><file>pySim-read.py</file></path></item><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><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><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/laforge</absoluteUrl><fullName>laforge</fullName></culprit><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/pmaier</absoluteUrl><fullName>pmaier@sysmocom.de</fullName></culprit></freeStyleBuild>