| import gi | |
| import os | |
| import sys | |
| import importlib.util | |
| from importlib.machinery import PathFinder | |
| from pathlib import Path | |
| # Remove this dummy module the python path and | |
| # try to import the actual gi module | |
| sys.path.remove(str(Path(__file__).parents[1])) | |
| del sys.modules["gi"] | |
| import gi | |
| class GstOverrideImport: | |
| def find_spec(self, fullname, path, target=None): | |
| if not fullname.startswith("gi.overrides"): | |
| return None | |
| finder = importlib.machinery.PathFinder() | |
| # From find_spec the docs: | |
| # If name is for a submodule (contains a dot), the parent module is automatically imported. | |
| spec = finder.find_spec( | |
| fullname, | |
| os.environ.get('_GI_OVERRIDES_PATH', '').split(os.pathsep) | |
| ) | |
| return spec | |
| sys.meta_path.insert(0, GstOverrideImport()) |