from __future__ import annotations
import sys
from importlib.machinery import ModuleSpec, PathFinder
from importlib.machinery import all_suffixes as module_suffixes
from importlib.util import spec_from_file_location
from itertools import chain
from pathlib import Path

MAPPING: dict[str, str] = {'acp_adapter': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/acp_adapter', 'agent': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/agent', 'batch_runner': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/batch_runner', 'cli': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/cli', 'cron': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/cron', 'gateway': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/gateway', 'hermes_bootstrap': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_bootstrap', 'hermes_cli': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_cli', 'hermes_constants': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_constants', 'hermes_constants_scratch': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_constants_scratch', 'hermes_constants_scratch_stuck': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_constants_scratch_stuck', 'hermes_dir_acl': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_dir_acl', 'hermes_logging': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_logging', 'hermes_platform': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_platform', 'hermes_startup_watchdog': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_startup_watchdog', 'hermes_state': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state', 'hermes_state_api_content': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_api_content', 'hermes_state_common': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_common', 'hermes_state_compression': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_compression', 'hermes_state_coverage': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_coverage', 'hermes_state_dbfile': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_dbfile', 'hermes_state_detached_results': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_detached_results', 'hermes_state_errors': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_errors', 'hermes_state_fts': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_fts', 'hermes_state_gateway': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_gateway', 'hermes_state_guard': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_guard', 'hermes_state_health': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_health', 'hermes_state_holders': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_holders', 'hermes_state_identity': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_identity', 'hermes_state_ids': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_ids', 'hermes_state_keys': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_keys', 'hermes_state_local': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_local', 'hermes_state_local_lineage': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_local_lineage', 'hermes_state_local_migration': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_local_migration', 'hermes_state_lockguard': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_lockguard', 'hermes_state_lockowners': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_lockowners', 'hermes_state_maintenance': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_maintenance', 'hermes_state_media': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_media', 'hermes_state_messages': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_messages', 'hermes_state_mutation_binding': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_binding', 'hermes_state_mutation_branch': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_branch', 'hermes_state_mutation_chat_pick': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_chat_pick', 'hermes_state_mutation_compress': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_compress', 'hermes_state_mutation_guards': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_guards', 'hermes_state_mutation_prepared': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_prepared', 'hermes_state_mutation_reset': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_reset', 'hermes_state_mutation_retirement': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_retirement', 'hermes_state_mutation_transcript': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutation_transcript', 'hermes_state_mutations': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_mutations', 'hermes_state_pidns': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_pidns', 'hermes_state_portability': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_portability', 'hermes_state_profile_repair': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_profile_repair', 'hermes_state_prune_rewrite': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_prune_rewrite', 'hermes_state_readpool': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_readpool', 'hermes_state_reconcile': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_reconcile', 'hermes_state_registry': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_registry', 'hermes_state_repair': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_repair', 'hermes_state_rewind': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_rewind', 'hermes_state_runtime': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_runtime', 'hermes_state_runtime_workers': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_runtime_workers', 'hermes_state_schema': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_schema', 'hermes_state_search': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_search', 'hermes_state_sessions': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_sessions', 'hermes_state_sessions_model_config': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_sessions_model_config', 'hermes_state_telegram': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_telegram', 'hermes_state_terminal': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_terminal', 'hermes_state_timeline': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_timeline', 'hermes_state_titles': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_titles', 'hermes_state_todo': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_todo', 'hermes_state_usage': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_usage', 'hermes_state_user_copy': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_user_copy', 'hermes_state_wal': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_wal', 'hermes_state_worker_compression': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_worker_compression', 'hermes_state_worker_context': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_worker_context', 'hermes_state_worker_lifecycle': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_state_worker_lifecycle', 'hermes_time': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_time', 'hermes_yaml': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_yaml', 'mini_swe_runner': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/mini_swe_runner', 'model_tools': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/model_tools', 'plugins': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins', 'pm': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/pm', 'providers': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/providers', 'registration_lifecycle': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/registration_lifecycle', 'run_agent': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/run_agent', 'tools': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/tools', 'toolset_distributions': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/toolset_distributions', 'toolsets': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/toolsets', 'trajectory_compressor': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/trajectory_compressor', 'tui_gateway': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/tui_gateway', 'utils': '/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/utils'}
NAMESPACES: dict[str, list[str]] = {'plugins.dashboard_auth': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/dashboard_auth'], 'plugins.browser': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/browser'], 'plugins.image_gen': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/image_gen'], 'plugins.model-providers': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/model-providers'], 'plugins.hermes-achievements': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/hermes-achievements'], 'plugins.delegation': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/delegation'], 'plugins.kanban': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/kanban'], 'plugins.platforms': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/platforms'], 'plugins.video_gen': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/video_gen'], 'plugins.hermes-achievements.dashboard': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/hermes-achievements/dashboard'], 'plugins.hermes-achievements.docs': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/hermes-achievements/docs'], 'plugins.hermes-achievements.tests': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/hermes-achievements/tests'], 'plugins.hermes-achievements.dashboard.dist': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/hermes-achievements/dashboard/dist'], 'plugins.hermes-achievements.docs.assets': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/hermes-achievements/docs/assets'], 'plugins.kanban.dashboard': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/kanban/dashboard'], 'plugins.kanban.systemd': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/kanban/systemd'], 'plugins.kanban.dashboard.dist': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/kanban/dashboard/dist'], 'plugins.platforms.photon.sidecar': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/plugins/platforms/photon/sidecar'], 'tools.neutts_samples': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/tools/neutts_samples'], 'tools.wakewords': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/tools/wakewords'], 'gateway.assets': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/gateway/assets'], 'hermes_cli.observability.schemas': ['/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/88679baa1dc64374a0cd943b62eeefb9/workspace/hermes_cli/observability/schemas']}
PATH_PLACEHOLDER = '__editable__.hermes_agent-0.0.0.finder' + ".__path_hook__"


