Ci qa issue 2276 - #2286
Merged
Merged
Conversation
xsscx
requested review from
ChrisCoxArt,
colourbill-ctrl,
dwtza and
maxderhak
as code owners
August 24, 2026 11:40
xsscx
requested
a lite review from Copilot
and removed request for
ChrisCoxArt,
colourbill-ctrl,
dwtza and
maxderhak
August 24, 2026 11:40
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a Python-accessible in-process ICC profile validation surface and wires it into the iccdev-mcp server/REST dashboard, aligning with #2278’s goal of exposing the C-only validation header/ABI for Python consumers.
Changes:
- Added
validate_profile()/validate_profile_file()plusValidationStatus/ValidationResultto theiccdevPython bindings (Cython + stubs) with corresponding tests/docs. - Added a new
validate_profilePython-native tool toiccdev-mcp(MCP + REST endpoint + dashboard inventory), including health-reporting and tests. - Updated build/test/docs infrastructure to cover the validation ABI (CMake regression target behavior, Docker image sanity check, Doxygen inputs, cross-linking docs).
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Links top-level docs to the Python bindings README. |
| python/tests/test_iccdev.py | Adds binding-level tests for validation status and basic validate workflows. |
| python/README.md | Documents validation feature and new convenience APIs. |
| python/iccdev/cicc_wrapper.pxd | Exposes the IccCValidation.h ABI to Cython via size_t + icc_validate_profile. |
| python/iccdev/_iccdev.pyx | Implements ValidationStatus and validate_profile* in the Cython module. |
| python/iccdev/_iccdev.pyi | Adds type stubs for validation enums/results and new functions. |
| python/iccdev/init.py | Re-exports validation symbols/functions in the public Python API. |
| iccdev-mcp/tests/test_server.py | Adds MCP tool-level test for validate_profile; updates tool-count expectation. |
| iccdev-mcp/tests/test_rest_api.py | Adds REST endpoint tests for /api/validate-profile and updates tool inventories/counts. |
| iccdev-mcp/README.md | Updates tool inventory/docs to include validate_profile and shared-library requirements. |
| iccdev-mcp/iccdev/init.py | Adds ctypes-based dynamic loading of the validation ABI in the bundled shim iccdev. |
| iccdev-mcp/iccdev_mcp/server.py | Adds MCP tool validate_profile and reports validation availability in health. |
| iccdev-mcp/iccdev_mcp/rest_api.py | Adds REST endpoint /api/validate-profile and dashboard wiring/inventory updates. |
| iccdev-mcp/iccdev_mcp/init.py | Updates package-level documentation to reflect 26 tools / 7 Python-native. |
| iccdev-mcp/docs/INDEX.md | Updates REST inventory documentation for the new tool count. |
| docs/c-api-validation.md | Documents how the Python binding uses the in-process C validation API. |
| Dockerfile.mcp | Adds a container build-time sanity check for native validation; sets ICCDEV_BUILD_DIR. |
| Build/Cmake/Testing/CMakeLists.txt | Adjusts the C validation dlopen regression target compile options for Clang. |
| .github/ci/doxygen/Doxyfile | Adds the C validation example to Doxygen inputs. |
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Suppressed comments (1)
python/tests/test_iccdev.py:139
- The validation C API does not guarantee the report string is non-empty for malformed inputs; requiring a truthy report makes the test brittle across platforms/versions. Assert that a string is returned instead.
def test_rejects_malformed_input(self):
result = validate_profile(b"\x00\x01\x02\x03")
assert result.status is ValidationStatus.CRITICAL_ERROR
assert result.report
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Summary
#2278
Checklist
docs/build.mddocs/ctest.mddocs/python-packaging-release.mdfor PR and merge requirementsm_membersLegal Requirements
All official software projects hosted by the International Color Consoritum (ICC)
follows the open source software best practice policies. The International Color Consoritum IP policy governs ICC specification development and contributions to ICC open source software. Software contributions are also covered by the Contributor License Agreement (CLA).
Contributor License Agreements
Developers who wish to contribute code to be considered for inclusion
in ICC software must first complete a Contributor License Agreement
(CLA).
There is no cost or membership requirement to sign the ICC Contributor License Agreement (CLA). Please note that this is different from membership in the International Color Consortium (ICC). If your organization relies on our projects, please become a member. Membership dues are an essential source of funding and investment for these projects.
If you are an individual writing the code on your own time and you are SURE you are the sole owner of any intellectual property you contribute, you can sign the CLA as an individual contributor.
If you are writing the code as part of your job, or if there is any possibility that your employer might think they own any intellectual property you create, then you should use the Corporate Contributor Licence Agreement
License
ICC software is licensed under the BSD 3-Clause "New" or "Revised" License. Contributions to ICC software projects should abide by that license unless otherwised specified or approved by the ICC.
Copyright Notices
All new source files must begin with the ICC Copyright notice and include or reference the BSD 3-Clause "New" or "Revised" License.
INTELLECTUAL PROPERTY & PATENTS
Participation in ICC's development activities is subject to ICC's Patent Policy.
Maintainer Review Required
If you have questions, contact a listed Maintainer.