[build-system]
requires = ["setuptools>=68.0"]
build-backend = "setuptools.build_meta"

[project]
name = "hermes-chatto-plugin"
version = "1.0.0"
description = "Chatto platform adapter for Hermes Agent (includes vendored chattolib)"
requires-python = ">=3.11"
license = {text = "MIT"}

authors = [
    {name = "liv", email = "paul@klumpp.de"},
]

#[project.entry-points."hermes_agent.plugins"]
#hermes-chatto-plugin = "hermes-chatto-plugin"

[dependency-groups]
dev = [
    "pytest>=9.0",
    "pytest-asyncio>=0.24",
    "basedpyright>=1.29",
]

[tool.setuptools.packages.find]
where = ["."]

[tool.ruff]
# vendor/ ships upstream code (see VENDORING.md) and dist/ is build output;
# neither is held to this repo's lint rules.
extend-exclude = ["vendor", "dist"]

[tool.ruff.lint]
# BLE001: broad excepts are deliberate here. The adapter is a long-lived
# gateway client whose best-effort side effects (reactions, typing, presence,
# mark-seen) must never break message delivery, so network boundaries catch
# wide and log instead of letting unexpected errors kill the loop.
ignore = ["BLE001"]

[tool.ruff.lint.per-file-ignores]
# The plugin root doubles as the package directory; __init__ only re-exports.
# N999 fires because the checkout directory name is not a valid identifier —
# pytest already works around that via importlib mode.
"__init__.py" = ["F401", "N999"]

[tool.pytest.ini_options]
# importlib mode: the plugin root is itself a package (__init__.py), so pytest's
# default "prepend" mode tries to import the test modules as part of it, which
# fails because the checkout directory name is not a valid Python identifier.
addopts = "--import-mode=importlib"
asyncio_mode = "auto"
# Only our own tests — vendor/ ships the upstream test suites of some packages.
testpaths = ["test_adapter.py", "test_platform_config.py"]
norecursedirs = ["vendor", "myvenv", ".venv"]
