You are not logged in.

#26 2026-06-21 23:51:34

loqs
Member
Registered: 2014-03-06
Posts: 18,978

Re: Displaycal and python 3.14

What command produced the output:

--- venv: Creating Local virtualenv '.venv' using '/usr/bin/python' ---

Offline

#27 2026-06-21 23:58:50

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

What command produced the output:

It's from the instructions here: https://github.com/eoyilmaz/displaycal- … s_linux.md

Here's the whole output  including the command:

glen@honcho:~/Projects$ git clone https://github.com/eoyilmaz/displaycal-py3
Cloning into 'displaycal-py3'...
remote: Enumerating objects: 45721, done.
remote: Counting objects: 100% (646/646), done.
remote: Compressing objects: 100% (166/166), done.
remote: Total 45721 (delta 533), reused 487 (delta 479), pack-reused 45075 (from 4)
Receiving objects: 100% (45721/45721), 61.97 MiB | 11.04 MiB/s, done.
Resolving deltas: 100% (34360/34360), done.
glen@honcho:~/Projects$ cd displaycal-py3/
glen@honcho:~/Projects/displaycal-py3$ make venv build install

--- venv: Creating Local virtualenv '.venv' using '/usr/bin/python' ---
python3 -m venv .venv

--- build: Building ---
--- build: Local install into virtualenv '.venv' ---
--- build: Using python interpreter '/home/glen/Projects/displaycal-py3/.venv/bin/python' ---
Collecting uv
  Using cached uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Using cached uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.4 MB)
Installing collected packages: uv
Successfully installed uv-0.11.23
Resolved 87 packages in 322ms
Prepared 2 packages in 1.58s
Installed 86 packages in 25ms
 + attrs==26.1.0
 + build==1.5.0
 + cachetools==7.1.4
 + casttube==0.2.1
 + certifi==2026.6.17
 + cffi==2.0.0
 + charset-normalizer==3.4.7
 + colorama==0.4.6
 + contourpy==1.3.3
 + coverage==7.14.2
 + cryptography==49.0.0
 + cycler==0.12.1
 + darglint==1.8.1
 + dbus-python==1.4.0
 + defusedxml==0.7.1
 + distlib==0.4.3
 + distro==1.9.0
 + docutils==0.23
 + execnet==2.1.2
 + filelock==3.29.4
 + flake8==7.3.0
 + flake8-bugbear==25.11.29
 + flake8-docstrings==1.7.0
 + flake8-import-order==0.19.2
 + flake8-pep3101==3.0.0
 + flake8-spellcheck==0.28.0
 + fonttools==4.63.0
 + id==1.6.1
 + idna==3.18
 + ifaddr==0.2.0
 + iniconfig==2.3.0
 + jaraco-classes==3.4.0
 + jaraco-context==6.1.2
 + jaraco-functools==4.5.0
 + jeepney==0.9.0
 + keyring==25.7.0
 + kiwisolver==1.5.0
 + markdown-it-py==4.2.0
 + matplotlib==3.11.0
 + mccabe==0.7.0
 + mdurl==0.1.2
 + more-itertools==11.1.0
 + nh3==0.3.5
 + numpy==2.5.0
 + packaging==26.2
 + pillow==12.2.0
 + platformdirs==4.10.0
 + pluggy==1.6.0
 + protobuf==7.35.1
 + psutil==7.2.2
 + pychromecast==14.0.10
 + pycodestyle==2.14.0
 + pycparser==3.0
 + pydocstyle==6.3.0
 + pyflakes==3.4.0
 + pyglet==2.1.14
 + pygments==2.20.0
 + pyparsing==3.3.2
 + pyproject-api==1.10.1
 + pyproject-hooks==1.2.0
 + pytest==9.1.1
 + pytest-cov==7.1.0
 + pytest-github-actions-annotate-failures==0.4.2
 + pytest-xdist==3.8.0
 + python-dateutil==2.9.0.post0
 + python-discovery==1.4.2
 + pyyaml==6.0.3
 + readme-renderer==45.0
 + requests==2.34.2
 + requests-toolbelt==1.0.0
 + rfc3986==2.0.0
 + rich==15.0.0
 + ruff==0.15.18
 + secretstorage==3.5.0
 + send2trash==2.1.0
 + setuptools==82.0.1
 + six==1.17.0
 + snowballstemmer==3.1.1
 + tomli-w==1.2.0
 + tox==4.55.1
 + twine==6.2.0
 + urllib3==2.7.0
 + virtualenv==21.5.1
 + wheel==0.47.0
 + wxpython==4.2.5
 + zeroconf==0.149.17
Building source distribution...
/home/glen/.cache/uv/builds-v0/.tmpNVXyEn/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpNVXyEn/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!

        ********************************************************************************
        Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).

        By 2027-Feb-18, you need to update your project and remove deprecated calls
        or your builds will no longer be supported.

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************

!!
  corresp(dist, value, root_dir)
warning: no files found matching 'dist/copyright'
warning: no files found matching 'dist/net.displaycal.DisplayCAL.appdata.xml'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['egg_info']
*** /home/glen/Projects/displaycal-py3/-c egg_info
using distutils
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['sdist', '--formats', 'gztar', '--dist-dir', '/home/glen/Projects/displaycal-py3/dist/.tmp-yzpkscnu']
*** /home/glen/Projects/displaycal-py3/-c sdist --formats gztar --dist-dir /home/glen/Projects/displaycal-py3/dist/.tmp-yzpkscnu
using distutils
Building wheel from source distribution...
/home/glen/.cache/uv/builds-v0/.tmp4fWfRT/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmp4fWfRT/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!

        ********************************************************************************
        Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).

        By 2027-Feb-18, you need to update your project and remove deprecated calls
        or your builds will no longer be supported.

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************

!!
  corresp(dist, value, root_dir)
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files found matching 'misc/Argyll'
warning: no previously-included files found matching 'misc/*.rules'
warning: no previously-included files found matching 'misc/*.usermap'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['egg_info']
*** /home/glen/.cache/uv/sdists-v9/.tmpOA2AYS/displaycal-3.9.18.dev12/-c egg_info
using distutils
/home/glen/.cache/uv/builds-v0/.tmp4fWfRT/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmp4fWfRT/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsDeprecationWarning: `project.license` as a TOML table is deprecated
!!

        ********************************************************************************
        Please use a simple string containing a SPDX expression for `project.license`. You can also use `project.license-files`. (Both options available on setuptools>=77.0.0).

        By 2027-Feb-18, you need to update your project and remove deprecated calls
        or your builds will no longer be supported.

        See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.
        ********************************************************************************

!!
  corresp(dist, value, root_dir)
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files found matching 'misc/Argyll'
warning: no previously-included files found matching 'misc/*.rules'
warning: no previously-included files found matching 'misc/*.usermap'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['bdist_wheel', '--dist-dir', '/home/glen/Projects/displaycal-py3/dist/.tmp-xewtodu0']
*** /home/glen/.cache/uv/sdists-v9/.tmpOA2AYS/displaycal-3.9.18.dev12/-c bdist_wheel --dist-dir /home/glen/Projects/displaycal-py3/dist/.tmp-xewtodu0
using distutils
Successfully built dist/displaycal-3.9.18.dev12.tar.gz
Successfully built dist/displaycal-3.9.18.dev12-py3-none-any.whl

