Я использую importlib для импорта модулей во время выполнения. Эти модули являются плагинами для моего приложения и должны реализовывать 1 или несколько функций уровня модуля. Я начал добавлять аннотации типов в свои приложения и получаю сообщение об ошибке mypy, указывающее
Модуль не имеет атрибута generate_configuration.
где "generate_configuration" - одна из функций модуля.
В этом примере в модуле должна быть только функция generate_configuration. Функция принимает единственный аргумент dict.
def generate_configuration(data: Dict[str, DataFrame]) -> None: ...
Я искал, как указать интерфейс модуля, но все, что я могу найти, - это интерфейсы классов. Может ли кто-нибудь указать мне на какую-то документацию, показывающую, как это сделать? Мой гугл-фу подводит меня в этом.
Код, загружающий этот модуль, показан ниже. Ошибка генерируется последней строкой.
plugin_directory = os.path.join(os.path.abspath(directory), 'Configuration-Generation-Plugins')
plugins = (
module_file
for module_file in Path(plugin_directory).glob('*.py')
)
sys.path.insert(0, plugin_directory)
for plugin in plugins:
plugin_module = import_module(plugin.stem)
plugin_module.generate_configuration(directory, points_list)