pwr-Solaar / Solaar

Linux device manager for Logitech devices
https://pwr-solaar.github.io/Solaar
GNU General Public License v2.0
5.54k stars 410 forks source link

python3.10 requires upgraded pyyaml #2011

Closed victorkirov closed 1 year ago

victorkirov commented 1 year ago

Information

``` solaar version 1.1.8 USB and Bluetooth Devices 1: MX Master 3S Device path : /dev/hidraw6 USB id : 046d:B034 Codename : MX Master 3S Kind : mouse Protocol : HID++ 4.5 Serial number: Model ID: B03400000000 Unit ID: 8DF9438F Bootloader: BL1 69.00.B0003 Firmware: RBM 22.00.B0003 Other: Supports 36 HID++ 2.0 features: 0: ROOT {0000} V0 1: FEATURE SET {0001} V0 2: DEVICE FW VERSION {0003} V4 Firmware: Bootloader BL1 69.00.B0003 B03438FCA4E6 Firmware: Firmware RBM 22.00.B0003 B03438FCA4E6 Firmware: Other Unit ID: 8DF9438F Model ID: B03400000000 Transport IDs: {'btleid': 'B034'} 3: DEVICE NAME {0005} V0 Name: MX Master 3S Kind: mouse 4: WIRELESS DEVICE STATUS {1D4B} V0 5: CONFIG CHANGE {0020} V0 6: CRYPTO ID {0021} V1 7: DEVICE FRIENDLY NAME {0007} V0 Friendly Name: MX Master 3S 8: UNIFIED BATTERY {1004} V3 Battery: 75%, discharging. 9: REPROG CONTROLS V4 {1B04} V5 Key/Button Actions : {Left Button:Left Click, Right Button:Right Click, Middle Button:Mouse Middle Button, Back Button:Mouse Back Button, Forward Button:Mouse Forward Button, Mouse Gesture Button:Gesture Button Navigation, Smart Shift:Smart Shift} Key/Button Diversion : {Middle Button:Regular, Back Button:Regular, Forward Button:Regular, Mouse Gesture Button:Regular, Smart Shift:Regular} 10: CHANGE HOST {1814} V1 Change Host : 2:vicrog 11: HOSTS INFO {1815} V2 Host 0 (paired): LAPTOP-1B0L9ABC Host 1 (paired): vicrog Host 2 (paired): Victor’s MacBook Pro 12: XY STATS {2250} V1 13: ADJUSTABLE DPI {2201} V2 Sensitivity (DPI) : 1000 14: SMART SHIFT {2110} V0 Scroll Wheel Ratcheted : Ratcheted Scroll Wheel Ratchet Speed : 10 15: HIRES WHEEL {2121} V1 Multiplier: 15 Has invert: Normal wheel motion Has ratchet switch: Normal wheel mode Low resolution mode HID notification Scroll Wheel Direction : False Scroll Wheel Resolution : False Scroll Wheel Diversion : False 16: THUMB WHEEL {2150} V0 Thumb Wheel Direction : False Thumb Wheel Diversion : False 17: WHEEL STATS {2251} V0 18: DFUCONTROL {00C3} V0 19: DEVICE RESET {1802} V0 internal, hidden, unknown:000010 20: unknown:1803 {1803} V0 internal, hidden, unknown:000010 21: CONFIG DEVICE PROPS {1806} V8 internal, hidden, unknown:000010 22: unknown:1816 {1816} V0 internal, hidden, unknown:000010 23: OOBSTATE {1805} V0 internal, hidden 24: unknown:1830 {1830} V0 internal, hidden, unknown:000010 25: unknown:1891 {1891} V7 internal, hidden, unknown:000008 26: unknown:18A1 {18A1} V0 internal, hidden, unknown:000010 27: unknown:1E00 {1E00} V0 hidden 28: unknown:1E02 {1E02} V0 internal, hidden 29: unknown:1602 {1602} V0 30: unknown:1EB0 {1EB0} V0 internal, hidden, unknown:000010 31: unknown:1861 {1861} V1 internal, hidden, unknown:000010 32: unknown:9300 {9300} V0 internal, hidden, unknown:000010 33: unknown:9001 {9001} V0 internal, hidden, unknown:000010 34: unknown:1E22 {1E22} V0 internal, hidden, unknown:000010 35: unknown:9205 {9205} V0 internal, hidden, unknown:000010 Has 8 reprogrammable keys: 0: Left Button , default: Left Click => Left Click mse, analytics key events, pos:0, group:1, group mask:g1 reporting: default 1: Right Button , default: Right Click => Right Click mse, analytics key events, pos:0, group:1, group mask:g1 reporting: default 2: Middle Button , default: Mouse Middle Button => Mouse Middle Button mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2 reporting: default 3: Back Button , default: Mouse Back Button => Mouse Back Button mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2 reporting: default 4: Forward Button , default: Mouse Forward Button => Mouse Forward Button mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2 reporting: default 5: Mouse Gesture Button , default: Gesture Button Navigation => Gesture Button Navigation mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2 reporting: default 6: Smart Shift , default: Smart Shift => Smart Shift mse, reprogrammable, divertable, raw XY, analytics key events, pos:0, group:2, group mask:g1,g2 reporting: default 7: Virtual Gesture Button , default: Virtual Gesture Button => Virtual Gesture Button divertable, virtual, raw XY, force raw XY, pos:0, group:3, group mask:empty reporting: default Battery: 75%, discharging.```

