Helper to decide whether a given service should be loaded.
Also loads implicit dependencies defined in SERVICES_DEPENDENCIES.
Configuration/Dependencies
Requires an EngineConfiguration instance that exposes loaders under:
configuration.services.object_storage.load()
configuration.services.triple_store.load()
configuration.services.vector_store.load()
configuration.services.secret.load()
configuration.services.bus.load()
configuration.services.kv.load()
Uses module requirements from ModuleDependencies.services (a list of service types).
Implicit service dependency map:
TripleStoreService depends on BusService
If TripleStoreService is requested, BusService will also be loaded (even if not explicitly requested).
Logs the resolved unique service types list via naas_abi_core.logger.debug.
Usage
from naas_abi_core.engine.engine_loaders.EngineServiceLoader import EngineServiceLoaderfrom naas_abi_core.engine.engine_configuration.EngineConfiguration import EngineConfiguration# module_dependencies must map module names to ModuleDependencies instances,# each containing a `.services` list of service types to request.module_dependencies = { # "my_module": ModuleDependencies(services=[...], ...)}configuration = EngineConfiguration(...) # must be properly constructed for your environmentloader = EngineServiceLoader(configuration)services = loader.load_services(module_dependencies)# services is an IEngine.Services container with requested services loaded (others are None).
Caveats
Any service not requested (directly or via SERVICES_DEPENDENCIES) is set to None in IEngine.Services.
Only the dependency TripleStoreService -> BusService is handled; no other dependency relationships are defined in this file.