--- install: Installing displaycal to virtualenv at '.venv' using '/usr/bin/python' ---
source ./.venv/bin/activate; \
uv pip install ./dist/displaycal-3.9.18.dev12-*.whl --force-reinstall;
Resolved 24 packages in 85ms
Prepared 24 packages in 74ms
Uninstalled 23 packages in 29ms
Installed 24 packages in 43ms
 ~ build==1.5.0
 ~ casttube==0.2.1
 ~ certifi==2026.6.17
 ~ charset-normalizer==3.4.7
 ~ dbus-python==1.4.0
 ~ defusedxml==0.7.1
 + displaycal==3.9.18.dev12 (from file:///home/glen/Projects/displaycal-py3/dist/displaycal-3.9.18.dev12-py3-none-any.whl)
 ~ distro==1.9.0
 ~ idna==3.18
 ~ ifaddr==0.2.0
 ~ numpy==2.5.0
 ~ packaging==26.2
 ~ pillow==12.2.0
 ~ protobuf==7.35.1
 ~ psutil==7.2.2
 ~ pychromecast==14.0.10
 ~ pyglet==2.1.14
 ~ pyproject-hooks==1.2.0
 ~ pyyaml==6.0.3
 ~ requests==2.34.2
 ~ send2trash==2.1.0
 ~ urllib3==2.7.0
 ~ wxpython==4.2.5
 ~ zeroconf==0.149.17

After that the "make launch" command starts displaycal in the virtual environment.

Last edited by glenjo (2026-06-22 00:30:27)

Offline

#28 2026-06-22 01:40:00

loqs
Member
Registered: 2014-03-06
Posts: 18,978

Re: Displaycal and python 3.14

@seth looks to be an upstream issue in audio.py?  sdl is selected if libSDL_mixer-1.2.so.0 is found. sdl the python module is only imported if typing.TYPE_CHECKING is TRUE so https://github.com/eoyilmaz/displaycal- … io.py#L601 is referencing sdl that has not been imported.
Edit:
https://github.com/eoyilmaz/displaycal- … io.py#L305 would create globals pyglet, pyo, sdl, wx but those variables are not used so has no effect.  https://github.com/eoyilmaz/displaycal- … io.py#L150 use of global wx and function does try and import wx.  pyo and pyglet follow the same pattern while sdl/sdl2 init functions are missing the try import and sdl instead references the shared object but that value is not returned or made global.  58af90b Fixed all linting errors in DisplayCAL.audio module. which introduced the sdl/sdl2 imports is confusing sdl the python module and sdl the shared object and I suspect the linter only allowed it because None is listed as a valid type in all the cases along with sdl.Mixer and sdl2.Mixer.

Last edited by loqs (2026-06-22 02:59:48)

Offline

#29 2026-06-22 07:14:55

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,008

Re: Displaycal and python 3.14

sdl/sdl2 init functions are missing the try import

What seems like an obvious bug but wasn't introduced w/ that patch. The older code also prefers SDL and only runs dlopen on some hardcoded objects

@glenjo, does any of the older (not development) versions (python 3.14 or 3.13) use SDL audio?

Offline

#30 2026-06-22 08:36:42

loqs
Member
Registered: 2014-03-06
Posts: 18,978

Re: Displaycal and python 3.14

seth wrote:

sdl/sdl2 init functions are missing the try import

What seems like an obvious bug but wasn't introduced w/ that patch. The older code also prefers SDL and only runs dlopen on some hardcoded objects

The old code before https://github.com/eoyilmaz/displaycal- … a83d489ea5 worked because it had global sdl in the same function that set sdl = dll after the lint refactor global sdl did not follow sdl = dll to the new _load_audio_dll function. The assignment only being local produces `NameError: name 'sdl' is not defined`.

Edit:
glenjo if you do

cd displaycal-py3/
git checkout 1843da096bcb3a4ec869c737c6f054299810b054 # the parent of 58af90bd8d6527603274e53eadccefa83d489ea5
make venv build install

Can you still reproduce the issue?

Last edited by loqs (2026-06-22 16:21:47)

Offline

#31 2026-06-22 17:03:25

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

cd displaycal-py3/
git checkout 1843da096bcb3a4ec869c737c6f054299810b054 # the parent of 58af90bd8d6527603274e53eadccefa83d489ea5
make venv build install

Here's the results - built OK, error when launched:

glen@honcho:~/Projects$ git clone https://github.com/eoyilmaz/displaycal-py3
Cloning into 'displaycal-py3'...
remote: Enumerating objects: 45721, done.
remote: Counting objects: 100% (646/646), done.
remote: Compressing objects: 100% (165/165), done.
remote: Total 45721 (delta 533), reused 488 (delta 480), pack-reused 45075 (from 4)
Receiving objects: 100% (45721/45721), 61.97 MiB | 9.77 MiB/s, done.
Resolving deltas: 100% (34360/34360), done.
glen@honcho:~/Projects$ git checkout 1843da096bcb3a4ec869c737c6f054299810b054 
fatal: not a git repository (or any parent up to mount point /)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
glen@honcho:~/Projects$ cd displaycal-py3/
glen@honcho:~/Projects/displaycal-py3$ git checkout 1843da096bcb3a4ec869c737c6f054299810b054 
Note: switching to '1843da096bcb3a4ec869c737c6f054299810b054'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 1843da09 [#552] Fixed `DisplayCAL.wx_windows.ProgressDialog.anim_fadein()` to to call the `AnimatedBitmap.SetBitmaps()` with the `range_` argument instead of the `range` as it is recently renamed.
glen@honcho:~/Projects/displaycal-py3$ make venv build install

--- venv: Creating Local virtualenv '.venv' using '/usr/bin/python' ---
python3 -m venv .venv

--- build: Building ---
--- build: Local install into virtualenv '.venv' ---
--- build: Using python interpreter '/home/glen/Projects/displaycal-py3/.venv/bin/python' ---
Collecting uv
  Using cached uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Using cached uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.4 MB)
Installing collected packages: uv
Successfully installed uv-0.11.23
Resolved 87 packages in 347ms
Prepared 1 package in 77ms
Installed 86 packages in 42ms
 + attrs==26.1.0
 + build==1.5.0
 + cachetools==7.1.4
 + casttube==0.2.1
 + certifi==2026.6.17
 + cffi==2.0.0
 + charset-normalizer==3.4.7
 + colorama==0.4.6
 + contourpy==1.3.3
 + coverage==7.14.2
 + cryptography==49.0.0
 + cycler==0.12.1
 + darglint==1.8.1
 + dbus-python==1.4.0
 + defusedxml==0.7.1
 + distlib==0.4.3
 + distro==1.9.0
 + docutils==0.23
 + execnet==2.1.2
 + filelock==3.29.4
 + flake8==7.3.0
 + flake8-bugbear==25.11.29
 + flake8-docstrings==1.7.0
 + flake8-import-order==0.19.2
 + flake8-mutable==1.2.0
 + flake8-pep3101==3.0.0
 + flake8-spellcheck==0.28.0
 + fonttools==4.63.0
 + id==1.6.1
 + idna==3.18
 + ifaddr==0.2.0
 + iniconfig==2.3.0
 + jaraco-classes==3.4.0
 + jaraco-context==6.1.2
 + jaraco-functools==4.5.0
 + jeepney==0.9.0
 + keyring==25.7.0
 + kiwisolver==1.5.0
 + markdown-it-py==4.2.0
 + matplotlib==3.11.0
 + mccabe==0.7.0
 + mdurl==0.1.2
 + more-itertools==11.1.0
 + nh3==0.3.6
 + numpy==2.5.0
 + packaging==26.2
 + pillow==12.2.0
 + platformdirs==4.10.0
 + pluggy==1.6.0
 + protobuf==7.35.1
 + pychromecast==14.0.10
 + pycodestyle==2.14.0
 + pycparser==3.0
 + pydocstyle==6.3.0
 + pyflakes==3.4.0
 + pyglet==2.1.14
 + pygments==2.20.0
 + pyparsing==3.3.2
 + pyproject-api==1.10.1
 + pyproject-hooks==1.2.0
 + pytest==9.1.1
 + pytest-cov==7.1.0
 + pytest-github-actions-annotate-failures==0.4.2
 + pytest-xdist==3.8.0
 + python-dateutil==2.9.0.post0
 + python-discovery==1.4.2
 + pyyaml==6.0.3
 + readme-renderer==45.0
 + requests==2.34.2
 + requests-toolbelt==1.0.0
 + rfc3986==2.0.0
 + rich==15.0.0
 + ruff==0.15.18
 + secretstorage==3.5.0
 + send2trash==2.1.0
 + setuptools==82.0.1
 + six==1.17.0
 + snowballstemmer==3.1.1
 + tomli-w==1.2.0
 + tox==4.55.1
 + twine==6.2.0
 + urllib3==2.7.0
 + virtualenv==21.5.1
 + wheel==0.47.0
 + wxpython==4.2.5
 + zeroconf==0.149.17
Building source distribution...
/home/glen/.cache/uv/builds-v0/.tmpyEjirt/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpyEjirt/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `license` overwritten by `pyproject.toml`
  corresp(dist, value, root_dir)
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'dist/copyright'
warning: no files found matching 'dist/net.displaycal.DisplayCAL.appdata.xml'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
Trying to get git version information...
Trying to get git information...
Generating __version__.py
Version 3.9.17
['egg_info']
*** /home/glen/Projects/displaycal-py3/-c egg_info
using distutils
<string>:656: DeprecationWarning: codecs.open() is deprecated. Use open() instead.
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
Trying to get git version information...
Trying to get git information...
Generating __version__.py
Version 3.9.17
['sdist', '--formats', 'gztar', '--dist-dir', '/home/glen/Projects/displaycal-py3/dist/.tmp-tdx10uqq']
*** /home/glen/Projects/displaycal-py3/-c sdist --formats gztar --dist-dir /home/glen/Projects/displaycal-py3/dist/.tmp-tdx10uqq
using distutils
Building wheel from source distribution...
/home/glen/.cache/uv/builds-v0/.tmpHlHcyJ/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpHlHcyJ/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `license` overwritten by `pyproject.toml`
  corresp(dist, value, root_dir)
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files found matching 'misc/Argyll'
warning: no previously-included files found matching 'misc/*.rules'
warning: no previously-included files found matching 'misc/*.usermap'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['egg_info']
*** /home/glen/.cache/uv/sdists-v9/.tmpStQeMZ/displaycal-3.9.17/-c egg_info
using distutils
/home/glen/.cache/uv/builds-v0/.tmpHlHcyJ/lib/python3.14/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpHlHcyJ/lib/python3.14/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `license` overwritten by `pyproject.toml`
  corresp(dist, value, root_dir)
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files found matching 'misc/Argyll'
warning: no previously-included files found matching 'misc/*.rules'
warning: no previously-included files found matching 'misc/*.usermap'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['bdist_wheel', '--dist-dir', '/home/glen/Projects/displaycal-py3/dist/.tmp-5z059kvp']
*** /home/glen/.cache/uv/sdists-v9/.tmpStQeMZ/displaycal-3.9.17/-c bdist_wheel --dist-dir /home/glen/Projects/displaycal-py3/dist/.tmp-5z059kvp
using distutils
Successfully built dist/displaycal-3.9.17.tar.gz
Successfully built dist/displaycal-3.9.17-py3-none-any.whl

--- install: Installing displaycal to virtualenv at '.venv' using '/usr/bin/python' ---
source ./.venv/bin/activate; \
uv pip install ./dist/displaycal-3.9.17-*.whl --force-reinstall;
Resolved 23 packages in 79ms
Prepared 23 packages in 55ms
Uninstalled 22 packages in 29ms
Installed 23 packages in 51ms
 ~ build==1.5.0
 ~ casttube==0.2.1
 ~ certifi==2026.6.17
 ~ charset-normalizer==3.4.7
 ~ dbus-python==1.4.0
 ~ defusedxml==0.7.1
 + displaycal==3.9.17 (from file:///home/glen/Projects/displaycal-py3/dist/displaycal-3.9.17-py3-none-any.whl)
 ~ distro==1.9.0
 ~ idna==3.18
 ~ ifaddr==0.2.0
 ~ numpy==2.5.0
 ~ packaging==26.2
 ~ pillow==12.2.0
 ~ protobuf==7.35.1
 ~ pychromecast==14.0.10
 ~ pyglet==2.1.14
 ~ pyproject-hooks==1.2.0
 ~ pyyaml==6.0.3
 ~ requests==2.34.2
 ~ send2trash==2.1.0
 ~ urllib3==2.7.0
 ~ wxpython==4.2.5
 ~ zeroconf==0.149.17
glen@honcho:~/Projects/displaycal-py3$ make launch

--- launch: Launching DisplayCAL ---
Traceback (most recent call last):
  File "/home/glen/Projects/displaycal-py3/.venv/bin/displaycal", line 4, in <module>
    from DisplayCAL.main import main
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 25, in <module>
    raise RuntimeError(
    ...<5 lines>...
    )
RuntimeError: Need Python version >= 3.9 <= 3.13, got 3.14.6
make: *** [Makefile:38: launch] Error 1

Offline

#32 2026-06-22 17:24:02

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

Re-building with python 3.13...

It built, and launched OK, running a calibration which takes a bit.

Got to the same point where displaycal 3.9.17-4 failed, but had a different error:

raceback (most recent call last):
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/wx/lib/delayedresult.py", line 267, in wrapper
    result = workerFn(*args, **kwargs)
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 1793, in __call__
    result = self.producer(*args, **kwargs)
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 11244, in create_profile
    profile = self.create_RGB_XYZ_cLUT_fwd_profile(
        ti3,
    ...<4 lines>...
        self.log,
    )
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 12177, in create_RGB_XYZ_cLUT_fwd_profile
    gray = create_shaper_curves(
        RGB_XYZ,
    ...<7 lines>...
        cat=cat,
    )
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 950, in create_shaper_curves
    curves = _create_optimized_shaper_curves(
        bwd_mtx, bpc, single_curve, curves, profile, options_dispcal, XYZbp, logfn
    )
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 978, in _create_optimized_shaper_curves
    and isinstance(profile.tags.get("vcgt"), VideoCardGammaType)
                   ~~~~~~~~~~~~~~~~^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/icc_profile.py", line 3314, in get
    return self[key] if key in self else default  # noqa: SIM401
           ~~~~^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/icc_profile.py", line 3266, in __getitem__
    typeSignature, tagDataOffset, tagDataSize, tagData = tag
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 4, got 2)

result (3): ValueError: ValueError('not enough values to unpack (expected 4, got 2)')

Looks like it got further along in calculating the icc file. Here's the whole output:

glen@honcho:~/Projects$ git clone https://github.com/eoyilmaz/displaycal-py3
Cloning into 'displaycal-py3'...
remote: Enumerating objects: 45721, done.
remote: Counting objects: 100% (393/393), done.
remote: Compressing objects: 100% (98/98), done.
remote: Total 45721 (delta 348), reused 300 (delta 294), pack-reused 45328 (from 4)
Receiving objects: 100% (45721/45721), 62.08 MiB | 11.01 MiB/s, done.
Resolving deltas: 100% (34357/34357), done.
glen@honcho:~/Projects$ cd displaycal-py3/
glen@honcho:~/Projects/displaycal-py3$ git checkout 1843da096bcb3a4ec869c737c6f054299810b054 
Note: switching to '1843da096bcb3a4ec869c737c6f054299810b054'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 1843da09 [#552] Fixed `DisplayCAL.wx_windows.ProgressDialog.anim_fadein()` to to call the `AnimatedBitmap.SetBitmaps()` with the `range_` argument instead of the `range` as it is recently renamed.
glen@honcho:~/Projects/displaycal-py3$ SYSTEM_PYTHON=python3.13 make venv build install

--- venv: Creating Local virtualenv '.venv' using '/usr/bin/python' ---
python3.13 -m venv .venv

--- build: Building ---
--- build: Local install into virtualenv '.venv' ---
--- build: Using python interpreter '/home/glen/Projects/displaycal-py3/.venv/bin/python' ---
Collecting uv
  Using cached uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Using cached uv-0.11.23-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25.4 MB)
Installing collected packages: uv
Successfully installed uv-0.11.23
Resolved 87 packages in 201ms
      Built wxpython==4.2.5
Prepared 12 packages in 3m 22s
Installed 86 packages in 50ms
 + attrs==26.1.0
 + build==1.5.0
 + cachetools==7.1.4
 + casttube==0.2.1
 + certifi==2026.6.17
 + cffi==2.0.0
 + charset-normalizer==3.4.7
 + colorama==0.4.6
 + contourpy==1.3.3
 + coverage==7.14.2
 + cryptography==49.0.0
 + cycler==0.12.1
 + darglint==1.8.1
 + dbus-python==1.4.0
 + defusedxml==0.7.1
 + distlib==0.4.3
 + distro==1.9.0
 + docutils==0.23
 + execnet==2.1.2
 + filelock==3.29.4
 + flake8==7.3.0
 + flake8-bugbear==25.11.29
 + flake8-docstrings==1.7.0
 + flake8-import-order==0.19.2
 + flake8-mutable==1.2.0
 + flake8-pep3101==3.0.0
 + flake8-spellcheck==0.28.0
 + fonttools==4.63.0
 + id==1.6.1
 + idna==3.18
 + ifaddr==0.2.0
 + iniconfig==2.3.0
 + jaraco-classes==3.4.0
 + jaraco-context==6.1.2
 + jaraco-functools==4.5.0
 + jeepney==0.9.0
 + keyring==25.7.0
 + kiwisolver==1.5.0
 + markdown-it-py==4.2.0
 + matplotlib==3.11.0
 + mccabe==0.7.0
 + mdurl==0.1.2
 + more-itertools==11.1.0
 + nh3==0.3.6
 + numpy==2.5.0
 + packaging==26.2
 + pillow==12.2.0
 + platformdirs==4.10.0
 + pluggy==1.6.0
 + protobuf==7.35.1
 + pychromecast==14.0.10
 + pycodestyle==2.14.0
 + pycparser==3.0
 + pydocstyle==6.3.0
 + pyflakes==3.4.0
 + pyglet==2.1.14
 + pygments==2.20.0
 + pyparsing==3.3.2
 + pyproject-api==1.10.1
 + pyproject-hooks==1.2.0
 + pytest==9.1.1
 + pytest-cov==7.1.0
 + pytest-github-actions-annotate-failures==0.4.2
 + pytest-xdist==3.8.0
 + python-dateutil==2.9.0.post0
 + python-discovery==1.4.2
 + pyyaml==6.0.3
 + readme-renderer==45.0
 + requests==2.34.2
 + requests-toolbelt==1.0.0
 + rfc3986==2.0.0
 + rich==15.0.0
 + ruff==0.15.18
 + secretstorage==3.5.0
 + send2trash==2.1.0
 + setuptools==82.0.1
 + six==1.17.0
 + snowballstemmer==3.1.1
 + tomli-w==1.2.0
 + tox==4.55.1
 + twine==6.2.0
 + urllib3==2.7.0
 + virtualenv==21.5.1
 + wheel==0.47.0
 + wxpython==4.2.5
 + zeroconf==0.149.17
Building source distribution...
/home/glen/.cache/uv/builds-v0/.tmpZHkJOm/lib/python3.13/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpZHkJOm/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `license` overwritten by `pyproject.toml`
  corresp(dist, value, root_dir)
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'dist/copyright'
warning: no files found matching 'dist/net.displaycal.DisplayCAL.appdata.xml'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
Trying to get git version information...
Trying to get git information...
Generating __version__.py
Version 3.9.17
['egg_info']
*** /home/glen/Projects/displaycal-py3/-c egg_info
using distutils
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
Trying to get git version information...
Trying to get git information...
Generating __version__.py
Version 3.9.17
['sdist', '--formats', 'gztar', '--dist-dir', '/home/glen/Projects/displaycal-py3/dist/.tmp-zbk1stu_']
*** /home/glen/Projects/displaycal-py3/-c sdist --formats gztar --dist-dir /home/glen/Projects/displaycal-py3/dist/.tmp-zbk1stu_
using distutils
Building wheel from source distribution...
/home/glen/.cache/uv/builds-v0/.tmpQUsTxK/lib/python3.13/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpQUsTxK/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `license` overwritten by `pyproject.toml`
  corresp(dist, value, root_dir)
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files found matching 'misc/Argyll'
warning: no previously-included files found matching 'misc/*.rules'
warning: no previously-included files found matching 'misc/*.usermap'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['egg_info']
*** /home/glen/.cache/uv/sdists-v9/.tmpyzvtub/displaycal-3.9.17/-c egg_info
using distutils
/home/glen/.cache/uv/builds-v0/.tmpQUsTxK/lib/python3.13/site-packages/setuptools/config/pyprojecttoml.py:72: _ExperimentalConfiguration: `[tool.distutils]` in `pyproject.toml` is still *experimental* and likely to change in future releases.
  config = read_configuration(filepath, True, ignore_option_errors, dist)
/home/glen/.cache/uv/builds-v0/.tmpQUsTxK/lib/python3.13/site-packages/setuptools/config/_apply_pyprojecttoml.py:82: SetuptoolsWarning: `license` overwritten by `pyproject.toml`
  corresp(dist, value, root_dir)
warning: no files found matching 'MANIFEST'
warning: no files found matching 'use-distutils'
warning: no files found matching '-c'
warning: no files found matching '-c.cfg'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50.icm'
warning: no files found matching 'DisplayCAL/ref/XYZ'
warning: no files found matching 'D50'
warning: no files found matching '(ICC'
warning: no files found matching 'PCS'
warning: no files found matching 'encoding).icm'
warning: no files found matching 'DisplayCAL/ref/DCDM'
warning: no files found matching 'X'Y'Z'.icm'
warning: no previously-included files found matching 'misc/Argyll'
warning: no previously-included files found matching 'misc/*.rules'
warning: no previously-included files found matching 'misc/*.usermap'
warning: no previously-included files matching '*~' found anywhere in distribution
warning: no previously-included files matching '*.backup' found anywhere in distribution
warning: no previously-included files matching '*/__pycache__/*' found anywhere in distribution
warning: no previously-included files matching '*.bak' found anywhere in distribution
['bdist_wheel', '--dist-dir', '/home/glen/Projects/displaycal-py3/dist/.tmp-76jwdtl4']
*** /home/glen/.cache/uv/sdists-v9/.tmpyzvtub/displaycal-3.9.17/-c bdist_wheel --dist-dir /home/glen/Projects/displaycal-py3/dist/.tmp-76jwdtl4
using distutils
Successfully built dist/displaycal-3.9.17.tar.gz
Successfully built dist/displaycal-3.9.17-py3-none-any.whl

--- install: Installing displaycal to virtualenv at '.venv' using '/usr/bin/python' ---
source ./.venv/bin/activate; \
uv pip install ./dist/displaycal-3.9.17-*.whl --force-reinstall;
Resolved 23 packages in 103ms
Prepared 23 packages in 56ms
Uninstalled 22 packages in 30ms
Installed 23 packages in 42ms
 ~ build==1.5.0
 ~ casttube==0.2.1
 ~ certifi==2026.6.17
 ~ charset-normalizer==3.4.7
 ~ dbus-python==1.4.0
 ~ defusedxml==0.7.1
 + displaycal==3.9.17 (from file:///home/glen/Projects/displaycal-py3/dist/displaycal-3.9.17-py3-none-any.whl)
 ~ distro==1.9.0
 ~ idna==3.18
 ~ ifaddr==0.2.0
 ~ numpy==2.5.0
 ~ packaging==26.2
 ~ pillow==12.2.0
 ~ protobuf==7.35.1
 ~ pychromecast==14.0.10
 ~ pyglet==2.1.14
 ~ pyproject-hooks==1.2.0
 ~ pyyaml==6.0.3
 ~ requests==2.34.2
 ~ send2trash==2.1.0
 ~ urllib3==2.7.0
 ~ wxpython==4.2.5
 ~ zeroconf==0.149.17
glen@honcho:~/Projects/displaycal-py3$ make launch

--- launch: Launching DisplayCAL ---
Acquired lock file: <DisplayCAL.main.AppLock object at 0x7f1f7afd8590>
displaycal 3.9.17 2026-06-22T17:26:47Z
arch rolling n/a x86_64
Python 3.13.14 (main, Jun 21 2026, 21:00:30) [GCC 16.1.1 20260430]
Faulthandler 
wxPython 4.2.5 gtk3 (phoenix) wxWidgets 3.2.9
Encoding: utf-8
File system encoding: utf-8
Loading /home/glen/.config/DisplayCAL/DisplayCAL.ini
Loading /home/glen/.config/DisplayCAL/DisplayCAL-testchart-editor.ini
listening
writing to lock file: port: 15411
Starting up...
SDL2: libSDL2-2.0.so.0
SDL2_mixer: libSDL2_mixer-2.0.so.0
Audio module: SDL 2.0
Enumerating display devices and communication ports...
/usr/bin
ArgyllCMS 3.3.0
Argyll has virtual display support
...ok.
Checking video card gamma table access for display 1...
Dispwin: Warning - new_dispwin: Expected VideoLUT depth 8 doesn't match actual 10
VideoLUT has 1024 entries, interpolating to 256
Dispwin: Warning - new_dispwin: Expected VideoLUT depth 8 doesn't match actual 10
Dispwin: Warning - new_dispwin: Expected VideoLUT depth 8 doesn't match actual 10Verify: 'test.cal' IS loaded (discrepancy 0.0%)
Dispwin: Warning - new_dispwin: Expected VideoLUT depth 8 doesn't match actual 10
...ok.
Initializing GUI...

input_value_clipping_bmp should have been hidden
output_profile_ctrl should have been hidden
instrument_name: ColorMunki
display_name   : Monitor 1, Output DisplayPort-0
...ok.
Ready.
Setting up scripting host at 127.0.0.1:15411
Check for application update...
DisplayCAL is up-to-date.
ArgyllCMS is up-to-date.
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:28:56: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
10:32:59: Debug: window wxComboBox@0x55e8ad827e10 ("whitepoint_colortemp_textctrl") lost focus even though it didn't have it
Reloading /home/glen/.config/DisplayCAL/DisplayCAL.ini
--------------------------------------------------------------------------------
Calibrate & profile
DisplayCAL: luminance: None
cmd: /usr/bin/dispcal
args: ['-v2', '-d1', '-c1', '-yl', '-P0.5191773207337409,0.7190839694656489,2.013227513227513', '-H', '-Ib', '-N', '-ql', '-t6500', '-g2.2', '-f1.0', '-k0', '-A4.0', '-b', '/tmp/DisplayCAL-pf5xu8w0/DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX']
DisplayCAL: Warning - could not inhibit org.freedesktop.ScreenSaver: org.freedesktop.DBus.Error.ServiceUnknown: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable: org.freedesktop.ScreenSaver
DisplayCAL: Warning - could not inhibit org.freedesktop.PowerManagement.Inhibit: org.freedesktop.DBus.Error.ServiceUnknown: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable: org.freedesktop.PowerManagement.Inhibit
--------------------------------------------------------------------------------
Session log: DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX

Working directory:
  /
   tmp/
    DisplayCAL-pf5xu8w0/

Command line:
  /usr/bin/dispcal
    -v2
    -d1
    -c1
    -yl
    -P0.5191773207337409,0.7190839694656489,2.013227513227513
    -H
    -Ib
    -N
    -ql
    -t6500
    -g2.2
    -f1.0
    -k0
    -A4.0
    -b
    'DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX'

DisplayCAL: Starting interaction with subprocess
Setting up the instrument
Instrument Type:   ColorMunki
Serial Number:     4013614
Firmware version:  512
Chip ID:           01-51B8EC1B000085
Version string:    'i1Studio FW V2.00  Build Nr. 1310'
Calibration Ver.:  6
Production No.:    210110
Display type ignored - instrument doesn't support display type selection
dispcal: Warning - new_dispwin: Expected VideoLUT depth 8 doesn't match actual 10
Set instrument sensor to calibration position,
 and then hit any key to continue,
DisplayCAL: Waiting for send buffer
DisplayCAL: Detected instrument calibration message
DisplayCAL: Prompting to calibrate instrument
DisplayCAL: About to calibrate instrument
DisplayCAL: Send buffer received:  
DisplayCAL: Sending buffer:  
 or hit Esc or Q to abort: 
Calibration complete
Place instrument on test window.
DisplayCAL: Waiting for send buffer
DisplayCAL: Detected instrument calibration complete message
DisplayCAL: Detected instrument placement (screen/spot) message
DisplayCAL: Prompting to place instrument on screen
DisplayCAL: Instrument on screen
DisplayCAL: Send buffer received:  
DisplayCAL: Sending buffer:  
Hit Esc or Q to give up, any other key to continue:
Display type is 'l'
Target white = 6500.000000 degrees kelvin Daylight spectrum
Target white brightness = native brightness
Target black brightness = native brightness
Black point device hack is enabled
Target advertised gamma = 2.200000
Display adjustment menu:
Press 1 .. 7
1) Black level (CRT: Offset/Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)
3) White level (CRT: Gain/Contrast, LCD: Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration
8) Exit
DisplayCAL: Waiting for send buffer
DisplayCAL: Send buffer received: 2
DisplayCAL: Sending buffer: 2
Doing some initial measurements
Measured display update delay of 45 msec, using delay of 160 msec & 1 msec inst reaction
Red   = XYZ 83.668 40.121  2.572
Green = XYZ 28.042 96.809 10.262
Blue  = XYZ 25.435 11.076 125.631
White = XYZ 137.459 148.644 139.548
Adjust R,G & B gain to get target x,y. Press space when done.
   Target Br 148.64, x 0.3128 , y 0.3292 
DisplayCAL: Sending buffer:  
/ Current Br 148.68, x 0.3229-, y 0.3492-  DE  9.3  R-  G-- B+   
Press 1 .. 7
1) Black level (CRT: Offset/Brightness)
2) White point (Color temperature, R,G,B, Gain/Contrast)
3) White level (CRT: Gain/Contrast, LCD: Brightness/Backlight)
4) Black point (R,G,B, Offset/Brightness)
5) Check all
6) Measure and set ambient for viewing condition adjustment
7) Continue on to calibration
8) Exit
DisplayCAL: Waiting for send buffer
DisplayCAL: Send buffer received: 7
DisplayCAL: Sending buffer: 7
Commencing display calibration
Patch 9 of 9
Black = XYZ 0.1347 0.1494 0.2602
Red   = XYZ 83.630 40.094  2.589
Green = XYZ 28.029 96.791 10.239
Blue  = XYZ 25.431 11.075 125.624
White = XYZ 137.403 148.605 139.476
Patch 48 of 48
Initial native brightness target = 148.605355 cd/m^2
Had to scale brightness from 148.605355 to 126.312366 to fit within gamut,
corresponding to aprox. RGB 0.910101 0.905001 1.000000
Target white value is XYZ 120.018440 126.312366 137.368057 [xy 0.312793 0.329197]
Adjusted target black XYZ 0.1347 0.1494 0.2602, Lab 1.069 -0.236 -1.107
Target black after min adjust: XYZ 0.1347 0.1494 0.2602, Lab 1.069 -0.236 -1.107
Gamma curve input offset = 0.000000, output offset = 0.001183, power = 2.206156
Total Iteration 2, Final Samples = 32 Final Repeat threshold = 0.900000
Creating initial calibration curves...
Doing iteration 1/2 with 16 sample points and repeat threshold of 1.272792 DE
Patch 1 of 16 DE 2.721767, W.DE 2.721767, Repeat
Patch 1 of 16 DE 0.137523, W.DE 0.137523, OK ( < 1.272792)
Patch 2 of 16 DE 2.599858, W.DE 2.599858, Repeat
Patch 2 of 16 DE 0.859730, W.DE 0.859730, OK ( < 1.272792)
Patch 3 of 16 DE 2.494194, W.DE 2.494194, Repeat
Patch 3 of 16 DE 0.374460, W.DE 0.374460, OK ( < 1.272792)
Patch 4 of 16 DE 2.249622, W.DE 2.249622, Repeat
Patch 4 of 16 DE 0.225232, W.DE 0.225232, OK ( < 1.272792)
Patch 5 of 16 DE 1.563965, W.DE 1.563965, Repeat
Patch 5 of 16 DE 0.346914, W.DE 0.346914, OK ( < 1.272792)
Patch 6 of 16 DE 1.133482, W.DE 1.133482, OK ( < 1.272792)
Patch 7 of 16 DE 0.850164, W.DE 0.850164, OK ( < 1.272792)
Patch 8 of 16 DE 0.831903, W.DE 0.831903, OK ( < 1.272792)
Patch 9 of 16 DE 1.089773, W.DE 1.089773, OK ( < 1.272792)
Patch 10 of 16 DE 0.688095, W.DE 0.688095, OK ( < 1.272792)
Patch 11 of 16 DE 0.209245, W.DE 0.209245, OK ( < 1.272792)
Patch 12 of 16 DE 1.263584, W.DE 1.263584, OK ( < 1.272792)
Patch 13 of 16 DE 1.366580, W.DE 1.366580, Repeat
Patch 13 of 16 DE 0.380229, W.DE 0.380229, OK ( < 1.272792)
Patch 14 of 16 DE 0.306109, W.DE 0.306109, OK ( < 1.272792)
Patch 15 of 16 DE 0.336862, W.DE 97.286945, Repeat
Patch 15 of 16 DE 0.254377, W.DE 60.673750, Repeat
Patch 15 of 16 DE 0.185879, W.DE 0.185879, OK ( < 1.272792)
Patch 16 of 16 DE 0.365503, W.DE 365.503395, Repeat
Patch 16 of 16 DE 0.196988, W.DE 196.988372, Repeat
Patch 16 of 16 DE 0.024298, W.DE 24.297924, Repeat
Patch 16 of 16 DE 0.024298, W.DE 24.297924, Repeat
Patch 16 of 16 DE 0.051480, W.DE 51.479519, Repeat (got worse)
Patch 16 of 16 DE 0.042471, W.DE 42.470747, Repeat (got worse)
Patch 16 of 16 DE 0.006707, W.DE 6.706738, Repeat
Patch 16 of 16 DE 0.029035, W.DE 29.035314, Repeat (got worse)
Patch 16 of 16 DE 0.063881, W.DE 63.881362, Repeat (got worse)
Patch 16 of 16 DE 0.006707, W.DE 6.706738, Fail ( > 1.272792)
Brightness error = 0.042662 cd/m^2 (is 126.355029, should be 126.312366)
White point error = 0.136886 deltaE
Maximum neutral error (@ 0.120656) = 1.259101 deltaE
Average neutral error = 0.560792 deltaE
Failed to meet target 1.272792 delta E, got worst case 6.706738
Number of measurements taken = 36
Computing update to calibration curves...
Doing iteration 2/2 with 32 sample points and repeat threshold of 0.900000 DE
Patch 1 of 32 DE 0.235500, W.DE 0.235500, W.peqDE 0.235500, OK ( < 0.900000)
Patch 2 of 32 DE 1.306416, W.DE 1.306416, peqDE 1.337087, Repeat
Patch 2 of 32 DE 0.117647, W.DE 0.117647, W.peqDE 0.244306, OK ( < 0.900000)
Patch 3 of 32 DE 1.184653, W.DE 1.184653, peqDE 1.275202, Repeat
Patch 3 of 32 DE 0.298921, W.DE 0.298921, W.peqDE 0.232325, OK ( < 0.900000)
Patch 4 of 32 DE 0.384790, W.DE 0.384790, W.peqDE 0.663367, OK ( < 0.900000)
Patch 5 of 32 DE 0.414249, W.DE 0.414249, W.peqDE 0.412301, OK ( < 0.900000)
Patch 6 of 32 DE 0.236965, W.DE 0.236965, W.peqDE 0.316481, OK ( < 0.900000)
Patch 7 of 32 DE 0.211040, W.DE 0.211040, W.peqDE 0.172749, OK ( < 0.900000)
Patch 8 of 32 DE 0.144786, W.DE 0.144786, W.peqDE 0.212103, OK ( < 0.900000)
Patch 9 of 32 DE 0.208430, W.DE 0.208430, W.peqDE 0.276735, OK ( < 0.900000)
Patch 10 of 32 DE 0.443026, W.DE 0.443026, W.peqDE 0.570188, OK ( < 0.900000)
Patch 11 of 32 DE 0.886504, W.DE 0.886504, W.peqDE 0.565140, OK ( < 0.900000)
Patch 12 of 32 DE 0.797892, W.DE 0.797892, W.peqDE 0.693906, OK ( < 0.900000)
Patch 13 of 32 DE 0.804248, W.DE 0.804248, W.peqDE 0.470743, OK ( < 0.900000)
Patch 14 of 32 DE 0.734071, W.DE 0.734071, W.peqDE 0.424168, OK ( < 0.900000)
Patch 15 of 32 DE 0.793899, W.DE 0.793899, W.peqDE 0.317769, OK ( < 0.900000)
Patch 16 of 32 DE 0.849325, W.DE 0.849325, W.peqDE 0.332578, OK ( < 0.900000)
Patch 17 of 32 DE 0.936977, W.DE 0.936977, peqDE 0.326206, Repeat
Patch 17 of 32 DE 0.148992, W.DE 0.148992, peqDE 0.963889, Repeat
Patch 17 of 32 DE 0.091383, W.DE 0.091383, W.peqDE 0.898736, OK ( < 0.900000)
Patch 18 of 32 DE 0.656896, W.DE 0.656896, W.peqDE 0.668570, OK ( < 0.900000)
Patch 19 of 32 DE 0.536492, W.DE 0.536492, W.peqDE 0.229840, OK ( < 0.900000)
Patch 20 of 32 DE 0.272498, W.DE 0.272498, W.peqDE 0.325853, OK ( < 0.900000)
Patch 21 of 32 DE 0.125182, W.DE 0.125182, W.peqDE 0.255553, OK ( < 0.900000)
Patch 22 of 32 DE 0.506821, W.DE 0.506821, W.peqDE 0.467295, OK ( < 0.900000)
Patch 23 of 32 DE 0.522675, W.DE 0.522675, W.peqDE 0.796681, OK ( < 0.900000)
Patch 24 of 32 DE 0.929609, W.DE 0.929609, peqDE 0.930657, Repeat
Patch 24 of 32 DE 0.430967, W.DE 0.430967, W.peqDE 0.315031, OK ( < 0.900000)
Patch 25 of 32 DE 0.693329, W.DE 0.693329, W.peqDE 0.892132, OK ( < 0.900000)
Patch 26 of 32 DE 0.820217, W.DE 0.820217, peqDE 0.573251, Repeat
Patch 26 of 32 DE 0.163690, W.DE 0.163690, W.peqDE 0.223896, OK ( < 0.651171)
Patch 27 of 32 DE 0.573917, W.DE 0.573917, peqDE 0.424601, Repeat
Patch 27 of 32 DE 0.284638, W.DE 0.284638, W.peqDE 0.220929, OK ( < 0.393753)
Patch 28 of 32 DE 0.410261, W.DE 0.862709, peqDE 0.780743, Repeat
Patch 28 of 32 DE 0.232605, W.DE 0.693734, peqDE 0.696919, Repeat
Patch 28 of 32 DE 0.080047, W.DE 0.091081, peqDE 0.381792, Repeat
Patch 28 of 32 DE 0.093187, W.DE 0.093187, peqDE 0.273505, Repeat
Patch 28 of 32 DE 0.017939, W.DE 0.017939, peqDE 0.341154, Repeat
Patch 28 of 32 DE 0.082508, W.DE 0.236310, peqDE 0.341154, Repeat (got worse)
Patch 28 of 32 DE 0.028166, W.DE 0.036813, peqDE 0.312669, Repeat (got worse)
Patch 28 of 32 DE 0.031580, W.DE 0.104257, peqDE 0.333591, Repeat (got worse)
Patch 28 of 32 DE 0.083086, W.DE 0.108068, peqDE 0.416290, Repeat (got worse)
Patch 28 of 32 DE 0.017939, W.DE 0.017939, W.peqDE 0.341154, Fail ( > 0.250000)
Patch 29 of 32 DE 0.300617, W.DE 21.049393, peqDE 21.049132, Repeat
Patch 29 of 32 DE 0.180183, W.DE 12.153055, peqDE 12.153046, Repeat
Patch 29 of 32 DE 0.130822, W.DE 8.209435, peqDE 8.210243, Repeat
Patch 29 of 32 DE 0.066842, W.DE 3.297892, peqDE 3.299070, Repeat
Patch 29 of 32 DE 0.066842, W.DE 3.297892, peqDE 3.299070, Repeat
Patch 29 of 32 DE 0.046754, W.DE 0.603874, peqDE 0.610842, Repeat
Patch 29 of 32 DE 0.081997, W.DE 6.059620, peqDE 0.610842, Repeat (got worse)
Patch 29 of 32 DE 0.064146, W.DE 0.064146, W.peqDE 0.052226, OK ( < 0.250000)
Patch 30 of 32 DE 0.248463, W.DE 78.418063, peqDE 78.418094, Repeat
Patch 30 of 32 DE 0.210711, W.DE 50.551835, peqDE 50.551796, Repeat
Patch 30 of 32 DE 0.078278, W.DE 0.078278, W.peqDE 0.171679, OK ( < 0.250000)
Patch 31 of 32 DE 0.188612, W.DE 76.667747, peqDE 76.667686, Repeat
Patch 31 of 32 DE 0.079593, W.DE 23.910154, peqDE 23.910128, Repeat
Patch 31 of 32 DE 0.066800, W.DE 23.681645, peqDE 23.681604, Repeat
Patch 31 of 32 DE 0.076669, W.DE 12.217318, peqDE 12.217304, Repeat
Patch 31 of 32 DE 0.102099, W.DE 12.744941, peqDE 12.744846, Repeat (got worse)
Patch 31 of 32 DE 0.052348, W.DE 0.052348, W.peqDE 0.072839, OK ( < 0.250000)
Patch 32 of 32 DE 0.004257, W.DE 4.256928, peqDE 4.256928, Repeat
Patch 32 of 32 DE 0.004257, W.DE 4.256928, peqDE 4.256928, Repeat
Patch 32 of 32 DE 0.014087, W.DE 14.087022, peqDE 4.256928, Repeat (got worse)
Patch 32 of 32 DE 0.050525, W.DE 50.525086, peqDE 4.256928, Repeat (got worse)
Patch 32 of 32 DE 0.029012, W.DE 29.011576, peqDE 4.256928, Repeat (got worse)
Patch 32 of 32 DE 0.002237, W.DE 0.002237, W.peqDE 0.002237, OK ( < 0.250000)
Brightness error = 0.073759 cd/m^2 (is 126.386125, should be 126.312366)
White point error = 0.234369 deltaE
Maximum neutral error (@ 0.536256) = 0.884788 deltaE
Average neutral error = 0.374157 deltaE
Failed to meet target 0.900000 delta E, got worst case 6.706738
Number of measurements taken = 79
Computing update to calibration curves...
Black drift was -nan DE
The instrument can be removed from the screen.
Written calibration file 'DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX.cal'
DisplayCAL: Reached EOF (OK)
dispcal exitcode: 0
result: True
dst_pathname: /home/glen/.local/share/DisplayCAL/storage/DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX/DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX
cal         : /tmp/DisplayCAL-pf5xu8w0/DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX.cal
result      : True
DisplayCAL: Warning - could not inhibit org.freedesktop.ScreenSaver: org.freedesktop.DBus.Error.ServiceUnknown: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable: org.freedesktop.ScreenSaver
DisplayCAL: Warning - could not inhibit org.freedesktop.PowerManagement.Inhibit: org.freedesktop.DBus.Error.ServiceUnknown: org.freedesktop.DBus.Error.ServiceUnknown: The name is not activatable: org.freedesktop.PowerManagement.Inhibit
--------------------------------------------------------------------------------
Session log: DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX

