Release 0.1.0 (2026-02-10)¶
Bug fixes¶
-
prevent docs-only merge-base failures Ensure the docs-only detector has full history so the diff against the base branch succeeds on PR merge refs.
-
make docs-only detection merge-base independent Use the GitHub API file list for pull requests so docs-only detection does not rely on git merge-base in Actions.
-
satisfy ruff checks for metadata refresh script
-
update include directives Convert include directives to HTML comment form to avoid markdownlint MD018.
-
harden response parameter mapping Handle output-only parameters in response mapping and skip invalid qualifiers.
Update mapping tests for strict/lenient cases.
-
standardize shared MQSC attribute mappings Normalize selected token mappings across qualifiers and refresh conflicts report.
-
standardize additional shared attributes Normalize AMQPKA/CHANNEL/CONNAME/DEFTYPE and related mappings across qualifiers.
-
standardize CFSTRUCT and CLWL mappings Normalize CFSTRUCT/CLWL* and related attribute aliases across qualifiers.
-
correct ClusterWorkloadRank mapping Rename CLWLRANK from ClusterWorkloadTank to ClusterWorkloadRank.
-
standardize DESCR mapping Map DESCR to Description across qualifiers and refresh artifacts.
-
enforce per-qualifier unique mappings Resolve duplicate MQSC mappings via overrides/skips and add a guard test.
-
normalize client/message/user mappings Align CLIENTID/USERID and message delivery/count attributes across qualifiers.
-
standardize identifiers and LIKE mapping Normalize QMID/QMNAME/SUBUSER/LIKE plus filter STATUS/TYPE from conflicts.
-
normalize QMgr and Like mappings Standardize QMID/QMNAME/SUBUSER/LIKE and filter STATUS/TYPE from conflicts.
-
normalize Like and QMgr identifiers Apply Like/QMgr/SubUser standardization and filter STATUS/TYPE from conflicts.
-
clean stgclass Like override Remove stray stgclass overrides from request_key_value_map and regenerate maps.
-
normalize SSLPEER and cfstatus recovery mappings Standardize SSLPEER, MEDIALOG, and cfstatus recovery attributes.
-
normalize cfstatus recovery fields Standardize SSLPEER, MEDIALOG, and cfstatus recovery names.
-
normalize CLWL PCF names (issue #88)
- expand Msg to Message in PCF overrides (issue #87)
- normalize Identifier to Id (issue #86)
- normalize CFStructType override (issue #82)
-
remove name parameter from QMGR and CMDSERV command methods (#100) QMGR-level and CMDSERV MQSC commands operate on the local queue manager implicitly (identified by REST endpoint URL). The name argument was misleading since IBM MQSC syntax does not accept it for these commands.
-
omit responseParameters from non-DISPLAY commands to prevent silent failures (#125) _normalize_response_parameters() unconditionally defaulted to ["all"] for all command types. The MQ REST API silently ignores ALTER, DEFINE, and DELETE operations when responseParameters is present in the payload, returning success without applying changes.
Also handles MQRESTCommandError from DISPLAY of non-existent objects in ensure methods (MQ returns reason 2085 instead of an empty result set).
- configure git identity for annotated tag creation in publish workflow (#143)
Documentation¶
- align repo docs with standards (#12)
-
Document metadata milestone and mapping data structures
-
feat: add mapping runtime and generator
Add strict mapping helpers with deferred error aggregation, a generator for precompiled mapping data, and initial tests. Add curated mapping inputs, standards registry, and a follow-up plan.
-
align standards entrypoint with repo type Restructure the standards entrypoint to list core and library references.
-
adopt standards include bootstrap
-
align standards includes Move repository standards into docs and include them from AGENTS only.
-
require uv run for python commands Clarify that all python invocations must use uv run, and update local validation examples.
-
archive first-pass docs and capture mqsc list (#70)
- docs: archive first-pass docs and capture mqsc list
Archived the first-pass mapping artifacts and added the MQSC command list extraction reference files.
-
regroup conflicts report Group collisions by PCF attribute for easier review.
-
note codex command policy workaround Record the temporary branch-cleanup workaround for codex runs.
-
add CLAUDE.md for Claude Code integration (#96)
- docs: add CLAUDE.md for Claude Code integration
Adds CLAUDE.md to provide Claude Code-specific guidance that complements the existing AGENTS.md include-directive approach.
- Documents dual-file documentation strategy
- Includes repository standards via include directives
- Provides prescriptive commands and workflows for /init
- Explains integration between AGENTS.md and CLAUDE.md
- Adds best practices for maintaining both files
🤖 Generated with Claude Code
- document standards compliance gates implementation (#99)
-
add Sphinx documentation tree with mapping reference and API docs (#30) (#105) Add a complete Sphinx documentation site using MyST Markdown and the furo theme. Includes narrative pages (getting started, architecture, mapping pipeline, AI engineering transparency, design rationale), autodoc API reference for all public modules, and 48 auto-generated qualifier mapping pages showing snake_case to MQSC attribute translations.
-
rework API reference pages for readability (#108) Replace raw automodule dumps with curated pages using targeted autoclass/autofunction directives and a hand-written command reference table. Ref #30.
-
enrich docstrings for session, mapping, and exception modules (#111) Add Args, Returns, Raises, and Attributes sections to all public classes and functions so Sphinx autodoc renders useful API reference pages. Ref #30.
-
add docstrings to all MQSC command wrapper methods (#109) (#116) Add a generation script (scripts/dev/generate_commands.py) that regenerates the block between BEGIN/END GENERATED MQSC METHODS markers in commands.py, embedding docstrings in every generated method. Manually add docstrings to the 13 hand-written methods and the MQRESTCommandMixin class. Each docstring includes the IBM MQ 9.4 MQSC reference URL and Sphinx cross-references to qualifier mapping pages where available.
Also adds DISPLAY SYSTEM and SET SYSTEM to MAPPING_DATA commands to keep parity with docs/extraction/mqsc-commands.yaml, and removes the D1 per-file ignore for commands.py from pyproject.toml since all methods now have docstrings.
-
fix autodoc rendering by wrapping directives in eval-rst blocks (#117) MyST-parser cannot interpret the reST output generated by autodoc, causing class signatures and attributes to render as illegible nested definition lists. Wrapping all autoclass/autofunction directives in eval-rst blocks passes content to the reST parser directly.
-
credit both Claude Code and Codex in AI engineering page (#118) Make the AI-assisted engineering page vendor-agnostic and list both AI coding agents used in the project development.
-
separate unmapped qualifiers in mapping index, rewrite auth docs (#135) The mapping index now lists only the 39 qualifiers with attribute mappings in the main toctree and calls out the 9 unmapped qualifiers in a separate prose section with a hidden toctree. The authentication page reorders credential types most-secure-first and adds a new "Choosing between LTPA and Basic authentication" section covering realistic trade-offs.
-
remove misleading "yet" from unmapped qualifier description (#137) These qualifiers have no attributes to map — the word "yet" implied the mappings were incomplete rather than intentionally absent.
-
clarify mapping data is bootstrapped from 9.4 docs, now authoritative in source (#141)
Features¶
- add mq container tooling and refresh mqsc output metadata
-
add MQ REST session framework Introduce MQRESTSession with transport, mapping integration, and initial command wrappers. Add unit tests and refresh the API surface docs.
-
switch session transport to requests Replace urllib transport with requests, add runtime and typing dependencies, and build integration tests for display_qmgr/queue/channel.
-
add more MQSC helper methods Add queue manager display helpers and queue define variants; refresh docs/tests.
-
expand MQSC command wrappers Generate wrappers for the full MQSC command list and document the naming scheme.
-
add MQSC qualifier placeholders Populate command->qualifier mappings and expand integration config for new display helpers.
-
support request key/value mappings
- document response parameter macros (issue #84)
-
enable strict attribute mapping by default (#98) Change MQRESTSession default from mapping_strict=False to mapping_strict=True so unknown attributes raise MappingError instead of silently passing through. This surfaces mapping gaps early rather than masking them.
-
add WHERE filter support for DISPLAY commands (#101) Add a
whereparameter to all 41 list-returning DISPLAY methods that maps filter-keyword names from snake_case to MQSC using the existing attribute mapping infrastructure. The WHERE condition string is injected into the request parameters as {"WHERE": "mapped_condition"}.
When mapping is disabled, the WHERE string passes through as-is. When mapping is enabled in strict mode, unknown filter-keywords raise MappingError.
-
flatten nested objects in command response parameters (#103) DISPLAY CONN TYPE(HANDLE) returns a nested objects list within each connection parameters. Automatically detect and flatten this pattern so each nested item becomes its own dict with shared attributes replicated. Empty objects lists produce no output entries.
-
add practical example scripts with multi-QM Docker environment (#104) (#119) Expand the single-QM Docker setup to two queue managers (QM1 + QM2) on a shared network, add five practical example scripts exercising real MQ administration tasks, and wire up integration tests and Sphinx documentation.
-
add idempotent ensure methods for declarative object management (#75) (#121) Introduce ensure_*() methods that implement a declarative upsert pattern: DEFINE when an object does not exist, ALTER only when specified attributes differ, and no-op when they already match — preserving ALTDATE/ALTTIME for unchanged objects. Each call returns an EnsureResult enum (CREATED, UPDATED, UNCHANGED).
-
add ensure_qmgr for idempotent queue manager attribute management (#123) Singleton variant of the ensure pattern — no name parameter, no DEFINE path, returns UPDATED or UNCHANGED (never CREATED). Critical for declarative management of statistics, monitoring, events, and logging attributes without corrupting ALTDATE/ALTTIME.
-
add LTPA token and mTLS client certificate authentication (#131) Add credential dataclasses (BasicAuth, LTPAAuth, CertificateAuth) to support three authentication modes for the IBM MQ REST API. Sessions accept a credentials keyword parameter while keeping positional username/password for backward compatibility. LTPA login is performed eagerly at construction time and mTLS certificates are configured on the transport layer.
-
add PyPI publication infrastructure (#142) Add publish workflow (OIDC trusted publishing), CI release gates, PyPI version validation script, package metadata, and release documentation.
Refactoring¶
-
remove explicit channel_type arg Expect channel_type in request_parameters for define_channel and update docs/tests.
-
move mq rest exceptions to module
- move MQSC command methods to commands module
-
rename _build_response_parameter_map to _build_snake_to_mqsc_map (#102) The previous name was misleading — the function builds a combined snake_case → MQSC lookup map, which is request-direction mapping. The old name implied it was response-direction. The new name reflects what the map actually does regardless of call site.
-
expand opaque MQSC shorthands to descriptive snake_case names (#126) Rename 15 attribute mappings where the snake_case name was a direct transliteration of the MQSC shorthand rather than a readable Python name. Domain-standard abbreviations (cf, cpi, mca, psb, qsg, uow) are intentionally kept.
-
expand abbreviated snake_case attribute names to descriptive forms (#127)
- refactor: expand
q→queueandq_mgr→queue_managerin attribute names
Expand opaque shorthand prefixes in the snake_case attribute namespace
to match the descriptive naming convention used elsewhere (e.g.,
transmission_queue_time, use_dead_letter_queue).
Two patterns replaced across mapping_data.py, extraction YAMLs, generated mapping docs, and all test files:
q_mgr→queue_manager(11 unique attributes, ~23 occurrences)-
q→queue(27 unique attributes, ~50 occurrences) -
expand remaining abbreviated snake_case attribute names (#128) Expand 19 shorthand attribute names to descriptive forms:
- secure_comms → secure_communications
- sys_name → system_name
- ssl_client_auth → ssl_client_authentication
- current/last_luwid → logical_unit_of_work_id
- psb_name → program_spec_block_name
- pst_id → partition_spec_table_region_id
- certificate_val_policy → certificate_validation_policy
- channel_auto_def_event/exit → channel_auto_define_event/exit
- chinit_service_parm → chinit_service_parameter
- cluster_pub_route → cluster_publish_route
- correl → correlation, comm → communication
-
xmit → transmission, igq → intragroup_queueing
-
expand abbreviated snake_case attribute names (batch 4) (#132) Expand checkpoint, filesystem, log, description, and miscellaneous abbreviations to descriptive forms in mapping_data.py (20 renames).
-
use snake_case attribute names exclusively in examples (#133) Remove MQSC fallback patterns (e.g.
get("snake") or get("MQSC", default)) from all examples, using only the mapped snake_case names. This avoids encouraging direct use of unmapped MQSC attribute names. -
require credentials keyword argument, drop username/password (#134) The username/password positional parameters on MQRESTSession.init were kept for backwards compatibility when credentials support was added in #131. Since pymqrest has never been released, there is nothing to be compatible with. This simplifies the API to a single required credentials keyword argument and removes the _resolve_credentials helper and its associated error constants.
-
make perform_ltpa_login internal, remove from public docs (#136) The function is only called from MQRESTSession construction and takes internal types (MQRESTTransport, csrf_token) that end users never construct directly. Rename to _perform_ltpa_login and drop the LTPA Login section from the authentication docs page.
-
archive extraction pipeline, use MAPPING_DATA as sole source of truth (#140)
Testing¶
-
cover MQREST session helpers Expanded unit coverage for MQRESTSession/transport helpers and tightened typing casts.
-
expand integration display coverage
- generalize integration display and mutating coverage
- run integration lifecycle against local mq