class _EditableFinder:  # MetaPathFinder
    @classmethod
    def find_spec(cls, fullname: str, path=None, target=None) -> ModuleSpec | None:  # type: ignore
        # Top-level packages and modules (we know these exist in the FS)
        if fullname in MAPPING:
            pkg_path = MAPPING[fullname]
            return cls._find_spec(fullname, Path(pkg_path))

        # Handle immediate children modules (required for namespaces to work)
        # To avoid problems with case sensitivity in the file system we delegate
        # to the importlib.machinery implementation.
        parent, _, child = fullname.rpartition(".")
        if parent and parent in MAPPING:
            return PathFinder.find_spec(fullname, path=[MAPPING[parent]])

        # Other levels of nesting should be handled automatically by importlib
        # using the parent path.
        return None

    @classmethod
    def _find_spec(cls, fullname: str, candidate_path: Path) -> ModuleSpec | None:
        init = candidate_path / "__init__.py"
        candidates = (candidate_path.with_suffix(x) for x in module_suffixes())
        for candidate in chain([init], candidates):
            if candidate.exists():
                return spec_from_file_location(fullname, candidate)
        return None


class _EditableNamespaceFinder:  # PathEntryFinder
    @classmethod
    def _path_hook(cls, path) -> type[_EditableNamespaceFinder]:
        if path == PATH_PLACEHOLDER:
            return cls
        raise ImportError

    @classmethod
    def _paths(cls, fullname: str) -> list[str]:
        paths = NAMESPACES[fullname]
        if not paths and fullname in MAPPING:
            paths = [MAPPING[fullname]]
        # Always add placeholder, for 2 reasons:
        # 1. __path__ cannot be empty for the spec to be considered namespace.
        # 2. In the case of nested namespaces, we need to force
        #    import machinery to query _EditableNamespaceFinder again.
        return [*paths, PATH_PLACEHOLDER]

    @classmethod
    def find_spec(cls, fullname: str, target=None) -> ModuleSpec | None:  # type: ignore
        if fullname in NAMESPACES:
            spec = ModuleSpec(fullname, None, is_package=True)
            spec.submodule_search_locations = cls._paths(fullname)
            return spec
        return None

    @classmethod
    def find_module(cls, _fullname) -> None:
        return None


def install():
    if not any(finder == _EditableFinder for finder in sys.meta_path):
        sys.meta_path.append(_EditableFinder)

    if not NAMESPACES:
        return

    if not any(hook == _EditableNamespaceFinder._path_hook for hook in sys.path_hooks):
        # PathEntryFinder is needed to create NamespaceSpec without private APIS
        sys.path_hooks.append(_EditableNamespaceFinder._path_hook)
    if PATH_PLACEHOLDER not in sys.path:
        sys.path.append(PATH_PLACEHOLDER)  # Used just to trigger the path hook
