[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", "ruff>=0.9", ] [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"]