| 12345678910111213141516171819202122 |
- 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
|