]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Fix qmk doctor 'bytes-like object is required' on linux
authorAyman Bagabas <ayman.bagabas@gmail.com>
Wed, 2 Oct 2019 00:56:16 +0000 (20:56 -0400)
committerskullydazed <skullydazed@users.noreply.github.com>
Thu, 3 Oct 2019 17:27:20 +0000 (10:27 -0700)
This fixes the following issue related to encoding on linux systems. Add
`universal_newlines=True` to subprocess.

<class 'TypeError'>
☒ a bytes-like object is required, not 'str'
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/milc.py", line 564, in __call__
    return self.__call__()
  File "/usr/local/lib/python3.7/site-packages/milc.py", line 569, in __call__
    return self._entrypoint(self)
  File "$HOME/qmk_firmware/lib/python/qmk/cli/doctor.py", line 56, in doctor
    for line in mm_check.stdout.split('\n'):
TypeError: a bytes-like object is required, not 'str'

lib/python/qmk/cli/doctor.py

index 3474422a89156a17c0b7afb3f7c992d5feeca020..2b6a03e443ae0bb9b1a163484d0c30b9285a401b 100755 (executable)
@@ -50,7 +50,7 @@ def doctor(cli):
     elif OS == "Linux":
         cli.log.info("Detected {fg_cyan}Linux.")
         if shutil.which('systemctl'):
-            mm_check = subprocess.run(['systemctl', 'list-unit-files'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10)
+            mm_check = subprocess.run(['systemctl', 'list-unit-files'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10, universal_newlines=True)
             if mm_check.returncode == 0:
                 mm = True
                 for line in mm_check.stdout.split('\n'):