Working directory:
  /
   tmp/
    DisplayCAL-pf5xu8w0/

Command line:
  /usr/bin/dispread
    -v
    -d1
    -c1
    -yl
    -P0.5191773207337409,0.7190839694656489,2.013227513227513
    -H
    -Ib
    -N
    -k
    'DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX.cal'
    -s
    'DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX'

DisplayCAL: Starting interaction with subprocess


Number of patches = 175
Setting up the instrument
Instrument Type:   ColorMunki
Serial Number:     4013614
Firmware version:  512
Chip ID:           01-51B8EC1B000085
Version string:    'i1Studio FW V2.00  Build Nr. 1310'
Calibration Ver.:  6
Production No.:    210110
Display type ignored - instrument doesn't support display type selection
dispread: Warning - new_dispwin: Expected VideoLUT depth 8 doesn't match actual 10
Place instrument on test window.
DisplayCAL: Detected instrument placement (screen/spot) message
DisplayCAL: Waiting for send buffer
DisplayCAL: Skipping place instrument on screen message...
DisplayCAL: Send buffer received:  
DisplayCAL: Sending buffer:  
Hit Esc or Q to give up, any other key to continue:
Measured display update delay of 54 msec, using delay of 172 msec & 1 msec inst reaction
Patch 175 of 175
Black drift was -nan DE
The instrument can be removed from the screen.
Written 'DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX.ti3'
DisplayCAL: Reached EOF (OK)
dispread exitcode: 0
Create profile from measurement data...

