[importlinter]
root_packages =
    rigplane

[importlinter:contract:layers]
name = rigplane layered architecture
type = layers
layers =
    rigplane.cli
    rigplane.web | rigplane.rigctld
    rigplane.backends
    rigplane.runtime
    rigplane.profiles | rigplane.audio
    rigplane.commands | rigplane.scope | rigplane.dsp
    rigplane.core
ignore_imports =
    rigplane.core.radio_protocol -> rigplane.audio_bus
    rigplane.core.radio_protocol -> rigplane.scope
    rigplane.core.radio_protocol -> rigplane.runtime._poller_types
    rigplane.core.radio_protocol -> rigplane.rigctld.routing
    rigplane.backends.yaesu_cat.radio -> rigplane.rigctld.routing

[importlinter:contract:independence-top]
name = top siblings must not depend on each other
type = independence
modules =
    rigplane.web
    rigplane.rigctld
ignore_imports =
    rigplane.core.radio_protocol -> rigplane.rigctld.routing
    rigplane.backends.yaesu_cat.radio -> rigplane.rigctld.routing

[importlinter:contract:independence-mid]
name = mid-tier siblings must not depend on each other
type = independence
modules =
    rigplane.profiles
    rigplane.audio

[importlinter:contract:independence-low]
name = low-tier siblings must not depend on each other
type = independence
modules =
    rigplane.commands
    rigplane.scope
    rigplane.dsp
