diff --git a/src/blueapi/core/context.py b/src/blueapi/core/context.py index 3e86b402c..60df7a9d7 100644 --- a/src/blueapi/core/context.py +++ b/src/blueapi/core/context.py @@ -2,7 +2,7 @@ import sys from collections.abc import Callable from dataclasses import InitVar, dataclass, field, fields, is_dataclass -from importlib import import_module +from importlib import import_module, metadata from inspect import Parameter, isclass, signature from types import ModuleType, NoneType, UnionType from typing import Any, Generic, TypeVar, Union, get_args, get_origin, get_type_hints @@ -217,6 +217,14 @@ def find_device(self, addr: str | list[str]) -> Device | None: def with_config(self, config: EnvironmentConfig) -> None: if config.metadata is not None: self.run_engine.md |= config.metadata.model_dump() + + package_map = metadata.packages_distributions() + packages = {src.module.split(".")[0] for src in config.sources} + for pkg in packages: + if root_pkg := package_map.get(pkg): + version = metadata.version(root_pkg[0]) + LOGGER.info("Using package %s[%s]", root_pkg[0], version) + for source in config.sources: mod = import_module(source.module)