{"name": "PlanX Suitability Lab", "package_name": "planx_suitability_lab", "version": "1.6.3", "experimental": false, "qgis_min": "3.28.0", "qgis_max": "4.99.0", "downloads": 51, "uploaded_by": "geo140195philo", "upload_datetime": "2026-07-17T16:53:23.477162", "changelog": "## [1.6.3] - 2026-07-17\r\n\r\n- QGIS Hub review fixes for 1.6.2. Qt6 compatibility: migrated all 296 Qt5-style `QVariant.*` field-type enums across 37 algorithm files to `QMetaType.Type.*` (`Double`/`Int`/`LongLong` map 1:1, `String` \u2192 `QString`) \u2014 PyQt6 has no `QVariant.Type`, and `QMetaType.Type` is the documented replacement (the `QgsField` QVariant constructor is deprecated since QGIS 3.38); every mapping was probe-verified with a `QgsField` round-trip on QGIS 3.44 LTR and QGIS 4.2 before rewriting (`scratch/qvariant_to_qmetatype.py`).\r\n- Code quality: renamed the ambiguous loop variable `l` flagged by the Hub's Flake8 panel (E741) in 10 files; the local Hub-scan mirror now also checks E741/E742/E743 so quality findings surface before upload.\r\n\r\n## [1.6.2] - 2026-07-17\r\n\r\n- QGIS 4 / Qt6 readiness: scoped all 169 remaining Qt5-style enum accesses across 63 algorithm files for the Hub's Qt6 static check \u2014 `QgsProcessing.Type*` \u2192 `QgsProcessing.SourceType.Type*` and `QgsProcessingParameterNumber.Integer|Double` \u2192 `QgsProcessingParameterNumber.Type.*`. Every scoped form was probe-verified against both QGIS 3.44 LTR and QGIS 4 before rewriting (`scratch/qt6_enum_audit.py`); `QVariant.*` field types intentionally stay unscoped (PyQt6 has no `QVariant.Type`; the qgis.PyQt compatibility layer keeps them working). No functional change.\r\n\r\n## [1.6.1] - 2026-07-17\r\n\r\n- Security hardening: resolved all remaining Bandit findings in code \u2014 the B110/B112 `try/except: pass|continue` patterns in `_mcda_utils` and the six reporting algorithms (actionability scorecard, deployment readiness gate, policy gate recommender, scenario governance audit, scenario robustness leaderboard, scenario selection recommender) were rewritten with `contextlib.suppress`, preserving row-skip semantics. The `.bandit` skip configuration was removed entirely; the QGIS Hub security scan now passes plain CLEAN with zero findings and zero suppressions.\r\n- Packaging hygiene fix: `packaging/zip_hub.py` now always excludes internal AI-agent work-order files (`ENHANCEMENT_PLAN_*.md`, `DEEPSEEK_PROMPT_*.txt`, `REPORT_v*.md`) from the built zip, regardless of version suffix. These files remain in the GitHub repository as project history but no longer ship in the QGIS Hub package.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/planx_suitability_lab/version/1.6.3/download/"}