Python 3.10 regression: injector.UnknownProvider: couldn't determine provider

Bug report

Step 1: Are you in the right place?

  • I have verified there are no duplicate active or recent bugs, questions, or requests
  • I have verified that I am using the latest version of GreenWithEnvy (GWE)

Step 2: Describe your environment

  • GWE version: 0.15.4-1.fc35
  • Installed from source/Flatpak/AUR/other (specify): Official Fedora repo
  • Distribution name and version (e.g. Ubuntu 18.10): Fedora 35 (Beta)
  • Desktop Environment (e.g. Gnome 3.30): GNOME 41
  • NVIDIA driver version (e.g. 415.27): ?
  • CoolBits value (4, 8, 12, ..., don't know): ?
  • GPU (e.g. Asus Strix OC 1080 Ti): ?

Step 3: Describe the problem:

Won't work on Fedora 35 (RPM version). Crashed at startup. Downstream bug report here.

Observed Results:

__init__.py:644:provider_for:injector.UnknownProvider: couldn't determine provider for gwe.di.OverclockProfileChangedSubject to None

Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/injector/__init__.py", line 658, in get_binding
    return self._get_binding(interface, only_this_binder=is_scope)
  File "/usr/lib/python3.10/site-packages/injector/__init__.py", line 653, in _get_binding
    raise KeyError
KeyError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/bin/gwe", line 53, in <module>
    from gwe import __main__
  File "/usr/lib/python3.10/site-packages/gwe/__main__.py", line 33, in <module>
    from gwe.model.current_fan_profile import CurrentFanProfile
  File "/usr/lib/python3.10/site-packages/gwe/model/__init__.py", line 19, in <module>
    from gwe.model.overclock_profile import OverclockProfile
  File "/usr/lib/python3.10/site-packages/gwe/model/overclock_profile.py", line 29, in <module>
    OVERCLOCK_PROFILE_CHANGED_SUBJECT = INJECTOR.get(OverclockProfileChangedSubject)
  File "/usr/lib/python3.10/site-packages/injector/__init__.py", line 952, in get
    binding, binder = self.binder.get_binding(interface)
  File "/usr/lib/python3.10/site-packages/injector/__init__.py", line 667, in get_binding
    binding = self.create_binding(interface)
  File "/usr/lib/python3.10/site-packages/injector/__init__.py", line 582, in create_binding
    provider = self.provider_for(interface, to)
  File "/usr/lib/python3.10/site-packages/injector/__init__.py", line 644, in provider_for
    raise UnknownProvider('couldn\'t determine provider for %r to %r' % (interface, to))
injector.UnknownProvider: couldn't determine provider for gwe.di.OverclockProfileChangedSubject to None

Local variables in innermost frame:
self: <injector.Binder object at 0x7ffb7c20cd30>
to: None
base_type: gwe.di.OverclockProfileChangedSubject
origin: None
interface: gwe.di.OverclockProfileChangedSubject

Expected Results:

Version 0.15.3 used to work on f34. Python modules updated to latest versions but maybe i missed something.

Edited by Roberto Leinardi