Release 1.1.4 (2026-02-16)¶
Bug fixes¶
- remove extra blank line in CHANGELOG.md
-
disable MD041 for mkdocs snippet-include files The docs/site/docs/mappings/*.md files are mkdocs snippet includes (--8<-- directives), not standalone markdown documents. MD041 (first line must be a heading) false-positives on these. The awk structural check in standards-compliance already enforces single-H1 for real docs.
-
correct snippets base_path resolution for fragment includes (#267) pymdownx.snippets resolves base_path relative to CWD (not the mkdocs.yml location). The previous paths were relative to docs/site/ which caused fragments to either not resolve or self-include when the wrapper file had the same name as the fragment.
Use CWD-relative paths so fragments resolve correctly when mkdocs is invoked from the repository root.
Ref wphillipmoore/mq-rest-admin-common#32
- run mike from repo root so snippet base_path resolves in CI (#268) Remove working-directory from mike deploy step and pass -F docs/site/mkdocs.yml instead, so CWD matches the base_path entries in mkdocs.yml.
Ref wphillipmoore/mq-rest-admin-common#32
- remove PR_BUMP_TOKEN and add issue linkage to version bump PR Remove the PR_BUMP_TOKEN secret fallback from the version bump step, using github.token directly instead. Remove the corresponding git remote set-url that configured token-based auth, since the default GITHUB_TOKEN already has push access.
After creating the version bump PR, extract the PR number and edit the body to include a self-referencing issue link (Ref #N), then close and reopen the PR to trigger notification workflows before enabling auto-merge.
-
rename integration-test job to integration-tests Standardize CI job naming across all library repos. Java already uses integration-tests (plural); this aligns Python to match.
-
move SBOM generation after PyPI publish step (#284) The SBOM .cdx.json file was being written to dist/ before the PyPI publish step, causing pypa/gh-action-pypi-publish to reject the unknown distribution format. Move the SBOM generation after publish but before the GitHub Release so dist/ only contains valid Python distributions during upload to PyPI.
-
sync prepare_release.py with canonical version (#286) Add --issue argument for tracking issue linkage in release PR body. Add merge_main() step to prevent CHANGELOG.md merge conflicts by incorporating main's history before generating the changelog.
Documentation¶
-
migrate from Sphinx to MkDocs Material Replace Sphinx+MyST+Furo with MkDocs Material to align with the Java repo and enable shared documentation fragments via pymdownx.snippets.
-
Move doc sources from docs/sphinx/ to docs/site/docs/
- Convert {doc} cross-references to standard Markdown links
- Convert eval-rst/autoclass blocks to mkdocstrings syntax
- Add mkdocs.yml with Material theme and mkdocstrings[python] plugin
- Update pyproject.toml dependencies and CI workflow
-
Delete Sphinx conf.py and old docs directory
-
fix attribute names, stale auth claim, and bare pages (#251)
-
address medium-severity documentation consistency findings (#253) Rewrite architecture.md to use shared fragment includes matching the Java pattern, add transport mocking guidance, create api/transport.md, rewrite exceptions.md with usage examples, normalize "Python names" to "Developer names" in mapping-pipeline.md, and set dark mode as default theme palette.
-
address cross-library documentation consistency nits (#259) Enrich API reference pages with overviews, code examples, inline type definitions, and structured tables to match Java/Go quality. Add code examples to mapping pipeline page, restructure API index, standardize nav ordering, and add architecture cross-references.
-
switch to shared fragment includes from common repo (#264) Replace duplicated mapping pages, AI engineering, local MQ container, and design docs with --8<-- snippet includes from mq-rest-admin-common. Delete generate_mapping_docs.py (moved to common).
-
add quality gates documentation page Include the shared quality gates fragment from mq-rest-admin-common and append Python-specific validation pipeline details (ruff, mypy, ty, pytest, pip-audit, uv lock check).
-
remove Python-specific design choices and beta status from rationale These sections are redundant with the API reference documentation and no longer applicable.
-
update CLAUDE.md architecture section for current codebase (#276) Update the architecture section to reflect the current module structure:
- Mapping data now references JSON file and thin Python loader
- Add auth.py, ensure.py, sync.py, and _mapping_merge.py sections
- Add MQRESTAuthError and MQRESTTimeoutError to exceptions list
Features¶
- add Tier 1 security tooling (CodeQL, attestations, license compliance)
- Add CodeQL SAST job to CI workflow using standard-actions composite action
- Add build provenance attestations to publish workflow (attest-build-provenance@v2)
- Add pip-licenses dependency with GPL-compatible license allowlist
- Add license compliance check to CI dependency-audit job and local validation
Ref wphillipmoore/mq-rest-admin-common#20 Ref wphillipmoore/mq-rest-admin-common#21 Ref wphillipmoore/mq-rest-admin-common#22
- add Trivy and Semgrep CI jobs and SBOM generation Add Trivy filesystem vulnerability scanning and Semgrep SAST jobs to CI, gated by docs-only detection. Add CycloneDX SBOM generation to the publish workflow, attached to GitHub Releases alongside build artifacts.
Ref mq-rest-admin-common#11, #24, #25
Refactoring¶
-
convert mapping data from Python module to JSON file (#274) Replace the 1956-line inline Python dict in mapping_data.py with a JSON file loaded at import time. The JSON file is copied from the canonical source in mq-rest-admin-common.
-
Add src/pymqrest/mapping-data.json (from mq-rest-admin-common)
- Rewrite mapping_data.py to load from JSON via json.loads()
- Update generate_commands.py to use json.loads() instead of importlib
- Add mapping-data.json to pyproject.toml package-data