PEAU DU MONDE| postProcessor — maintenance manual v0.99.4 · for an organisation that takes the plugin into its own environment

1 What an office installs

One ZIP, pdm_postprocess-<version>.zip, holding one folder, pdm_postprocess: the plugin, its data (the S-57 catalogue, the IHO's S-101 Feature Catalogues and S-158 check lists, the SCAMIN lists, the buoyage areas, the coverage of the Netherlands, the chart styles), its help pages, this one among them, in help\, and LICENSE, the licence's full text.

Outside that folder, in the QGIS profile, the plugin keeps two things of its own: the office file and the workspace (section 8).

2 Before installing

  • QGIS 3.34 or later, up to 4.x, with shapely 2, GDAL's Python (its S102 driver for S-102) and numpy. QGIS 4.2.1's installer brings all three; with another build the plugin checks them at its start and says what is missing.
  • Check the delivery: its SHA-256 must be the one given with it. PowerShell: Get-FileHash <zip> -Algorithm SHA256; Linux: sha256sum <zip>.
  • No administrator rights are needed.
  • What it needs of processors, memory, disk and network: the information sheet.

3 Installing

  1. QGIS ▸ Plugins ▸ Manage and Install Plugins… ▸ Install from ZIP, the ZIP, Install Plugin.
  2. A button appears, and the Plugins menu gets Peau du Monde | postProcessor with the quick card, the manual and the acceptance test.
  3. The first press of the button shows the HALT card: read it and confirm. It shows once per version.
  4. When something the review needs is missing, the plugin does not start: the message bar says what, and the QGIS log (View ▸ Panels ▸ Log Messages, tab Peau du Monde | postProcessor) names the versions it found.

4 Setting up the office

Once per workstation, in the panel's Settings:

  • officeSettings — the producer code (two capitals or digits), the agency code (1 to 65534), the agency's name, the S-100 producer code; the SCAMIN region; the background map, on unless unticked (then no OpenStreetMap comes in; what QGIS reaches out for: the information sheet's Q&A). A delivery built for the office may carry the codes and the name fixed: shown read-only, and the status line says which. And the home directory: a folder on the workstation's fixed disk, outside OneDrive, for the products, the reports and the workspace — without it nothing is written. And the project CRS: EPSG:3857 unless the office works in another. And the signing certificate, the office's Data Server certificate, for the S-101 sets Convert makes; the key is asked at every conversion and kept nowhere. And 2FA: a QR to scan; lockSession then locks the panel.
  • buoyageSystems — the buoyage areas (IALA A, IALA B, CEVNI); Copy chartProduction's areas adds the ones that come with the plugin.
  • vmbModels — the office's models, which compare the charts with its own GIS services. A service with a login: keep it in QGIS's authentication manager (authcfg); no secret of an address is kept.
  • scaminValues — the office's own SCAMIN values, where they differ from the Encoding Guide.
  • ignoreList — known discrepancies a model run leaves out.

For Inland ENC cells the plugin carries the Inland ENC Feature Catalogues 2.3, 2.4 and 2.5.1 in data\ienc_fc, as the IEHG publishes them (open data, ienc.openecdis.org; its SOURCE.md names each file and its sha256). A cell of another edition is read against the office's copy in dataBridge's ienc_fc folder, where there is one, else against the previous edition, and says so.

5 Updating

  1. Let the panel finish its work: nothing being written.
  2. Install the new ZIP the same way; QGIS replaces the plugin folder.
  3. Restart QGIS, so the panel and its worker processes load the same version.
  4. The HALT card shows once for the new version. The workspace is emptied at the start, as always. The office file is kept, and gains any new table or column at its next save.
  5. Run the acceptance test in every delivered version (Plugins menu): it is scripted step by step, with pass, fail and a note per step.

The IHO's S-101 Feature Catalogues 1.1.0, 2.0.0 and 2.1.0 (data\s101_fc) and S-158 check lists (data\s158) come unmodified with the plugin, each folder with its SOURCE.md: a new edition comes with a new version.

6 Backing up

  • The office file is the office's own data: back it up with the user's documents.
  • The workspace is a cache: no backup.
  • The products and their delivery reports are the office's deliveries: they follow its own archiving.