Contents of ~/.config/solaar/config.yaml

``` - 1.1.8 - _NAME: MX Master 3S _absent: [hi-res-scroll, lowres-scroll-mode, onboard_profiles, report_rate, pointer_speed, speed-change, backlight, backlight-timed, fn-swap, persistent-remappable-keys, disable-keyboard-keys, crown-smooth, divert-crown, divert-gkeys, m-key-leds, mr-key-led, multiplatform, gesture2-gestures, gesture2-divert, gesture2-params, sidetone, equalizer] _battery: 4100 _modelId: B03400000000 _unitId: 8DF9438F change-host: null divert-keys: {82: 0, 83: 0, 86: 0, 195: 0, 196: 0} dpi: 1000 hires-scroll-mode: false hires-smooth-invert: false hires-smooth-resolution: false reprogrammable-keys: {80: 80, 81: 81, 82: 82, 83: 83, 86: 86, 195: 195, 196: 196} scroll-ratchet: 2 smart-shift: 10 thumb-scroll-invert: false thumb-scroll-mode: false ```
ERROR [MainThread] logitech_receiver.diversion: failed to load from /home/vic/.config/solaar/rules.yaml
module 'collections' has no attribute 'Hashable'

Describe the bug Importing from collections directly was deprecated for Python 3.10. It appears a required module is still doing it when loading the rules.

To Reproduce Steps to reproduce the behavior:

  1. Install python 3.10, followed by Solaar.
  2. Create some rules
  3. Close Solaar
  4. Open Solaar with -ddd and notice that the rules haven't loaded and above error appears
victorkirov commented 1 year ago

Update: I tried editing /usr/bin/solaar first line to be #!/usr/bin/python3.9 but it complained that python3-gi is not installed (guessing it only registers for my main python installation of 3.10?)

pfps commented 1 year ago

Python libraries are specific to the Python version. Installing Python libraries using your distribution's tools usually only installs the libraries for the system version of Python.

victorkirov commented 1 year ago

Yeah, I tried to install PyObject to python3.9 and forcing solaar to run from that, but it didn't help :sweat: Is there maybe a dependency that Solaar uses that is outdated and the used version is not python3.10 compatible?

pfps commented 1 year ago

I suspect that Python 3.10 is not completely installed. You may have to reboot your system to complete the installation. I have run Solaar in Python 3.10 for quite a while, and am now running in Python 3.11.

It also may be that you have a version of pyyaml that is not compatible with Python 3.10. See https://stackoverflow.com/questions/72659999/chatterbot-module-error-attributeerror-module-collections-has-no-attribute and https://github.com/yaml/pyyaml/issues/622.

In general, upgrading the main version of Python on your system can lead to some subtle errors. Even upgrading the version of Python that you are using can create errors. One thing that might work is installing Solaar using pip. That should pick up versions of the Python libraries that Solaar depends on for the version of Python that you are using.

If none of this works, please provide the complete output of solaar -ddd and the contents of ~/.config/solaar/rules.yaml. Further debugging may require upgrading Solaar's error logging.

victorkirov commented 1 year ago

You are the best! Upgrading PyYaml worked perfectly. Thank you :tada: