Идентифицировать пакет-дополнение
Делаю Python-приложение, которое устанавливается как Python-пакет и имеет возможность расширения его функционала с помощью дополнительных модулей, также устанавливаемых как пакеты. Это будет производиться при помощи динамического импорта пакета-дополнения и загрузки из него некоторых функций и классов.
В целях безопасности, избежания ошибок и неопределённого поведения требуется способ определения, является ли пакет дополнением для моего приложения или нет, чтобы не было возможности использовать не предназначенный для этого пакет как дополнение.
Каким способом можно реализовать данную проверку? Способ должен позволять идентифицировать как обычные пакеты, так и вложенные.
Ответы (1 шт):
Придумал способ, как можно идентифицировать пакеты-дополнения:
В каждом пакете-дополнении должен быть файл, например,
<название-приложения>_addon.json, в котором прописаны параметры дополнения, например, версия основного приложения, совместимая с этим пакетом. Перед импортом каждого модуля проверять, есть ли такой файл в модуле, с помощьюimportlib.resources.Каждый класс, который должен быть импортирован из дополнения, должен наследовать базовый класс (из пакета основного приложения), а также быть помечен декоратором.