"""Signals exposed by ``infrasynth.tenancy``. Every signal carries ``tenant_id`` explicitly so receivers never assume the sender's context leaked through (``TENANCY.md`` ยง7). """ from django.dispatch import Signal __all__ = [ "tenant_created", "tenant_updated", "tenant_suspended", "tenant_reinstated", "tenant_archived", "membership_created", "membership_revoked", "tenant_switched", ] tenant_created = Signal() # kwargs: tenant_id, slug, name tenant_updated = Signal() # kwargs: tenant_id, changes tenant_suspended = Signal() # kwargs: tenant_id, reason tenant_reinstated = Signal() # kwargs: tenant_id tenant_archived = Signal() # kwargs: tenant_id membership_created = Signal() # kwargs: tenant_id, membership_id, user_id, role membership_revoked = Signal() # kwargs: tenant_id, membership_id, user_id tenant_switched = Signal() # kwargs: tenant_id, user_id, previous_tenant_id