Preparing ChromaticityType tag from TI3 colorants
Storing settings in TI3
Extracting neutrals from /tmp/DisplayCAL-pf5xu8w0/DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX.ti3
Applying 0% black point correction to TI3
Extracting neutrals from /tmp/DisplayCAL-pf5xu8w0/DisplayPort-0 #1 2026-06-22 10-32 D6500 2.2 F-S XYZLUT+MTX.ti3
R=G=B (>= 1% luminance) dE*00 avg 0.4981044195481157 peak 1.2119858721749313
Got high quality calibration, using single device to PCS shaper curve for cLUT

Traceback (most recent call last):
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/wx/lib/delayedresult.py", line 267, in wrapper
    result = workerFn(*args, **kwargs)
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 1793, in __call__
    result = self.producer(*args, **kwargs)
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 11244, in create_profile
    profile = self.create_RGB_XYZ_cLUT_fwd_profile(
        ti3,
    ...<4 lines>...
        self.log,
    )
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 12177, in create_RGB_XYZ_cLUT_fwd_profile
    gray = create_shaper_curves(
        RGB_XYZ,
    ...<7 lines>...
        cat=cat,
    )
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 950, in create_shaper_curves
    curves = _create_optimized_shaper_curves(
        bwd_mtx, bpc, single_curve, curves, profile, options_dispcal, XYZbp, logfn
    )
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/worker.py", line 978, in _create_optimized_shaper_curves
    and isinstance(profile.tags.get("vcgt"), VideoCardGammaType)
                   ~~~~~~~~~~~~~~~~^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/icc_profile.py", line 3314, in get
    return self[key] if key in self else default  # noqa: SIM401
           ~~~~^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.13/site-packages/DisplayCAL/icc_profile.py", line 3266, in __getitem__
    typeSignature, tagDataOffset, tagDataSize, tagData = tag
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 4, got 2)

