Plugins

aiomisc можно расширить с помощью плагинов в виде отдельных python пакетов. Плагины взаимодействуют с aiomisc с помощью signals.

Чтобы сделать ваш плагин доступным для обнаружения с помощью aiomisc, вы должны добавить запись aiomisc.plugins к записи аргумента entry_points вызова setup в setup.py вашего python пакета.

# setup.py

setup(
    # ...
    entry_points={
        "aiomisc.plugins": ["myplugin = aiomisc_myplugin.plugin"]
    },
    # ...
)

Модули, представленные в entry_points`, должны иметь функцию setup. Эти функции будут вызываться aiomisc и должны поддерживать сигналы.

from aiomisc import entrypoint
from threading import Event


event = Event()


async def hello(entrypoint, services):
    print('Hello from aiomisc plugin')
    event.set()


def setup():
    entrypoint.PRE_START.connect(hello)

setup()

assert not event.is_set()

with entrypoint() as loop:
    pass

assert event.is_set()