Skip to content

build(deps): bump actions/checkout from 6.0.1 to 6.0.2

9717c05
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Merged

build(deps): bump actions/checkout from 6.0.1 to 6.0.2 #1202

build(deps): bump actions/checkout from 6.0.1 to 6.0.2
9717c05
Select commit
Loading
Failed to load commit list.
GitHub Actions / Test Results failed Jan 23, 2026 in 0s

312 errors, 55 fail, 7 skipped, 2 540 pass in 34m 9s

    3 files      3 suites   34m 9s ⏱️
2 914 tests 2 540 ✅   7 💤  55 ❌ 312 🔥
8 742 runs  7 869 ✅ 139 💤 110 ❌ 624 🔥

Results for commit 9717c05.

Annotations

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorPluginRegistration

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_factory_creates_battery_monitor_view_instances (tests.acceptance_battery_monitor.TestBatteryMonitorPluginRegistration)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_opens_battery_configuration_step_and_sees_battery_status (tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_battery_status_update_periodically (tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_critical_voltage_warning_when_battery_low (tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_disabled_status_when_battery_monitoring_off (tests.acceptance_battery_monitor.TestBatteryMonitorUserWorkflow)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorPluginLifecycle

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_plugin_starts_monitoring_when_created (tests.acceptance_battery_monitor.TestBatteryMonitorPluginLifecycle)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorPluginLifecycle

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_plugin_stops_monitoring_when_destroyed (tests.acceptance_battery_monitor.TestBatteryMonitorPluginLifecycle)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorRealTimeUpdates

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_monitors_battery_during_motor_test (tests.acceptance_battery_monitor.TestBatteryMonitorRealTimeUpdates)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorRealTimeUpdates

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_immediate_warning_when_voltage_becomes_critical (tests.acceptance_battery_monitor.TestBatteryMonitorRealTimeUpdates)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorConnectionHandling

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_unavailable_when_flight_controller_disconnects (tests.acceptance_battery_monitor.TestBatteryMonitorConnectionHandling)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorConnectionHandling

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_plugin_continues_attempting_updates_after_connection_loss (tests.acceptance_battery_monitor.TestBatteryMonitorConnectionHandling)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_na_when_battery_status_unavailable (tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_periodic_update_handles_disconnection_gracefully (tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_on_activate_refreshes_battery_when_disconnected (tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_on_deactivate_cancels_active_timer (tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_destroy_cancels_timer_before_cleanup (tests.acceptance_battery_monitor.TestBatteryMonitorEdgeCases)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorStreamReconnection

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_experiences_automatic_stream_recovery_after_connection_loss (tests.acceptance_battery_monitor.TestBatteryMonitorStreamReconnection)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorStreamReconnection

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_plugin_handles_multiple_rapid_activate_deactivate_cycles (tests.acceptance_battery_monitor.TestBatteryMonitorStreamReconnection)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorStreamReconnection

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_stream_request_occurs_on_every_call_until_data_received (tests.acceptance_battery_monitor.TestBatteryMonitorStreamReconnection)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorInvalidConfiguration

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_unavailable_when_voltage_thresholds_invalid (tests.acceptance_battery_monitor.TestBatteryMonitorInvalidConfiguration)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorInvalidConfiguration

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_user_sees_critical_when_voltage_above_maximum (tests.acceptance_battery_monitor.TestBatteryMonitorInvalidConfiguration)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorDataModelCleanup

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_view_calls_model_cleanup_on_deactivate (tests.acceptance_battery_monitor.TestBatteryMonitorDataModelCleanup)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorDataModelCleanup

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_view_calls_model_cleanup_on_destroy (tests.acceptance_battery_monitor.TestBatteryMonitorDataModelCleanup)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorParameterUpload

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_upload_button_appears_when_parameter_editor_available (tests.acceptance_battery_monitor.TestBatteryMonitorParameterUpload)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError

Check failure on line 0 in tests.acceptance_battery_monitor.TestBatteryMonitorParameterUpload

See this annotation in the file changed.

@github-actions github-actions / Test Results

2 out of 3 runs with error: test_upload_button_hidden_when_parameter_editor_unavailable (tests.acceptance_battery_monitor.TestBatteryMonitorParameterUpload)

artifacts/coverage-3.14-xml/results-junit.xml [took 0s]
artifacts/coverage-3.14t-xml/results-junit.xml [took 0s]
Raw output
failed on setup with "_tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
    /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library

/usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
    while executing
"package require -exact Tcl 8.6.14"
    (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
    invoked from within
"source /usr/share/tcltk/tcl8.6/init.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $tclfile]"


This probably means that Tcl wasn't installed properly."
@pytest.fixture
    def tk_root() -> tk.Tk:
        """Provide a real Tkinter root window for testing GUI components."""
>       root = tk.Tk()
               ^^^^^^^

tests/acceptance_battery_monitor.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <tkinter.Tk object .>, screenName = None, baseName = 'pytest'
className = 'Tk', useTk = True, sync = False, use = None

    def __init__(self, screenName=None, baseName=None, className='Tk',
                 useTk=True, sync=False, use=None):
        """Return a new top level widget on screen SCREENNAME. A new Tcl interpreter will
        be created. BASENAME will be used for the identification of the profile file (see
        readprofile).
        It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME
        is the name of the widget class."""
        self.master = None
        self.children = {}
        self._tkloaded = False
        # to avoid recursions in the getattr code in case of failure, we
        # ensure that self.tk is always _something_.
        self.tk = None
        if baseName is None:
            import os
            baseName = os.path.basename(sys.argv[0])
            baseName, ext = os.path.splitext(baseName)
            if ext not in ('.py', '.pyc'):
                baseName = baseName + ext
        interactive = False
>       self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       _tkinter.TclError: Cannot find a usable init.tcl in the following directories: 
E           /usr/share/tcltk/tcl9.0 /tools/deps/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/lib/tcl9.0 /home/runner/work/MethodicConfigurator/MethodicConfigurator/.venv/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0/library /home/runner/work/MethodicConfigurator/MethodicConfigurator/tcl9.0.3/library /home/runner/work/MethodicConfigurator/tcl9.0.3/library
E       
E       /usr/share/tcltk/tcl8.6/init.tcl: version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E       version conflict for package "Tcl": have 9.0.3, need exactly 8.6.14
E           while executing
E       "package require -exact Tcl 8.6.14"
E           (file "/usr/share/tcltk/tcl8.6/init.tcl" line 19)
E           invoked from within
E       "source /usr/share/tcltk/tcl8.6/init.tcl"
E           ("uplevel" body line 1)
E           invoked from within
E       "uplevel #0 [list source $tclfile]"
E       
E       
E       This probably means that Tcl wasn't installed properly.

../../_temp/uv-python-dir/cpython-3.14.2-linux-x86_64-gnu/lib/python3.14/tkinter/__init__.py:2479: TclError