Skip to content
Snippets Groups Projects
Commit 720855a0 authored by Philipp Hörist's avatar Philipp Hörist
Browse files

GUI: Improve finding modules

parent 88376197
No related branches found
No related tags found
No related merge requests found
......@@ -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))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment