[importlinter]
root_package = azure_vm

[importlinter:contract:models_and_exceptions_are_independent]
name = models and exceptions must not depend on other internal packages
type = forbidden
source_modules =
    azure_vm.models
    azure_vm.exceptions
forbidden_modules =
    azure_vm._backend
    azure_vm.vm
    azure_vm.client

[importlinter:contract:backend_is_independent]
name = _backend must not depend on higher-level packages
type = forbidden
source_modules =
    azure_vm._backend
forbidden_modules =
    azure_vm.vm
    azure_vm.client

[importlinter:contract:internal_modules_are_independent]
name = internal modules must not depend on public API layer
type = forbidden
source_modules =
    azure_vm._templates
    azure_vm._workspace
    azure_vm._discovery
forbidden_modules =
    azure_vm.client
    azure_vm.vm
