[importlinter]
root_package = botassembly
include_external_packages = False

# ===========================
# INDEPENDENCE CONTRACTS
# ===========================

[importlinter:contract:models_independence]
name = Models layer must be independent
type = independence
modules =
    botassembly.models

[importlinter:contract:home_independence]
name = Home layer must be independent
type = independence
modules =
    botassembly.home

[importlinter:contract:parsers_independence]
name = Parsers must only depend on models
type = independence
modules =
    botassembly.parsers

[importlinter:contract:cfg_independence]
name = CFG builder must only depend on models
type = independence
modules =
    botassembly.cfg

# ===========================
# LAYER CONTRACTS
# ===========================

[importlinter:contract:layers]
name = Enforce unidirectional layered architecture
type = layers
layers =
    botassembly.service
    botassembly.compiler
    botassembly.cfg | botassembly.parsers
    botassembly.models
ignore_imports =
    botassembly.compiler.compile -> botassembly.service.skills
    botassembly.compiler.compile -> botassembly.service.state
