We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Too high PyYAML and psutil version requirements for RHEL/CentOS 8 base OS
**Information**
<!-- Please update to Solaar from this repository before asking for a new feature. -->
- Solaar version (`solaar --version` and `git describe --tags`): **1.1.1**
- Distribution: **RHEL 8.5**
- Kernel version (ex. `uname -srmo`): `Linux 4.18.0-348.7.1.el8_5.x86_64 x86_64 GNU/Linux`
- Output of `solaar show` for the target device (if applicable): **N/A**

**Is your feature request related to a problem? Please describe.**
[setup.py](https://github.com/pwr-Solaar/Solaar/blob/master/setup.py#L63) lists requirements for PyYAML >= 5.1 and psutil >= 5.6.0. Unfortunately, RHEL8 and derivatives carry PyYAML 3.12 and psutil 5.4.3 built for the default python 3.6 in the base OS repository. Consequently, solaar is not installable without installing `python38` or `python39` stack (called module in RHEL/Fedora) that carry newer versions of these two. I've had a request from RHEL8 user to provide a package for RHEL8 in Fedora EPEL, hence this issue.

**Describe the solution you'd like**
If there's no specific reason for the higher versions, I'd like the requirements to be lowered to the versions listed above. I will provide a patch if agreed. I made a build for RHEL8 with these dependencies patched to lower versions and a user tested it and confirmed it seems to be working fine for him.

**Describe alternatives you've considered**
Regular packages in Fedora/EPEL may not depend on modular packages, only base OS. I considered maintaining solaar as a modular package, but this seems very complicated and I don't really have time for this. On the other hand, building it as a regular package adds minimal overhead to my Fedora package maintenance.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `setup.py`
Content:
```
1 #!/usr/bin/env python3
2 
3 from glob import glob as _glob
4 
5 try:
6     from setuptools import setup
7 except ImportError:
8     from distutils.core import setup
9 
10 # from solaar import NAME, __version__
11 __version__ = '1.1.1'
12 NAME = 'Solaar'
13 
14 
15 def _data_files():
16     from os.path import dirname as _dirname
17 
18     yield 'share/solaar/icons', _glob('share/solaar/icons/solaar*.svg')
19     yield 'share/solaar/icons', _glob('share/solaar/icons/light_*.png')
20     yield 'share/icons/hicolor/scalable/apps', ['share/solaar/icons/solaar.svg']
21 
22     for mo in _glob('share/locale/*/LC_MESSAGES/solaar.mo'):
23         yield _dirname(mo), [mo]
24 
25     yield 'share/applications', ['share/applications/solaar.desktop']
26     yield 'share/solaar/udev-rules.d', ['rules.d/42-logitech-unify-permissions.rules']
27     yield 'share/metainfo', ['share/solaar/io.github.pwr_solaar.solaar.metainfo.xml']
28 
29     del _dirname
30 
31 
32 setup(
33     name=NAME.lower(),
34     version=__version__,
35     description='Linux device manager for Logitech receivers, keyboards, mice, and tablets.',
36     long_description='''
37 Solaar is a Linux device manager for many Logitech peripherals that connect through
38 Unifying and other receivers or via USB or Bluetooth.
39 Solaar is able to pair/unpair devices with receivers and show and modify some of the
40 modifiable features of devices.
41 For instructions on installing Solaar see https://pwr-solaar.github.io/Solaar/installation'''.strip(),
42     author='Daniel Pavel',
43     license='GPLv2',
44     url='http://pwr-solaar.github.io/Solaar/',
45     classifiers=[
46         'Development Status :: 4 - Beta',
47         'Environment :: X11 Applications :: GTK',
48         'Environment :: Console',
49         'Intended Audience :: End Users/Desktop',
50         'License :: DFSG approved',
51         'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',
52         'Natural Language :: English',
53         'Programming Language :: Python :: 3 :: Only',
54         'Operating System :: POSIX :: Linux',
55         'Topic :: Utilities',
56     ],
57     platforms=['linux'],
58 
59     # sudo apt install python-gi python3-gi \
60     #        gir1.2-gtk-3.0 gir1.2-notify-0.7 gir1.2-ayatanaappindicator3-0.1
61     # os_requires=['gi.repository.GObject (>= 2.0)', 'gi.repository.Gtk (>= 3.0)'],
62     python_requires='>=3.6',
63     install_requires=[
64         'pyudev (>= 0.13)',
65         'PyYAML (>= 5.1)',
66         'python-xlib (>= 0.27)',
67         'psutil (>= 5.6.0)',
68     ],
69     package_dir={'': 'lib'},
70     packages=['hidapi', 'logitech_receiver', 'solaar', 'solaar.ui', 'solaar.cli'],
71     data_files=list(_data_files()),
72     scripts=_glob('bin/*'),
73 )
74
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -62,9 +62,9 @@
     python_requires='>=3.6',
     install_requires=[
         'pyudev (>= 0.13)',
-        'PyYAML (>= 5.1)',
+        'PyYAML (>= 3.12)',
         'python-xlib (>= 0.27)',
-        'psutil (>= 5.6.0)',
+        'psutil (>= 5.4.3)',
     ],
     package_dir={'': 'lib'},
     packages=['hidapi', 'logitech_receiver', 'solaar', 'solaar.ui', 'solaar.cli'],

{"golden_diff": "diff --git a/setup.py b/setup.py\n--- a/setup.py\n+++ b/setup.py\n@@ -62,9 +62,9 @@\n     python_requires='>=3.6',\n     install_requires=[\n         'pyudev (>= 0.13)',\n-        'PyYAML (>= 5.1)',\n+        'PyYAML (>= 3.12)',\n         'python-xlib (>= 0.27)',\n-        'psutil (>= 5.6.0)',\n+        'psutil (>= 5.4.3)',\n     ],\n     package_dir={'': 'lib'},\n     packages=['hidapi', 'logitech_receiver', 'solaar', 'solaar.ui', 'solaar.cli'],\n", "issue": "Too high PyYAML and psutil version requirements for RHEL/CentOS 8 base OS\n**Information**\r\n<!-- Please update to Solaar from this repository before asking for a new feature. -->\r\n- Solaar version (`solaar --version` and `git describe --tags`): **1.1.1**\r\n- Distribution: **RHEL 8.5**\r\n- Kernel version (ex. `uname -srmo`): `Linux 4.18.0-348.7.1.el8_5.x86_64 x86_64 GNU/Linux`\r\n- Output of `solaar show` for the target device (if applicable): **N/A**\r\n\r\n**Is your feature request related to a problem? Please describe.**\r\n[setup.py](https://github.com/pwr-Solaar/Solaar/blob/master/setup.py#L63) lists requirements for PyYAML >= 5.1 and psutil >= 5.6.0. Unfortunately, RHEL8 and derivatives carry PyYAML 3.12 and psutil 5.4.3 built for the default python 3.6 in the base OS repository. Consequently, solaar is not installable without installing `python38` or `python39` stack (called module in RHEL/Fedora) that carry newer versions of these two. I've had a request from RHEL8 user to provide a package for RHEL8 in Fedora EPEL, hence this issue.\r\n\r\n**Describe the solution you'd like**\r\nIf there's no specific reason for the higher versions, I'd like the requirements to be lowered to the versions listed above. I will provide a patch if agreed. I made a build for RHEL8 with these dependencies patched to lower versions and a user tested it and confirmed it seems to be working fine for him.\r\n\r\n**Describe alternatives you've considered**\r\nRegular packages in Fedora/EPEL may not depend on modular packages, only base OS. I considered maintaining solaar as a modular package, but this seems very complicated and I don't really have time for this. On the other hand, building it as a regular package adds minimal overhead to my Fedora package maintenance.\n", "before_files": [{"content": "#!/usr/bin/env python3\n\nfrom glob import glob as _glob\n\ntry:\n    from setuptools import setup\nexcept ImportError:\n    from distutils.core import setup\n\n# from solaar import NAME, __version__\n__version__ = '1.1.1'\nNAME = 'Solaar'\n\n\ndef _data_files():\n    from os.path import dirname as _dirname\n\n    yield 'share/solaar/icons', _glob('share/solaar/icons/solaar*.svg')\n    yield 'share/solaar/icons', _glob('share/solaar/icons/light_*.png')\n    yield 'share/icons/hicolor/scalable/apps', ['share/solaar/icons/solaar.svg']\n\n    for mo in _glob('share/locale/*/LC_MESSAGES/solaar.mo'):\n        yield _dirname(mo), [mo]\n\n    yield 'share/applications', ['share/applications/solaar.desktop']\n    yield 'share/solaar/udev-rules.d', ['rules.d/42-logitech-unify-permissions.rules']\n    yield 'share/metainfo', ['share/solaar/io.github.pwr_solaar.solaar.metainfo.xml']\n\n    del _dirname\n\n\nsetup(\n    name=NAME.lower(),\n    version=__version__,\n    description='Linux device manager for Logitech receivers, keyboards, mice, and tablets.',\n    long_description='''\nSolaar is a Linux device manager for many Logitech peripherals that connect through\nUnifying and other receivers or via USB or Bluetooth.\nSolaar is able to pair/unpair devices with receivers and show and modify some of the\nmodifiable features of devices.\nFor instructions on installing Solaar see https://pwr-solaar.github.io/Solaar/installation'''.strip(),\n    author='Daniel Pavel',\n    license='GPLv2',\n    url='http://pwr-solaar.github.io/Solaar/',\n    classifiers=[\n        'Development Status :: 4 - Beta',\n        'Environment :: X11 Applications :: GTK',\n        'Environment :: Console',\n        'Intended Audience :: End Users/Desktop',\n        'License :: DFSG approved',\n        'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',\n        'Natural Language :: English',\n        'Programming Language :: Python :: 3 :: Only',\n        'Operating System :: POSIX :: Linux',\n        'Topic :: Utilities',\n    ],\n    platforms=['linux'],\n\n    # sudo apt install python-gi python3-gi \\\n    #        gir1.2-gtk-3.0 gir1.2-notify-0.7 gir1.2-ayatanaappindicator3-0.1\n    # os_requires=['gi.repository.GObject (>= 2.0)', 'gi.repository.Gtk (>= 3.0)'],\n    python_requires='>=3.6',\n    install_requires=[\n        'pyudev (>= 0.13)',\n        'PyYAML (>= 5.1)',\n        'python-xlib (>= 0.27)',\n        'psutil (>= 5.6.0)',\n    ],\n    package_dir={'': 'lib'},\n    packages=['hidapi', 'logitech_receiver', 'solaar', 'solaar.ui', 'solaar.cli'],\n    data_files=list(_data_files()),\n    scripts=_glob('bin/*'),\n)\n", "path": "setup.py"}], "after_files": [{"content": "#!/usr/bin/env python3\n\nfrom glob import glob as _glob\n\ntry:\n    from setuptools import setup\nexcept ImportError:\n    from distutils.core import setup\n\n# from solaar import NAME, __version__\n__version__ = '1.1.1'\nNAME = 'Solaar'\n\n\ndef _data_files():\n    from os.path import dirname as _dirname\n\n    yield 'share/solaar/icons', _glob('share/solaar/icons/solaar*.svg')\n    yield 'share/solaar/icons', _glob('share/solaar/icons/light_*.png')\n    yield 'share/icons/hicolor/scalable/apps', ['share/solaar/icons/solaar.svg']\n\n    for mo in _glob('share/locale/*/LC_MESSAGES/solaar.mo'):\n        yield _dirname(mo), [mo]\n\n    yield 'share/applications', ['share/applications/solaar.desktop']\n    yield 'share/solaar/udev-rules.d', ['rules.d/42-logitech-unify-permissions.rules']\n    yield 'share/metainfo', ['share/solaar/io.github.pwr_solaar.solaar.metainfo.xml']\n\n    del _dirname\n\n\nsetup(\n    name=NAME.lower(),\n    version=__version__,\n    description='Linux device manager for Logitech receivers, keyboards, mice, and tablets.',\n    long_description='''\nSolaar is a Linux device manager for many Logitech peripherals that connect through\nUnifying and other receivers or via USB or Bluetooth.\nSolaar is able to pair/unpair devices with receivers and show and modify some of the\nmodifiable features of devices.\nFor instructions on installing Solaar see https://pwr-solaar.github.io/Solaar/installation'''.strip(),\n    author='Daniel Pavel',\n    license='GPLv2',\n    url='http://pwr-solaar.github.io/Solaar/',\n    classifiers=[\n        'Development Status :: 4 - Beta',\n        'Environment :: X11 Applications :: GTK',\n        'Environment :: Console',\n        'Intended Audience :: End Users/Desktop',\n        'License :: DFSG approved',\n        'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',\n        'Natural Language :: English',\n        'Programming Language :: Python :: 3 :: Only',\n        'Operating System :: POSIX :: Linux',\n        'Topic :: Utilities',\n    ],\n    platforms=['linux'],\n\n    # sudo apt install python-gi python3-gi \\\n    #        gir1.2-gtk-3.0 gir1.2-notify-0.7 gir1.2-ayatanaappindicator3-0.1\n    # os_requires=['gi.repository.GObject (>= 2.0)', 'gi.repository.Gtk (>= 3.0)'],\n    python_requires='>=3.6',\n    install_requires=[\n        'pyudev (>= 0.13)',\n        'PyYAML (>= 3.12)',\n        'python-xlib (>= 0.27)',\n        'psutil (>= 5.4.3)',\n    ],\n    package_dir={'': 'lib'},\n    packages=['hidapi', 'logitech_receiver', 'solaar', 'solaar.ui', 'solaar.cli'],\n    data_files=list(_data_files()),\n    scripts=_glob('bin/*'),\n)\n", "path": "setup.py"}]}