7 Several workstations

  • Every workstation — every QGIS profile — has an office file of its own. The file has no lock: do not share one live over a network drive.
  • A new object takes a new FIDN, counted down from the lowest the office file has handed out. Two workstations with a file each hand out the same numbers: two objects, one identity. Add objects on one workstation, or carry the office file from one workstation to the next.
  • Models travel as files: vmbModels ▸ export… and import….
PEAU DU MONDE| postProcessor — maintenance manual v0.99.4 · sheet 2

8 Where everything is

Plugin<profile>\python\plugins\pdm_postprocess — replaced by every update.
Office file<profile>\pdm_postprocess\reference.gpkg — the office's settings, models and lists; made at the first save, kept through updates. Back it up.
Workspace<home>\workspace, or <profile>\pdm_postprocess\workspace before a home directory is set — copies of the sets in work, reviews and the findings they read, map layers, journals. A cache: emptied at every start; in the home directory only while it holds postProcessor workspace.txt.
Products<home>\production: <set>_altN, <set>_altN_copies, <set>_WALRADAR, <set>_S101. <home>\reviews: the delivery reports. A changed S-100 dataset is written unsigned (R-PP97); a set Convert makes is signed when the office gives its key.
QGIS settingsKeys under pdm_postprocess/: the HALT card's version, the last folder, the panel's colours and frame.

<profile> is the QGIS profile folder: %APPDATA%\QGIS\QGIS3\profiles\default for QGIS 3, …\QGIS4\… for QGIS 4. Settings ▸ User Profiles ▸ Open Active Profile Folder shows it.

9 Distributing inside the office

  • Give every workstation the same ZIP, with its SHA-256.
  • An office that holds the source can build a ZIP with its settings fixed: tools\build_zip.py --office=producer_code=… --office=agen=… — the producer code and the agency code together, or neither.
  • QGIS can read a plugin repository of the office's own, but none comes with the plugin: it goes out as its ZIP.

10 Removing

  1. Plugins ▸ Manage and Install Plugins… ▸ Installed, the plugin, Uninstall Plugin.
  2. What stays, to remove by hand when wanted: the folder <profile>\pdm_postprocess (the office file), the home directory's workspace, the pdm_postprocess/ QGIS settings, and the enc_… variables in saved QGIS projects.
  3. The home directory's production and reviews are the office's own deliveries: they stay.

11 Troubleshooting

What you seeWhat to do
The plugin does not start; the message bar names shapely or GDAL.QGIS's Python lacks it: install QGIS with its standard packages.
QGIS reports the plugin needs QGIS 3.34 or later.Update QGIS.
A cell shows — not reviewed.Its worker failed; the error is under it. The other cells are fine. Send the error with the delivery report.
A write is refused.Edits' row says why. Nothing half-done is written.
The disk fills.Every review adds to the workspace: restart QGIS, which empties it at the start.
walradar says move it away first.A <set>_WALRADAR from before is in the way: move or rename it.
The background map stays empty.No internet: nothing to do, the plugin works without it. None wanted: untick it in officeSettings.
Odd behaviour after an update.Restart QGIS.

12 For an office that holds the source

  • Under the GPL the source is the office's to read and change. COSMO.md is the maintenance guide, CONTRACT_POSTPROCESS.md holds every ruling and why.
  • Use QGIS's own Python (python-qgis.bat on Windows) for everything below.
  • The harness: run_tests.py. ALL GREEN is the bar, and it runs the gate. test_audit proves every audit check on a cell the plugin's own ISO 8211 writer makes against it, and read by its own reader.
  • The S-57 to S-101 converter is carried in as engine\pp_s57to101, byte for byte from its own repository at the commit CARRIED.md names, with each file's checksum; its tests run there. test_engine holds the two together and fails when a carried file differs.
  • The gate: tools\check_gate.py, eight checks — bandit over what ships, detect-secrets, flake8, metadata.txt, the ZIP, the author's names, the helper's name, type hints (mypy). bandit, detect-secrets, flake8 and mypy must be installed in that Python.
  • The build: tools\build_zip.py [folder] [--office=field=value …]; the help pages: tools\build_help.py.
  • Proofs: tools\ast_same.py <before> <after> [--hints] shows a change only annotates or reflows; probes\regress_review.py <ENC_ROOT> <out> shows two trees review a set alike.

13 Support

info@peaudumonde.com. Send the delivery report and the version line from the QGIS log, and name the set.

The manual (Plugins menu) explains every panel; the quick card is the short version; the information sheet answers what the plugin connects to, and why it can be trusted.