| import importlib | |
| from typing import Type, TypeVar | |
| T = TypeVar('T') | |
| def import_from(qual_name: str): | |
| """Import the value from the qualified name given""" | |
| parts = qual_name.split('.') | |
| module_name = '.'.join(parts[:-1]) | |
| module = importlib.import_module(module_name) | |
| result = getattr(module, parts[-1]) | |
| return result | |
| def get_impl(cls: Type[T], impl_name: str | None) -> Type[T]: | |
| """Import a named implementation of the specified class""" | |
| if impl_name is None: | |
| return cls | |
| impl_class = import_from(impl_name) | |
| assert cls == impl_class or issubclass(impl_class, cls) | |
| return impl_class | |