Skip to content

[#847] Fix Argyll version compared as string, not parsed version list - #876

Merged
eoyilmaz merged 1 commit into
developfrom
847-qt-gamap-argyll-version-string-compare
Jul 17, 2026
Merged

[#847] Fix Argyll version compared as string, not parsed version list#876
eoyilmaz merged 1 commit into
developfrom
847-qt-gamap-argyll-version-string-compare

Conversation

@eoyilmaz

Copy link
Copy Markdown
Owner

Summary

  • Fixes [Qt] Gamut mapping window compares Argyll version as a string, not a parsed version list #847: gamap_settings.py's viewcond_items()/intent_items() compared getcfg("argyll.version") as a raw string (argyll_version < "1.3.3"), which sorts lexicographically instead of numerically, so "1.10.0" < "1.3.3" is wrongly True and hides gamut-mapping intents/viewing conditions for Argyll releases with a double-digit version component.
  • While fixing it, found and fixed the same bug pattern in two more places that share the root cause: lut3d_settings.py (compute_trc_visibility(), lut3d_encoding_codes(), lut3d_encoding_controls_visible()) and ui/main_window.py (lut3d_format_items(), lut3d_rendering_intent_items()), which wrongly hid 3D LUT options (madVR format, clip-WTW encoding, "Perceptual, LUT proof" intent) the same way.
  • Added argyll_version_at_least() to argyll.py, a shared helper that compares parsed numeric version components (via the existing parse_argyll_version_string()) instead of raw strings, and switched all affected call sites to it.

Test plan

  • Added regression tests exercising Argyll 1.10.0 (a version that sorted incorrectly under the old string comparison) to tests/test_gamap_settings.py, tests/test_lut3d_settings.py, and tests/test_ui_main_window.py.
  • pytest tests/test_gamap_settings.py tests/test_lut3d_settings.py tests/test_ui_main_window.py -n auto — 592 passed.
  • ruff check clean on all changed lines.

…n list

DisplayCAL/gamap_settings.py, lut3d_settings.py, and ui/main_window.py all
gated feature availability on `argyll_version >= "1.6"`-style raw string
comparisons, which sort lexicographically instead of numerically (e.g.
`"1.10.0" < "1.3.3"`). Argyll releases with a double-digit version
component wrongly hid gamut-mapping intents/viewing conditions and 3D
LUT options.

Added `argyll_version_at_least()` in argyll.py, which compares parsed
numeric version components, and switched all affected call sites to it.
@eoyilmaz
eoyilmaz merged commit 109af34 into develop Jul 17, 2026
26 of 30 checks passed
@eoyilmaz
eoyilmaz deleted the 847-qt-gamap-argyll-version-string-compare branch July 17, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Qt] Gamut mapping window compares Argyll version as a string, not a parsed version list

1 participant