blob: ea483ca8e46d6c218c50be41c433482dc4f0c1e0 [file]
# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Defines the import hooks for when a user writes `import fidl.[fidl_library]`."""
import importlib.abc
import sys
from ._async_socket import AsyncSocket
from ._fidl_common import FrameworkError
from ._fidl_common import EpitaphError
from ._ipc import GlobalHandleWaker
from ._ipc import HandleWaker
from ._library import load_module
class FIDLImportFinder(importlib.abc.MetaPathFinder):
"""The main import hook class."""
def find_module(self, fullname: str, path=None):
"""Override from abc.MetaPathFinder."""
# TODO(https://fxbug.dev/109789): Remove "TransportError".
if (
fullname.startswith("fidl._")
or fullname == "fidl.FrameworkError"
or fullname == "fidl.TransportError"
):
return __loader__
elif fullname.startswith("fidl."):
return self
def load_module(self, fullname: str):
"""Override from abc.MetaPathFinder."""
return load_module(fullname)
meta_hook = FIDLImportFinder()
sys.meta_path.insert(0, meta_hook)