result (3): ValueError: ValueError('not enough values to unpack (expected 4, got 2)')

Last edited by glenjo (2026-06-22 18:06:46)

Offline

#33 2026-06-22 18:08:16

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

Thanks for taking a look at this!

Offline

#34 2026-06-22 18:26:14

loqs
Member
Registered: 2014-03-06
Posts: 18,978

Re: Displaycal and python 3.14

That proves which commit introduced the sdl regression. Switch back to HEAD of the main branch. Change line 186 of DisplayCAL/audio.py from

    global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED,

to

    global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED, sdl

Hopefully fixing the `NameError: name 'sdl' is not defined` error.

Offline

#35 2026-06-22 18:54:43

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

That proves which commit introduced the sdl regression. Switch back to HEAD of the main branch. Change line 186 of DisplayCAL/audio.py from

    global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED,
to

    global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED, sdl
Hopefully fixing the `NameError: name 'sdl' is not defined` error.

Built OK, got the following error when launched:

glen@honcho:~/Projects/displaycal-py3$ make launch

--- launch: Launching DisplayCAL ---
Acquired lock file: <DisplayCAL.main.AppLock object at 0x7ffbb1e84590>
displaycal 3.9.18.dev12 
arch rolling n/a x86_64
Python 3.14.6 (main, Jun 15 2026, 11:36:54) [GCC 16.1.1 20260430]
Faulthandler 
wxPython 4.2.5 gtk3 (phoenix) wxWidgets 3.2.9
Encoding: utf-8
File system encoding: utf-8
Loading /home/glen/.config/DisplayCAL/DisplayCAL.ini
Loading /home/glen/.config/DisplayCAL/DisplayCAL-testchart-editor.ini
listening
writing to lock file: port: 15411
Traceback (most recent call last):
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 845, in main
    _main(module, name, app_lock_file_name)
    ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 136, in _main
    initialize_app(module, app_lock_file_name, lock_to_pids_and_ports)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 651, in initialize_app
    from DisplayCAL.wx_windows import BaseApp
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/wx_windows.py", line 31, in <module>
    from DisplayCAL import audio, config, floatspin, util_str
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/audio.py", line 186
    global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED, sdl
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: name 'sdl' is parameter and global
┌──────────────────────────────────────────────────────────────────────────────┐
│ Traceback (most recent call last):                                           │
│   File                                                                       │
│ "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", │
│ line 845, in main                                                            │
│     _main(module, name, app_lock_file_name)                                  │
│     ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                  │
│   File                                                                       │
│ "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", │
│ line 136, in _main                                                           │
│     initialize_app(module, app_lock_file_name, lock_to_pids_and_ports)       │
│     ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       │
│   File                                                                       │
│ "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", │
│ line 651, in initialize_app                                                  │
│     from DisplayCAL.wx_windows import BaseApp                                │
│   File                                                                       │
│ "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/wx_windows.py", │
│ line 31, in <module>                                                         │
│     from DisplayCAL import audio, config, floatspin, util_str                │
│   File                                                                       │
│ "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/audio.py", │
│ line 186                                                                     │
│     global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED, sdl                    │
│     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                    │
│ SyntaxError: name 'sdl' is parameter and global                              │
└──────────────────────────────────────────────────────────────────────────────┘
Exiting displaycal
Ran application exit handlers

Offline

#36 2026-06-22 19:14:06

loqs
Member
Registered: 2014-03-06
Posts: 18,978

Re: Displaycal and python 3.14

So much for a one line fix.  As a workaround undo that change and change line 120 to:

            libs = ("wx")

Offline

#37 2026-06-22 19:31:42

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

So much for a one line fix.  As a workaround undo that change and change line 120 to:

            libs = ("wx")

Built OK, starts up OK, running a calibration, and success!

Hey, thanks!  Going to run some under with KDE Plasma Wayland and see how things work out. This test was under XFCE X11.

Last edited by glenjo (2026-06-22 20:28:00)

Offline

#38 2026-06-22 21:04:23

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 77,008

Re: Displaycal and python 3.14

Try to change #292 to "global _SERVER, sdl" instead - technically would have to be applied to all routines.

Offline

#39 2026-06-22 21:47:11

loqs
Member
Registered: 2014-03-06
Posts: 18,978

Re: Displaycal and python 3.14

seth wrote:

Try to change #292 to "global _SERVER, sdl" instead - technically would have to be applied to all routines.

Also needs to break out of the loop when _SERVER is set to prevent overwriting a successful init.  Additionally it updates the typing and removes and duplicate pyglet check. Note changed the unused global use.

diff --git a/DisplayCAL/audio.py b/DisplayCAL/audio.py
index 8ac0938c..c372a4b9 100644
--- a/DisplayCAL/audio.py
+++ b/DisplayCAL/audio.py
@@ -45,8 +45,6 @@ from DisplayCAL.util_str import safe_str
 if TYPE_CHECKING:
     import pyglet.media  # noqa: TC004
     import pyo  # noqa: TC004
-    import sdl  # noqa: TC004
-    import sdl2  # noqa: TC004
     import wx
 
 
@@ -99,7 +97,7 @@ def init(
         reinit (bool): Whether to reinitialize the sound subsystem.
 
     Returns:
-        None | pyglet.media | pyo.Server | sdl.Mixer | sdl2.Mixer | wx.Sound:
+        None | pyglet.media | pyo.Server | ctypes.CDLL | wx.Sound:
             The initialized audio library or None if no suitable library was found.
     """
     # Note on buffer size: Too high values cause crackling during fade, too low
@@ -160,18 +158,18 @@ def _init_wx() -> None:
 
 
 def _load_audio_dll(
-    sdl: None | sdl.Mixer | sdl2.Mixer,
+    sdl: None | ctypes.CDLL,
     samplerate: int,
     channels: int,
     buffersize: int,
     libname: str,
     libfn: str | None,
     handle: None | int | str = None,
-) -> None | sdl.Mixer | sdl2.Mixer:
+) -> None | ctypes.CDLL:
     """Load the audio DLL.
 
     Args:
-        sdl (None | sdl.Mixer | sdl2.Mixer): The SDL audio library to use.
+        sdl (None | ctypes.CDLL): The SDL audio library to use.
         samplerate (int): The sample rate to use.
         channels (int): The number of audio channels.
         buffersize (int): The size of the audio buffer.
@@ -180,7 +178,7 @@ def _load_audio_dll(
         handle (None | int | str): The handle to the loaded library.
 
     Returns:
-        None | sdl.Mixer | sdl2.Mixer: The loaded SDL audio library or None if
+        None | ctypes.CDLL: The loaded SDL audio library or None if
             the library could not be loaded.
     """
     global _SERVER, _LIB, _LIB_VERSION, _INITIALIZED
@@ -225,7 +223,7 @@ def _init_sdl_windows(samplerate: int, channels: int, buffersize: int) -> None:
         channels (int): The number of audio channels.
         buffersize (int): The size of the audio buffer.
     """
-    global _SERVER
+    global _SERVER, sdl
     sdl = None
     pth = getenvu("PATH")
     libpth = os.path.join(PYDIR, "lib")
@@ -250,6 +248,8 @@ def _init_sdl_windows(samplerate: int, channels: int, buffersize: int) -> None:
             libfn,
             handle,
         )
+        if _SERVER:
+            break
 
 
 def _init_sdl_macos(samplerate: int, channels: int, buffersize: int) -> None:
@@ -260,7 +260,7 @@ def _init_sdl_macos(samplerate: int, channels: int, buffersize: int) -> None:
         channels (int): The number of audio channels.
         buffersize (int): The size of the audio buffer.
     """
-    global _SERVER
+    global _SERVER, sdl
     sdl = None
     if x_framework_pth := os.getenv("X_DYLD_FALLBACK_FRAMEWORK_PATH"):
         if framework_pth := os.getenv("DYLD_FALLBACK_FRAMEWORK_PATH"):
@@ -279,6 +279,8 @@ def _init_sdl_macos(samplerate: int, channels: int, buffersize: int) -> None:
             libfn,
             handle,
         )
+        if _SERVER:
+            break
 
 
 def _init_sdl_linux(samplerate: int, channels: int, buffersize: int) -> None:
@@ -289,7 +291,7 @@ def _init_sdl_linux(samplerate: int, channels: int, buffersize: int) -> None:
         channels (int): The number of audio channels.
         buffersize (int): The size of the audio buffer.
     """
-    global _SERVER
+    global _SERVER, sdl
     sdl = None
     for libname in ("SDL2", "SDL2_mixer", "SDL", "SDL_mixer"):
         handle = None
@@ -311,6 +313,8 @@ def _init_sdl_linux(samplerate: int, channels: int, buffersize: int) -> None:
             libfn,
             handle,
         )
+        if _SERVER:
+            break
 
 
 def _init_sdl(samplerate: int, channels: int, buffersize: int) -> None:
@@ -902,8 +908,6 @@ class Sound:
             return self._play_pyglet(fade_ms, stop_already_playing)
         if self._lib == "pyo":
             return self._play_pyo(fade_ms, stop_already_playing)
-        if self._lib == "pyglet":
-            return self._play_pyglet(fade_ms, stop_already_playing)
         if self._lib == "SDL":
             return self._play_sdl(fade_ms, stop_already_playing)
         if self._lib == "wx":

Offline

#40 2026-06-22 22:11:47

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 70

Re: Displaycal and python 3.14

Yes, there still some issues there, but no sound is not a deal killer for me right now. I suppose if I was doing many more calibrations having sound would start to be a pretty useful feature.

What's more interesting is that I was able to successfully make an ICC profile while running KDE Wayland, but if I actually apply that profile, the monitor is very dark, almost black. If I apply the ICC profile I made for XFCE X11 in KDE Wayland that profile too is also very dark (it works fine in XFCE X11). Now that I do some searching, I see this has been reported before for KDE Wayland. On this system X11 is running at 8 bpc, but Wayland is running at 10 bpc, and I can even use HDR.  The monitor is a BenQ SW270C which is HDR capable, it's a limited HDR compared to newer HDR monitors. But right now in Wayland and Wayland HDR, the colors are a little off so I don't use it for photography work in Wayland yet.

I'll report what I found over in the KDE forums.

And again, thanks!

Last edited by glenjo (2026-06-22 22:13:26)

Offline

Board footer

Powered by FluxBB