Commit 720855a0 authored by Philipp Hörist's avatar Philipp Hörist

GUI: Improve finding modules

parent 88376197
......@@ -13,26 +13,41 @@ def __init__(self, name, fallback=None):
if fallback is not None:
self._fallback_path = Path(__file__).parent.parent / fallback
self._suffix = 'pyc' if sys.platform == 'win32' else 'py'
def find_spec(self, fullname, _path, _target=None):
if not fullname.startswith('gajim.gui'):
return None
_namespace, module_name = fullname.rsplit('.', 1)
module_path = self._path / f'{module_name}.{self._suffix}'
if not module_path.exists():
if self._fallback_path is None:
return None
module_path = self._fallback_path / f'{module_name}.{self._suffix}'
if not module_path.exists():
return None
module_path = self._find_module(module_name)
if module_path is None:
return None
spec = importlib.util.spec_from_file_location(fullname, module_path)
return spec
def _find_module(self, module_name):
module_path = self._path / f'{module_name}.py'
if module_path.exists():
return module_path
module_path = self._path / f'{module_name}.pyc'
if module_path.exists():
return module_path
if self._fallback_path is None:
return None
module_path = self._fallback_path / f'{module_name}.py'
if module_path.exists():
return module_path
module_path = self._fallback_path / f'{module_name}.pyc'
if module_path.exists():
return module_path
return None
def init(name, fallback=None):
sys.meta_path.append(GUIFinder(name, fallback=fallback))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment