[project] name = "eranos" version = "0.1.0" description = "Eranos: donate unused AI tokens to build, test, and independently review off-the-shelf agent skills, tools, files, and agentic processes for NGOs and the public good." readme = "README.md" requires-python = ">=3.12" license = "MIT" authors = [{ name = "ta-amps" }] dependencies = [ "pydantic>=2.9", "httpx>=0.27", "fastapi>=0.115", "uvicorn>=0.30", # The one Tessera pin. CI checks out the same revision for the conformance suite; run `uv lock` # after changing it. "tessera[mcp] @ git+https://github.com/ta-amps/tessera-infrastructure-work-and-storage-engine.git@7d79296f0c217de8b4b911fef8bfd55f4c5d096c", ] [project.scripts] eranos = "eranos.cli:main" [dependency-groups] dev = [ "pytest>=8.3", "pytest-timeout>=2.3", "ruff>=0.6", "mypy>=1.11", ] [build-system] requires = ["hatchling>=1.25"] build-backend = "hatchling.build" [tool.hatch.metadata] allow-direct-references = true [tool.hatch.build.targets.wheel] packages = ["eranos"] [tool.ruff] line-length = 100 target-version = "py312" extend-exclude = ["web"] [tool.ruff.lint] select = ["E", "F", "W", "I", "B", "UP", "SIM", "RUF", "S", "PT"] ignore = ["S101", "S603", "S607", "E501"] [tool.ruff.lint.per-file-ignores] "tests/**" = ["S105", "S106", "S108", "PT018"] [tool.mypy] strict = true python_version = "3.12" files = ["eranos"] plugins = ["pydantic.mypy"] [tool.pytest.ini_options] testpaths = ["tests"] timeout = 180