From a4842a33b74d89daac3b490c9a0dd91b933ad51f Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Wed, 28 Dec 2022 18:57:01 +0400 Subject: [PATCH 1/2] wxui: support python 3.9 I get the following exception on start: $ python3 chirpwx.py Traceback (most recent call last): File "/home/asheplyakov/work/radio/chirp/chirpwx.py", line 8, in sys.exit(chirpmain()) File "/home/asheplyakov/work/radio/chirp/chirp/wxui/__init__.py", line 41, in chirpmain from chirp.wxui import main File "/home/asheplyakov/work/radio/chirp/chirp/wxui/main.py", line 28, in import importlib_resources ModuleNotFoundError: No module named 'importlib_resources' $ python3 --version Python 3.9.6 However importlib is available in Python 3.9 (as a part of the standard library). To avoid the problem this patch removes the version check, and checks for importlib_resources/importlib.resources modules instead. --- chirp/wxui/__init__.py | 4 ++-- chirp/wxui/main.py | 4 ++-- setup.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/chirp/wxui/__init__.py b/chirp/wxui/__init__.py index ad01db3b5..c14702967 100644 --- a/chirp/wxui/__init__.py +++ b/chirp/wxui/__init__.py @@ -5,9 +5,9 @@ import os import sys -if sys.version_info < (3, 10): +try: import importlib_resources -else: +except ModuleNotFoundError: import importlib.resources as importlib_resources from chirp import directory diff --git a/chirp/wxui/main.py b/chirp/wxui/main.py index 88f5a50a6..55b0607db 100644 --- a/chirp/wxui/main.py +++ b/chirp/wxui/main.py @@ -24,9 +24,9 @@ import time import webbrowser -if sys.version_info < (3, 10): +try: import importlib_resources -else: +except ModuleNotFoundError: import importlib.resources as importlib_resources import wx diff --git a/setup.py b/setup.py index 3d5dafdc6..cb98aa333 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ 'pyserial', 'six', 'future', - 'importlib-resources;python_version<"3.10"', + 'importlib-resources;python_version<"3.9"', 'yattag', ], extras_require={ From 21a74cd1a97040f9dc189c9855a6c06ed020d5fa Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Wed, 28 Dec 2022 18:59:00 +0400 Subject: [PATCH 2/2] Fixed startup error (app icon and stock configs can't be found) I get the following error on startup: $ python3 chirpwx.py Traceback (most recent call last): File "/home/asheplyakov/work/radio/chirp/chirpwx.py", line 8, in sys.exit(chirpmain()) File "/home/asheplyakov/work/radio/chirp/chirp/wxui/__init__.py", line 94, in chirpmain mainwindow = main.ChirpMain(None, title='CHIRP') File "/home/asheplyakov/work/radio/chirp/chirp/wxui/main.py", line 307, in __init__ self.set_icon() File "/home/asheplyakov/work/radio/chirp/chirp/wxui/main.py", line 342, in set_icon importlib_resources.files('chirp.share') File "/usr/lib64/python3.9/importlib/resources.py", line 147, in files return _common.from_package(_get_package(package)) File "/usr/lib64/python3.9/importlib/_common.py", line 14, in from_package return fallback_resources(package.__spec__) File "/usr/lib64/python3.9/importlib/_common.py", line 18, in fallback_resources package_directory = pathlib.Path(spec.origin).parent File "/usr/lib64/python3.9/pathlib.py", line 1072, in __new__ self = cls._from_parts(args, init=False) File "/usr/lib64/python3.9/pathlib.py", line 697, in _from_parts drv, root, parts = self._parse_args(args) File "/usr/lib64/python3.9/pathlib.py", line 681, in _parse_args a = os.fspath(a) TypeError: expected str, bytes or os.PathLike object, not NoneType The problem is that 'chirp.share' is not a proper python package, therefore importlib fails to locate its resources. To avoid the problem this patch adds empty __init__.py files to chirp/share and chirp/stock_configs directories. As a side effect setup.py installs (the content of) these directories (which makes packagers more happy). --- chirp/share/__init__.py | 0 chirp/stock_configs/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 chirp/share/__init__.py create mode 100644 chirp/stock_configs/__init__.py diff --git a/chirp/share/__init__.py b/chirp/share/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/chirp/stock_configs/__init__.py b/chirp/stock_configs/__init__.py new file mode 100644 index 000000000..e69de29bb