# .importlinter — машинная защита границ слоёв (по образцу corekit).
#
# Запуск:  uv run --with import-linter lint-imports
#
# authkit-contracts — низ стека (L0): держит только stdlib. Ни один другой
# кит, ни внешний вендор (pyotp/httpx/cryptography/keyring/pydantic) не должен
# просачиваться в его импорты — иначе низ стека начинает знать про верх, и
# "contracts" перестаёт быть общим языком, на который остальные киты могут
# опереться не оглядываясь.

[importlinter]
# include_external_packages нужен: forbidden_modules ниже перечисляет как
# другие киты (внешние относительно root_packages=authkit_contracts), так и
# настоящие третьи пакеты.
include_external_packages = True
root_packages =
    authkit_contracts
exclude_type_checking_imports = True

[importlinter:contract:authkit-contracts-is-floor]
name = authkit_contracts — низ стека, не знает ни про другие киты, ни про инфраструктуру
type = forbidden
source_modules =
    authkit_contracts
forbidden_modules =
    corekit
    netkit
    librarykit
    clikit
    adapterkit
    browserkit
    accountpoolkit
    servicekit
    sessionkit
    leasekit
    totpkit
    totp_client
    authkit_server
    authkit_client
    pydantic
    httpx
    cryptography
    keyring
    pyotp
    passlib
    jose
